diff options
Diffstat (limited to 'gcc-4.9/gcc/config/tilegx')
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/constraints.md | 122 | ||||
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/feedback.h | 14 | ||||
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/linux.h | 72 | ||||
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/mul-tables.c | 27243 | ||||
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/predicates.md | 298 | ||||
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/sync.md | 227 | ||||
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/t-tilegx | 21 | ||||
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/tilegx-builtins.h | 325 | ||||
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/tilegx-c.c | 57 | ||||
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/tilegx-generic.md | 115 | ||||
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/tilegx-modes.def | 37 | ||||
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/tilegx-multiply.h | 78 | ||||
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/tilegx-opts.h | 33 | ||||
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/tilegx-protos.h | 75 | ||||
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/tilegx.c | 5707 | ||||
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/tilegx.h | 556 | ||||
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/tilegx.md | 5630 | ||||
-rw-r--r-- | gcc-4.9/gcc/config/tilegx/tilegx.opt | 63 |
18 files changed, 40673 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/config/tilegx/constraints.md b/gcc-4.9/gcc/config/tilegx/constraints.md new file mode 100644 index 000000000..ad9aff18c --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/constraints.md @@ -0,0 +1,122 @@ +;; Constraint definitions for Tilera TILE-Gx. +;; Copyright (C) 2011-2014 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-4.9/gcc/config/tilegx/feedback.h b/gcc-4.9/gcc/config/tilegx/feedback.h new file mode 100644 index 000000000..34e48ed88 --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/feedback.h @@ -0,0 +1,14 @@ +#ifndef _FEEDBACK_H +#define _FEEDBACK_H 1 + +#ifdef __ASSEMBLER__ + +/* Stub defines for feedback instrumentation. */ +#define FEEDBACK_ENTER_EXPLICIT(FUNCNAME, SECNAME, SIZE) +#define FEEDBACK_ENTER(FUNCNAME) +#define FEEDBACK_REENTER(FUNCNAME) +#define FEEDBACK_ENTRY(FUNCNAME, SECNAME, SIZE) + +#endif /* __ASSEMBLER__ */ + +#endif /* _FEEDBACK_H */ diff --git a/gcc-4.9/gcc/config/tilegx/linux.h b/gcc-4.9/gcc/config/tilegx/linux.h new file mode 100644 index 000000000..8cdedcbbe --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/linux.h @@ -0,0 +1,72 @@ +/* Definitions for TILE-Gx running Linux-based GNU systems with ELF. + Copyright (C) 2011-2014 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 "%(endian_spec) %{m32:--32} %{m64:--64}" + +#undef LINK_SPEC +#define LINK_SPEC "%(endian_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-4.9/gcc/config/tilegx/mul-tables.c b/gcc-4.9/gcc/config/tilegx/mul-tables.c new file mode 100644 index 000000000..4bcff30ae --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/mul-tables.c @@ -0,0 +1,27243 @@ +/* Constant multiply table for TILE-Gx. + Copyright (C) 2011-2014 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 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-671ll /* 0xfffffffffffffd61 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-667ll /* 0xfffffffffffffd65 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-664ll /* 0xfffffffffffffd68 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-660ll /* 0xfffffffffffffd6c */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {-659ll /* 0xfffffffffffffd6d */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-657ll /* 0xfffffffffffffd6f */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {-656ll /* 0xfffffffffffffd70 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {-655ll /* 0xfffffffffffffd71 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-651ll /* 0xfffffffffffffd75 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-650ll /* 0xfffffffffffffd76 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {-649ll /* 0xfffffffffffffd77 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {3, 2, 3}, /* shl1add r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-648ll /* 0xfffffffffffffd78 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 3}, /* shl3add r4, r3, r3 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {-647ll /* 0xfffffffffffffd79 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 3}, /* shli r4, r3, 3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-645ll /* 0xfffffffffffffd7b */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 4}} /* shl2add r5, r4, r4 */ + }, + {-644ll /* 0xfffffffffffffd7c */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-643ll /* 0xfffffffffffffd7d */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-642ll /* 0xfffffffffffffd7e */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {3, 3, 2}, /* shl1add r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {-641ll /* 0xfffffffffffffd7f */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* shl2add r3, r1, r1 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-640ll /* 0xfffffffffffffd80 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 3, 7}} /* shli r4, r3, 7 */ + }, + {-639ll /* 0xfffffffffffffd81 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-638ll /* 0xfffffffffffffd82 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-637ll /* 0xfffffffffffffd83 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 1, 1}, /* shl2add r3, r1, r1 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-636ll /* 0xfffffffffffffd84 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-635ll /* 0xfffffffffffffd85 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-634ll /* 0xfffffffffffffd86 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-633ll /* 0xfffffffffffffd87 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-632ll /* 0xfffffffffffffd88 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 3}, /* shli r3, r1, 3 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-631ll /* 0xfffffffffffffd89 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-630ll /* 0xfffffffffffffd8a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-629ll /* 0xfffffffffffffd8b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-627ll /* 0xfffffffffffffd8d */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-625ll /* 0xfffffffffffffd8f */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 4}} /* shl2add r5, r4, r4 */ + }, + {-624ll /* 0xfffffffffffffd90 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-620ll /* 0xfffffffffffffd94 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-619ll /* 0xfffffffffffffd95 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-616ll /* 0xfffffffffffffd98 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-615ll /* 0xfffffffffffffd99 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-613ll /* 0xfffffffffffffd9b */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {4, 3, 3}, /* shl2add r4, r3, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-612ll /* 0xfffffffffffffd9c */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {-611ll /* 0xfffffffffffffd9d */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-609ll /* 0xfffffffffffffd9f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-608ll /* 0xfffffffffffffda0 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-607ll /* 0xfffffffffffffda1 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-604ll /* 0xfffffffffffffda4 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {-603ll /* 0xfffffffffffffda5 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-600ll /* 0xfffffffffffffda8 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-599ll /* 0xfffffffffffffda9 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-595ll /* 0xfffffffffffffdad */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-594ll /* 0xfffffffffffffdae */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {-593ll /* 0xfffffffffffffdaf */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 2, 3}, /* shl1add r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-592ll /* 0xfffffffffffffdb0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {-591ll /* 0xfffffffffffffdb1 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-589ll /* 0xfffffffffffffdb3 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-588ll /* 0xfffffffffffffdb4 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 3}, /* shl2add r4, r3, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {-585ll /* 0xfffffffffffffdb7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {-584ll /* 0xfffffffffffffdb8 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-583ll /* 0xfffffffffffffdb9 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-581ll /* 0xfffffffffffffdbb */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {4, 3, 3}, /* shl2add r4, r3, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-580ll /* 0xfffffffffffffdbc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 3, 2}, /* shl1add r4, r3, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-579ll /* 0xfffffffffffffdbd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-578ll /* 0xfffffffffffffdbe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {-577ll /* 0xfffffffffffffdbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* shl3add r3, r1, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-576ll /* 0xfffffffffffffdc0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 6}} /* shli r4, r3, 6 */ + }, + {-575ll /* 0xfffffffffffffdc1 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-574ll /* 0xfffffffffffffdc2 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-573ll /* 0xfffffffffffffdc3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 1}, /* shl3add r3, r1, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-572ll /* 0xfffffffffffffdc4 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-571ll /* 0xfffffffffffffdc5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 1, 1}, /* shl3add r3, r1, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-569ll /* 0xfffffffffffffdc7 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-568ll /* 0xfffffffffffffdc8 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 3}, /* shli r3, r1, 3 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-567ll /* 0xfffffffffffffdc9 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-566ll /* 0xfffffffffffffdca */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-565ll /* 0xfffffffffffffdcb */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-564ll /* 0xfffffffffffffdcc */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-563ll /* 0xfffffffffffffdcd */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-561ll /* 0xfffffffffffffdcf */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-560ll /* 0xfffffffffffffdd0 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-559ll /* 0xfffffffffffffdd1 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-558ll /* 0xfffffffffffffdd2 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-557ll /* 0xfffffffffffffdd3 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-556ll /* 0xfffffffffffffdd4 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {-555ll /* 0xfffffffffffffdd5 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-553ll /* 0xfffffffffffffdd7 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {5, 3, 3}, /* shl3add r4, r3, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-552ll /* 0xfffffffffffffdd8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {-551ll /* 0xfffffffffffffdd9 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-549ll /* 0xfffffffffffffddb */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {-548ll /* 0xfffffffffffffddc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {-547ll /* 0xfffffffffffffddd */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-546ll /* 0xfffffffffffffdde */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {-545ll /* 0xfffffffffffffddf */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {3, 3, 2}, /* shl1add r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-544ll /* 0xfffffffffffffde0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {-543ll /* 0xfffffffffffffde1 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-542ll /* 0xfffffffffffffde2 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-540ll /* 0xfffffffffffffde4 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-539ll /* 0xfffffffffffffde5 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-536ll /* 0xfffffffffffffde8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-535ll /* 0xfffffffffffffde9 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-533ll /* 0xfffffffffffffdeb */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-532ll /* 0xfffffffffffffdec */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {-531ll /* 0xfffffffffffffded */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {-530ll /* 0xfffffffffffffdee */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {-529ll /* 0xfffffffffffffdef */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {3, 2, 3}, /* shl1add r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-528ll /* 0xfffffffffffffdf0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {-527ll /* 0xfffffffffffffdf1 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-526ll /* 0xfffffffffffffdf2 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-525ll /* 0xfffffffffffffdf3 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {-524ll /* 0xfffffffffffffdf4 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-523ll /* 0xfffffffffffffdf5 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-522ll /* 0xfffffffffffffdf6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {-521ll /* 0xfffffffffffffdf7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-520ll /* 0xfffffffffffffdf8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 9}, /* shli r3, r2, 9 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-519ll /* 0xfffffffffffffdf9 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-518ll /* 0xfffffffffffffdfa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-517ll /* 0xfffffffffffffdfb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {-516ll /* 0xfffffffffffffdfc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 9}, /* shli r3, r2, 9 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-515ll /* 0xfffffffffffffdfd */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-514ll /* 0xfffffffffffffdfe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 9}, /* shli r3, r2, 9 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-513ll /* 0xfffffffffffffdff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-512ll /* 0xfffffffffffffe00 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 9}} /* shli r3, r2, 9 */ + }, + {-511ll /* 0xfffffffffffffe01 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-510ll /* 0xfffffffffffffe02 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-509ll /* 0xfffffffffffffe03 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-508ll /* 0xfffffffffffffe04 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-507ll /* 0xfffffffffffffe05 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-506ll /* 0xfffffffffffffe06 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-505ll /* 0xfffffffffffffe07 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-504ll /* 0xfffffffffffffe08 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-503ll /* 0xfffffffffffffe09 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-502ll /* 0xfffffffffffffe0a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-501ll /* 0xfffffffffffffe0b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-500ll /* 0xfffffffffffffe0c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-499ll /* 0xfffffffffffffe0d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {-498ll /* 0xfffffffffffffe0e */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {3, 1, 3}, /* shl1add r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-497ll /* 0xfffffffffffffe0f */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-496ll /* 0xfffffffffffffe10 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-495ll /* 0xfffffffffffffe11 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-494ll /* 0xfffffffffffffe12 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-493ll /* 0xfffffffffffffe13 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 1}} /* shl1add r5, r4, r1 */ + }, + {-492ll /* 0xfffffffffffffe14 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-491ll /* 0xfffffffffffffe15 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {-489ll /* 0xfffffffffffffe17 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-488ll /* 0xfffffffffffffe18 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {-487ll /* 0xfffffffffffffe19 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 1}} /* shl3add r5, r4, r1 */ + }, + {-485ll /* 0xfffffffffffffe1b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-484ll /* 0xfffffffffffffe1c */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 1, 3}, /* shl2add r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-483ll /* 0xfffffffffffffe1d */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {3, 3, 1}, /* shl1add r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-482ll /* 0xfffffffffffffe1e */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {3, 1, 3}, /* shl1add r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-481ll /* 0xfffffffffffffe1f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-480ll /* 0xfffffffffffffe20 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-479ll /* 0xfffffffffffffe21 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-478ll /* 0xfffffffffffffe22 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-477ll /* 0xfffffffffffffe23 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-476ll /* 0xfffffffffffffe24 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-475ll /* 0xfffffffffffffe25 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {-472ll /* 0xfffffffffffffe28 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {-471ll /* 0xfffffffffffffe29 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 1}} /* shl3add r5, r4, r1 */ + }, + {-468ll /* 0xfffffffffffffe2c */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-467ll /* 0xfffffffffffffe2d */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-465ll /* 0xfffffffffffffe2f */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {-464ll /* 0xfffffffffffffe30 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {-463ll /* 0xfffffffffffffe31 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-462ll /* 0xfffffffffffffe32 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {-460ll /* 0xfffffffffffffe34 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-457ll /* 0xfffffffffffffe37 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-456ll /* 0xfffffffffffffe38 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-455ll /* 0xfffffffffffffe39 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {-454ll /* 0xfffffffffffffe3a */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-453ll /* 0xfffffffffffffe3b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-452ll /* 0xfffffffffffffe3c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-451ll /* 0xfffffffffffffe3d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-450ll /* 0xfffffffffffffe3e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-449ll /* 0xfffffffffffffe3f */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-448ll /* 0xfffffffffffffe40 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-447ll /* 0xfffffffffffffe41 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-446ll /* 0xfffffffffffffe42 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-445ll /* 0xfffffffffffffe43 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-444ll /* 0xfffffffffffffe44 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-443ll /* 0xfffffffffffffe45 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-442ll /* 0xfffffffffffffe46 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-441ll /* 0xfffffffffffffe47 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {-440ll /* 0xfffffffffffffe48 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {-439ll /* 0xfffffffffffffe49 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-438ll /* 0xfffffffffffffe4a */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 1, 2}, /* shl1add r4, r1, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {-436ll /* 0xfffffffffffffe4c */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 1, 2}, /* shl2add r4, r1, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {-433ll /* 0xfffffffffffffe4f */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-432ll /* 0xfffffffffffffe50 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-431ll /* 0xfffffffffffffe51 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-429ll /* 0xfffffffffffffe53 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-428ll /* 0xfffffffffffffe54 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-424ll /* 0xfffffffffffffe58 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-423ll /* 0xfffffffffffffe59 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {-419ll /* 0xfffffffffffffe5d */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-418ll /* 0xfffffffffffffe5e */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {-417ll /* 0xfffffffffffffe5f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-416ll /* 0xfffffffffffffe60 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {-415ll /* 0xfffffffffffffe61 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-413ll /* 0xfffffffffffffe63 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-412ll /* 0xfffffffffffffe64 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {-411ll /* 0xfffffffffffffe65 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-409ll /* 0xfffffffffffffe67 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-408ll /* 0xfffffffffffffe68 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-407ll /* 0xfffffffffffffe69 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-405ll /* 0xfffffffffffffe6b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-404ll /* 0xfffffffffffffe6c */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-403ll /* 0xfffffffffffffe6d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-401ll /* 0xfffffffffffffe6f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-400ll /* 0xfffffffffffffe70 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-399ll /* 0xfffffffffffffe71 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-397ll /* 0xfffffffffffffe73 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-396ll /* 0xfffffffffffffe74 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {-395ll /* 0xfffffffffffffe75 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-393ll /* 0xfffffffffffffe77 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-392ll /* 0xfffffffffffffe78 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-391ll /* 0xfffffffffffffe79 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-390ll /* 0xfffffffffffffe7a */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {-389ll /* 0xfffffffffffffe7b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-388ll /* 0xfffffffffffffe7c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-387ll /* 0xfffffffffffffe7d */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 4}} /* shl1add r5, r4, r4 */ + }, + {-386ll /* 0xfffffffffffffe7e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-385ll /* 0xfffffffffffffe7f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-384ll /* 0xfffffffffffffe80 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-383ll /* 0xfffffffffffffe81 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-382ll /* 0xfffffffffffffe82 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-381ll /* 0xfffffffffffffe83 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-380ll /* 0xfffffffffffffe84 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {-379ll /* 0xfffffffffffffe85 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-378ll /* 0xfffffffffffffe86 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-377ll /* 0xfffffffffffffe87 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-376ll /* 0xfffffffffffffe88 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-375ll /* 0xfffffffffffffe89 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-373ll /* 0xfffffffffffffe8b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-372ll /* 0xfffffffffffffe8c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-371ll /* 0xfffffffffffffe8d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-369ll /* 0xfffffffffffffe8f */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-368ll /* 0xfffffffffffffe90 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-367ll /* 0xfffffffffffffe91 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-365ll /* 0xfffffffffffffe93 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 1, 3}, /* shl3add r4, r1, r3 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {-364ll /* 0xfffffffffffffe94 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-361ll /* 0xfffffffffffffe97 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {5, 3, 3}, /* shl3add r4, r3, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-360ll /* 0xfffffffffffffe98 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-359ll /* 0xfffffffffffffe99 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-357ll /* 0xfffffffffffffe9b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-356ll /* 0xfffffffffffffe9c */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {-355ll /* 0xfffffffffffffe9d */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 3}, /* shli r4, r3, 3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-353ll /* 0xfffffffffffffe9f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-352ll /* 0xfffffffffffffea0 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {-351ll /* 0xfffffffffffffea1 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-349ll /* 0xfffffffffffffea3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-348ll /* 0xfffffffffffffea4 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-347ll /* 0xfffffffffffffea5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-344ll /* 0xfffffffffffffea8 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-343ll /* 0xfffffffffffffea9 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-341ll /* 0xfffffffffffffeab */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-340ll /* 0xfffffffffffffeac */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {-339ll /* 0xfffffffffffffead */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-337ll /* 0xfffffffffffffeaf */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-336ll /* 0xfffffffffffffeb0 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-335ll /* 0xfffffffffffffeb1 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-333ll /* 0xfffffffffffffeb3 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-332ll /* 0xfffffffffffffeb4 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-331ll /* 0xfffffffffffffeb5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-330ll /* 0xfffffffffffffeb6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {-329ll /* 0xfffffffffffffeb7 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 2, 3}, /* shl1add r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-328ll /* 0xfffffffffffffeb8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {-327ll /* 0xfffffffffffffeb9 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-325ll /* 0xfffffffffffffebb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 4}} /* shl2add r5, r4, r4 */ + }, + {-324ll /* 0xfffffffffffffebc */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-323ll /* 0xfffffffffffffebd */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-322ll /* 0xfffffffffffffebe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 3, 2}, /* shl1add r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {-321ll /* 0xfffffffffffffebf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* shl2add r3, r1, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-320ll /* 0xfffffffffffffec0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 3, 6}} /* shli r4, r3, 6 */ + }, + {-319ll /* 0xfffffffffffffec1 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-318ll /* 0xfffffffffffffec2 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-317ll /* 0xfffffffffffffec3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 1, 1}, /* shl2add r3, r1, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-316ll /* 0xfffffffffffffec4 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-315ll /* 0xfffffffffffffec5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-314ll /* 0xfffffffffffffec6 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-313ll /* 0xfffffffffffffec7 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-312ll /* 0xfffffffffffffec8 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 3}, /* shli r3, r1, 3 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-311ll /* 0xfffffffffffffec9 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-310ll /* 0xfffffffffffffeca */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-309ll /* 0xfffffffffffffecb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-307ll /* 0xfffffffffffffecd */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-306ll /* 0xfffffffffffffece */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {-305ll /* 0xfffffffffffffecf */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 4}} /* shl2add r5, r4, r4 */ + }, + {-304ll /* 0xfffffffffffffed0 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-303ll /* 0xfffffffffffffed1 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-301ll /* 0xfffffffffffffed3 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-300ll /* 0xfffffffffffffed4 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-299ll /* 0xfffffffffffffed5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-297ll /* 0xfffffffffffffed7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {-296ll /* 0xfffffffffffffed8 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-295ll /* 0xfffffffffffffed9 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-293ll /* 0xfffffffffffffedb */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 3, 3}, /* shl3add r4, r3, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-292ll /* 0xfffffffffffffedc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {-291ll /* 0xfffffffffffffedd */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-290ll /* 0xfffffffffffffede */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {-289ll /* 0xfffffffffffffedf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* shl3add r3, r1, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-288ll /* 0xfffffffffffffee0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {-287ll /* 0xfffffffffffffee1 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-286ll /* 0xfffffffffffffee2 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-285ll /* 0xfffffffffffffee3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 1}, /* shl3add r3, r1, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-284ll /* 0xfffffffffffffee4 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-283ll /* 0xfffffffffffffee5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 1, 1}, /* shl3add r3, r1, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-281ll /* 0xfffffffffffffee7 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-280ll /* 0xfffffffffffffee8 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-279ll /* 0xfffffffffffffee9 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-278ll /* 0xfffffffffffffeea */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-277ll /* 0xfffffffffffffeeb */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-276ll /* 0xfffffffffffffeec */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {-275ll /* 0xfffffffffffffeed */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-274ll /* 0xfffffffffffffeee */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {-273ll /* 0xfffffffffffffeef */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {3, 2, 3}, /* shl1add r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-272ll /* 0xfffffffffffffef0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {-271ll /* 0xfffffffffffffef1 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-270ll /* 0xfffffffffffffef2 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-269ll /* 0xfffffffffffffef3 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-268ll /* 0xfffffffffffffef4 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-267ll /* 0xfffffffffffffef5 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-266ll /* 0xfffffffffffffef6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {-265ll /* 0xfffffffffffffef7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-264ll /* 0xfffffffffffffef8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-263ll /* 0xfffffffffffffef9 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-262ll /* 0xfffffffffffffefa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-261ll /* 0xfffffffffffffefb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {-260ll /* 0xfffffffffffffefc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-259ll /* 0xfffffffffffffefd */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-258ll /* 0xfffffffffffffefe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-257ll /* 0xfffffffffffffeff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-256ll /* 0xffffffffffffff00 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 8}} /* shli r3, r2, 8 */ + }, + {-255ll /* 0xffffffffffffff01 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-254ll /* 0xffffffffffffff02 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-253ll /* 0xffffffffffffff03 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-252ll /* 0xffffffffffffff04 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-251ll /* 0xffffffffffffff05 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-250ll /* 0xffffffffffffff06 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-249ll /* 0xffffffffffffff07 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-248ll /* 0xffffffffffffff08 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-247ll /* 0xffffffffffffff09 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-246ll /* 0xffffffffffffff0a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-245ll /* 0xffffffffffffff0b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-244ll /* 0xffffffffffffff0c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-243ll /* 0xffffffffffffff0d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {-242ll /* 0xffffffffffffff0e */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {3, 1, 3}, /* shl1add r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-241ll /* 0xffffffffffffff0f */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-240ll /* 0xffffffffffffff10 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-239ll /* 0xffffffffffffff11 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-238ll /* 0xffffffffffffff12 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-237ll /* 0xffffffffffffff13 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 1}} /* shl1add r5, r4, r1 */ + }, + {-236ll /* 0xffffffffffffff14 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-235ll /* 0xffffffffffffff15 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {-234ll /* 0xffffffffffffff16 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {-233ll /* 0xffffffffffffff17 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-232ll /* 0xffffffffffffff18 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {-231ll /* 0xffffffffffffff19 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 1}} /* shl3add r5, r4, r1 */ + }, + {-230ll /* 0xffffffffffffff1a */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-229ll /* 0xffffffffffffff1b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-228ll /* 0xffffffffffffff1c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-227ll /* 0xffffffffffffff1d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-226ll /* 0xffffffffffffff1e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-225ll /* 0xffffffffffffff1f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-224ll /* 0xffffffffffffff20 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-223ll /* 0xffffffffffffff21 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-222ll /* 0xffffffffffffff22 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-221ll /* 0xffffffffffffff23 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-220ll /* 0xffffffffffffff24 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-219ll /* 0xffffffffffffff25 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {-218ll /* 0xffffffffffffff26 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-217ll /* 0xffffffffffffff27 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {-216ll /* 0xffffffffffffff28 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {-215ll /* 0xffffffffffffff29 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-214ll /* 0xffffffffffffff2a */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 1, 2}, /* shl1add r4, r1, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {-213ll /* 0xffffffffffffff2b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 3}, /* shli r4, r3, 3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-212ll /* 0xffffffffffffff2c */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 1, 2}, /* shl2add r4, r1, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {-211ll /* 0xffffffffffffff2d */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-210ll /* 0xffffffffffffff2e */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {-209ll /* 0xffffffffffffff2f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-208ll /* 0xffffffffffffff30 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {-207ll /* 0xffffffffffffff31 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-205ll /* 0xffffffffffffff33 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-204ll /* 0xffffffffffffff34 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {-203ll /* 0xffffffffffffff35 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-202ll /* 0xffffffffffffff36 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-201ll /* 0xffffffffffffff37 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-200ll /* 0xffffffffffffff38 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-199ll /* 0xffffffffffffff39 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-198ll /* 0xffffffffffffff3a */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {-197ll /* 0xffffffffffffff3b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-196ll /* 0xffffffffffffff3c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-195ll /* 0xffffffffffffff3d */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 4}} /* shl1add r5, r4, r4 */ + }, + {-194ll /* 0xffffffffffffff3e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-193ll /* 0xffffffffffffff3f */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-192ll /* 0xffffffffffffff40 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-191ll /* 0xffffffffffffff41 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-190ll /* 0xffffffffffffff42 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-189ll /* 0xffffffffffffff43 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-188ll /* 0xffffffffffffff44 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {-187ll /* 0xffffffffffffff45 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-186ll /* 0xffffffffffffff46 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-185ll /* 0xffffffffffffff47 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-184ll /* 0xffffffffffffff48 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-183ll /* 0xffffffffffffff49 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-181ll /* 0xffffffffffffff4b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-180ll /* 0xffffffffffffff4c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-179ll /* 0xffffffffffffff4d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-178ll /* 0xffffffffffffff4e */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-177ll /* 0xffffffffffffff4f */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-176ll /* 0xffffffffffffff50 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {-175ll /* 0xffffffffffffff51 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-173ll /* 0xffffffffffffff53 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-172ll /* 0xffffffffffffff54 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-171ll /* 0xffffffffffffff55 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-170ll /* 0xffffffffffffff56 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {-169ll /* 0xffffffffffffff57 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-168ll /* 0xffffffffffffff58 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-167ll /* 0xffffffffffffff59 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-165ll /* 0xffffffffffffff5b */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 4}} /* shl2add r5, r4, r4 */ + }, + {-164ll /* 0xffffffffffffff5c */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-163ll /* 0xffffffffffffff5d */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-162ll /* 0xffffffffffffff5e */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 3}, /* shl3add r4, r3, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-161ll /* 0xffffffffffffff5f */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* shl2add r3, r1, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-160ll /* 0xffffffffffffff60 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {-159ll /* 0xffffffffffffff61 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-158ll /* 0xffffffffffffff62 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-157ll /* 0xffffffffffffff63 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 1, 1}, /* shl2add r3, r1, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-156ll /* 0xffffffffffffff64 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-155ll /* 0xffffffffffffff65 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-154ll /* 0xffffffffffffff66 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-153ll /* 0xffffffffffffff67 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {-152ll /* 0xffffffffffffff68 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 3}, /* shli r3, r1, 3 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-151ll /* 0xffffffffffffff69 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-150ll /* 0xffffffffffffff6a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-149ll /* 0xffffffffffffff6b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-148ll /* 0xffffffffffffff6c */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {-147ll /* 0xffffffffffffff6d */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-146ll /* 0xffffffffffffff6e */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {-145ll /* 0xffffffffffffff6f */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* shl3add r3, r1, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-144ll /* 0xffffffffffffff70 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {-143ll /* 0xffffffffffffff71 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-142ll /* 0xffffffffffffff72 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-141ll /* 0xffffffffffffff73 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 1}, /* shl3add r3, r1, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-140ll /* 0xffffffffffffff74 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-139ll /* 0xffffffffffffff75 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-138ll /* 0xffffffffffffff76 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {-137ll /* 0xffffffffffffff77 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-136ll /* 0xffffffffffffff78 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-135ll /* 0xffffffffffffff79 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-134ll /* 0xffffffffffffff7a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-133ll /* 0xffffffffffffff7b */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {-132ll /* 0xffffffffffffff7c */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-131ll /* 0xffffffffffffff7d */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-130ll /* 0xffffffffffffff7e */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-129ll /* 0xffffffffffffff7f */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-128ll /* 0xffffffffffffff80 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 7}} /* shli r3, r2, 7 */ + }, + {-127ll /* 0xffffffffffffff81 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-126ll /* 0xffffffffffffff82 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-125ll /* 0xffffffffffffff83 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-124ll /* 0xffffffffffffff84 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-123ll /* 0xffffffffffffff85 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-122ll /* 0xffffffffffffff86 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-121ll /* 0xffffffffffffff87 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-120ll /* 0xffffffffffffff88 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-119ll /* 0xffffffffffffff89 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-118ll /* 0xffffffffffffff8a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-117ll /* 0xffffffffffffff8b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-116ll /* 0xffffffffffffff8c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-115ll /* 0xffffffffffffff8d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-114ll /* 0xffffffffffffff8e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-113ll /* 0xffffffffffffff8f */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-112ll /* 0xffffffffffffff90 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-111ll /* 0xffffffffffffff91 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-110ll /* 0xffffffffffffff92 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-109ll /* 0xffffffffffffff93 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-108ll /* 0xffffffffffffff94 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-107ll /* 0xffffffffffffff95 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {-106ll /* 0xffffffffffffff96 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {-105ll /* 0xffffffffffffff97 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {-104ll /* 0xffffffffffffff98 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {-103ll /* 0xffffffffffffff99 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-102ll /* 0xffffffffffffff9a */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 1, 2}, /* shl1add r4, r1, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {-101ll /* 0xffffffffffffff9b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-100ll /* 0xffffffffffffff9c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-99ll /* 0xffffffffffffff9d */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 4}} /* shl1add r5, r4, r4 */ + }, + {-98ll /* 0xffffffffffffff9e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-97ll /* 0xffffffffffffff9f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-96ll /* 0xffffffffffffffa0 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-95ll /* 0xffffffffffffffa1 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-94ll /* 0xffffffffffffffa2 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-93ll /* 0xffffffffffffffa3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-92ll /* 0xffffffffffffffa4 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {-91ll /* 0xffffffffffffffa5 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-90ll /* 0xffffffffffffffa6 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-89ll /* 0xffffffffffffffa7 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-88ll /* 0xffffffffffffffa8 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-87ll /* 0xffffffffffffffa9 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-86ll /* 0xffffffffffffffaa */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {3, 3, 2}, /* shl1add r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-85ll /* 0xffffffffffffffab */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 4}} /* shl2add r5, r4, r4 */ + }, + {-84ll /* 0xffffffffffffffac */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-83ll /* 0xffffffffffffffad */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-82ll /* 0xffffffffffffffae */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {-81ll /* 0xffffffffffffffaf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 3}} /* shl3add r4, r3, r3 */ + }, + {-80ll /* 0xffffffffffffffb0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {-79ll /* 0xffffffffffffffb1 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-78ll /* 0xffffffffffffffb2 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-77ll /* 0xffffffffffffffb3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 1, 1}, /* shl2add r3, r1, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-76ll /* 0xffffffffffffffb4 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-75ll /* 0xffffffffffffffb5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-74ll /* 0xffffffffffffffb6 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-73ll /* 0xffffffffffffffb7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {-72ll /* 0xffffffffffffffb8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 3}} /* shli r4, r3, 3 */ + }, + {-71ll /* 0xffffffffffffffb9 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-70ll /* 0xffffffffffffffba */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-69ll /* 0xffffffffffffffbb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {-68ll /* 0xffffffffffffffbc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-67ll /* 0xffffffffffffffbd */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-66ll /* 0xffffffffffffffbe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-65ll /* 0xffffffffffffffbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-64ll /* 0xffffffffffffffc0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 6}} /* shli r3, r2, 6 */ + }, + {-63ll /* 0xffffffffffffffc1 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-62ll /* 0xffffffffffffffc2 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-61ll /* 0xffffffffffffffc3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-60ll /* 0xffffffffffffffc4 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-59ll /* 0xffffffffffffffc5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-58ll /* 0xffffffffffffffc6 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-57ll /* 0xffffffffffffffc7 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-56ll /* 0xffffffffffffffc8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-55ll /* 0xffffffffffffffc9 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-54ll /* 0xffffffffffffffca */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-53ll /* 0xffffffffffffffcb */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 3}, /* shli r3, r1, 3 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-52ll /* 0xffffffffffffffcc */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-51ll /* 0xffffffffffffffcd */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 4}} /* shl1add r5, r4, r4 */ + }, + {-50ll /* 0xffffffffffffffce */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-49ll /* 0xffffffffffffffcf */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-48ll /* 0xffffffffffffffd0 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-47ll /* 0xffffffffffffffd1 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-46ll /* 0xffffffffffffffd2 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-45ll /* 0xffffffffffffffd3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-44ll /* 0xffffffffffffffd4 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {-43ll /* 0xffffffffffffffd5 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-42ll /* 0xffffffffffffffd6 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-41ll /* 0xffffffffffffffd7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {-40ll /* 0xffffffffffffffd8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 3, 3}} /* shli r4, r3, 3 */ + }, + {-39ll /* 0xffffffffffffffd9 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-38ll /* 0xffffffffffffffda */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-37ll /* 0xffffffffffffffdb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {-36ll /* 0xffffffffffffffdc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 2}} /* shli r4, r3, 2 */ + }, + {-35ll /* 0xffffffffffffffdd */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-34ll /* 0xffffffffffffffde */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-33ll /* 0xffffffffffffffdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-32ll /* 0xffffffffffffffe0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 5}} /* shli r3, r2, 5 */ + }, + {-31ll /* 0xffffffffffffffe1 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-30ll /* 0xffffffffffffffe2 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-29ll /* 0xffffffffffffffe3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-28ll /* 0xffffffffffffffe4 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-27ll /* 0xffffffffffffffe5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-26ll /* 0xffffffffffffffe6 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-25ll /* 0xffffffffffffffe7 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-24ll /* 0xffffffffffffffe8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-23ll /* 0xffffffffffffffe9 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-22ll /* 0xffffffffffffffea */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-21ll /* 0xffffffffffffffeb */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-20ll /* 0xffffffffffffffec */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 3, 2}} /* shli r4, r3, 2 */ + }, + {-19ll /* 0xffffffffffffffed */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-18ll /* 0xffffffffffffffee */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 1}} /* shli r4, r3, 1 */ + }, + {-17ll /* 0xffffffffffffffef */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16ll /* 0xfffffffffffffff0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 4}} /* shli r3, r2, 4 */ + }, + {-15ll /* 0xfffffffffffffff1 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-14ll /* 0xfffffffffffffff2 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-13ll /* 0xfffffffffffffff3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-12ll /* 0xfffffffffffffff4 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-11ll /* 0xfffffffffffffff5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-10ll /* 0xfffffffffffffff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* shl3add r3, r1, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-9ll /* 0xfffffffffffffff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}} /* shl3add r3, r2, r2 */ + }, + {-8ll /* 0xfffffffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 3}} /* shli r3, r2, 3 */ + }, + {-7ll /* 0xfffffffffffffff9 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-6ll /* 0xfffffffffffffffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 3}, /* shli r3, r1, 3 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-5ll /* 0xfffffffffffffffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}} /* shl2add r3, r2, r2 */ + }, + {-4ll /* 0xfffffffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 2}} /* shli r3, r2, 2 */ + }, + {-3ll /* 0xfffffffffffffffd */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-2ll /* 0xfffffffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 1}} /* shli r3, r2, 1 */ + }, + {-1ll /* 0xffffffffffffffff */ , + {{2, 0, 1}} /* sub r2, zero, r1 */ + }, + {2ll /* 0x2 */ , + {{6, 1, 1}} /* shli r2, r1, 1 */ + }, + {3ll /* 0x3 */ , + {{3, 1, 1}} /* shl1add r2, r1, r1 */ + }, + {4ll /* 0x4 */ , + {{6, 1, 2}} /* shli r2, r1, 2 */ + }, + {5ll /* 0x5 */ , + {{4, 1, 1}} /* shl2add r2, r1, r1 */ + }, + {6ll /* 0x6 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 1}} /* shli r3, r2, 1 */ + }, + {7ll /* 0x7 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {8ll /* 0x8 */ , + {{6, 1, 3}} /* shli r2, r1, 3 */ + }, + {9ll /* 0x9 */ , + {{5, 1, 1}} /* shl3add r2, r1, r1 */ + }, + {10ll /* 0xa */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 1}} /* shli r3, r2, 1 */ + }, + {11ll /* 0xb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}} /* shl1add r3, r2, r1 */ + }, + {12ll /* 0xc */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 2}} /* shli r3, r2, 2 */ + }, + {13ll /* 0xd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}} /* shl2add r3, r2, r1 */ + }, + {14ll /* 0xe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {15ll /* 0xf */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {16ll /* 0x10 */ , + {{6, 1, 4}} /* shli r2, r1, 4 */ + }, + {17ll /* 0x11 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {18ll /* 0x12 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 1}} /* shli r3, r2, 1 */ + }, + {19ll /* 0x13 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 2, 1}} /* shl1add r3, r2, r1 */ + }, + {20ll /* 0x14 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 2}} /* shli r3, r2, 2 */ + }, + {21ll /* 0x15 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}} /* shl2add r3, r2, r1 */ + }, + {22ll /* 0x16 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {23ll /* 0x17 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {24ll /* 0x18 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 3}} /* shli r3, r2, 3 */ + }, + {25ll /* 0x19 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}} /* shl3add r3, r2, r1 */ + }, + {26ll /* 0x1a */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {27ll /* 0x1b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}} /* shl3add r3, r2, r2 */ + }, + {28ll /* 0x1c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {29ll /* 0x1d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {30ll /* 0x1e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {31ll /* 0x1f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {32ll /* 0x20 */ , + {{6, 1, 5}} /* shli r2, r1, 5 */ + }, + {33ll /* 0x21 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {34ll /* 0x22 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {35ll /* 0x23 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36ll /* 0x24 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 2}} /* shli r3, r2, 2 */ + }, + {37ll /* 0x25 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 2, 1}} /* shl2add r3, r2, r1 */ + }, + {38ll /* 0x26 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {39ll /* 0x27 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* shl2add r3, r1, r1 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {40ll /* 0x28 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 3}} /* shli r3, r2, 3 */ + }, + {41ll /* 0x29 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}} /* shl3add r3, r2, r1 */ + }, + {42ll /* 0x2a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {43ll /* 0x2b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 1, 1}, /* shl2add r3, r1, r1 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {44ll /* 0x2c */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {45ll /* 0x2d */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}} /* shl3add r3, r2, r2 */ + }, + {46ll /* 0x2e */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {47ll /* 0x2f */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {48ll /* 0x30 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 4}} /* shli r3, r2, 4 */ + }, + {49ll /* 0x31 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 1, 1}, /* shl3add r3, r1, r1 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {50ll /* 0x32 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {51ll /* 0x33 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {52ll /* 0x34 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {53ll /* 0x35 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {54ll /* 0x36 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 1}} /* shli r4, r3, 1 */ + }, + {55ll /* 0x37 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {56ll /* 0x38 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {57ll /* 0x39 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {58ll /* 0x3a */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {59ll /* 0x3b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {60ll /* 0x3c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {61ll /* 0x3d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {62ll /* 0x3e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {63ll /* 0x3f */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {64ll /* 0x40 */ , + {{6, 1, 6}} /* shli r2, r1, 6 */ + }, + {65ll /* 0x41 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {66ll /* 0x42 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {67ll /* 0x43 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68ll /* 0x44 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {69ll /* 0x45 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70ll /* 0x46 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {71ll /* 0x47 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* shl3add r3, r1, r1 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {72ll /* 0x48 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 3}} /* shli r3, r2, 3 */ + }, + {73ll /* 0x49 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 1}} /* shl3add r3, r2, r1 */ + }, + {74ll /* 0x4a */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {75ll /* 0x4b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 1}, /* shl3add r3, r1, r1 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {76ll /* 0x4c */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {77ll /* 0x4d */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 1, 1}, /* shl3add r3, r1, r1 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {78ll /* 0x4e */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {79ll /* 0x4f */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {80ll /* 0x50 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 4}} /* shli r3, r2, 4 */ + }, + {81ll /* 0x51 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 2}} /* shl3add r3, r2, r2 */ + }, + {82ll /* 0x52 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {83ll /* 0x53 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {3, 3, 1}} /* shl1add r4, r3, r1 */ + }, + {84ll /* 0x54 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {85ll /* 0x55 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {86ll /* 0x56 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {87ll /* 0x57 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {88ll /* 0x58 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {89ll /* 0x59 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {90ll /* 0x5a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 1}} /* shli r4, r3, 1 */ + }, + {91ll /* 0x5b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {3, 3, 1}} /* shl1add r4, r3, r1 */ + }, + {92ll /* 0x5c */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {93ll /* 0x5d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {94ll /* 0x5e */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {95ll /* 0x5f */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {96ll /* 0x60 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}} /* shli r3, r2, 5 */ + }, + {97ll /* 0x61 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {98ll /* 0x62 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {99ll /* 0x63 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {100ll /* 0x64 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {101ll /* 0x65 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {4, 3, 1}} /* shl2add r4, r3, r1 */ + }, + {102ll /* 0x66 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {103ll /* 0x67 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {104ll /* 0x68 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {105ll /* 0x69 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {106ll /* 0x6a */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 1, 1}, /* shli r4, r1, 1 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {107ll /* 0x6b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {108ll /* 0x6c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 2}} /* shli r4, r3, 2 */ + }, + {109ll /* 0x6d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {4, 3, 1}} /* shl2add r4, r3, r1 */ + }, + {110ll /* 0x6e */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {111ll /* 0x6f */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {112ll /* 0x70 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {113ll /* 0x71 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {114ll /* 0x72 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {115ll /* 0x73 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {116ll /* 0x74 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {117ll /* 0x75 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {5, 3, 3}} /* shl3add r4, r3, r3 */ + }, + {118ll /* 0x76 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {119ll /* 0x77 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {120ll /* 0x78 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {121ll /* 0x79 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {122ll /* 0x7a */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {123ll /* 0x7b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {124ll /* 0x7c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {125ll /* 0x7d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {126ll /* 0x7e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {127ll /* 0x7f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {128ll /* 0x80 */ , + {{6, 1, 7}} /* shli r2, r1, 7 */ + }, + {129ll /* 0x81 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {130ll /* 0x82 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {131ll /* 0x83 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {132ll /* 0x84 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {133ll /* 0x85 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134ll /* 0x86 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {135ll /* 0x87 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {136ll /* 0x88 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {137ll /* 0x89 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {138ll /* 0x8a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {139ll /* 0x8b */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {140ll /* 0x8c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {141ll /* 0x8d */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 1}, /* shl2add r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {142ll /* 0x8e */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {143ll /* 0x8f */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {144ll /* 0x90 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 4}} /* shli r3, r2, 4 */ + }, + {145ll /* 0x91 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {146ll /* 0x92 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {147ll /* 0x93 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {3, 3, 1}} /* shl1add r4, r3, r1 */ + }, + {148ll /* 0x94 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {149ll /* 0x95 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {4, 3, 1}} /* shl2add r4, r3, r1 */ + }, + {150ll /* 0x96 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {151ll /* 0x97 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {152ll /* 0x98 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {153ll /* 0x99 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {154ll /* 0x9a */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {155ll /* 0x9b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {156ll /* 0x9c */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {157ll /* 0x9d */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {158ll /* 0x9e */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {159ll /* 0x9f */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {160ll /* 0xa0 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 5}} /* shli r3, r2, 5 */ + }, + {161ll /* 0xa1 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {162ll /* 0xa2 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 1}} /* shli r4, r3, 1 */ + }, + {163ll /* 0xa3 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {3, 3, 1}} /* shl1add r4, r3, r1 */ + }, + {164ll /* 0xa4 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {165ll /* 0xa5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {166ll /* 0xa6 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {167ll /* 0xa7 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {168ll /* 0xa8 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {169ll /* 0xa9 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {170ll /* 0xaa */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {171ll /* 0xab */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {5, 3, 3}} /* shl3add r4, r3, r3 */ + }, + {172ll /* 0xac */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {173ll /* 0xad */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {174ll /* 0xae */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 1}, /* shli r4, r2, 1 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {175ll /* 0xaf */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 4}} /* shl2add r5, r4, r4 */ + }, + {176ll /* 0xb0 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {177ll /* 0xb1 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 2}, /* shl2add r4, r2, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {178ll /* 0xb2 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {179ll /* 0xb3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {180ll /* 0xb4 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 2}} /* shli r4, r3, 2 */ + }, + {181ll /* 0xb5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {4, 3, 1}} /* shl2add r4, r3, r1 */ + }, + {182ll /* 0xb6 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 1, 1}, /* shli r4, r1, 1 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {183ll /* 0xb7 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {184ll /* 0xb8 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {185ll /* 0xb9 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {186ll /* 0xba */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {187ll /* 0xbb */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {188ll /* 0xbc */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {189ll /* 0xbd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {190ll /* 0xbe */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {191ll /* 0xbf */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {192ll /* 0xc0 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 6}} /* shli r3, r2, 6 */ + }, + {193ll /* 0xc1 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {194ll /* 0xc2 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {195ll /* 0xc3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {196ll /* 0xc4 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {197ll /* 0xc5 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {198ll /* 0xc6 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {199ll /* 0xc7 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {200ll /* 0xc8 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {201ll /* 0xc9 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {202ll /* 0xca */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 1, 1}, /* shli r4, r1, 1 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {203ll /* 0xcb */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {204ll /* 0xcc */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {205ll /* 0xcd */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {206ll /* 0xce */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 1}, /* shli r4, r2, 1 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {207ll /* 0xcf */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {208ll /* 0xd0 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {209ll /* 0xd1 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {210ll /* 0xd2 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {211ll /* 0xd3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {212ll /* 0xd4 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {213ll /* 0xd5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {3, 2, 3}, /* shl1add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {214ll /* 0xd6 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {215ll /* 0xd7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {216ll /* 0xd8 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 3}} /* shli r4, r3, 3 */ + }, + {217ll /* 0xd9 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {218ll /* 0xda */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 1, 1}, /* shli r4, r1, 1 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {219ll /* 0xdb */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {220ll /* 0xdc */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {221ll /* 0xdd */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {222ll /* 0xde */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {223ll /* 0xdf */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {224ll /* 0xe0 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {225ll /* 0xe1 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {226ll /* 0xe2 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {227ll /* 0xe3 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 1}, /* shl2add r4, r2, r1 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {228ll /* 0xe4 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {229ll /* 0xe5 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 2, 1}, /* shl1add r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {230ll /* 0xe6 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {231ll /* 0xe7 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 1, 8}, /* shli r4, r1, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {232ll /* 0xe8 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {233ll /* 0xe9 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {234ll /* 0xea */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {235ll /* 0xeb */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {236ll /* 0xec */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {237ll /* 0xed */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {238ll /* 0xee */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {239ll /* 0xef */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {240ll /* 0xf0 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {241ll /* 0xf1 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {242ll /* 0xf2 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {243ll /* 0xf3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 3}} /* shl3add r4, r3, r3 */ + }, + {244ll /* 0xf4 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {245ll /* 0xf5 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 1}, /* shl2add r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {246ll /* 0xf6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {247ll /* 0xf7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {248ll /* 0xf8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {249ll /* 0xf9 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {250ll /* 0xfa */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {251ll /* 0xfb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {252ll /* 0xfc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {253ll /* 0xfd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {254ll /* 0xfe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {255ll /* 0xff */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {256ll /* 0x100 */ , + {{6, 1, 8}} /* shli r2, r1, 8 */ + }, + {257ll /* 0x101 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {258ll /* 0x102 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {259ll /* 0x103 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {260ll /* 0x104 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {261ll /* 0x105 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262ll /* 0x106 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {263ll /* 0x107 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {264ll /* 0x108 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {265ll /* 0x109 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {266ll /* 0x10a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {267ll /* 0x10b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {1, 1, 3}, /* add r4, r1, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {268ll /* 0x10c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {269ll /* 0x10d */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {270ll /* 0x10e */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {271ll /* 0x10f */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {272ll /* 0x110 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {273ll /* 0x111 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {274ll /* 0x112 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {275ll /* 0x113 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {276ll /* 0x114 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {277ll /* 0x115 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 1}, /* shl2add r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {278ll /* 0x116 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {279ll /* 0x117 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {280ll /* 0x118 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {281ll /* 0x119 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 1}, /* shl1add r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {282ll /* 0x11a */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {3, 2, 1}, /* shl1add r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {283ll /* 0x11b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {284ll /* 0x11c */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {285ll /* 0x11d */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {286ll /* 0x11e */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {287ll /* 0x11f */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {288ll /* 0x120 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 5}} /* shli r3, r2, 5 */ + }, + {289ll /* 0x121 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {290ll /* 0x122 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {291ll /* 0x123 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 1}, /* shl2add r4, r2, r1 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {292ll /* 0x124 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {293ll /* 0x125 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {4, 3, 1}} /* shl2add r4, r3, r1 */ + }, + {294ll /* 0x126 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {295ll /* 0x127 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {296ll /* 0x128 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {297ll /* 0x129 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {298ll /* 0x12a */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {299ll /* 0x12b */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {300ll /* 0x12c */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {301ll /* 0x12d */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {302ll /* 0x12e */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {303ll /* 0x12f */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {304ll /* 0x130 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {305ll /* 0x131 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {306ll /* 0x132 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {307ll /* 0x133 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {308ll /* 0x134 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {309ll /* 0x135 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {310ll /* 0x136 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {311ll /* 0x137 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {312ll /* 0x138 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {313ll /* 0x139 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 2}, /* shl2add r4, r2, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {314ll /* 0x13a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {315ll /* 0x13b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {316ll /* 0x13c */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {317ll /* 0x13d */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {318ll /* 0x13e */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {319ll /* 0x13f */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {320ll /* 0x140 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 6}} /* shli r3, r2, 6 */ + }, + {321ll /* 0x141 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {322ll /* 0x142 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {323ll /* 0x143 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {324ll /* 0x144 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {325ll /* 0x145 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {326ll /* 0x146 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {327ll /* 0x147 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {328ll /* 0x148 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {329ll /* 0x149 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {330ll /* 0x14a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {331ll /* 0x14b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {332ll /* 0x14c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {333ll /* 0x14d */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {334ll /* 0x14e */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {335ll /* 0x14f */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 4}} /* shl2add r5, r4, r4 */ + }, + {336ll /* 0x150 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {337ll /* 0x151 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 2}, /* shl2add r4, r2, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {338ll /* 0x152 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 1}, /* shli r4, r2, 1 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {339ll /* 0x153 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {340ll /* 0x154 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {341ll /* 0x155 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {342ll /* 0x156 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 1}, /* shli r4, r2, 1 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {343ll /* 0x157 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {344ll /* 0x158 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 1, 1}, /* shl2add r3, r1, r1 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {345ll /* 0x159 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {346ll /* 0x15a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {347ll /* 0x15b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 1, 1}, /* shl2add r3, r1, r1 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {348ll /* 0x15c */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 2}, /* shli r4, r2, 2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {349ll /* 0x15d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 1, 1}, /* shl2add r3, r1, r1 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {350ll /* 0x15e */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {351ll /* 0x15f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 2, 2}, /* shl2add r4, r2, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {352ll /* 0x160 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {353ll /* 0x161 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 2}, /* shl2add r4, r2, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {354ll /* 0x162 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {355ll /* 0x163 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {356ll /* 0x164 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {357ll /* 0x165 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {358ll /* 0x166 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {359ll /* 0x167 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {360ll /* 0x168 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 3}} /* shli r4, r3, 3 */ + }, + {361ll /* 0x169 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {362ll /* 0x16a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 1, 1}, /* shli r4, r1, 1 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {363ll /* 0x16b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 1, 1}, /* shl2add r3, r1, r1 */ + {5, 3, 3}, /* shl3add r4, r3, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {364ll /* 0x16c */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 1, 2}, /* shli r4, r1, 2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {365ll /* 0x16d */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {366ll /* 0x16e */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {367ll /* 0x16f */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {368ll /* 0x170 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {369ll /* 0x171 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 3, 3}} /* shl3add r4, r3, r3 */ + }, + {370ll /* 0x172 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 1}, /* shli r4, r2, 1 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {371ll /* 0x173 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {372ll /* 0x174 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {373ll /* 0x175 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {374ll /* 0x176 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {375ll /* 0x177 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {376ll /* 0x178 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {377ll /* 0x179 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {378ll /* 0x17a */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {379ll /* 0x17b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {380ll /* 0x17c */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {381ll /* 0x17d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {382ll /* 0x17e */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {383ll /* 0x17f */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {384ll /* 0x180 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 7}} /* shli r3, r2, 7 */ + }, + {385ll /* 0x181 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {386ll /* 0x182 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {387ll /* 0x183 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {388ll /* 0x184 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {389ll /* 0x185 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {390ll /* 0x186 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {391ll /* 0x187 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {392ll /* 0x188 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {393ll /* 0x189 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {394ll /* 0x18a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {395ll /* 0x18b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {396ll /* 0x18c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {397ll /* 0x18d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {398ll /* 0x18e */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {399ll /* 0x18f */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {400ll /* 0x190 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {401ll /* 0x191 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {402ll /* 0x192 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {403ll /* 0x193 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {404ll /* 0x194 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {4, 1, 2}, /* shl2add r4, r1, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {405ll /* 0x195 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 3}} /* shl3add r4, r3, r3 */ + }, + {406ll /* 0x196 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {407ll /* 0x197 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 2}, /* shl1add r4, r3, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {408ll /* 0x198 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {409ll /* 0x199 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {410ll /* 0x19a */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {411ll /* 0x19b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {412ll /* 0x19c */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {413ll /* 0x19d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {414ll /* 0x19e */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {415ll /* 0x19f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {416ll /* 0x1a0 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {417ll /* 0x1a1 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {418ll /* 0x1a2 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {419ll /* 0x1a3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {420ll /* 0x1a4 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {421ll /* 0x1a5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {422ll /* 0x1a6 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {423ll /* 0x1a7 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 1}, /* sub r4, r3, r1 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {424ll /* 0x1a8 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 2}, /* shl2add r4, r2, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {425ll /* 0x1a9 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {426ll /* 0x1aa */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {3, 2, 3}, /* shl1add r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {427ll /* 0x1ab */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {428ll /* 0x1ac */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {429ll /* 0x1ad */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {430ll /* 0x1ae */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 1}, /* sub r4, r3, r1 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {431ll /* 0x1af */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 1, 9}, /* shli r4, r1, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {432ll /* 0x1b0 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {433ll /* 0x1b1 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {434ll /* 0x1b2 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {435ll /* 0x1b3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {436ll /* 0x1b4 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {437ll /* 0x1b5 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {438ll /* 0x1b6 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {439ll /* 0x1b7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 1, 9}, /* shli r4, r1, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {440ll /* 0x1b8 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {441ll /* 0x1b9 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {442ll /* 0x1ba */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {443ll /* 0x1bb */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 2}, /* shl1add r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {444ll /* 0x1bc */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {445ll /* 0x1bd */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {446ll /* 0x1be */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {447ll /* 0x1bf */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {448ll /* 0x1c0 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {449ll /* 0x1c1 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {450ll /* 0x1c2 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {451ll /* 0x1c3 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 1}, /* shl2add r4, r2, r1 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {452ll /* 0x1c4 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {453ll /* 0x1c5 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 2, 1}, /* shl1add r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {454ll /* 0x1c6 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {455ll /* 0x1c7 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {456ll /* 0x1c8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {457ll /* 0x1c9 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {458ll /* 0x1ca */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {3, 3, 2}, /* shl1add r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {459ll /* 0x1cb */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {460ll /* 0x1cc */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {461ll /* 0x1cd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {462ll /* 0x1ce */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {463ll /* 0x1cf */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {464ll /* 0x1d0 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {465ll /* 0x1d1 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 1, 2}, /* shl1add r4, r1, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {467ll /* 0x1d3 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 1, 9}, /* shli r4, r1, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {468ll /* 0x1d4 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {469ll /* 0x1d5 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {5, 3, 3}, /* shl3add r4, r3, r3 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {470ll /* 0x1d6 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {471ll /* 0x1d7 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 1, 9}, /* shli r4, r1, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {472ll /* 0x1d8 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {473ll /* 0x1d9 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 1}} /* shl3add r5, r4, r1 */ + }, + {475ll /* 0x1db */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 1, 9}, /* shli r4, r1, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {476ll /* 0x1dc */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {477ll /* 0x1dd */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {478ll /* 0x1de */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {479ll /* 0x1df */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {480ll /* 0x1e0 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {481ll /* 0x1e1 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {482ll /* 0x1e2 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {483ll /* 0x1e3 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {484ll /* 0x1e4 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {485ll /* 0x1e5 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 1}, /* shl2add r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {486ll /* 0x1e6 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 3}, /* shl3add r4, r3, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {487ll /* 0x1e7 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 1, 9}, /* shli r4, r1, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {488ll /* 0x1e8 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {489ll /* 0x1e9 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 2, 1}, /* shl1add r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {490ll /* 0x1ea */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {491ll /* 0x1eb */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {492ll /* 0x1ec */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {493ll /* 0x1ed */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {494ll /* 0x1ee */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {495ll /* 0x1ef */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {496ll /* 0x1f0 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {497ll /* 0x1f1 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {498ll /* 0x1f2 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {499ll /* 0x1f3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 1, 9}, /* shli r4, r1, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {500ll /* 0x1f4 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {501ll /* 0x1f5 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {502ll /* 0x1f6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {503ll /* 0x1f7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {504ll /* 0x1f8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {505ll /* 0x1f9 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {506ll /* 0x1fa */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {507ll /* 0x1fb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {508ll /* 0x1fc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {509ll /* 0x1fd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {510ll /* 0x1fe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {511ll /* 0x1ff */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {512ll /* 0x200 */ , + {{6, 1, 9}} /* shli r2, r1, 9 */ + }, + {513ll /* 0x201 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {514ll /* 0x202 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {515ll /* 0x203 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {516ll /* 0x204 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {517ll /* 0x205 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {518ll /* 0x206 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {519ll /* 0x207 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {520ll /* 0x208 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {521ll /* 0x209 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {522ll /* 0x20a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {523ll /* 0x20b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 1, 3}, /* add r4, r1, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {524ll /* 0x20c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {525ll /* 0x20d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {526ll /* 0x20e */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {527ll /* 0x20f */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {528ll /* 0x210 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {529ll /* 0x211 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {530ll /* 0x212 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {531ll /* 0x213 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {532ll /* 0x214 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {533ll /* 0x215 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {534ll /* 0x216 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {535ll /* 0x217 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 2, 1}, /* shl2add r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {536ll /* 0x218 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {537ll /* 0x219 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 1}, /* shl2add r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {538ll /* 0x21a */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {4, 2, 1}, /* shl2add r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {539ll /* 0x21b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {540ll /* 0x21c */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {541ll /* 0x21d */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {542ll /* 0x21e */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {543ll /* 0x21f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {544ll /* 0x220 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {545ll /* 0x221 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {546ll /* 0x222 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {547ll /* 0x223 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {548ll /* 0x224 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {549ll /* 0x225 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 1}, /* shl2add r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {550ll /* 0x226 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {551ll /* 0x227 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 1}, /* shl1add r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {552ll /* 0x228 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {553ll /* 0x229 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 1}, /* shl1add r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {554ll /* 0x22a */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {3, 2, 1}, /* shl1add r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {555ll /* 0x22b */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {556ll /* 0x22c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {557ll /* 0x22d */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {558ll /* 0x22e */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {559ll /* 0x22f */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {560ll /* 0x230 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {561ll /* 0x231 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {562ll /* 0x232 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {563ll /* 0x233 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {3, 2, 3}, /* shl1add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {564ll /* 0x234 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {565ll /* 0x235 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {566ll /* 0x236 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {567ll /* 0x237 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {568ll /* 0x238 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {569ll /* 0x239 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {570ll /* 0x23a */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 1, 2}, /* shl1add r4, r1, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {571ll /* 0x23b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 1, 1}, /* shl3add r3, r1, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {572ll /* 0x23c */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {573ll /* 0x23d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 1}, /* shl3add r3, r1, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {574ll /* 0x23e */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {575ll /* 0x23f */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {576ll /* 0x240 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 6}} /* shli r3, r2, 6 */ + }, + {577ll /* 0x241 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {578ll /* 0x242 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {579ll /* 0x243 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 1}, /* shl2add r4, r2, r1 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {580ll /* 0x244 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {581ll /* 0x245 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 1}, /* shl1add r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {582ll /* 0x246 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {583ll /* 0x247 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {584ll /* 0x248 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {585ll /* 0x249 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {586ll /* 0x24a */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {587ll /* 0x24b */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {588ll /* 0x24c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {3, 3, 2}, /* shl1add r4, r3, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {589ll /* 0x24d */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {590ll /* 0x24e */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 3}, /* shl3add r4, r3, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {591ll /* 0x24f */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {592ll /* 0x250 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {593ll /* 0x251 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {594ll /* 0x252 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {595ll /* 0x253 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {596ll /* 0x254 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {597ll /* 0x255 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {3, 2, 3}, /* shl1add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {598ll /* 0x256 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {599ll /* 0x257 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {600ll /* 0x258 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {601ll /* 0x259 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {602ll /* 0x25a */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 1}, /* shli r4, r2, 1 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {603ll /* 0x25b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {604ll /* 0x25c */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {605ll /* 0x25d */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {606ll /* 0x25e */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {607ll /* 0x25f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {608ll /* 0x260 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {609ll /* 0x261 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {610ll /* 0x262 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {611ll /* 0x263 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {612ll /* 0x264 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {613ll /* 0x265 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {614ll /* 0x266 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {615ll /* 0x267 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {616ll /* 0x268 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {617ll /* 0x269 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {619ll /* 0x26b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {620ll /* 0x26c */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {621ll /* 0x26d */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {623ll /* 0x26f */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {624ll /* 0x270 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {625ll /* 0x271 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 2}, /* shl2add r4, r2, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {626ll /* 0x272 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 3, 3}, /* shl3add r4, r3, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {627ll /* 0x273 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {628ll /* 0x274 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {629ll /* 0x275 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {630ll /* 0x276 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {631ll /* 0x277 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {632ll /* 0x278 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {633ll /* 0x279 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {634ll /* 0x27a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {635ll /* 0x27b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {636ll /* 0x27c */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {637ll /* 0x27d */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {638ll /* 0x27e */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {639ll /* 0x27f */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {640ll /* 0x280 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 7}} /* shli r3, r2, 7 */ + }, + {641ll /* 0x281 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {642ll /* 0x282 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {643ll /* 0x283 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {644ll /* 0x284 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {645ll /* 0x285 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {646ll /* 0x286 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {647ll /* 0x287 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {648ll /* 0x288 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 3}} /* shli r4, r3, 3 */ + }, + {649ll /* 0x289 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {650ll /* 0x28a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {651ll /* 0x28b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {652ll /* 0x28c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {653ll /* 0x28d */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {654ll /* 0x28e */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {655ll /* 0x28f */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 4}} /* shl2add r5, r4, r4 */ + }, + {656ll /* 0x290 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {657ll /* 0x291 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 3, 3}} /* shl3add r4, r3, r3 */ + }, + {658ll /* 0x292 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {4, 2, 2}, /* shl2add r4, r2, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {659ll /* 0x293 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {660ll /* 0x294 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {661ll /* 0x295 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {662ll /* 0x296 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {663ll /* 0x297 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {664ll /* 0x298 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {665ll /* 0x299 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {666ll /* 0x29a */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 1}, /* shli r4, r2, 1 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {667ll /* 0x29b */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {668ll /* 0x29c */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {669ll /* 0x29d */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {3, 3, 1}, /* shl1add r4, r3, r1 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {670ll /* 0x29e */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {3, 2, 3}, /* shl1add r4, r2, r3 */ + {4, 4, 4}} /* shl2add r5, r4, r4 */ + }, + {671ll /* 0x29f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 2, 2}, /* shl2add r4, r2, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {672ll /* 0x2a0 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {673ll /* 0x2a1 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 2}, /* shl2add r4, r2, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {674ll /* 0x2a2 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {4, 2, 2}, /* shl2add r4, r2, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {675ll /* 0x2a3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 1}, /* shl3add r3, r1, r1 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {676ll /* 0x2a4 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {677ll /* 0x2a5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {679ll /* 0x2a7 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 3, 1}, /* sub r4, r3, r1 */ + {5, 2, 4}} /* shl3add r5, r2, r4 */ + }, + {680ll /* 0x2a8 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {681ll /* 0x2a9 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {682ll /* 0x2aa */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {684ll /* 0x2ac */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 2}, /* shli r4, r2, 2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {685ll /* 0x2ad */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {688ll /* 0x2b0 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 1, 1}, /* shl2add r3, r1, r1 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {689ll /* 0x2b1 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {690ll /* 0x2b2 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {692ll /* 0x2b4 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {693ll /* 0x2b5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 1, 1}, /* shl3add r3, r1, r1 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {694ll /* 0x2b6 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 3, 3}, /* shl2add r4, r3, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {695ll /* 0x2b7 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {696ll /* 0x2b8 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {697ll /* 0x2b9 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {699ll /* 0x2bb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {700ll /* 0x2bc */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {4, 4, 4}} /* shl2add r5, r4, r4 */ + }, + {701ll /* 0x2bd */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {702ll /* 0x2be */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {703ll /* 0x2bf */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 2, 2}, /* shl2add r4, r2, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {704ll /* 0x2c0 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 6}} /* shli r4, r3, 6 */ + }, + {705ll /* 0x2c1 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 2}, /* shl2add r4, r2, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {706ll /* 0x2c2 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {707ll /* 0x2c3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {708ll /* 0x2c4 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {709ll /* 0x2c5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {710ll /* 0x2c6 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {711ll /* 0x2c7 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 1}, /* sub r4, r3, r1 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {712ll /* 0x2c8 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {713ll /* 0x2c9 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {714ll /* 0x2ca */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 3, 3}, /* shl2add r4, r3, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {715ll /* 0x2cb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {716ll /* 0x2cc */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 1}, /* sub r4, r3, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {717ll /* 0x2cd */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {719ll /* 0x2cf */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 4, 1}} /* sub r5, r4, r1 */ + }, + {720ll /* 0x2d0 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {721ll /* 0x2d1 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {722ll /* 0x2d2 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {723ll /* 0x2d3 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {724ll /* 0x2d4 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {725ll /* 0x2d5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {726ll /* 0x2d6 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {727ll /* 0x2d7 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {728ll /* 0x2d8 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {729ll /* 0x2d9 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 3}} /* shl3add r4, r3, r3 */ + }, + {730ll /* 0x2da */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {731ll /* 0x2db */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {3, 4, 1}} /* shl1add r5, r4, r1 */ + }, + {733ll /* 0x2dd */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {735ll /* 0x2df */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {736ll /* 0x2e0 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {737ll /* 0x2e1 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {738ll /* 0x2e2 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {739ll /* 0x2e3 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {740ll /* 0x2e4 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {741ll /* 0x2e5 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {743ll /* 0x2e7 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {744ll /* 0x2e8 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {745ll /* 0x2e9 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 1}} /* shl3add r5, r4, r1 */ + }, + {747ll /* 0x2eb */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {748ll /* 0x2ec */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {749ll /* 0x2ed */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {750ll /* 0x2ee */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {752ll /* 0x2f0 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {753ll /* 0x2f1 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {755ll /* 0x2f3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {756ll /* 0x2f4 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {757ll /* 0x2f5 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {758ll /* 0x2f6 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {759ll /* 0x2f7 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {760ll /* 0x2f8 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {761ll /* 0x2f9 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {762ll /* 0x2fa */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {763ll /* 0x2fb */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {764ll /* 0x2fc */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {765ll /* 0x2fd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {766ll /* 0x2fe */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {767ll /* 0x2ff */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {768ll /* 0x300 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 8}} /* shli r3, r2, 8 */ + }, + {769ll /* 0x301 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {770ll /* 0x302 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {771ll /* 0x303 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {772ll /* 0x304 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {773ll /* 0x305 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {774ll /* 0x306 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {775ll /* 0x307 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {776ll /* 0x308 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {777ll /* 0x309 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {778ll /* 0x30a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {779ll /* 0x30b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {780ll /* 0x30c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {781ll /* 0x30d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {782ll /* 0x30e */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {783ll /* 0x30f */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {784ll /* 0x310 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {785ll /* 0x311 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 1, 2}, /* shl3add r4, r1, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {786ll /* 0x312 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {787ll /* 0x313 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {3, 1, 3}, /* shl1add r4, r1, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {788ll /* 0x314 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {789ll /* 0x315 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 2, 4}} /* shl3add r5, r2, r4 */ + }, + {790ll /* 0x316 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {791ll /* 0x317 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 3}, /* shl1add r4, r2, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {792ll /* 0x318 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {793ll /* 0x319 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {794ll /* 0x31a */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {795ll /* 0x31b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {796ll /* 0x31c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {797ll /* 0x31d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {798ll /* 0x31e */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {799ll /* 0x31f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {800ll /* 0x320 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {801ll /* 0x321 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {802ll /* 0x322 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {803ll /* 0x323 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {804ll /* 0x324 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {4, 1, 2}, /* shl2add r4, r1, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {805ll /* 0x325 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {806ll /* 0x326 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {807ll /* 0x327 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {808ll /* 0x328 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {809ll /* 0x329 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {810ll /* 0x32a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 3}, /* shl3add r4, r3, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {811ll /* 0x32b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {812ll /* 0x32c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {813ll /* 0x32d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {815ll /* 0x32f */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {816ll /* 0x330 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {817ll /* 0x331 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 2}, /* shl1add r4, r3, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {818ll /* 0x332 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {819ll /* 0x333 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {820ll /* 0x334 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {821ll /* 0x335 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {822ll /* 0x336 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {823ll /* 0x337 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 2}, /* shl1add r4, r3, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {824ll /* 0x338 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 2, 2}, /* shl2add r4, r2, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {825ll /* 0x339 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {827ll /* 0x33b */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 3}, /* shl1add r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {828ll /* 0x33c */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {829ll /* 0x33d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {831ll /* 0x33f */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {832ll /* 0x340 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 6}} /* shli r4, r3, 6 */ + }, + {833ll /* 0x341 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {834ll /* 0x342 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {3, 2, 2}, /* shl1add r4, r2, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {835ll /* 0x343 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {836ll /* 0x344 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 2}, /* shl3add r4, r2, r2 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {837ll /* 0x345 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {838ll /* 0x346 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {840ll /* 0x348 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 2}, /* shl2add r4, r2, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {841ll /* 0x349 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {842ll /* 0x34a */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {3, 2, 3}, /* shl1add r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {843ll /* 0x34b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {844ll /* 0x34c */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {845ll /* 0x34d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {846ll /* 0x34e */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {848ll /* 0x350 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {4, 2, 2}, /* shl2add r4, r2, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {849ll /* 0x351 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {850ll /* 0x352 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {852ll /* 0x354 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {3, 2, 3}, /* shl1add r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {853ll /* 0x355 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {855ll /* 0x357 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 1}, /* sub r4, r3, r1 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {856ll /* 0x358 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {857ll /* 0x359 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {5, 4, 1}} /* shl3add r5, r4, r1 */ + }, + {858ll /* 0x35a */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {859ll /* 0x35b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {861ll /* 0x35d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {862ll /* 0x35e */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 1}, /* sub r4, r3, r1 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {863ll /* 0x35f */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 4, 1}} /* sub r5, r4, r1 */ + }, + {864ll /* 0x360 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {865ll /* 0x361 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {1, 1, 4}} /* add r5, r1, r4 */ + }, + {866ll /* 0x362 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 1, 3}, /* add r4, r1, r3 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {867ll /* 0x363 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {868ll /* 0x364 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {869ll /* 0x365 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {870ll /* 0x366 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {871ll /* 0x367 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {872ll /* 0x368 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {873ll /* 0x369 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 1, 3}, /* add r4, r1, r3 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {875ll /* 0x36b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {876ll /* 0x36c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {877ll /* 0x36d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {879ll /* 0x36f */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {880ll /* 0x370 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {881ll /* 0x371 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {882ll /* 0x372 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {884ll /* 0x374 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {885ll /* 0x375 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {888ll /* 0x378 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {889ll /* 0x379 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {890ll /* 0x37a */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {891ll /* 0x37b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {892ll /* 0x37c */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {893ll /* 0x37d */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {894ll /* 0x37e */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {895ll /* 0x37f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {896ll /* 0x380 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {897ll /* 0x381 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {898ll /* 0x382 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {899ll /* 0x383 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 1}, /* shl2add r4, r2, r1 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {900ll /* 0x384 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {901ll /* 0x385 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 2, 1}, /* shl1add r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {902ll /* 0x386 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {903ll /* 0x387 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {904ll /* 0x388 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {905ll /* 0x389 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {906ll /* 0x38a */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {3, 3, 2}, /* shl1add r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {908ll /* 0x38c */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {909ll /* 0x38d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {910ll /* 0x38e */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {911ll /* 0x38f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {912ll /* 0x390 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {913ll /* 0x391 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 1, 2}, /* shl1add r4, r1, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {915ll /* 0x393 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {916ll /* 0x394 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {3, 3, 2}, /* shl1add r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {917ll /* 0x395 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {918ll /* 0x396 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {919ll /* 0x397 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {920ll /* 0x398 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {924ll /* 0x39c */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {925ll /* 0x39d */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {927ll /* 0x39f */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {928ll /* 0x3a0 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {929ll /* 0x3a1 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 1, 2}, /* shl2add r4, r1, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {932ll /* 0x3a4 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {935ll /* 0x3a7 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {936ll /* 0x3a8 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {937ll /* 0x3a9 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {5, 3, 3}, /* shl3add r4, r3, r3 */ + {5, 4, 1}} /* shl3add r5, r4, r1 */ + }, + {939ll /* 0x3ab */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {5, 3, 3}, /* shl3add r4, r3, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {941ll /* 0x3ad */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {5, 3, 3}, /* shl3add r4, r3, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {943ll /* 0x3af */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 1, 10}, /* shli r4, r1, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {944ll /* 0x3b0 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {945ll /* 0x3b1 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {948ll /* 0x3b4 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {949ll /* 0x3b5 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {5, 3, 3}, /* shl3add r4, r3, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {950ll /* 0x3b6 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {951ll /* 0x3b7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 1, 10}, /* shli r4, r1, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {952ll /* 0x3b8 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {953ll /* 0x3b9 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 1}} /* shl3add r5, r4, r1 */ + }, + {955ll /* 0x3bb */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 1}, /* sub r4, r3, r1 */ + {4, 4, 4}} /* shl2add r5, r4, r4 */ + }, + {956ll /* 0x3bc */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {957ll /* 0x3bd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {958ll /* 0x3be */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {959ll /* 0x3bf */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {960ll /* 0x3c0 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {961ll /* 0x3c1 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {962ll /* 0x3c2 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {963ll /* 0x3c3 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {964ll /* 0x3c4 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {965ll /* 0x3c5 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 1}, /* shl2add r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {966ll /* 0x3c6 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 3, 2}, /* shl1add r4, r3, r2 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {967ll /* 0x3c7 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {968ll /* 0x3c8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {969ll /* 0x3c9 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 2, 1}, /* shl1add r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {970ll /* 0x3ca */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {971ll /* 0x3cb */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {972ll /* 0x3cc */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {973ll /* 0x3cd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 3}, /* shl3add r4, r3, r3 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {975ll /* 0x3cf */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {976ll /* 0x3d0 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {979ll /* 0x3d3 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 1, 10}, /* shli r4, r1, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {980ll /* 0x3d4 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 2, 3}, /* shl1add r4, r2, r3 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {981ll /* 0x3d5 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {983ll /* 0x3d7 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 1, 10}, /* shli r4, r1, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {984ll /* 0x3d8 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {985ll /* 0x3d9 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 1}} /* shl3add r5, r4, r1 */ + }, + {987ll /* 0x3db */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 1, 10}, /* shli r4, r1, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {988ll /* 0x3dc */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {989ll /* 0x3dd */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {990ll /* 0x3de */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {991ll /* 0x3df */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {992ll /* 0x3e0 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {993ll /* 0x3e1 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {994ll /* 0x3e2 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {996ll /* 0x3e4 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {997ll /* 0x3e5 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {999ll /* 0x3e7 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 1, 10}, /* shli r4, r1, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {1000ll /* 0x3e8 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {1001ll /* 0x3e9 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 1}, /* shl2add r4, r2, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {1003ll /* 0x3eb */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {1004ll /* 0x3ec */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {1005ll /* 0x3ed */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {1006ll /* 0x3ee */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {1007ll /* 0x3ef */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {1008ll /* 0x3f0 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1009ll /* 0x3f1 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {1010ll /* 0x3f2 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {1011ll /* 0x3f3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 1, 10}, /* shli r4, r1, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {1012ll /* 0x3f4 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {1013ll /* 0x3f5 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {1014ll /* 0x3f6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {1015ll /* 0x3f7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1016ll /* 0x3f8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1017ll /* 0x3f9 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {1018ll /* 0x3fa */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {1019ll /* 0x3fb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1020ll /* 0x3fc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1021ll /* 0x3fd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1022ll /* 0x3fe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1023ll /* 0x3ff */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {1024ll /* 0x400 */ , + {{6, 1, 10}} /* shli r2, r1, 10 */ + }, + {1025ll /* 0x401 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {1026ll /* 0x402 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {1027ll /* 0x403 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1028ll /* 0x404 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {1029ll /* 0x405 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1030ll /* 0x406 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {1031ll /* 0x407 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {1032ll /* 0x408 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {1033ll /* 0x409 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1034ll /* 0x40a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {1036ll /* 0x40c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {1040ll /* 0x410 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1041ll /* 0x411 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {1042ll /* 0x412 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {1044ll /* 0x414 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {1048ll /* 0x418 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {1056ll /* 0x420 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1057ll /* 0x421 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {1060ll /* 0x424 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {1064ll /* 0x428 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {1088ll /* 0x440 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1089ll /* 0x441 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {1090ll /* 0x442 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {3, 3, 2}} /* shl1add r4, r3, r2 */ + }, + {1092ll /* 0x444 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {1096ll /* 0x448 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {1152ll /* 0x480 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 7}} /* shli r3, r2, 7 */ + }, + {1280ll /* 0x500 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 8}} /* shli r3, r2, 8 */ + }, + {1312ll /* 0x520 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {1320ll /* 0x528 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {1344ll /* 0x540 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 6}} /* shli r4, r3, 6 */ + }, + {1536ll /* 0x600 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 9}} /* shli r3, r2, 9 */ + }, + {1664ll /* 0x680 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 7}} /* shli r4, r3, 7 */ + }, + {2039ll /* 0x7f7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2040ll /* 0x7f8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2041ll /* 0x7f9 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {2043ll /* 0x7fb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2044ll /* 0x7fc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2045ll /* 0x7fd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2046ll /* 0x7fe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2047ll /* 0x7ff */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {2048ll /* 0x800 */ , + {{6, 1, 11}} /* shli r2, r1, 11 */ + }, + {2049ll /* 0x801 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {2050ll /* 0x802 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {2051ll /* 0x803 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2052ll /* 0x804 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {2053ll /* 0x805 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2054ll /* 0x806 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {2055ll /* 0x807 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {2056ll /* 0x808 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {2057ll /* 0x809 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2058ll /* 0x80a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {2064ll /* 0x810 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2080ll /* 0x820 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2112ll /* 0x840 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2176ll /* 0x880 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2184ll /* 0x888 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {2304ll /* 0x900 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 8}} /* shli r3, r2, 8 */ + }, + {2320ll /* 0x910 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {2560ll /* 0xa00 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 9}} /* shli r3, r2, 9 */ + }, + {2592ll /* 0xa20 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {2880ll /* 0xb40 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 6}} /* shli r4, r3, 6 */ + }, + {3072ll /* 0xc00 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 10}} /* shli r3, r2, 10 */ + }, + {3328ll /* 0xd00 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 8}} /* shli r4, r3, 8 */ + }, + {4087ll /* 0xff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4088ll /* 0xff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4089ll /* 0xff9 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {4091ll /* 0xffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4092ll /* 0xffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4093ll /* 0xffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4094ll /* 0xffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4095ll /* 0xfff */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {4096ll /* 0x1000 */ , + {{6, 1, 12}} /* shli r2, r1, 12 */ + }, + {4097ll /* 0x1001 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {4098ll /* 0x1002 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {4099ll /* 0x1003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4100ll /* 0x1004 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {4101ll /* 0x1005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4102ll /* 0x1006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {4103ll /* 0x1007 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {4104ll /* 0x1008 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {4105ll /* 0x1009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4106ll /* 0x100a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {4108ll /* 0x100c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {4112ll /* 0x1010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4128ll /* 0x1020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4160ll /* 0x1040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4224ll /* 0x1080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4352ll /* 0x1100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4608ll /* 0x1200 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 9}} /* shli r3, r2, 9 */ + }, + {4864ll /* 0x1300 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 8}} /* shli r4, r3, 8 */ + }, + {5120ll /* 0x1400 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 10}} /* shli r3, r2, 10 */ + }, + {6144ll /* 0x1800 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 11}} /* shli r3, r2, 11 */ + }, + {6400ll /* 0x1900 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 8}} /* shli r4, r3, 8 */ + }, + {6656ll /* 0x1a00 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 9}} /* shli r4, r3, 9 */ + }, + {7169ll /* 0x1c01 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {8183ll /* 0x1ff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8184ll /* 0x1ff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8185ll /* 0x1ff9 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {8187ll /* 0x1ffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8188ll /* 0x1ffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8189ll /* 0x1ffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8190ll /* 0x1ffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8191ll /* 0x1fff */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {8192ll /* 0x2000 */ , + {{6, 1, 13}} /* shli r2, r1, 13 */ + }, + {8193ll /* 0x2001 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {8194ll /* 0x2002 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {8195ll /* 0x2003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8196ll /* 0x2004 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {8197ll /* 0x2005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8198ll /* 0x2006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {8199ll /* 0x2007 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {8200ll /* 0x2008 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {8201ll /* 0x2009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8202ll /* 0x200a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {8204ll /* 0x200c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {8208ll /* 0x2010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8224ll /* 0x2020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8256ll /* 0x2040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8320ll /* 0x2080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8448ll /* 0x2100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8704ll /* 0x2200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9216ll /* 0x2400 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 10}} /* shli r3, r2, 10 */ + }, + {9217ll /* 0x2401 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 10}, /* shli r3, r2, 10 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {10240ll /* 0x2800 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 11}} /* shli r3, r2, 11 */ + }, + {10248ll /* 0x2808 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {10368ll /* 0x2880 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 7}} /* shli r4, r3, 7 */ + }, + {12288ll /* 0x3000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 12}} /* shli r3, r2, 12 */ + }, + {16375ll /* 0x3ff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16376ll /* 0x3ff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16377ll /* 0x3ff9 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {16379ll /* 0x3ffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16380ll /* 0x3ffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16381ll /* 0x3ffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16382ll /* 0x3ffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16383ll /* 0x3fff */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {16384ll /* 0x4000 */ , + {{6, 1, 14}} /* shli r2, r1, 14 */ + }, + {16385ll /* 0x4001 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {16386ll /* 0x4002 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {16387ll /* 0x4003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16388ll /* 0x4004 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {16389ll /* 0x4005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16390ll /* 0x4006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {16391ll /* 0x4007 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {16392ll /* 0x4008 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {16393ll /* 0x4009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16394ll /* 0x400a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {16400ll /* 0x4010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16416ll /* 0x4020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16448ll /* 0x4040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16512ll /* 0x4080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16640ll /* 0x4100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16896ll /* 0x4200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17408ll /* 0x4400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18432ll /* 0x4800 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 11}} /* shli r3, r2, 11 */ + }, + {20480ll /* 0x5000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 12}} /* shli r3, r2, 12 */ + }, + {24576ll /* 0x6000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 13}} /* shli r3, r2, 13 */ + }, + {25600ll /* 0x6400 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 10}} /* shli r4, r3, 10 */ + }, + {32759ll /* 0x7ff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {32760ll /* 0x7ff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {32761ll /* 0x7ff9 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {32763ll /* 0x7ffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {32764ll /* 0x7ffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {32765ll /* 0x7ffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {32766ll /* 0x7ffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {32767ll /* 0x7fff */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {32768ll /* 0x8000 */ , + {{6, 1, 15}} /* shli r2, r1, 15 */ + }, + {32769ll /* 0x8001 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {32770ll /* 0x8002 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {32771ll /* 0x8003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {32772ll /* 0x8004 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {32773ll /* 0x8005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {32774ll /* 0x8006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {32775ll /* 0x8007 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {32776ll /* 0x8008 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {32777ll /* 0x8009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {32778ll /* 0x800a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {32784ll /* 0x8010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {32800ll /* 0x8020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {32832ll /* 0x8040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {32896ll /* 0x8080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33024ll /* 0x8100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33280ll /* 0x8200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33792ll /* 0x8400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34816ll /* 0x8800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36864ll /* 0x9000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 12}} /* shli r3, r2, 12 */ + }, + {40960ll /* 0xa000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 13}} /* shli r3, r2, 13 */ + }, + {49152ll /* 0xc000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 14}} /* shli r3, r2, 14 */ + }, + {65527ll /* 0xfff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {65528ll /* 0xfff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {65529ll /* 0xfff9 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {65531ll /* 0xfffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {65532ll /* 0xfffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {65533ll /* 0xfffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {65534ll /* 0xfffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {65535ll /* 0xffff */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {65536ll /* 0x10000 */ , + {{6, 1, 16}} /* shli r2, r1, 16 */ + }, + {65537ll /* 0x10001 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {65538ll /* 0x10002 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {65539ll /* 0x10003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {65540ll /* 0x10004 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {65541ll /* 0x10005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {65542ll /* 0x10006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {65543ll /* 0x10007 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {65544ll /* 0x10008 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {65545ll /* 0x10009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {65546ll /* 0x1000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {65552ll /* 0x10010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {65568ll /* 0x10020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {65600ll /* 0x10040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {65664ll /* 0x10080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {65792ll /* 0x10100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {66048ll /* 0x10200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {66560ll /* 0x10400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67584ll /* 0x10800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {69632ll /* 0x11000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {73728ll /* 0x12000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 13}} /* shli r3, r2, 13 */ + }, + {81920ll /* 0x14000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 14}} /* shli r3, r2, 14 */ + }, + {98304ll /* 0x18000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 15}} /* shli r3, r2, 15 */ + }, + {131063ll /* 0x1fff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {131064ll /* 0x1fff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {131065ll /* 0x1fff9 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {131067ll /* 0x1fffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {131068ll /* 0x1fffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {131069ll /* 0x1fffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {131070ll /* 0x1fffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {131071ll /* 0x1ffff */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {131072ll /* 0x20000 */ , + {{6, 1, 17}} /* shli r2, r1, 17 */ + }, + {131073ll /* 0x20001 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {131074ll /* 0x20002 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {131075ll /* 0x20003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {131076ll /* 0x20004 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {131077ll /* 0x20005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {131078ll /* 0x20006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {131079ll /* 0x20007 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {131080ll /* 0x20008 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {131081ll /* 0x20009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {131082ll /* 0x2000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {131088ll /* 0x20010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {131104ll /* 0x20020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {131136ll /* 0x20040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {131200ll /* 0x20080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {131328ll /* 0x20100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {131584ll /* 0x20200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {132096ll /* 0x20400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {133120ll /* 0x20800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {135168ll /* 0x21000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {139264ll /* 0x22000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {147456ll /* 0x24000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 14}} /* shli r3, r2, 14 */ + }, + {163840ll /* 0x28000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 15}} /* shli r3, r2, 15 */ + }, + {196608ll /* 0x30000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 16}} /* shli r3, r2, 16 */ + }, + {262135ll /* 0x3fff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {262136ll /* 0x3fff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {262137ll /* 0x3fff9 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {262139ll /* 0x3fffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {262140ll /* 0x3fffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {262141ll /* 0x3fffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {262142ll /* 0x3fffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {262143ll /* 0x3ffff */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {262144ll /* 0x40000 */ , + {{6, 1, 18}} /* shli r2, r1, 18 */ + }, + {262145ll /* 0x40001 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {262146ll /* 0x40002 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {262147ll /* 0x40003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262148ll /* 0x40004 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {262149ll /* 0x40005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262150ll /* 0x40006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {262151ll /* 0x40007 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {262152ll /* 0x40008 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {262153ll /* 0x40009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262154ll /* 0x4000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {262160ll /* 0x40010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262176ll /* 0x40020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262208ll /* 0x40040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262272ll /* 0x40080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262400ll /* 0x40100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262656ll /* 0x40200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {263168ll /* 0x40400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {264192ll /* 0x40800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {266240ll /* 0x41000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {270336ll /* 0x42000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {278528ll /* 0x44000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {294912ll /* 0x48000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 15}} /* shli r3, r2, 15 */ + }, + {327680ll /* 0x50000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 16}} /* shli r3, r2, 16 */ + }, + {393216ll /* 0x60000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 17}} /* shli r3, r2, 17 */ + }, + {524279ll /* 0x7fff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {524280ll /* 0x7fff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {524281ll /* 0x7fff9 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {524283ll /* 0x7fffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {524284ll /* 0x7fffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {524285ll /* 0x7fffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {524286ll /* 0x7fffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {524287ll /* 0x7ffff */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {524288ll /* 0x80000 */ , + {{6, 1, 19}} /* shli r2, r1, 19 */ + }, + {524289ll /* 0x80001 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {524290ll /* 0x80002 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {524291ll /* 0x80003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {524292ll /* 0x80004 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {524293ll /* 0x80005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {524294ll /* 0x80006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {524295ll /* 0x80007 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {524296ll /* 0x80008 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {524297ll /* 0x80009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {524298ll /* 0x8000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {524304ll /* 0x80010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {524320ll /* 0x80020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {524352ll /* 0x80040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {524416ll /* 0x80080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {524544ll /* 0x80100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {524800ll /* 0x80200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {525312ll /* 0x80400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {526336ll /* 0x80800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {528384ll /* 0x81000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {532480ll /* 0x82000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {540672ll /* 0x84000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {557056ll /* 0x88000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {589824ll /* 0x90000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 16}} /* shli r3, r2, 16 */ + }, + {655360ll /* 0xa0000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 17}} /* shli r3, r2, 17 */ + }, + {786432ll /* 0xc0000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 18}} /* shli r3, r2, 18 */ + }, + {1048567ll /* 0xffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1048568ll /* 0xffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1048569ll /* 0xffff9 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {1048571ll /* 0xffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1048572ll /* 0xffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1048573ll /* 0xffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1048574ll /* 0xffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1048575ll /* 0xfffff */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {1048576ll /* 0x100000 */ , + {{6, 1, 20}} /* shli r2, r1, 20 */ + }, + {1048577ll /* 0x100001 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {1048578ll /* 0x100002 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {1048579ll /* 0x100003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1048580ll /* 0x100004 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {1048581ll /* 0x100005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1048582ll /* 0x100006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {1048583ll /* 0x100007 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {1048584ll /* 0x100008 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {1048585ll /* 0x100009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1048586ll /* 0x10000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {1048592ll /* 0x100010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1048608ll /* 0x100020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1048640ll /* 0x100040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1048704ll /* 0x100080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1048832ll /* 0x100100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1049088ll /* 0x100200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1049600ll /* 0x100400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1050624ll /* 0x100800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1052672ll /* 0x101000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1056768ll /* 0x102000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1064960ll /* 0x104000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1081344ll /* 0x108000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1114112ll /* 0x110000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1179648ll /* 0x120000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 17}} /* shli r3, r2, 17 */ + }, + {1310720ll /* 0x140000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 18}} /* shli r3, r2, 18 */ + }, + {1572864ll /* 0x180000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 19}} /* shli r3, r2, 19 */ + }, + {2097143ll /* 0x1ffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2097144ll /* 0x1ffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2097145ll /* 0x1ffff9 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {2097147ll /* 0x1ffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2097148ll /* 0x1ffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2097149ll /* 0x1ffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2097150ll /* 0x1ffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2097151ll /* 0x1fffff */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {2097152ll /* 0x200000 */ , + {{6, 1, 21}} /* shli r2, r1, 21 */ + }, + {2097153ll /* 0x200001 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {2097154ll /* 0x200002 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {2097155ll /* 0x200003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2097156ll /* 0x200004 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {2097157ll /* 0x200005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2097158ll /* 0x200006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {2097159ll /* 0x200007 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {2097160ll /* 0x200008 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {2097161ll /* 0x200009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2097162ll /* 0x20000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {2097168ll /* 0x200010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2097184ll /* 0x200020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2097216ll /* 0x200040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2097280ll /* 0x200080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2097408ll /* 0x200100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2097664ll /* 0x200200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2098176ll /* 0x200400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2099200ll /* 0x200800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2101248ll /* 0x201000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2105344ll /* 0x202000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2113536ll /* 0x204000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2129920ll /* 0x208000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2162688ll /* 0x210000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2228224ll /* 0x220000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2359296ll /* 0x240000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 18}} /* shli r3, r2, 18 */ + }, + {2621440ll /* 0x280000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 19}} /* shli r3, r2, 19 */ + }, + {3145728ll /* 0x300000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 20}} /* shli r3, r2, 20 */ + }, + {4194295ll /* 0x3ffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4194296ll /* 0x3ffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4194297ll /* 0x3ffff9 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {4194299ll /* 0x3ffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4194300ll /* 0x3ffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4194301ll /* 0x3ffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4194302ll /* 0x3ffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4194303ll /* 0x3fffff */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {4194304ll /* 0x400000 */ , + {{6, 1, 22}} /* shli r2, r1, 22 */ + }, + {4194305ll /* 0x400001 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {4194306ll /* 0x400002 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {4194307ll /* 0x400003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4194308ll /* 0x400004 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {4194309ll /* 0x400005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4194310ll /* 0x400006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {4194311ll /* 0x400007 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {4194312ll /* 0x400008 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {4194313ll /* 0x400009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4194314ll /* 0x40000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {4194320ll /* 0x400010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4194336ll /* 0x400020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4194368ll /* 0x400040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4194432ll /* 0x400080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4194560ll /* 0x400100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4194816ll /* 0x400200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4195328ll /* 0x400400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4196352ll /* 0x400800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4198400ll /* 0x401000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4202496ll /* 0x402000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4210688ll /* 0x404000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4227072ll /* 0x408000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4259840ll /* 0x410000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4325376ll /* 0x420000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4456448ll /* 0x440000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4718592ll /* 0x480000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 19}} /* shli r3, r2, 19 */ + }, + {5242880ll /* 0x500000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 20}} /* shli r3, r2, 20 */ + }, + {6291456ll /* 0x600000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 21}} /* shli r3, r2, 21 */ + }, + {8388599ll /* 0x7ffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8388600ll /* 0x7ffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8388601ll /* 0x7ffff9 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {8388603ll /* 0x7ffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8388604ll /* 0x7ffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8388605ll /* 0x7ffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8388606ll /* 0x7ffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8388607ll /* 0x7fffff */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {8388608ll /* 0x800000 */ , + {{6, 1, 23}} /* shli r2, r1, 23 */ + }, + {8388609ll /* 0x800001 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {8388610ll /* 0x800002 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {8388611ll /* 0x800003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8388612ll /* 0x800004 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {8388613ll /* 0x800005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8388614ll /* 0x800006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {8388615ll /* 0x800007 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {8388616ll /* 0x800008 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {8388617ll /* 0x800009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8388618ll /* 0x80000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {8388624ll /* 0x800010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8388640ll /* 0x800020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8388672ll /* 0x800040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8388736ll /* 0x800080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8388864ll /* 0x800100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8389120ll /* 0x800200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8389632ll /* 0x800400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8390656ll /* 0x800800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8392704ll /* 0x801000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8396800ll /* 0x802000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8404992ll /* 0x804000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8421376ll /* 0x808000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8454144ll /* 0x810000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8519680ll /* 0x820000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8650752ll /* 0x840000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8912896ll /* 0x880000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9437184ll /* 0x900000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 20}} /* shli r3, r2, 20 */ + }, + {10485760ll /* 0xa00000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 21}} /* shli r3, r2, 21 */ + }, + {11796480ll /* 0xb40000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 18}} /* shli r4, r3, 18 */ + }, + {12582912ll /* 0xc00000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 22}} /* shli r3, r2, 22 */ + }, + {16777207ll /* 0xfffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16777208ll /* 0xfffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16777209ll /* 0xfffff9 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {16777211ll /* 0xfffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16777212ll /* 0xfffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16777213ll /* 0xfffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16777214ll /* 0xfffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16777215ll /* 0xffffff */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {16777216ll /* 0x1000000 */ , + {{6, 1, 24}} /* shli r2, r1, 24 */ + }, + {16777217ll /* 0x1000001 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {16777218ll /* 0x1000002 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {16777219ll /* 0x1000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16777220ll /* 0x1000004 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {16777221ll /* 0x1000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16777222ll /* 0x1000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {16777223ll /* 0x1000007 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {16777224ll /* 0x1000008 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {16777225ll /* 0x1000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16777226ll /* 0x100000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {16777232ll /* 0x1000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16777248ll /* 0x1000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16777280ll /* 0x1000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16777344ll /* 0x1000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16777472ll /* 0x1000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16777728ll /* 0x1000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16778240ll /* 0x1000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16779264ll /* 0x1000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16781312ll /* 0x1001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16785408ll /* 0x1002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16793600ll /* 0x1004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16809984ll /* 0x1008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16842752ll /* 0x1010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16908288ll /* 0x1020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17039360ll /* 0x1040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17301504ll /* 0x1080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17825792ll /* 0x1100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18874368ll /* 0x1200000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 21}} /* shli r3, r2, 21 */ + }, + {20971520ll /* 0x1400000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 22}} /* shli r3, r2, 22 */ + }, + {23592960ll /* 0x1680000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 19}} /* shli r4, r3, 19 */ + }, + {25165824ll /* 0x1800000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 23}} /* shli r3, r2, 23 */ + }, + {33554423ll /* 0x1fffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {33554424ll /* 0x1fffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {33554425ll /* 0x1fffff9 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {33554427ll /* 0x1fffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {33554428ll /* 0x1fffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {33554429ll /* 0x1fffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {33554430ll /* 0x1fffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {33554431ll /* 0x1ffffff */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {33554432ll /* 0x2000000 */ , + {{6, 1, 25}} /* shli r2, r1, 25 */ + }, + {33554433ll /* 0x2000001 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {33554434ll /* 0x2000002 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {33554435ll /* 0x2000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33554436ll /* 0x2000004 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {33554437ll /* 0x2000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33554438ll /* 0x2000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {33554439ll /* 0x2000007 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {33554440ll /* 0x2000008 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {33554441ll /* 0x2000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33554442ll /* 0x200000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {33554448ll /* 0x2000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33554464ll /* 0x2000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33554496ll /* 0x2000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33554560ll /* 0x2000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33554688ll /* 0x2000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33554944ll /* 0x2000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33555456ll /* 0x2000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33556480ll /* 0x2000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33558528ll /* 0x2001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33562624ll /* 0x2002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33570816ll /* 0x2004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33587200ll /* 0x2008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33619968ll /* 0x2010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33685504ll /* 0x2020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33816576ll /* 0x2040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34078720ll /* 0x2080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34603008ll /* 0x2100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35651584ll /* 0x2200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {37748736ll /* 0x2400000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 22}} /* shli r3, r2, 22 */ + }, + {41943040ll /* 0x2800000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 23}} /* shli r3, r2, 23 */ + }, + {50331648ll /* 0x3000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 24}} /* shli r3, r2, 24 */ + }, + {67108855ll /* 0x3fffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {67108856ll /* 0x3fffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {67108857ll /* 0x3fffff9 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {67108859ll /* 0x3fffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {67108860ll /* 0x3fffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {67108861ll /* 0x3fffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {67108862ll /* 0x3fffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {67108863ll /* 0x3ffffff */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {67108864ll /* 0x4000000 */ , + {{6, 1, 26}} /* shli r2, r1, 26 */ + }, + {67108865ll /* 0x4000001 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {67108866ll /* 0x4000002 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {67108867ll /* 0x4000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67108868ll /* 0x4000004 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {67108869ll /* 0x4000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67108870ll /* 0x4000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {67108871ll /* 0x4000007 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {67108872ll /* 0x4000008 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {67108873ll /* 0x4000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67108874ll /* 0x400000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {67108880ll /* 0x4000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67108896ll /* 0x4000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67108928ll /* 0x4000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67108992ll /* 0x4000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67109120ll /* 0x4000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67109376ll /* 0x4000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67109888ll /* 0x4000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67110912ll /* 0x4000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67112960ll /* 0x4001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67117056ll /* 0x4002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67125248ll /* 0x4004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67141632ll /* 0x4008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67174400ll /* 0x4010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67239936ll /* 0x4020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67371008ll /* 0x4040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67633152ll /* 0x4080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68157440ll /* 0x4100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {69206016ll /* 0x4200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {71303168ll /* 0x4400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {75497472ll /* 0x4800000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 23}} /* shli r3, r2, 23 */ + }, + {83886080ll /* 0x5000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 24}} /* shli r3, r2, 24 */ + }, + {100663296ll /* 0x6000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 25}} /* shli r3, r2, 25 */ + }, + {134217719ll /* 0x7fffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {134217720ll /* 0x7fffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {134217721ll /* 0x7fffff9 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {134217723ll /* 0x7fffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {134217724ll /* 0x7fffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {134217725ll /* 0x7fffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {134217726ll /* 0x7fffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {134217727ll /* 0x7ffffff */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {134217728ll /* 0x8000000 */ , + {{6, 1, 27}} /* shli r2, r1, 27 */ + }, + {134217729ll /* 0x8000001 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {134217730ll /* 0x8000002 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {134217731ll /* 0x8000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134217732ll /* 0x8000004 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {134217733ll /* 0x8000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134217734ll /* 0x8000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {134217735ll /* 0x8000007 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {134217736ll /* 0x8000008 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {134217737ll /* 0x8000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134217738ll /* 0x800000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {134217744ll /* 0x8000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134217760ll /* 0x8000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134217792ll /* 0x8000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134217856ll /* 0x8000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134217984ll /* 0x8000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134218240ll /* 0x8000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134218752ll /* 0x8000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134219776ll /* 0x8000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134221824ll /* 0x8001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134225920ll /* 0x8002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134234112ll /* 0x8004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134250496ll /* 0x8008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134283264ll /* 0x8010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134348800ll /* 0x8020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134479872ll /* 0x8040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134742016ll /* 0x8080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {135266304ll /* 0x8100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {136314880ll /* 0x8200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {138412032ll /* 0x8400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {142606336ll /* 0x8800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {150994944ll /* 0x9000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 24}} /* shli r3, r2, 24 */ + }, + {167772160ll /* 0xa000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 25}} /* shli r3, r2, 25 */ + }, + {201326592ll /* 0xc000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 26}} /* shli r3, r2, 26 */ + }, + {268435447ll /* 0xffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {268435448ll /* 0xffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {268435449ll /* 0xffffff9 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {268435451ll /* 0xffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {268435452ll /* 0xffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {268435453ll /* 0xffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {268435454ll /* 0xffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {268435455ll /* 0xfffffff */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {268435456ll /* 0x10000000 */ , + {{6, 1, 28}} /* shli r2, r1, 28 */ + }, + {268435457ll /* 0x10000001 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {268435458ll /* 0x10000002 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {268435459ll /* 0x10000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268435460ll /* 0x10000004 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {268435461ll /* 0x10000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268435462ll /* 0x10000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {268435463ll /* 0x10000007 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {268435464ll /* 0x10000008 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {268435465ll /* 0x10000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268435466ll /* 0x1000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {268435472ll /* 0x10000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268435488ll /* 0x10000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268435520ll /* 0x10000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268435584ll /* 0x10000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268435712ll /* 0x10000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268435968ll /* 0x10000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268436480ll /* 0x10000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268437504ll /* 0x10000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268439552ll /* 0x10001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268443648ll /* 0x10002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268451840ll /* 0x10004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268468224ll /* 0x10008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268500992ll /* 0x10010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268566528ll /* 0x10020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268697600ll /* 0x10040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268959744ll /* 0x10080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {269484032ll /* 0x10100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {270532608ll /* 0x10200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {272629760ll /* 0x10400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {276824064ll /* 0x10800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {285212672ll /* 0x11000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {301989888ll /* 0x12000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 25}} /* shli r3, r2, 25 */ + }, + {335544320ll /* 0x14000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 26}} /* shli r3, r2, 26 */ + }, + {402653184ll /* 0x18000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 27}} /* shli r3, r2, 27 */ + }, + {536870903ll /* 0x1ffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {536870904ll /* 0x1ffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {536870905ll /* 0x1ffffff9 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {536870907ll /* 0x1ffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {536870908ll /* 0x1ffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {536870909ll /* 0x1ffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {536870910ll /* 0x1ffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {536870911ll /* 0x1fffffff */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {536870912ll /* 0x20000000 */ , + {{6, 1, 29}} /* shli r2, r1, 29 */ + }, + {536870913ll /* 0x20000001 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {536870914ll /* 0x20000002 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {536870915ll /* 0x20000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536870916ll /* 0x20000004 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {536870917ll /* 0x20000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536870918ll /* 0x20000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {536870919ll /* 0x20000007 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {536870920ll /* 0x20000008 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {536870921ll /* 0x20000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536870922ll /* 0x2000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {536870928ll /* 0x20000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536870944ll /* 0x20000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536870976ll /* 0x20000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536871040ll /* 0x20000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536871168ll /* 0x20000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536871424ll /* 0x20000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536871936ll /* 0x20000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536872960ll /* 0x20000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536875008ll /* 0x20001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536879104ll /* 0x20002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536887296ll /* 0x20004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536903680ll /* 0x20008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536936448ll /* 0x20010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {537001984ll /* 0x20020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {537133056ll /* 0x20040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {537395200ll /* 0x20080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {537919488ll /* 0x20100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {538968064ll /* 0x20200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {541065216ll /* 0x20400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {545259520ll /* 0x20800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {553648128ll /* 0x21000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {570425344ll /* 0x22000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {603979776ll /* 0x24000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 26}} /* shli r3, r2, 26 */ + }, + {671088640ll /* 0x28000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 27}} /* shli r3, r2, 27 */ + }, + {805306368ll /* 0x30000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 28}} /* shli r3, r2, 28 */ + }, + {1073741815ll /* 0x3ffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1073741816ll /* 0x3ffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1073741817ll /* 0x3ffffff9 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {1073741819ll /* 0x3ffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1073741820ll /* 0x3ffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1073741821ll /* 0x3ffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1073741822ll /* 0x3ffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1073741823ll /* 0x3fffffff */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {1073741824ll /* 0x40000000 */ , + {{6, 1, 30}} /* shli r2, r1, 30 */ + }, + {1073741825ll /* 0x40000001 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {1073741826ll /* 0x40000002 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {1073741827ll /* 0x40000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073741828ll /* 0x40000004 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {1073741829ll /* 0x40000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073741830ll /* 0x40000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {1073741831ll /* 0x40000007 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {1073741832ll /* 0x40000008 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {1073741833ll /* 0x40000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073741834ll /* 0x4000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {1073741840ll /* 0x40000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073741856ll /* 0x40000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073741888ll /* 0x40000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073741952ll /* 0x40000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073742080ll /* 0x40000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073742336ll /* 0x40000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073742848ll /* 0x40000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073743872ll /* 0x40000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073745920ll /* 0x40001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073750016ll /* 0x40002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073758208ll /* 0x40004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073774592ll /* 0x40008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073807360ll /* 0x40010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073872896ll /* 0x40020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1074003968ll /* 0x40040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1074266112ll /* 0x40080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1074790400ll /* 0x40100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1075838976ll /* 0x40200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1077936128ll /* 0x40400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1082130432ll /* 0x40800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1090519040ll /* 0x41000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1107296256ll /* 0x42000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1140850688ll /* 0x44000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1207959552ll /* 0x48000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 27}} /* shli r3, r2, 27 */ + }, + {1342177280ll /* 0x50000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 28}} /* shli r3, r2, 28 */ + }, + {1610612736ll /* 0x60000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 29}} /* shli r3, r2, 29 */ + }, + {2147483639ll /* 0x7ffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2147483640ll /* 0x7ffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2147483641ll /* 0x7ffffff9 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {2147483643ll /* 0x7ffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2147483644ll /* 0x7ffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2147483645ll /* 0x7ffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2147483646ll /* 0x7ffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2147483647ll /* 0x7fffffff */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {2147483648ll /* 0x80000000 */ , + {{6, 1, 31}} /* shli r2, r1, 31 */ + }, + {2147483649ll /* 0x80000001 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {2147483650ll /* 0x80000002 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {2147483651ll /* 0x80000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2147483652ll /* 0x80000004 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {2147483653ll /* 0x80000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2147483654ll /* 0x80000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {2147483655ll /* 0x80000007 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {2147483656ll /* 0x80000008 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {2147483657ll /* 0x80000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2147483658ll /* 0x8000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {2147483664ll /* 0x80000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2147483680ll /* 0x80000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2147483712ll /* 0x80000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2147483776ll /* 0x80000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2147483904ll /* 0x80000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2147484160ll /* 0x80000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2147484672ll /* 0x80000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2147485696ll /* 0x80000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2147487744ll /* 0x80001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2147491840ll /* 0x80002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2147500032ll /* 0x80004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2147516416ll /* 0x80008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2147549184ll /* 0x80010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2147614720ll /* 0x80020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2147745792ll /* 0x80040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2148007936ll /* 0x80080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2148532224ll /* 0x80100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2149580800ll /* 0x80200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2151677952ll /* 0x80400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2155872256ll /* 0x80800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2164260864ll /* 0x81000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2181038080ll /* 0x82000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2214592512ll /* 0x84000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2281701376ll /* 0x88000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2415919104ll /* 0x90000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 28}} /* shli r3, r2, 28 */ + }, + {2684354560ll /* 0xa0000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 29}} /* shli r3, r2, 29 */ + }, + {3221225472ll /* 0xc0000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 30}} /* shli r3, r2, 30 */ + }, + {4294967287ll /* 0xfffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4294967288ll /* 0xfffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4294967289ll /* 0xfffffff9 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {4294967291ll /* 0xfffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4294967292ll /* 0xfffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4294967293ll /* 0xfffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4294967294ll /* 0xfffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4294967295ll /* 0xffffffff */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {4294967296ll /* 0x100000000 */ , + {{6, 1, 32}} /* shli r2, r1, 32 */ + }, + {4294967297ll /* 0x100000001 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {4294967298ll /* 0x100000002 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {4294967299ll /* 0x100000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4294967300ll /* 0x100000004 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {4294967301ll /* 0x100000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4294967302ll /* 0x100000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {4294967303ll /* 0x100000007 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {4294967304ll /* 0x100000008 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {4294967305ll /* 0x100000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4294967306ll /* 0x10000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {4294967312ll /* 0x100000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4294967328ll /* 0x100000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4294967360ll /* 0x100000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4294967424ll /* 0x100000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4294967552ll /* 0x100000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4294967808ll /* 0x100000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4294968320ll /* 0x100000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4294969344ll /* 0x100000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4294971392ll /* 0x100001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4294975488ll /* 0x100002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4294983680ll /* 0x100004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4295000064ll /* 0x100008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4295032832ll /* 0x100010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4295098368ll /* 0x100020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4295229440ll /* 0x100040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4295491584ll /* 0x100080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4296015872ll /* 0x100100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4297064448ll /* 0x100200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4299161600ll /* 0x100400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4303355904ll /* 0x100800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4311744512ll /* 0x101000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4328521728ll /* 0x102000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4362076160ll /* 0x104000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4429185024ll /* 0x108000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4563402752ll /* 0x110000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4831838208ll /* 0x120000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 29}} /* shli r3, r2, 29 */ + }, + {5368709120ll /* 0x140000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 30}} /* shli r3, r2, 30 */ + }, + {6442450944ll /* 0x180000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 31}} /* shli r3, r2, 31 */ + }, + {8589934583ll /* 0x1fffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8589934584ll /* 0x1fffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8589934585ll /* 0x1fffffff9 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {8589934587ll /* 0x1fffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8589934588ll /* 0x1fffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8589934589ll /* 0x1fffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8589934590ll /* 0x1fffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8589934591ll /* 0x1ffffffff */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {8589934592ll /* 0x200000000 */ , + {{6, 1, 33}} /* shli r2, r1, 33 */ + }, + {8589934593ll /* 0x200000001 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {8589934594ll /* 0x200000002 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {8589934595ll /* 0x200000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8589934596ll /* 0x200000004 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {8589934597ll /* 0x200000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8589934598ll /* 0x200000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {8589934599ll /* 0x200000007 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {8589934600ll /* 0x200000008 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {8589934601ll /* 0x200000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8589934602ll /* 0x20000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {8589934608ll /* 0x200000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8589934624ll /* 0x200000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8589934656ll /* 0x200000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8589934720ll /* 0x200000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8589934848ll /* 0x200000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8589935104ll /* 0x200000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8589935616ll /* 0x200000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8589936640ll /* 0x200000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8589938688ll /* 0x200001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8589942784ll /* 0x200002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8589950976ll /* 0x200004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8589967360ll /* 0x200008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8590000128ll /* 0x200010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8590065664ll /* 0x200020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8590196736ll /* 0x200040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8590458880ll /* 0x200080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8590983168ll /* 0x200100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8592031744ll /* 0x200200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8594128896ll /* 0x200400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8598323200ll /* 0x200800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8606711808ll /* 0x201000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8623489024ll /* 0x202000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8657043456ll /* 0x204000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8724152320ll /* 0x208000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8858370048ll /* 0x210000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9126805504ll /* 0x220000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9663676416ll /* 0x240000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 30}} /* shli r3, r2, 30 */ + }, + {10737418240ll /* 0x280000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 31}} /* shli r3, r2, 31 */ + }, + {12884901888ll /* 0x300000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 32}} /* shli r3, r2, 32 */ + }, + {17179869175ll /* 0x3fffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {17179869176ll /* 0x3fffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {17179869177ll /* 0x3fffffff9 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {17179869179ll /* 0x3fffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {17179869180ll /* 0x3fffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {17179869181ll /* 0x3fffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {17179869182ll /* 0x3fffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {17179869183ll /* 0x3ffffffff */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {17179869184ll /* 0x400000000 */ , + {{6, 1, 34}} /* shli r2, r1, 34 */ + }, + {17179869185ll /* 0x400000001 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {17179869186ll /* 0x400000002 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {17179869187ll /* 0x400000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17179869188ll /* 0x400000004 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {17179869189ll /* 0x400000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17179869190ll /* 0x400000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {17179869191ll /* 0x400000007 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {17179869192ll /* 0x400000008 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {17179869193ll /* 0x400000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17179869194ll /* 0x40000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {17179869200ll /* 0x400000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17179869216ll /* 0x400000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17179869248ll /* 0x400000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17179869312ll /* 0x400000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17179869440ll /* 0x400000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17179869696ll /* 0x400000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17179870208ll /* 0x400000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17179871232ll /* 0x400000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17179873280ll /* 0x400001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17179877376ll /* 0x400002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17179885568ll /* 0x400004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17179901952ll /* 0x400008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17179934720ll /* 0x400010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17180000256ll /* 0x400020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17180131328ll /* 0x400040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17180393472ll /* 0x400080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17180917760ll /* 0x400100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17181966336ll /* 0x400200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17184063488ll /* 0x400400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17188257792ll /* 0x400800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17196646400ll /* 0x401000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17213423616ll /* 0x402000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17246978048ll /* 0x404000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17314086912ll /* 0x408000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17448304640ll /* 0x410000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17716740096ll /* 0x420000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18253611008ll /* 0x440000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {19327352832ll /* 0x480000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 31}} /* shli r3, r2, 31 */ + }, + {21474836480ll /* 0x500000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 32}} /* shli r3, r2, 32 */ + }, + {25769803776ll /* 0x600000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 33}} /* shli r3, r2, 33 */ + }, + {34359738359ll /* 0x7fffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {34359738360ll /* 0x7fffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {34359738361ll /* 0x7fffffff9 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {34359738363ll /* 0x7fffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {34359738364ll /* 0x7fffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {34359738365ll /* 0x7fffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {34359738366ll /* 0x7fffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {34359738367ll /* 0x7ffffffff */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {34359738368ll /* 0x800000000 */ , + {{6, 1, 35}} /* shli r2, r1, 35 */ + }, + {34359738369ll /* 0x800000001 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {34359738370ll /* 0x800000002 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {34359738371ll /* 0x800000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34359738372ll /* 0x800000004 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {34359738373ll /* 0x800000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34359738374ll /* 0x800000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {34359738375ll /* 0x800000007 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {34359738376ll /* 0x800000008 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {34359738377ll /* 0x800000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34359738378ll /* 0x80000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {34359738384ll /* 0x800000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34359738400ll /* 0x800000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34359738432ll /* 0x800000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34359738496ll /* 0x800000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34359738624ll /* 0x800000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34359738880ll /* 0x800000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34359739392ll /* 0x800000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34359740416ll /* 0x800000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34359742464ll /* 0x800001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34359746560ll /* 0x800002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34359754752ll /* 0x800004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34359771136ll /* 0x800008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34359803904ll /* 0x800010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34359869440ll /* 0x800020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34360000512ll /* 0x800040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34360262656ll /* 0x800080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34360786944ll /* 0x800100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34361835520ll /* 0x800200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34363932672ll /* 0x800400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34368126976ll /* 0x800800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34376515584ll /* 0x801000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34393292800ll /* 0x802000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34426847232ll /* 0x804000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34493956096ll /* 0x808000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34628173824ll /* 0x810000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34896609280ll /* 0x820000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35433480192ll /* 0x840000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36507222016ll /* 0x880000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {38654705664ll /* 0x900000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 32}} /* shli r3, r2, 32 */ + }, + {42949672960ll /* 0xa00000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 33}} /* shli r3, r2, 33 */ + }, + {51539607552ll /* 0xc00000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 34}} /* shli r3, r2, 34 */ + }, + {68719476727ll /* 0xffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {68719476728ll /* 0xffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {68719476729ll /* 0xffffffff9 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {68719476731ll /* 0xffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {68719476732ll /* 0xffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {68719476733ll /* 0xffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {68719476734ll /* 0xffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {68719476735ll /* 0xfffffffff */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {68719476736ll /* 0x1000000000 */ , + {{6, 1, 36}} /* shli r2, r1, 36 */ + }, + {68719476737ll /* 0x1000000001 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {68719476738ll /* 0x1000000002 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {68719476739ll /* 0x1000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68719476740ll /* 0x1000000004 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {68719476741ll /* 0x1000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68719476742ll /* 0x1000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {68719476743ll /* 0x1000000007 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {68719476744ll /* 0x1000000008 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {68719476745ll /* 0x1000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68719476746ll /* 0x100000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {68719476752ll /* 0x1000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68719476768ll /* 0x1000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68719476800ll /* 0x1000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68719476864ll /* 0x1000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68719476992ll /* 0x1000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68719477248ll /* 0x1000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68719477760ll /* 0x1000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68719478784ll /* 0x1000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68719480832ll /* 0x1000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68719484928ll /* 0x1000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68719493120ll /* 0x1000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68719509504ll /* 0x1000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68719542272ll /* 0x1000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68719607808ll /* 0x1000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68719738880ll /* 0x1000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68720001024ll /* 0x1000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68720525312ll /* 0x1000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68721573888ll /* 0x1000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68723671040ll /* 0x1000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68727865344ll /* 0x1000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68736253952ll /* 0x1001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68753031168ll /* 0x1002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68786585600ll /* 0x1004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68853694464ll /* 0x1008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68987912192ll /* 0x1010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {69256347648ll /* 0x1020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {69793218560ll /* 0x1040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70866960384ll /* 0x1080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {73014444032ll /* 0x1100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {77309411328ll /* 0x1200000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 33}} /* shli r3, r2, 33 */ + }, + {85899345920ll /* 0x1400000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 34}} /* shli r3, r2, 34 */ + }, + {103079215104ll /* 0x1800000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 35}} /* shli r3, r2, 35 */ + }, + {137438953463ll /* 0x1ffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {137438953464ll /* 0x1ffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {137438953465ll /* 0x1ffffffff9 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {137438953467ll /* 0x1ffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {137438953468ll /* 0x1ffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {137438953469ll /* 0x1ffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {137438953470ll /* 0x1ffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {137438953471ll /* 0x1fffffffff */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {137438953472ll /* 0x2000000000 */ , + {{6, 1, 37}} /* shli r2, r1, 37 */ + }, + {137438953473ll /* 0x2000000001 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {137438953474ll /* 0x2000000002 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {137438953475ll /* 0x2000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137438953476ll /* 0x2000000004 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {137438953477ll /* 0x2000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137438953478ll /* 0x2000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {137438953479ll /* 0x2000000007 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {137438953480ll /* 0x2000000008 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {137438953481ll /* 0x2000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137438953482ll /* 0x200000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {137438953488ll /* 0x2000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137438953504ll /* 0x2000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137438953536ll /* 0x2000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137438953600ll /* 0x2000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137438953728ll /* 0x2000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137438953984ll /* 0x2000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137438954496ll /* 0x2000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137438955520ll /* 0x2000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137438957568ll /* 0x2000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137438961664ll /* 0x2000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137438969856ll /* 0x2000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137438986240ll /* 0x2000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137439019008ll /* 0x2000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137439084544ll /* 0x2000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137439215616ll /* 0x2000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137439477760ll /* 0x2000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137440002048ll /* 0x2000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137441050624ll /* 0x2000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137443147776ll /* 0x2000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137447342080ll /* 0x2000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137455730688ll /* 0x2001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137472507904ll /* 0x2002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137506062336ll /* 0x2004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137573171200ll /* 0x2008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137707388928ll /* 0x2010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {137975824384ll /* 0x2020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {138512695296ll /* 0x2040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {139586437120ll /* 0x2080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {141733920768ll /* 0x2100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {146028888064ll /* 0x2200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {154618822656ll /* 0x2400000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 34}} /* shli r3, r2, 34 */ + }, + {171798691840ll /* 0x2800000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 35}} /* shli r3, r2, 35 */ + }, + {206158430208ll /* 0x3000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 36}} /* shli r3, r2, 36 */ + }, + {274877906935ll /* 0x3ffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {274877906936ll /* 0x3ffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {274877906937ll /* 0x3ffffffff9 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {274877906939ll /* 0x3ffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {274877906940ll /* 0x3ffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {274877906941ll /* 0x3ffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {274877906942ll /* 0x3ffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {274877906943ll /* 0x3fffffffff */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {274877906944ll /* 0x4000000000 */ , + {{6, 1, 38}} /* shli r2, r1, 38 */ + }, + {274877906945ll /* 0x4000000001 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {274877906946ll /* 0x4000000002 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {274877906947ll /* 0x4000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274877906948ll /* 0x4000000004 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {274877906949ll /* 0x4000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274877906950ll /* 0x4000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {274877906951ll /* 0x4000000007 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {274877906952ll /* 0x4000000008 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {274877906953ll /* 0x4000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274877906954ll /* 0x400000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {274877906960ll /* 0x4000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274877906976ll /* 0x4000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274877907008ll /* 0x4000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274877907072ll /* 0x4000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274877907200ll /* 0x4000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274877907456ll /* 0x4000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274877907968ll /* 0x4000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274877908992ll /* 0x4000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274877911040ll /* 0x4000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274877915136ll /* 0x4000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274877923328ll /* 0x4000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274877939712ll /* 0x4000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274877972480ll /* 0x4000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274878038016ll /* 0x4000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274878169088ll /* 0x4000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274878431232ll /* 0x4000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274878955520ll /* 0x4000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274880004096ll /* 0x4000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274882101248ll /* 0x4000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274886295552ll /* 0x4000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274894684160ll /* 0x4001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274911461376ll /* 0x4002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {274945015808ll /* 0x4004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {275012124672ll /* 0x4008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {275146342400ll /* 0x4010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {275414777856ll /* 0x4020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {275951648768ll /* 0x4040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {277025390592ll /* 0x4080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {279172874240ll /* 0x4100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {283467841536ll /* 0x4200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {292057776128ll /* 0x4400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {309237645312ll /* 0x4800000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 35}} /* shli r3, r2, 35 */ + }, + {343597383680ll /* 0x5000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 36}} /* shli r3, r2, 36 */ + }, + {412316860416ll /* 0x6000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 37}} /* shli r3, r2, 37 */ + }, + {549755813879ll /* 0x7ffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {549755813880ll /* 0x7ffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {549755813881ll /* 0x7ffffffff9 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {549755813883ll /* 0x7ffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {549755813884ll /* 0x7ffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {549755813885ll /* 0x7ffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {549755813886ll /* 0x7ffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {549755813887ll /* 0x7fffffffff */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {549755813888ll /* 0x8000000000 */ , + {{6, 1, 39}} /* shli r2, r1, 39 */ + }, + {549755813889ll /* 0x8000000001 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {549755813890ll /* 0x8000000002 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {549755813891ll /* 0x8000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549755813892ll /* 0x8000000004 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {549755813893ll /* 0x8000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549755813894ll /* 0x8000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {549755813895ll /* 0x8000000007 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {549755813896ll /* 0x8000000008 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {549755813897ll /* 0x8000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549755813898ll /* 0x800000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {549755813904ll /* 0x8000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549755813920ll /* 0x8000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549755813952ll /* 0x8000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549755814016ll /* 0x8000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549755814144ll /* 0x8000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549755814400ll /* 0x8000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549755814912ll /* 0x8000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549755815936ll /* 0x8000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549755817984ll /* 0x8000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549755822080ll /* 0x8000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549755830272ll /* 0x8000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549755846656ll /* 0x8000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549755879424ll /* 0x8000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549755944960ll /* 0x8000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549756076032ll /* 0x8000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549756338176ll /* 0x8000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549756862464ll /* 0x8000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549757911040ll /* 0x8000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549760008192ll /* 0x8000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549764202496ll /* 0x8000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549772591104ll /* 0x8001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549789368320ll /* 0x8002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549822922752ll /* 0x8004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {549890031616ll /* 0x8008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {550024249344ll /* 0x8010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {550292684800ll /* 0x8020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {550829555712ll /* 0x8040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {551903297536ll /* 0x8080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {554050781184ll /* 0x8100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {558345748480ll /* 0x8200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {566935683072ll /* 0x8400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {584115552256ll /* 0x8800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {618475290624ll /* 0x9000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 36}} /* shli r3, r2, 36 */ + }, + {687194767360ll /* 0xa000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 37}} /* shli r3, r2, 37 */ + }, + {824633720832ll /* 0xc000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 38}} /* shli r3, r2, 38 */ + }, + {1099511627767ll /* 0xfffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1099511627768ll /* 0xfffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1099511627769ll /* 0xfffffffff9 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {1099511627771ll /* 0xfffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1099511627772ll /* 0xfffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1099511627773ll /* 0xfffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1099511627774ll /* 0xfffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1099511627775ll /* 0xffffffffff */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {1099511627776ll /* 0x10000000000 */ , + {{6, 1, 40}} /* shli r2, r1, 40 */ + }, + {1099511627777ll /* 0x10000000001 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {1099511627778ll /* 0x10000000002 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {1099511627779ll /* 0x10000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099511627780ll /* 0x10000000004 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {1099511627781ll /* 0x10000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099511627782ll /* 0x10000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {1099511627783ll /* 0x10000000007 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {1099511627784ll /* 0x10000000008 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {1099511627785ll /* 0x10000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099511627786ll /* 0x1000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {1099511627792ll /* 0x10000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099511627808ll /* 0x10000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099511627840ll /* 0x10000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099511627904ll /* 0x10000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099511628032ll /* 0x10000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099511628288ll /* 0x10000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099511628800ll /* 0x10000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099511629824ll /* 0x10000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099511631872ll /* 0x10000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099511635968ll /* 0x10000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099511644160ll /* 0x10000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099511660544ll /* 0x10000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099511693312ll /* 0x10000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099511758848ll /* 0x10000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099511889920ll /* 0x10000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099512152064ll /* 0x10000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099512676352ll /* 0x10000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099513724928ll /* 0x10000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099515822080ll /* 0x10000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099520016384ll /* 0x10000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099528404992ll /* 0x10001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099545182208ll /* 0x10002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099578736640ll /* 0x10004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099645845504ll /* 0x10008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1099780063232ll /* 0x10010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1100048498688ll /* 0x10020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1100585369600ll /* 0x10040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1101659111424ll /* 0x10080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1103806595072ll /* 0x10100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1108101562368ll /* 0x10200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1116691496960ll /* 0x10400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1133871366144ll /* 0x10800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1168231104512ll /* 0x11000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1236950581248ll /* 0x12000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 37}} /* shli r3, r2, 37 */ + }, + {1374389534720ll /* 0x14000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 38}} /* shli r3, r2, 38 */ + }, + {1649267441664ll /* 0x18000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 39}} /* shli r3, r2, 39 */ + }, + {2199023255543ll /* 0x1fffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2199023255544ll /* 0x1fffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2199023255545ll /* 0x1fffffffff9 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {2199023255547ll /* 0x1fffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2199023255548ll /* 0x1fffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2199023255549ll /* 0x1fffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2199023255550ll /* 0x1fffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2199023255551ll /* 0x1ffffffffff */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {2199023255552ll /* 0x20000000000 */ , + {{6, 1, 41}} /* shli r2, r1, 41 */ + }, + {2199023255553ll /* 0x20000000001 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {2199023255554ll /* 0x20000000002 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {2199023255555ll /* 0x20000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023255556ll /* 0x20000000004 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {2199023255557ll /* 0x20000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023255558ll /* 0x20000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {2199023255559ll /* 0x20000000007 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {2199023255560ll /* 0x20000000008 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {2199023255561ll /* 0x20000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023255562ll /* 0x2000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {2199023255568ll /* 0x20000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023255584ll /* 0x20000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023255616ll /* 0x20000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023255680ll /* 0x20000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023255808ll /* 0x20000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023256064ll /* 0x20000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023256576ll /* 0x20000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023257600ll /* 0x20000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023259648ll /* 0x20000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023263744ll /* 0x20000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023271936ll /* 0x20000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023288320ll /* 0x20000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023321088ll /* 0x20000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023386624ll /* 0x20000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023517696ll /* 0x20000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199023779840ll /* 0x20000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199024304128ll /* 0x20000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199025352704ll /* 0x20000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199027449856ll /* 0x20000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199031644160ll /* 0x20000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199040032768ll /* 0x20001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199056809984ll /* 0x20002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199090364416ll /* 0x20004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199157473280ll /* 0x20008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199291691008ll /* 0x20010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2199560126464ll /* 0x20020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2200096997376ll /* 0x20040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2201170739200ll /* 0x20080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2203318222848ll /* 0x20100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2207613190144ll /* 0x20200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2216203124736ll /* 0x20400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2233382993920ll /* 0x20800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2267742732288ll /* 0x21000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2336462209024ll /* 0x22000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2473901162496ll /* 0x24000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 38}} /* shli r3, r2, 38 */ + }, + {2748779069440ll /* 0x28000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 39}} /* shli r3, r2, 39 */ + }, + {3298534883328ll /* 0x30000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 40}} /* shli r3, r2, 40 */ + }, + {4398046511095ll /* 0x3fffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4398046511096ll /* 0x3fffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4398046511097ll /* 0x3fffffffff9 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {4398046511099ll /* 0x3fffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4398046511100ll /* 0x3fffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4398046511101ll /* 0x3fffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4398046511102ll /* 0x3fffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4398046511103ll /* 0x3ffffffffff */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {4398046511104ll /* 0x40000000000 */ , + {{6, 1, 42}} /* shli r2, r1, 42 */ + }, + {4398046511105ll /* 0x40000000001 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {4398046511106ll /* 0x40000000002 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {4398046511107ll /* 0x40000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398046511108ll /* 0x40000000004 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {4398046511109ll /* 0x40000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398046511110ll /* 0x40000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {4398046511111ll /* 0x40000000007 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {4398046511112ll /* 0x40000000008 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {4398046511113ll /* 0x40000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398046511114ll /* 0x4000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {4398046511120ll /* 0x40000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398046511136ll /* 0x40000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398046511168ll /* 0x40000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398046511232ll /* 0x40000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398046511360ll /* 0x40000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398046511616ll /* 0x40000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398046512128ll /* 0x40000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398046513152ll /* 0x40000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398046515200ll /* 0x40000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398046519296ll /* 0x40000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398046527488ll /* 0x40000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398046543872ll /* 0x40000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398046576640ll /* 0x40000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398046642176ll /* 0x40000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398046773248ll /* 0x40000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398047035392ll /* 0x40000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398047559680ll /* 0x40000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398048608256ll /* 0x40000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398050705408ll /* 0x40000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398054899712ll /* 0x40000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398063288320ll /* 0x40001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398080065536ll /* 0x40002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398113619968ll /* 0x40004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398180728832ll /* 0x40008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398314946560ll /* 0x40010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4398583382016ll /* 0x40020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4399120252928ll /* 0x40040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4400193994752ll /* 0x40080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4402341478400ll /* 0x40100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4406636445696ll /* 0x40200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4415226380288ll /* 0x40400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4432406249472ll /* 0x40800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4466765987840ll /* 0x41000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4535485464576ll /* 0x42000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4672924418048ll /* 0x44000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4947802324992ll /* 0x48000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 39}} /* shli r3, r2, 39 */ + }, + {5497558138880ll /* 0x50000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 40}} /* shli r3, r2, 40 */ + }, + {6597069766656ll /* 0x60000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 41}} /* shli r3, r2, 41 */ + }, + {8796093022199ll /* 0x7fffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8796093022200ll /* 0x7fffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8796093022201ll /* 0x7fffffffff9 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {8796093022203ll /* 0x7fffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8796093022204ll /* 0x7fffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8796093022205ll /* 0x7fffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8796093022206ll /* 0x7fffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8796093022207ll /* 0x7ffffffffff */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {8796093022208ll /* 0x80000000000 */ , + {{6, 1, 43}} /* shli r2, r1, 43 */ + }, + {8796093022209ll /* 0x80000000001 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {8796093022210ll /* 0x80000000002 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {8796093022211ll /* 0x80000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093022212ll /* 0x80000000004 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {8796093022213ll /* 0x80000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093022214ll /* 0x80000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {8796093022215ll /* 0x80000000007 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {8796093022216ll /* 0x80000000008 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {8796093022217ll /* 0x80000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093022218ll /* 0x8000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {8796093022224ll /* 0x80000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093022240ll /* 0x80000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093022272ll /* 0x80000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093022336ll /* 0x80000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093022464ll /* 0x80000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093022720ll /* 0x80000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093023232ll /* 0x80000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093024256ll /* 0x80000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093026304ll /* 0x80000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093030400ll /* 0x80000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093038592ll /* 0x80000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093054976ll /* 0x80000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093087744ll /* 0x80000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093153280ll /* 0x80000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093284352ll /* 0x80000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796093546496ll /* 0x80000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796094070784ll /* 0x80000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796095119360ll /* 0x80000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796097216512ll /* 0x80000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796101410816ll /* 0x80000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796109799424ll /* 0x80001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796126576640ll /* 0x80002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796160131072ll /* 0x80004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796227239936ll /* 0x80008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796361457664ll /* 0x80010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8796629893120ll /* 0x80020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8797166764032ll /* 0x80040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8798240505856ll /* 0x80080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8800387989504ll /* 0x80100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8804682956800ll /* 0x80200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8813272891392ll /* 0x80400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8830452760576ll /* 0x80800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8864812498944ll /* 0x81000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8933531975680ll /* 0x82000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9070970929152ll /* 0x84000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9345848836096ll /* 0x88000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9895604649984ll /* 0x90000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 40}} /* shli r3, r2, 40 */ + }, + {10995116277760ll /* 0xa0000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 41}} /* shli r3, r2, 41 */ + }, + {13194139533312ll /* 0xc0000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 42}} /* shli r3, r2, 42 */ + }, + {17592186044407ll /* 0xffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {17592186044408ll /* 0xffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {17592186044409ll /* 0xffffffffff9 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {17592186044411ll /* 0xffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {17592186044412ll /* 0xffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {17592186044413ll /* 0xffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {17592186044414ll /* 0xffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {17592186044415ll /* 0xfffffffffff */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {17592186044416ll /* 0x100000000000 */ , + {{6, 1, 44}} /* shli r2, r1, 44 */ + }, + {17592186044417ll /* 0x100000000001 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {17592186044418ll /* 0x100000000002 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {17592186044419ll /* 0x100000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186044420ll /* 0x100000000004 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {17592186044421ll /* 0x100000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186044422ll /* 0x100000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {17592186044423ll /* 0x100000000007 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {17592186044424ll /* 0x100000000008 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {17592186044425ll /* 0x100000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186044426ll /* 0x10000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {17592186044432ll /* 0x100000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186044448ll /* 0x100000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186044480ll /* 0x100000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186044544ll /* 0x100000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186044672ll /* 0x100000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186044928ll /* 0x100000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186045440ll /* 0x100000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186046464ll /* 0x100000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186048512ll /* 0x100000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186052608ll /* 0x100000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186060800ll /* 0x100000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186077184ll /* 0x100000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186109952ll /* 0x100000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186175488ll /* 0x100000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186306560ll /* 0x100000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592186568704ll /* 0x100000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592187092992ll /* 0x100000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592188141568ll /* 0x100000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592190238720ll /* 0x100000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592194433024ll /* 0x100000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592202821632ll /* 0x100001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592219598848ll /* 0x100002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592253153280ll /* 0x100004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592320262144ll /* 0x100008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592454479872ll /* 0x100010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17592722915328ll /* 0x100020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17593259786240ll /* 0x100040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17594333528064ll /* 0x100080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17596481011712ll /* 0x100100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17600775979008ll /* 0x100200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17609365913600ll /* 0x100400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17626545782784ll /* 0x100800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17660905521152ll /* 0x101000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17729624997888ll /* 0x102000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17867063951360ll /* 0x104000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18141941858304ll /* 0x108000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18691697672192ll /* 0x110000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {19791209299968ll /* 0x120000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 41}} /* shli r3, r2, 41 */ + }, + {21990232555520ll /* 0x140000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 42}} /* shli r3, r2, 42 */ + }, + {26388279066624ll /* 0x180000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 43}} /* shli r3, r2, 43 */ + }, + {35184372088823ll /* 0x1ffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {35184372088824ll /* 0x1ffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {35184372088825ll /* 0x1ffffffffff9 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {35184372088827ll /* 0x1ffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {35184372088828ll /* 0x1ffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {35184372088829ll /* 0x1ffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {35184372088830ll /* 0x1ffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {35184372088831ll /* 0x1fffffffffff */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {35184372088832ll /* 0x200000000000 */ , + {{6, 1, 45}} /* shli r2, r1, 45 */ + }, + {35184372088833ll /* 0x200000000001 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {35184372088834ll /* 0x200000000002 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {35184372088835ll /* 0x200000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372088836ll /* 0x200000000004 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {35184372088837ll /* 0x200000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372088838ll /* 0x200000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {35184372088839ll /* 0x200000000007 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {35184372088840ll /* 0x200000000008 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {35184372088841ll /* 0x200000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372088842ll /* 0x20000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {35184372088848ll /* 0x200000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372088864ll /* 0x200000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372088896ll /* 0x200000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372088960ll /* 0x200000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372089088ll /* 0x200000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372089344ll /* 0x200000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372089856ll /* 0x200000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372090880ll /* 0x200000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372092928ll /* 0x200000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372097024ll /* 0x200000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372105216ll /* 0x200000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372121600ll /* 0x200000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372154368ll /* 0x200000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372219904ll /* 0x200000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372350976ll /* 0x200000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184372613120ll /* 0x200000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184373137408ll /* 0x200000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184374185984ll /* 0x200000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184376283136ll /* 0x200000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184380477440ll /* 0x200000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184388866048ll /* 0x200001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184405643264ll /* 0x200002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184439197696ll /* 0x200004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184506306560ll /* 0x200008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184640524288ll /* 0x200010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35184908959744ll /* 0x200020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35185445830656ll /* 0x200040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35186519572480ll /* 0x200080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35188667056128ll /* 0x200100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35192962023424ll /* 0x200200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35201551958016ll /* 0x200400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35218731827200ll /* 0x200800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35253091565568ll /* 0x201000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35321811042304ll /* 0x202000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35459249995776ll /* 0x204000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35734127902720ll /* 0x208000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36283883716608ll /* 0x210000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {37383395344384ll /* 0x220000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {39582418599936ll /* 0x240000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 42}} /* shli r3, r2, 42 */ + }, + {43980465111040ll /* 0x280000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 43}} /* shli r3, r2, 43 */ + }, + {52776558133248ll /* 0x300000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 44}} /* shli r3, r2, 44 */ + }, + {70368744177655ll /* 0x3ffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {70368744177656ll /* 0x3ffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {70368744177657ll /* 0x3ffffffffff9 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {70368744177659ll /* 0x3ffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {70368744177660ll /* 0x3ffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {70368744177661ll /* 0x3ffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {70368744177662ll /* 0x3ffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {70368744177663ll /* 0x3fffffffffff */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {70368744177664ll /* 0x400000000000 */ , + {{6, 1, 46}} /* shli r2, r1, 46 */ + }, + {70368744177665ll /* 0x400000000001 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {70368744177666ll /* 0x400000000002 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {70368744177667ll /* 0x400000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744177668ll /* 0x400000000004 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {70368744177669ll /* 0x400000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744177670ll /* 0x400000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {70368744177671ll /* 0x400000000007 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {70368744177672ll /* 0x400000000008 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {70368744177673ll /* 0x400000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744177674ll /* 0x40000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {70368744177680ll /* 0x400000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744177696ll /* 0x400000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744177728ll /* 0x400000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744177792ll /* 0x400000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744177920ll /* 0x400000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744178176ll /* 0x400000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744178688ll /* 0x400000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744179712ll /* 0x400000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744181760ll /* 0x400000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744185856ll /* 0x400000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744194048ll /* 0x400000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744210432ll /* 0x400000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744243200ll /* 0x400000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744308736ll /* 0x400000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744439808ll /* 0x400000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368744701952ll /* 0x400000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368745226240ll /* 0x400000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368746274816ll /* 0x400000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368748371968ll /* 0x400000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368752566272ll /* 0x400000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368760954880ll /* 0x400001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368777732096ll /* 0x400002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368811286528ll /* 0x400004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70368878395392ll /* 0x400008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70369012613120ll /* 0x400010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70369281048576ll /* 0x400020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70369817919488ll /* 0x400040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70370891661312ll /* 0x400080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70373039144960ll /* 0x400100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70377334112256ll /* 0x400200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70385924046848ll /* 0x400400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70403103916032ll /* 0x400800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70437463654400ll /* 0x401000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70506183131136ll /* 0x402000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70643622084608ll /* 0x404000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70918499991552ll /* 0x408000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {71468255805440ll /* 0x410000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72567767433216ll /* 0x420000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {74766790688768ll /* 0x440000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {79164837199872ll /* 0x480000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 43}} /* shli r3, r2, 43 */ + }, + {87960930222080ll /* 0x500000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 44}} /* shli r3, r2, 44 */ + }, + {105553116266496ll /* 0x600000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 45}} /* shli r3, r2, 45 */ + }, + {140737488355319ll /* 0x7ffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {140737488355320ll /* 0x7ffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {140737488355321ll /* 0x7ffffffffff9 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {140737488355323ll /* 0x7ffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {140737488355324ll /* 0x7ffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {140737488355325ll /* 0x7ffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {140737488355326ll /* 0x7ffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {140737488355327ll /* 0x7fffffffffff */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {140737488355328ll /* 0x800000000000 */ , + {{6, 1, 47}} /* shli r2, r1, 47 */ + }, + {140737488355329ll /* 0x800000000001 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {140737488355330ll /* 0x800000000002 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {140737488355331ll /* 0x800000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488355332ll /* 0x800000000004 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {140737488355333ll /* 0x800000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488355334ll /* 0x800000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {140737488355335ll /* 0x800000000007 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {140737488355336ll /* 0x800000000008 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {140737488355337ll /* 0x800000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488355338ll /* 0x80000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {140737488355344ll /* 0x800000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488355360ll /* 0x800000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488355392ll /* 0x800000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488355456ll /* 0x800000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488355584ll /* 0x800000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488355840ll /* 0x800000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488356352ll /* 0x800000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488357376ll /* 0x800000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488359424ll /* 0x800000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488363520ll /* 0x800000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488371712ll /* 0x800000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488388096ll /* 0x800000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488420864ll /* 0x800000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488486400ll /* 0x800000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488617472ll /* 0x800000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737488879616ll /* 0x800000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737489403904ll /* 0x800000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737490452480ll /* 0x800000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737492549632ll /* 0x800000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737496743936ll /* 0x800000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737505132544ll /* 0x800001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737521909760ll /* 0x800002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737555464192ll /* 0x800004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737622573056ll /* 0x800008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140737756790784ll /* 0x800010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140738025226240ll /* 0x800020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140738562097152ll /* 0x800040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140739635838976ll /* 0x800080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140741783322624ll /* 0x800100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140746078289920ll /* 0x800200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140754668224512ll /* 0x800400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140771848093696ll /* 0x800800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140806207832064ll /* 0x801000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {140874927308800ll /* 0x802000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {141012366262272ll /* 0x804000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {141287244169216ll /* 0x808000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {141836999983104ll /* 0x810000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {142936511610880ll /* 0x820000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {145135534866432ll /* 0x840000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {149533581377536ll /* 0x880000000000 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {158329674399744ll /* 0x900000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 44}} /* shli r3, r2, 44 */ + }, + {175921860444160ll /* 0xa00000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 45}} /* shli r3, r2, 45 */ + }, + {211106232532992ll /* 0xc00000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 46}} /* shli r3, r2, 46 */ + }, + {281474976710647ll /* 0xfffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {281474976710648ll /* 0xfffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {281474976710649ll /* 0xfffffffffff9 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {281474976710651ll /* 0xfffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {281474976710652ll /* 0xfffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {281474976710653ll /* 0xfffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {281474976710654ll /* 0xfffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {281474976710655ll /* 0xffffffffffff */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {281474976710656ll /* 0x1000000000000 */ , + {{6, 1, 48}} /* shli r2, r1, 48 */ + }, + {281474976710657ll /* 0x1000000000001 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {281474976710658ll /* 0x1000000000002 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {281474976710659ll /* 0x1000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474976710660ll /* 0x1000000000004 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {281474976710661ll /* 0x1000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474976710662ll /* 0x1000000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {281474976710663ll /* 0x1000000000007 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {281474976710664ll /* 0x1000000000008 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {281474976710665ll /* 0x1000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474976710666ll /* 0x100000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {281474976710672ll /* 0x1000000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474976710688ll /* 0x1000000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474976710720ll /* 0x1000000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474976710784ll /* 0x1000000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474976710912ll /* 0x1000000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474976711168ll /* 0x1000000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474976711680ll /* 0x1000000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474976712704ll /* 0x1000000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474976714752ll /* 0x1000000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474976718848ll /* 0x1000000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474976727040ll /* 0x1000000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474976743424ll /* 0x1000000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474976776192ll /* 0x1000000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474976841728ll /* 0x1000000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474976972800ll /* 0x1000000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474977234944ll /* 0x1000000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474977759232ll /* 0x1000000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474978807808ll /* 0x1000000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474980904960ll /* 0x1000000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474985099264ll /* 0x1000000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281474993487872ll /* 0x1000001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281475010265088ll /* 0x1000002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281475043819520ll /* 0x1000004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281475110928384ll /* 0x1000008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281475245146112ll /* 0x1000010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281475513581568ll /* 0x1000020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281476050452480ll /* 0x1000040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281477124194304ll /* 0x1000080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281479271677952ll /* 0x1000100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281483566645248ll /* 0x1000200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281492156579840ll /* 0x1000400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281509336449024ll /* 0x1000800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281543696187392ll /* 0x1001000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281612415664128ll /* 0x1002000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {281749854617600ll /* 0x1004000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {282024732524544ll /* 0x1008000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {282574488338432ll /* 0x1010000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {283673999966208ll /* 0x1020000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {285873023221760ll /* 0x1040000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {290271069732864ll /* 0x1080000000000 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {299067162755072ll /* 0x1100000000000 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {316659348799488ll /* 0x1200000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 45}} /* shli r3, r2, 45 */ + }, + {351843720888320ll /* 0x1400000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 46}} /* shli r3, r2, 46 */ + }, + {422212465065984ll /* 0x1800000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 47}} /* shli r3, r2, 47 */ + }, + {562949953421303ll /* 0x1fffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {562949953421304ll /* 0x1fffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {562949953421305ll /* 0x1fffffffffff9 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {562949953421307ll /* 0x1fffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {562949953421308ll /* 0x1fffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {562949953421309ll /* 0x1fffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {562949953421310ll /* 0x1fffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {562949953421311ll /* 0x1ffffffffffff */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {562949953421312ll /* 0x2000000000000 */ , + {{6, 1, 49}} /* shli r2, r1, 49 */ + }, + {562949953421313ll /* 0x2000000000001 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {562949953421314ll /* 0x2000000000002 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {562949953421315ll /* 0x2000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953421316ll /* 0x2000000000004 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {562949953421317ll /* 0x2000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953421318ll /* 0x2000000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {562949953421319ll /* 0x2000000000007 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {562949953421320ll /* 0x2000000000008 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {562949953421321ll /* 0x2000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953421322ll /* 0x200000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {562949953421328ll /* 0x2000000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953421344ll /* 0x2000000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953421376ll /* 0x2000000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953421440ll /* 0x2000000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953421568ll /* 0x2000000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953421824ll /* 0x2000000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953422336ll /* 0x2000000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953423360ll /* 0x2000000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953425408ll /* 0x2000000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953429504ll /* 0x2000000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953437696ll /* 0x2000000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953454080ll /* 0x2000000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953486848ll /* 0x2000000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953552384ll /* 0x2000000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953683456ll /* 0x2000000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949953945600ll /* 0x2000000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949954469888ll /* 0x2000000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949955518464ll /* 0x2000000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949957615616ll /* 0x2000000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949961809920ll /* 0x2000000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949970198528ll /* 0x2000001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562949986975744ll /* 0x2000002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562950020530176ll /* 0x2000004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562950087639040ll /* 0x2000008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562950221856768ll /* 0x2000010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562950490292224ll /* 0x2000020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562951027163136ll /* 0x2000040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562952100904960ll /* 0x2000080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562954248388608ll /* 0x2000100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562958543355904ll /* 0x2000200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562967133290496ll /* 0x2000400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {562984313159680ll /* 0x2000800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {563018672898048ll /* 0x2001000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {563087392374784ll /* 0x2002000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {563224831328256ll /* 0x2004000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {563499709235200ll /* 0x2008000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {564049465049088ll /* 0x2010000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {565148976676864ll /* 0x2020000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {567347999932416ll /* 0x2040000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {571746046443520ll /* 0x2080000000000 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {580542139465728ll /* 0x2100000000000 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {598134325510144ll /* 0x2200000000000 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {633318697598976ll /* 0x2400000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 46}} /* shli r3, r2, 46 */ + }, + {703687441776640ll /* 0x2800000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 47}} /* shli r3, r2, 47 */ + }, + {844424930131968ll /* 0x3000000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 48}} /* shli r3, r2, 48 */ + }, + {1125899906842615ll /* 0x3fffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1125899906842616ll /* 0x3fffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1125899906842617ll /* 0x3fffffffffff9 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {1125899906842619ll /* 0x3fffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1125899906842620ll /* 0x3fffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1125899906842621ll /* 0x3fffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1125899906842622ll /* 0x3fffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1125899906842623ll /* 0x3ffffffffffff */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {1125899906842624ll /* 0x4000000000000 */ , + {{6, 1, 50}} /* shli r2, r1, 50 */ + }, + {1125899906842625ll /* 0x4000000000001 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {1125899906842626ll /* 0x4000000000002 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {1125899906842627ll /* 0x4000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899906842628ll /* 0x4000000000004 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {1125899906842629ll /* 0x4000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899906842630ll /* 0x4000000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {1125899906842631ll /* 0x4000000000007 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {1125899906842632ll /* 0x4000000000008 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {1125899906842633ll /* 0x4000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899906842634ll /* 0x400000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {1125899906842640ll /* 0x4000000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899906842656ll /* 0x4000000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899906842688ll /* 0x4000000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899906842752ll /* 0x4000000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899906842880ll /* 0x4000000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899906843136ll /* 0x4000000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899906843648ll /* 0x4000000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899906844672ll /* 0x4000000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899906846720ll /* 0x4000000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899906850816ll /* 0x4000000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899906859008ll /* 0x4000000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899906875392ll /* 0x4000000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899906908160ll /* 0x4000000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899906973696ll /* 0x4000000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899907104768ll /* 0x4000000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899907366912ll /* 0x4000000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899907891200ll /* 0x4000000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899908939776ll /* 0x4000000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899911036928ll /* 0x4000000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899915231232ll /* 0x4000000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899923619840ll /* 0x4000001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899940397056ll /* 0x4000002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125899973951488ll /* 0x4000004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125900041060352ll /* 0x4000008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125900175278080ll /* 0x4000010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125900443713536ll /* 0x4000020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125900980584448ll /* 0x4000040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125902054326272ll /* 0x4000080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125904201809920ll /* 0x4000100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125908496777216ll /* 0x4000200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125917086711808ll /* 0x4000400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125934266580992ll /* 0x4000800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1125968626319360ll /* 0x4001000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1126037345796096ll /* 0x4002000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1126174784749568ll /* 0x4004000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1126449662656512ll /* 0x4008000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1126999418470400ll /* 0x4010000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1128098930098176ll /* 0x4020000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1130297953353728ll /* 0x4040000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1134695999864832ll /* 0x4080000000000 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1143492092887040ll /* 0x4100000000000 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1161084278931456ll /* 0x4200000000000 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1196268651020288ll /* 0x4400000000000 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1266637395197952ll /* 0x4800000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 47}} /* shli r3, r2, 47 */ + }, + {1407374883553280ll /* 0x5000000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 48}} /* shli r3, r2, 48 */ + }, + {1688849860263936ll /* 0x6000000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 49}} /* shli r3, r2, 49 */ + }, + {2251799813685239ll /* 0x7fffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2251799813685240ll /* 0x7fffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2251799813685241ll /* 0x7fffffffffff9 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {2251799813685243ll /* 0x7fffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2251799813685244ll /* 0x7fffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2251799813685245ll /* 0x7fffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2251799813685246ll /* 0x7fffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2251799813685247ll /* 0x7ffffffffffff */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {2251799813685248ll /* 0x8000000000000 */ , + {{6, 1, 51}} /* shli r2, r1, 51 */ + }, + {2251799813685249ll /* 0x8000000000001 */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {2251799813685250ll /* 0x8000000000002 */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {2251799813685251ll /* 0x8000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799813685252ll /* 0x8000000000004 */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {2251799813685253ll /* 0x8000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799813685254ll /* 0x8000000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {2251799813685255ll /* 0x8000000000007 */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {2251799813685256ll /* 0x8000000000008 */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {2251799813685257ll /* 0x8000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799813685258ll /* 0x800000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {2251799813685264ll /* 0x8000000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799813685280ll /* 0x8000000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799813685312ll /* 0x8000000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799813685376ll /* 0x8000000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799813685504ll /* 0x8000000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799813685760ll /* 0x8000000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799813686272ll /* 0x8000000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799813687296ll /* 0x8000000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799813689344ll /* 0x8000000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799813693440ll /* 0x8000000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799813701632ll /* 0x8000000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799813718016ll /* 0x8000000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799813750784ll /* 0x8000000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799813816320ll /* 0x8000000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799813947392ll /* 0x8000000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799814209536ll /* 0x8000000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799814733824ll /* 0x8000000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799815782400ll /* 0x8000000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799817879552ll /* 0x8000000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799822073856ll /* 0x8000000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799830462464ll /* 0x8000001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799847239680ll /* 0x8000002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799880794112ll /* 0x8000004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251799947902976ll /* 0x8000008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251800082120704ll /* 0x8000010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251800350556160ll /* 0x8000020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251800887427072ll /* 0x8000040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251801961168896ll /* 0x8000080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251804108652544ll /* 0x8000100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251808403619840ll /* 0x8000200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251816993554432ll /* 0x8000400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251834173423616ll /* 0x8000800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251868533161984ll /* 0x8001000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2251937252638720ll /* 0x8002000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2252074691592192ll /* 0x8004000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2252349569499136ll /* 0x8008000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2252899325313024ll /* 0x8010000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2253998836940800ll /* 0x8020000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2256197860196352ll /* 0x8040000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2260595906707456ll /* 0x8080000000000 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2269391999729664ll /* 0x8100000000000 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2286984185774080ll /* 0x8200000000000 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2322168557862912ll /* 0x8400000000000 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2392537302040576ll /* 0x8800000000000 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2533274790395904ll /* 0x9000000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 48}} /* shli r3, r2, 48 */ + }, + {2814749767106560ll /* 0xa000000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 49}} /* shli r3, r2, 49 */ + }, + {3377699720527872ll /* 0xc000000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 50}} /* shli r3, r2, 50 */ + }, + {4503599627370487ll /* 0xffffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4503599627370488ll /* 0xffffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4503599627370489ll /* 0xffffffffffff9 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {4503599627370491ll /* 0xffffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4503599627370492ll /* 0xffffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4503599627370493ll /* 0xffffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4503599627370494ll /* 0xffffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4503599627370495ll /* 0xfffffffffffff */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {4503599627370496ll /* 0x10000000000000 */ , + {{6, 1, 52}} /* shli r2, r1, 52 */ + }, + {4503599627370497ll /* 0x10000000000001 */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {4503599627370498ll /* 0x10000000000002 */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {4503599627370499ll /* 0x10000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627370500ll /* 0x10000000000004 */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {4503599627370501ll /* 0x10000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627370502ll /* 0x10000000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {4503599627370503ll /* 0x10000000000007 */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {4503599627370504ll /* 0x10000000000008 */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {4503599627370505ll /* 0x10000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627370506ll /* 0x1000000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {4503599627370512ll /* 0x10000000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627370528ll /* 0x10000000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627370560ll /* 0x10000000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627370624ll /* 0x10000000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627370752ll /* 0x10000000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627371008ll /* 0x10000000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627371520ll /* 0x10000000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627372544ll /* 0x10000000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627374592ll /* 0x10000000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627378688ll /* 0x10000000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627386880ll /* 0x10000000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627403264ll /* 0x10000000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627436032ll /* 0x10000000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627501568ll /* 0x10000000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627632640ll /* 0x10000000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599627894784ll /* 0x10000000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599628419072ll /* 0x10000000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599629467648ll /* 0x10000000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599631564800ll /* 0x10000000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599635759104ll /* 0x10000000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599644147712ll /* 0x10000001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599660924928ll /* 0x10000002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599694479360ll /* 0x10000004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599761588224ll /* 0x10000008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503599895805952ll /* 0x10000010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503600164241408ll /* 0x10000020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503600701112320ll /* 0x10000040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503601774854144ll /* 0x10000080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503603922337792ll /* 0x10000100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503608217305088ll /* 0x10000200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503616807239680ll /* 0x10000400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503633987108864ll /* 0x10000800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503668346847232ll /* 0x10001000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503737066323968ll /* 0x10002000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4503874505277440ll /* 0x10004000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4504149383184384ll /* 0x10008000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4504699138998272ll /* 0x10010000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4505798650626048ll /* 0x10020000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4507997673881600ll /* 0x10040000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4512395720392704ll /* 0x10080000000000 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4521191813414912ll /* 0x10100000000000 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4538783999459328ll /* 0x10200000000000 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4573968371548160ll /* 0x10400000000000 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4644337115725824ll /* 0x10800000000000 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4785074604081152ll /* 0x11000000000000 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {5066549580791808ll /* 0x12000000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 49}} /* shli r3, r2, 49 */ + }, + {5629499534213120ll /* 0x14000000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 50}} /* shli r3, r2, 50 */ + }, + {6755399441055744ll /* 0x18000000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 51}} /* shli r3, r2, 51 */ + }, + {9007199254740983ll /* 0x1ffffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {9007199254740984ll /* 0x1ffffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {9007199254740985ll /* 0x1ffffffffffff9 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {9007199254740987ll /* 0x1ffffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {9007199254740988ll /* 0x1ffffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {9007199254740989ll /* 0x1ffffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {9007199254740990ll /* 0x1ffffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {9007199254740991ll /* 0x1fffffffffffff */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {9007199254740992ll /* 0x20000000000000 */ , + {{6, 1, 53}} /* shli r2, r1, 53 */ + }, + {9007199254740993ll /* 0x20000000000001 */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {9007199254740994ll /* 0x20000000000002 */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {9007199254740995ll /* 0x20000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199254740996ll /* 0x20000000000004 */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {9007199254740997ll /* 0x20000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199254740998ll /* 0x20000000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {9007199254740999ll /* 0x20000000000007 */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {9007199254741000ll /* 0x20000000000008 */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {9007199254741001ll /* 0x20000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199254741002ll /* 0x2000000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {9007199254741008ll /* 0x20000000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199254741024ll /* 0x20000000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199254741056ll /* 0x20000000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199254741120ll /* 0x20000000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199254741248ll /* 0x20000000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199254741504ll /* 0x20000000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199254742016ll /* 0x20000000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199254743040ll /* 0x20000000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199254745088ll /* 0x20000000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199254749184ll /* 0x20000000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199254757376ll /* 0x20000000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199254773760ll /* 0x20000000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199254806528ll /* 0x20000000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199254872064ll /* 0x20000000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199255003136ll /* 0x20000000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199255265280ll /* 0x20000000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199255789568ll /* 0x20000000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199256838144ll /* 0x20000000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199258935296ll /* 0x20000000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199263129600ll /* 0x20000000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199271518208ll /* 0x20000001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199288295424ll /* 0x20000002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199321849856ll /* 0x20000004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199388958720ll /* 0x20000008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199523176448ll /* 0x20000010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007199791611904ll /* 0x20000020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007200328482816ll /* 0x20000040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007201402224640ll /* 0x20000080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007203549708288ll /* 0x20000100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007207844675584ll /* 0x20000200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007216434610176ll /* 0x20000400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007233614479360ll /* 0x20000800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007267974217728ll /* 0x20001000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007336693694464ll /* 0x20002000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007474132647936ll /* 0x20004000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9007749010554880ll /* 0x20008000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9008298766368768ll /* 0x20010000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9009398277996544ll /* 0x20020000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9011597301252096ll /* 0x20040000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9015995347763200ll /* 0x20080000000000 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9024791440785408ll /* 0x20100000000000 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9042383626829824ll /* 0x20200000000000 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9077567998918656ll /* 0x20400000000000 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9147936743096320ll /* 0x20800000000000 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9288674231451648ll /* 0x21000000000000 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9570149208162304ll /* 0x22000000000000 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {10133099161583616ll /* 0x24000000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 50}} /* shli r3, r2, 50 */ + }, + {11258999068426240ll /* 0x28000000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 51}} /* shli r3, r2, 51 */ + }, + {13510798882111488ll /* 0x30000000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 52}} /* shli r3, r2, 52 */ + }, + {18014398509481975ll /* 0x3ffffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {18014398509481976ll /* 0x3ffffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {18014398509481977ll /* 0x3ffffffffffff9 */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {18014398509481979ll /* 0x3ffffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {18014398509481980ll /* 0x3ffffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {18014398509481981ll /* 0x3ffffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {18014398509481982ll /* 0x3ffffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {18014398509481983ll /* 0x3fffffffffffff */ , + {{6, 1, 54}, /* shli r2, r1, 54 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {18014398509481984ll /* 0x40000000000000 */ , + {{6, 1, 54}} /* shli r2, r1, 54 */ + }, + {18014398509481985ll /* 0x40000000000001 */ , + {{6, 1, 54}, /* shli r2, r1, 54 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {18014398509481986ll /* 0x40000000000002 */ , + {{6, 1, 54}, /* shli r2, r1, 54 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {18014398509481987ll /* 0x40000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398509481988ll /* 0x40000000000004 */ , + {{6, 1, 54}, /* shli r2, r1, 54 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {18014398509481989ll /* 0x40000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398509481990ll /* 0x40000000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {18014398509481991ll /* 0x40000000000007 */ , + {{6, 1, 54}, /* shli r2, r1, 54 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {18014398509481992ll /* 0x40000000000008 */ , + {{6, 1, 54}, /* shli r2, r1, 54 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {18014398509481993ll /* 0x40000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398509481994ll /* 0x4000000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {18014398509482000ll /* 0x40000000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398509482016ll /* 0x40000000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398509482048ll /* 0x40000000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398509482112ll /* 0x40000000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398509482240ll /* 0x40000000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398509482496ll /* 0x40000000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398509483008ll /* 0x40000000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398509484032ll /* 0x40000000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398509486080ll /* 0x40000000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398509490176ll /* 0x40000000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398509498368ll /* 0x40000000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398509514752ll /* 0x40000000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398509547520ll /* 0x40000000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398509613056ll /* 0x40000000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398509744128ll /* 0x40000000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398510006272ll /* 0x40000000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398510530560ll /* 0x40000000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398511579136ll /* 0x40000000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398513676288ll /* 0x40000000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398517870592ll /* 0x40000000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398526259200ll /* 0x40000001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398543036416ll /* 0x40000002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398576590848ll /* 0x40000004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398643699712ll /* 0x40000008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014398777917440ll /* 0x40000010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014399046352896ll /* 0x40000020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014399583223808ll /* 0x40000040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014400656965632ll /* 0x40000080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014402804449280ll /* 0x40000100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014407099416576ll /* 0x40000200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014415689351168ll /* 0x40000400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014432869220352ll /* 0x40000800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014467228958720ll /* 0x40001000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014535948435456ll /* 0x40002000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014673387388928ll /* 0x40004000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18014948265295872ll /* 0x40008000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18015498021109760ll /* 0x40010000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18016597532737536ll /* 0x40020000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18018796555993088ll /* 0x40040000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18023194602504192ll /* 0x40080000000000 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18031990695526400ll /* 0x40100000000000 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18049582881570816ll /* 0x40200000000000 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18084767253659648ll /* 0x40400000000000 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18155135997837312ll /* 0x40800000000000 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18295873486192640ll /* 0x41000000000000 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18577348462903296ll /* 0x42000000000000 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {19140298416324608ll /* 0x44000000000000 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {20266198323167232ll /* 0x48000000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 51}} /* shli r3, r2, 51 */ + }, + {22517998136852480ll /* 0x50000000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 52}} /* shli r3, r2, 52 */ + }, + {27021597764222976ll /* 0x60000000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 53}} /* shli r3, r2, 53 */ + }, + {36028797018963959ll /* 0x7ffffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {36028797018963960ll /* 0x7ffffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {36028797018963961ll /* 0x7ffffffffffff9 */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {36028797018963963ll /* 0x7ffffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {36028797018963964ll /* 0x7ffffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {36028797018963965ll /* 0x7ffffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {36028797018963966ll /* 0x7ffffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {36028797018963967ll /* 0x7fffffffffffff */ , + {{6, 1, 55}, /* shli r2, r1, 55 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {36028797018963968ll /* 0x80000000000000 */ , + {{6, 1, 55}} /* shli r2, r1, 55 */ + }, + {36028797018963969ll /* 0x80000000000001 */ , + {{6, 1, 55}, /* shli r2, r1, 55 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {36028797018963970ll /* 0x80000000000002 */ , + {{6, 1, 55}, /* shli r2, r1, 55 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {36028797018963971ll /* 0x80000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797018963972ll /* 0x80000000000004 */ , + {{6, 1, 55}, /* shli r2, r1, 55 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {36028797018963973ll /* 0x80000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797018963974ll /* 0x80000000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {36028797018963975ll /* 0x80000000000007 */ , + {{6, 1, 55}, /* shli r2, r1, 55 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {36028797018963976ll /* 0x80000000000008 */ , + {{6, 1, 55}, /* shli r2, r1, 55 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {36028797018963977ll /* 0x80000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797018963978ll /* 0x8000000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {36028797018963984ll /* 0x80000000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797018964000ll /* 0x80000000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797018964032ll /* 0x80000000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797018964096ll /* 0x80000000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797018964224ll /* 0x80000000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797018964480ll /* 0x80000000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797018964992ll /* 0x80000000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797018966016ll /* 0x80000000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797018968064ll /* 0x80000000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797018972160ll /* 0x80000000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797018980352ll /* 0x80000000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797018996736ll /* 0x80000000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797019029504ll /* 0x80000000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797019095040ll /* 0x80000000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797019226112ll /* 0x80000000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797019488256ll /* 0x80000000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797020012544ll /* 0x80000000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797021061120ll /* 0x80000000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797023158272ll /* 0x80000000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797027352576ll /* 0x80000000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797035741184ll /* 0x80000001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797052518400ll /* 0x80000002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797086072832ll /* 0x80000004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797153181696ll /* 0x80000008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797287399424ll /* 0x80000010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028797555834880ll /* 0x80000020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028798092705792ll /* 0x80000040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028799166447616ll /* 0x80000080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028801313931264ll /* 0x80000100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028805608898560ll /* 0x80000200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028814198833152ll /* 0x80000400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028831378702336ll /* 0x80000800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028865738440704ll /* 0x80001000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36028934457917440ll /* 0x80002000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36029071896870912ll /* 0x80004000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36029346774777856ll /* 0x80008000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36029896530591744ll /* 0x80010000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36030996042219520ll /* 0x80020000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36033195065475072ll /* 0x80040000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36037593111986176ll /* 0x80080000000000 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36046389205008384ll /* 0x80100000000000 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36063981391052800ll /* 0x80200000000000 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36099165763141632ll /* 0x80400000000000 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36169534507319296ll /* 0x80800000000000 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36310271995674624ll /* 0x81000000000000 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36591746972385280ll /* 0x82000000000000 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {37154696925806592ll /* 0x84000000000000 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {38280596832649216ll /* 0x88000000000000 */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {40532396646334464ll /* 0x90000000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 52}} /* shli r3, r2, 52 */ + }, + {45035996273704960ll /* 0xa0000000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 53}} /* shli r3, r2, 53 */ + }, + {54043195528445952ll /* 0xc0000000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 54}} /* shli r3, r2, 54 */ + }, + {72057594037927927ll /* 0xfffffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {72057594037927928ll /* 0xfffffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {72057594037927929ll /* 0xfffffffffffff9 */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {72057594037927931ll /* 0xfffffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {72057594037927932ll /* 0xfffffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {72057594037927933ll /* 0xfffffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {72057594037927934ll /* 0xfffffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {72057594037927935ll /* 0xffffffffffffff */ , + {{6, 1, 56}, /* shli r2, r1, 56 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {72057594037927936ll /* 0x100000000000000 */ , + {{6, 1, 56}} /* shli r2, r1, 56 */ + }, + {72057594037927937ll /* 0x100000000000001 */ , + {{6, 1, 56}, /* shli r2, r1, 56 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {72057594037927938ll /* 0x100000000000002 */ , + {{6, 1, 56}, /* shli r2, r1, 56 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {72057594037927939ll /* 0x100000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594037927940ll /* 0x100000000000004 */ , + {{6, 1, 56}, /* shli r2, r1, 56 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {72057594037927941ll /* 0x100000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594037927942ll /* 0x100000000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {72057594037927943ll /* 0x100000000000007 */ , + {{6, 1, 56}, /* shli r2, r1, 56 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {72057594037927944ll /* 0x100000000000008 */ , + {{6, 1, 56}, /* shli r2, r1, 56 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {72057594037927945ll /* 0x100000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594037927946ll /* 0x10000000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {72057594037927952ll /* 0x100000000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594037927968ll /* 0x100000000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594037928000ll /* 0x100000000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594037928064ll /* 0x100000000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594037928192ll /* 0x100000000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594037928448ll /* 0x100000000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594037928960ll /* 0x100000000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594037929984ll /* 0x100000000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594037932032ll /* 0x100000000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594037936128ll /* 0x100000000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594037944320ll /* 0x100000000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594037960704ll /* 0x100000000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594037993472ll /* 0x100000000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594038059008ll /* 0x100000000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594038190080ll /* 0x100000000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594038452224ll /* 0x100000000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594038976512ll /* 0x100000000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594040025088ll /* 0x100000000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594042122240ll /* 0x100000000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594046316544ll /* 0x100000000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594054705152ll /* 0x100000001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594071482368ll /* 0x100000002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594105036800ll /* 0x100000004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594172145664ll /* 0x100000008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594306363392ll /* 0x100000010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057594574798848ll /* 0x100000020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057595111669760ll /* 0x100000040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057596185411584ll /* 0x100000080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057598332895232ll /* 0x100000100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057602627862528ll /* 0x100000200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057611217797120ll /* 0x100000400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057628397666304ll /* 0x100000800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057662757404672ll /* 0x100001000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057731476881408ll /* 0x100002000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72057868915834880ll /* 0x100004000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72058143793741824ll /* 0x100008000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72058693549555712ll /* 0x100010000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72059793061183488ll /* 0x100020000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72061992084439040ll /* 0x100040000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72066390130950144ll /* 0x100080000000000 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72075186223972352ll /* 0x100100000000000 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72092778410016768ll /* 0x100200000000000 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72127962782105600ll /* 0x100400000000000 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72198331526283264ll /* 0x100800000000000 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72339069014638592ll /* 0x101000000000000 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {72620543991349248ll /* 0x102000000000000 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {73183493944770560ll /* 0x104000000000000 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {74309393851613184ll /* 0x108000000000000 */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {76561193665298432ll /* 0x110000000000000 */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {81064793292668928ll /* 0x120000000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 53}} /* shli r3, r2, 53 */ + }, + {90071992547409920ll /* 0x140000000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 54}} /* shli r3, r2, 54 */ + }, + {108086391056891904ll /* 0x180000000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 55}} /* shli r3, r2, 55 */ + }, + {144115188075855863ll /* 0x1fffffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {144115188075855864ll /* 0x1fffffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {144115188075855865ll /* 0x1fffffffffffff9 */ , + {{6, 1, 54}, /* shli r2, r1, 54 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {144115188075855867ll /* 0x1fffffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {144115188075855868ll /* 0x1fffffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {144115188075855869ll /* 0x1fffffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {144115188075855870ll /* 0x1fffffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {144115188075855871ll /* 0x1ffffffffffffff */ , + {{6, 1, 57}, /* shli r2, r1, 57 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {144115188075855872ll /* 0x200000000000000 */ , + {{6, 1, 57}} /* shli r2, r1, 57 */ + }, + {144115188075855873ll /* 0x200000000000001 */ , + {{6, 1, 57}, /* shli r2, r1, 57 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {144115188075855874ll /* 0x200000000000002 */ , + {{6, 1, 57}, /* shli r2, r1, 57 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {144115188075855875ll /* 0x200000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188075855876ll /* 0x200000000000004 */ , + {{6, 1, 57}, /* shli r2, r1, 57 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {144115188075855877ll /* 0x200000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188075855878ll /* 0x200000000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {144115188075855879ll /* 0x200000000000007 */ , + {{6, 1, 57}, /* shli r2, r1, 57 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {144115188075855880ll /* 0x200000000000008 */ , + {{6, 1, 57}, /* shli r2, r1, 57 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {144115188075855881ll /* 0x200000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188075855882ll /* 0x20000000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {144115188075855888ll /* 0x200000000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188075855904ll /* 0x200000000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188075855936ll /* 0x200000000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188075856000ll /* 0x200000000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188075856128ll /* 0x200000000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188075856384ll /* 0x200000000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188075856896ll /* 0x200000000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188075857920ll /* 0x200000000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188075859968ll /* 0x200000000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188075864064ll /* 0x200000000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188075872256ll /* 0x200000000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188075888640ll /* 0x200000000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188075921408ll /* 0x200000000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188075986944ll /* 0x200000000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188076118016ll /* 0x200000000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188076380160ll /* 0x200000000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188076904448ll /* 0x200000000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188077953024ll /* 0x200000000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188080050176ll /* 0x200000000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188084244480ll /* 0x200000000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188092633088ll /* 0x200000001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188109410304ll /* 0x200000002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188142964736ll /* 0x200000004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188210073600ll /* 0x200000008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188344291328ll /* 0x200000010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115188612726784ll /* 0x200000020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115189149597696ll /* 0x200000040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115190223339520ll /* 0x200000080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115192370823168ll /* 0x200000100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115196665790464ll /* 0x200000200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115205255725056ll /* 0x200000400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115222435594240ll /* 0x200000800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115256795332608ll /* 0x200001000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115325514809344ll /* 0x200002000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115462953762816ll /* 0x200004000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144115737831669760ll /* 0x200008000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144116287587483648ll /* 0x200010000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144117387099111424ll /* 0x200020000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144119586122366976ll /* 0x200040000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144123984168878080ll /* 0x200080000000000 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144132780261900288ll /* 0x200100000000000 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144150372447944704ll /* 0x200200000000000 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144185556820033536ll /* 0x200400000000000 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144255925564211200ll /* 0x200800000000000 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144396663052566528ll /* 0x201000000000000 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {144678138029277184ll /* 0x202000000000000 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {145241087982698496ll /* 0x204000000000000 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {146366987889541120ll /* 0x208000000000000 */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {148618787703226368ll /* 0x210000000000000 */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {153122387330596864ll /* 0x220000000000000 */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {162129586585337856ll /* 0x240000000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 54}} /* shli r3, r2, 54 */ + }, + {180143985094819840ll /* 0x280000000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 55}} /* shli r3, r2, 55 */ + }, + {216172782113783808ll /* 0x300000000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 56}} /* shli r3, r2, 56 */ + }, + {288230376151711735ll /* 0x3fffffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {288230376151711736ll /* 0x3fffffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {288230376151711737ll /* 0x3fffffffffffff9 */ , + {{6, 1, 55}, /* shli r2, r1, 55 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {288230376151711739ll /* 0x3fffffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {288230376151711740ll /* 0x3fffffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {288230376151711741ll /* 0x3fffffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {288230376151711742ll /* 0x3fffffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {288230376151711743ll /* 0x3ffffffffffffff */ , + {{6, 1, 58}, /* shli r2, r1, 58 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {288230376151711744ll /* 0x400000000000000 */ , + {{6, 1, 58}} /* shli r2, r1, 58 */ + }, + {288230376151711745ll /* 0x400000000000001 */ , + {{6, 1, 58}, /* shli r2, r1, 58 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {288230376151711746ll /* 0x400000000000002 */ , + {{6, 1, 58}, /* shli r2, r1, 58 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {288230376151711747ll /* 0x400000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376151711748ll /* 0x400000000000004 */ , + {{6, 1, 58}, /* shli r2, r1, 58 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {288230376151711749ll /* 0x400000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376151711750ll /* 0x400000000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {288230376151711751ll /* 0x400000000000007 */ , + {{6, 1, 58}, /* shli r2, r1, 58 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {288230376151711752ll /* 0x400000000000008 */ , + {{6, 1, 58}, /* shli r2, r1, 58 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {288230376151711753ll /* 0x400000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376151711754ll /* 0x40000000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {288230376151711760ll /* 0x400000000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376151711776ll /* 0x400000000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376151711808ll /* 0x400000000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376151711872ll /* 0x400000000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376151712000ll /* 0x400000000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376151712256ll /* 0x400000000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376151712768ll /* 0x400000000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376151713792ll /* 0x400000000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376151715840ll /* 0x400000000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376151719936ll /* 0x400000000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376151728128ll /* 0x400000000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376151744512ll /* 0x400000000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376151777280ll /* 0x400000000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376151842816ll /* 0x400000000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376151973888ll /* 0x400000000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376152236032ll /* 0x400000000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376152760320ll /* 0x400000000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376153808896ll /* 0x400000000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376155906048ll /* 0x400000000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376160100352ll /* 0x400000000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376168488960ll /* 0x400000001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376185266176ll /* 0x400000002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376218820608ll /* 0x400000004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376285929472ll /* 0x400000008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376420147200ll /* 0x400000010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230376688582656ll /* 0x400000020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230377225453568ll /* 0x400000040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230378299195392ll /* 0x400000080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230380446679040ll /* 0x400000100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230384741646336ll /* 0x400000200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230393331580928ll /* 0x400000400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230410511450112ll /* 0x400000800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230444871188480ll /* 0x400001000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230513590665216ll /* 0x400002000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230651029618688ll /* 0x400004000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288230925907525632ll /* 0x400008000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288231475663339520ll /* 0x400010000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288232575174967296ll /* 0x400020000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288234774198222848ll /* 0x400040000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288239172244733952ll /* 0x400080000000000 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288247968337756160ll /* 0x400100000000000 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288265560523800576ll /* 0x400200000000000 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288300744895889408ll /* 0x400400000000000 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288371113640067072ll /* 0x400800000000000 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288511851128422400ll /* 0x401000000000000 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {288793326105133056ll /* 0x402000000000000 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {289356276058554368ll /* 0x404000000000000 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {290482175965396992ll /* 0x408000000000000 */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {292733975779082240ll /* 0x410000000000000 */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {297237575406452736ll /* 0x420000000000000 */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {306244774661193728ll /* 0x440000000000000 */ , + {{6, 1, 54}, /* shli r2, r1, 54 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {324259173170675712ll /* 0x480000000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 55}} /* shli r3, r2, 55 */ + }, + {360287970189639680ll /* 0x500000000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 56}} /* shli r3, r2, 56 */ + }, + {432345564227567616ll /* 0x600000000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 57}} /* shli r3, r2, 57 */ + }, + {576460752303423479ll /* 0x7fffffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {576460752303423480ll /* 0x7fffffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {576460752303423481ll /* 0x7fffffffffffff9 */ , + {{6, 1, 56}, /* shli r2, r1, 56 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {576460752303423483ll /* 0x7fffffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {576460752303423484ll /* 0x7fffffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {576460752303423485ll /* 0x7fffffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {576460752303423486ll /* 0x7fffffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {576460752303423487ll /* 0x7ffffffffffffff */ , + {{6, 1, 59}, /* shli r2, r1, 59 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {576460752303423488ll /* 0x800000000000000 */ , + {{6, 1, 59}} /* shli r2, r1, 59 */ + }, + {576460752303423489ll /* 0x800000000000001 */ , + {{6, 1, 59}, /* shli r2, r1, 59 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {576460752303423490ll /* 0x800000000000002 */ , + {{6, 1, 59}, /* shli r2, r1, 59 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {576460752303423491ll /* 0x800000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303423492ll /* 0x800000000000004 */ , + {{6, 1, 59}, /* shli r2, r1, 59 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {576460752303423493ll /* 0x800000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303423494ll /* 0x800000000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {576460752303423495ll /* 0x800000000000007 */ , + {{6, 1, 59}, /* shli r2, r1, 59 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {576460752303423496ll /* 0x800000000000008 */ , + {{6, 1, 59}, /* shli r2, r1, 59 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {576460752303423497ll /* 0x800000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303423498ll /* 0x80000000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {576460752303423504ll /* 0x800000000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303423520ll /* 0x800000000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303423552ll /* 0x800000000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303423616ll /* 0x800000000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303423744ll /* 0x800000000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303424000ll /* 0x800000000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303424512ll /* 0x800000000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303425536ll /* 0x800000000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303427584ll /* 0x800000000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303431680ll /* 0x800000000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303439872ll /* 0x800000000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303456256ll /* 0x800000000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303489024ll /* 0x800000000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303554560ll /* 0x800000000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303685632ll /* 0x800000000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752303947776ll /* 0x800000000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752304472064ll /* 0x800000000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752305520640ll /* 0x800000000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752307617792ll /* 0x800000000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752311812096ll /* 0x800000000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752320200704ll /* 0x800000001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752336977920ll /* 0x800000002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752370532352ll /* 0x800000004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752437641216ll /* 0x800000008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752571858944ll /* 0x800000010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460752840294400ll /* 0x800000020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460753377165312ll /* 0x800000040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460754450907136ll /* 0x800000080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460756598390784ll /* 0x800000100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460760893358080ll /* 0x800000200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460769483292672ll /* 0x800000400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460786663161856ll /* 0x800000800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460821022900224ll /* 0x800001000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576460889742376960ll /* 0x800002000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576461027181330432ll /* 0x800004000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576461302059237376ll /* 0x800008000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576461851815051264ll /* 0x800010000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576462951326679040ll /* 0x800020000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576465150349934592ll /* 0x800040000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576469548396445696ll /* 0x800080000000000 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576478344489467904ll /* 0x800100000000000 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576495936675512320ll /* 0x800200000000000 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576531121047601152ll /* 0x800400000000000 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576601489791778816ll /* 0x800800000000000 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {576742227280134144ll /* 0x801000000000000 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {577023702256844800ll /* 0x802000000000000 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {577586652210266112ll /* 0x804000000000000 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {578712552117108736ll /* 0x808000000000000 */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {580964351930793984ll /* 0x810000000000000 */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {585467951558164480ll /* 0x820000000000000 */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {594475150812905472ll /* 0x840000000000000 */ , + {{6, 1, 54}, /* shli r2, r1, 54 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {612489549322387456ll /* 0x880000000000000 */ , + {{6, 1, 55}, /* shli r2, r1, 55 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {648518346341351424ll /* 0x900000000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 56}} /* shli r3, r2, 56 */ + }, + {720575940379279360ll /* 0xa00000000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 57}} /* shli r3, r2, 57 */ + }, + {864691128455135232ll /* 0xc00000000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 58}} /* shli r3, r2, 58 */ + }, + {1152921504606846967ll /* 0xffffffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1152921504606846968ll /* 0xffffffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1152921504606846969ll /* 0xffffffffffffff9 */ , + {{6, 1, 57}, /* shli r2, r1, 57 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {1152921504606846971ll /* 0xffffffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1152921504606846972ll /* 0xffffffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1152921504606846973ll /* 0xffffffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1152921504606846974ll /* 0xffffffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1152921504606846975ll /* 0xfffffffffffffff */ , + {{6, 1, 60}, /* shli r2, r1, 60 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {1152921504606846976ll /* 0x1000000000000000 */ , + {{6, 1, 60}} /* shli r2, r1, 60 */ + }, + {1152921504606846977ll /* 0x1000000000000001 */ , + {{6, 1, 60}, /* shli r2, r1, 60 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {1152921504606846978ll /* 0x1000000000000002 */ , + {{6, 1, 60}, /* shli r2, r1, 60 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {1152921504606846979ll /* 0x1000000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504606846980ll /* 0x1000000000000004 */ , + {{6, 1, 60}, /* shli r2, r1, 60 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {1152921504606846981ll /* 0x1000000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504606846982ll /* 0x1000000000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {1152921504606846983ll /* 0x1000000000000007 */ , + {{6, 1, 60}, /* shli r2, r1, 60 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {1152921504606846984ll /* 0x1000000000000008 */ , + {{6, 1, 60}, /* shli r2, r1, 60 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {1152921504606846985ll /* 0x1000000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504606846986ll /* 0x100000000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {1152921504606846992ll /* 0x1000000000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504606847008ll /* 0x1000000000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504606847040ll /* 0x1000000000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504606847104ll /* 0x1000000000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504606847232ll /* 0x1000000000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504606847488ll /* 0x1000000000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504606848000ll /* 0x1000000000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504606849024ll /* 0x1000000000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504606851072ll /* 0x1000000000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504606855168ll /* 0x1000000000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504606863360ll /* 0x1000000000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504606879744ll /* 0x1000000000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504606912512ll /* 0x1000000000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504606978048ll /* 0x1000000000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504607109120ll /* 0x1000000000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504607371264ll /* 0x1000000000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504607895552ll /* 0x1000000000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504608944128ll /* 0x1000000000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504611041280ll /* 0x1000000000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504615235584ll /* 0x1000000000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504623624192ll /* 0x1000000001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504640401408ll /* 0x1000000002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504673955840ll /* 0x1000000004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504741064704ll /* 0x1000000008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921504875282432ll /* 0x1000000010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921505143717888ll /* 0x1000000020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921505680588800ll /* 0x1000000040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921506754330624ll /* 0x1000000080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921508901814272ll /* 0x1000000100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921513196781568ll /* 0x1000000200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921521786716160ll /* 0x1000000400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921538966585344ll /* 0x1000000800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921573326323712ll /* 0x1000001000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921642045800448ll /* 0x1000002000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152921779484753920ll /* 0x1000004000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152922054362660864ll /* 0x1000008000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152922604118474752ll /* 0x1000010000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152923703630102528ll /* 0x1000020000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152925902653358080ll /* 0x1000040000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152930300699869184ll /* 0x1000080000000000 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152939096792891392ll /* 0x1000100000000000 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152956688978935808ll /* 0x1000200000000000 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1152991873351024640ll /* 0x1000400000000000 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1153062242095202304ll /* 0x1000800000000000 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1153202979583557632ll /* 0x1001000000000000 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1153484454560268288ll /* 0x1002000000000000 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1154047404513689600ll /* 0x1004000000000000 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1155173304420532224ll /* 0x1008000000000000 */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1157425104234217472ll /* 0x1010000000000000 */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1161928703861587968ll /* 0x1020000000000000 */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1170935903116328960ll /* 0x1040000000000000 */ , + {{6, 1, 54}, /* shli r2, r1, 54 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1188950301625810944ll /* 0x1080000000000000 */ , + {{6, 1, 55}, /* shli r2, r1, 55 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1224979098644774912ll /* 0x1100000000000000 */ , + {{6, 1, 56}, /* shli r2, r1, 56 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1297036692682702848ll /* 0x1200000000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 57}} /* shli r3, r2, 57 */ + }, + {1441151880758558720ll /* 0x1400000000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 58}} /* shli r3, r2, 58 */ + }, + {1729382256910270464ll /* 0x1800000000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 59}} /* shli r3, r2, 59 */ + }, + {2305843009213693943ll /* 0x1ffffffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2305843009213693944ll /* 0x1ffffffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2305843009213693945ll /* 0x1ffffffffffffff9 */ , + {{6, 1, 58}, /* shli r2, r1, 58 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {2305843009213693947ll /* 0x1ffffffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2305843009213693948ll /* 0x1ffffffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2305843009213693949ll /* 0x1ffffffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2305843009213693950ll /* 0x1ffffffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2305843009213693951ll /* 0x1fffffffffffffff */ , + {{6, 1, 61}, /* shli r2, r1, 61 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {2305843009213693952ll /* 0x2000000000000000 */ , + {{6, 1, 61}} /* shli r2, r1, 61 */ + }, + {2305843009213693953ll /* 0x2000000000000001 */ , + {{6, 1, 61}, /* shli r2, r1, 61 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {2305843009213693954ll /* 0x2000000000000002 */ , + {{6, 1, 61}, /* shli r2, r1, 61 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {2305843009213693955ll /* 0x2000000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009213693956ll /* 0x2000000000000004 */ , + {{6, 1, 61}, /* shli r2, r1, 61 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {2305843009213693957ll /* 0x2000000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009213693958ll /* 0x2000000000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {2305843009213693959ll /* 0x2000000000000007 */ , + {{6, 1, 61}, /* shli r2, r1, 61 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {2305843009213693960ll /* 0x2000000000000008 */ , + {{6, 1, 61}, /* shli r2, r1, 61 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {2305843009213693961ll /* 0x2000000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009213693962ll /* 0x200000000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {2305843009213693968ll /* 0x2000000000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009213693984ll /* 0x2000000000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009213694016ll /* 0x2000000000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009213694080ll /* 0x2000000000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009213694208ll /* 0x2000000000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009213694464ll /* 0x2000000000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009213694976ll /* 0x2000000000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009213696000ll /* 0x2000000000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009213698048ll /* 0x2000000000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009213702144ll /* 0x2000000000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009213710336ll /* 0x2000000000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009213726720ll /* 0x2000000000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009213759488ll /* 0x2000000000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009213825024ll /* 0x2000000000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009213956096ll /* 0x2000000000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009214218240ll /* 0x2000000000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009214742528ll /* 0x2000000000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009215791104ll /* 0x2000000000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009217888256ll /* 0x2000000000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009222082560ll /* 0x2000000000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009230471168ll /* 0x2000000001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009247248384ll /* 0x2000000002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009280802816ll /* 0x2000000004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009347911680ll /* 0x2000000008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009482129408ll /* 0x2000000010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843009750564864ll /* 0x2000000020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843010287435776ll /* 0x2000000040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843011361177600ll /* 0x2000000080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843013508661248ll /* 0x2000000100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843017803628544ll /* 0x2000000200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843026393563136ll /* 0x2000000400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843043573432320ll /* 0x2000000800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843077933170688ll /* 0x2000001000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843146652647424ll /* 0x2000002000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843284091600896ll /* 0x2000004000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305843558969507840ll /* 0x2000008000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305844108725321728ll /* 0x2000010000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305845208236949504ll /* 0x2000020000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305847407260205056ll /* 0x2000040000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305851805306716160ll /* 0x2000080000000000 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305860601399738368ll /* 0x2000100000000000 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305878193585782784ll /* 0x2000200000000000 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305913377957871616ll /* 0x2000400000000000 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2305983746702049280ll /* 0x2000800000000000 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2306124484190404608ll /* 0x2001000000000000 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2306405959167115264ll /* 0x2002000000000000 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2306968909120536576ll /* 0x2004000000000000 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2308094809027379200ll /* 0x2008000000000000 */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2310346608841064448ll /* 0x2010000000000000 */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2314850208468434944ll /* 0x2020000000000000 */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2323857407723175936ll /* 0x2040000000000000 */ , + {{6, 1, 54}, /* shli r2, r1, 54 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2341871806232657920ll /* 0x2080000000000000 */ , + {{6, 1, 55}, /* shli r2, r1, 55 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2377900603251621888ll /* 0x2100000000000000 */ , + {{6, 1, 56}, /* shli r2, r1, 56 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2449958197289549824ll /* 0x2200000000000000 */ , + {{6, 1, 57}, /* shli r2, r1, 57 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2594073385365405696ll /* 0x2400000000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 58}} /* shli r3, r2, 58 */ + }, + {2882303761517117440ll /* 0x2800000000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 59}} /* shli r3, r2, 59 */ + }, + {3458764513820540928ll /* 0x3000000000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 60}} /* shli r3, r2, 60 */ + }, + {4611686018427387895ll /* 0x3ffffffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4611686018427387896ll /* 0x3ffffffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4611686018427387897ll /* 0x3ffffffffffffff9 */ , + {{6, 1, 59}, /* shli r2, r1, 59 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {4611686018427387899ll /* 0x3ffffffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4611686018427387900ll /* 0x3ffffffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4611686018427387901ll /* 0x3ffffffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4611686018427387902ll /* 0x3ffffffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4611686018427387903ll /* 0x3fffffffffffffff */ , + {{6, 1, 62}, /* shli r2, r1, 62 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {4611686018427387904ll /* 0x4000000000000000 */ , + {{6, 1, 62}} /* shli r2, r1, 62 */ + }, + {4611686018427387905ll /* 0x4000000000000001 */ , + {{6, 1, 62}, /* shli r2, r1, 62 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {4611686018427387906ll /* 0x4000000000000002 */ , + {{6, 1, 62}, /* shli r2, r1, 62 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {4611686018427387907ll /* 0x4000000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427387908ll /* 0x4000000000000004 */ , + {{6, 1, 62}, /* shli r2, r1, 62 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {4611686018427387909ll /* 0x4000000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427387910ll /* 0x4000000000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {4611686018427387911ll /* 0x4000000000000007 */ , + {{6, 1, 62}, /* shli r2, r1, 62 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {4611686018427387912ll /* 0x4000000000000008 */ , + {{6, 1, 62}, /* shli r2, r1, 62 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {4611686018427387913ll /* 0x4000000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427387914ll /* 0x400000000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {4611686018427387920ll /* 0x4000000000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427387936ll /* 0x4000000000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427387968ll /* 0x4000000000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427388032ll /* 0x4000000000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427388160ll /* 0x4000000000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427388416ll /* 0x4000000000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427388928ll /* 0x4000000000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427389952ll /* 0x4000000000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427392000ll /* 0x4000000000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427396096ll /* 0x4000000000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427404288ll /* 0x4000000000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427420672ll /* 0x4000000000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427453440ll /* 0x4000000000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427518976ll /* 0x4000000000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427650048ll /* 0x4000000000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018427912192ll /* 0x4000000000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018428436480ll /* 0x4000000000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018429485056ll /* 0x4000000000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018431582208ll /* 0x4000000000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018435776512ll /* 0x4000000000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018444165120ll /* 0x4000000001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018460942336ll /* 0x4000000002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018494496768ll /* 0x4000000004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018561605632ll /* 0x4000000008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018695823360ll /* 0x4000000010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686018964258816ll /* 0x4000000020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686019501129728ll /* 0x4000000040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686020574871552ll /* 0x4000000080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686022722355200ll /* 0x4000000100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686027017322496ll /* 0x4000000200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686035607257088ll /* 0x4000000400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686052787126272ll /* 0x4000000800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686087146864640ll /* 0x4000001000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686155866341376ll /* 0x4000002000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686293305294848ll /* 0x4000004000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611686568183201792ll /* 0x4000008000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611687117939015680ll /* 0x4000010000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611688217450643456ll /* 0x4000020000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611690416473899008ll /* 0x4000040000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611694814520410112ll /* 0x4000080000000000 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611703610613432320ll /* 0x4000100000000000 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611721202799476736ll /* 0x4000200000000000 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611756387171565568ll /* 0x4000400000000000 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611826755915743232ll /* 0x4000800000000000 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4611967493404098560ll /* 0x4001000000000000 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4612248968380809216ll /* 0x4002000000000000 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4612811918334230528ll /* 0x4004000000000000 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4613937818241073152ll /* 0x4008000000000000 */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4616189618054758400ll /* 0x4010000000000000 */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4620693217682128896ll /* 0x4020000000000000 */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4629700416936869888ll /* 0x4040000000000000 */ , + {{6, 1, 54}, /* shli r2, r1, 54 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4647714815446351872ll /* 0x4080000000000000 */ , + {{6, 1, 55}, /* shli r2, r1, 55 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4683743612465315840ll /* 0x4100000000000000 */ , + {{6, 1, 56}, /* shli r2, r1, 56 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4755801206503243776ll /* 0x4200000000000000 */ , + {{6, 1, 57}, /* shli r2, r1, 57 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4899916394579099648ll /* 0x4400000000000000 */ , + {{6, 1, 58}, /* shli r2, r1, 58 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {5188146770730811392ll /* 0x4800000000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 59}} /* shli r3, r2, 59 */ + }, + {5764607523034234880ll /* 0x5000000000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 60}} /* shli r3, r2, 60 */ + }, + {6917529027641081855ll /* 0x5fffffffffffffff */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 61}, /* shli r3, r2, 61 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {6917529027641081856ll /* 0x6000000000000000 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 61}} /* shli r3, r2, 61 */ + }, + {9223372036854775799ll /* 0x7ffffffffffffff7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {9223372036854775800ll /* 0x7ffffffffffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {9223372036854775801ll /* 0x7ffffffffffffff9 */ , + {{6, 1, 60}, /* shli r2, r1, 60 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* shl3add r4, r3, r1 */ + }, + {9223372036854775803ll /* 0x7ffffffffffffffb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {9223372036854775804ll /* 0x7ffffffffffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {9223372036854775805ll /* 0x7ffffffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {9223372036854775806ll /* 0x7ffffffffffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {9223372036854775807ll /* 0x7fffffffffffffff */ , + {{6, 1, 63}, /* shli r2, r1, 63 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + } +}; + +const int tilegx_multiply_insn_seq_table_size = + (int) (sizeof tilegx_multiply_insn_seq_table + / sizeof tilegx_multiply_insn_seq_table[0]); diff --git a/gcc-4.9/gcc/config/tilegx/predicates.md b/gcc-4.9/gcc/config/tilegx/predicates.md new file mode 100644 index 000000000..5bacc3deb --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/predicates.md @@ -0,0 +1,298 @@ +;; Predicate definitions for Tilera TILE-Gx. +;; Copyright (C) 2011-2014 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/>. + +;; Return true if OP is the zero constant for MODE. +(define_predicate "const_zero_operand" + (and (match_code "const_int,const_double,const_vector") + (match_test "op == CONST0_RTX (mode)"))) + +;; Returns true if OP is either the constant zero or a register. +(define_predicate "reg_or_0_operand" + (and (ior (match_operand 0 "register_operand") + (match_operand 0 "const_zero_operand")) + (match_test "GET_MODE_SIZE (mode) <= UNITS_PER_WORD"))) + +; Return 1 if OP is a valid Pmode pointer. +(define_predicate "pointer_operand" + (and (match_operand 0 "address_operand") + (ior (match_operand 0 "pmode_register_operand") + (match_operand 0 "const_zero_operand")))) + +; Return 1 if OP is a network register identifier. +(define_predicate "netreg_operand" + (and (match_code "const_int") + (match_test "IN_RANGE (INTVAL (op), 0, 5)"))) + +; Return 1 if OP is an unsigned 6-bit constant. +(define_predicate "u6bit_cint_operand" + (and (match_code "const_int") + (match_test "INTVAL (op) == (INTVAL (op) & 0x3F)"))) + +;; Return 1 if OP is an unsigned 16-bit constant. +(define_predicate "u16bit_cint_operand" + (and (match_code "const_int") + (match_test "(unsigned HOST_WIDE_INT)INTVAL (op) < (1U << 16)"))) + +;; Return 1 if OP is a signed 8-bit constant. +(define_predicate "s8bit_cint_operand" + (and (match_code "const_int") + (match_test "satisfies_constraint_I (op)"))) + +;; Return 1 if OP is a signed 16-bit constant. +(define_predicate "s16bit_cint_operand" + (and (match_code "const_int") + (match_test "satisfies_constraint_J (op)"))) + +;; Return 1 if OP is an unsigned 14-bit constant. +(define_predicate "u14bit_cint_operand" + (and (match_code "const_int") + (match_test "(unsigned HOST_WIDE_INT)INTVAL (op) < (1U << 14)"))) + +;; Return 1 if OP is a constant or any register. +(define_predicate "reg_or_cint_operand" + (ior (match_operand 0 "register_operand") + (match_operand 0 "const_int_operand"))) + +;; Returns 1 if OP is a "last" unspec wrapper for a symbol, got, or +;; tls reference. +(define_predicate "const_last_symbolic_operand" + (and (match_code "const") + (match_test "GET_CODE (XEXP (op,0)) == UNSPEC") + (ior (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW0_LAST") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_LAST") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW2_LAST") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_LAST_PCREL") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW2_LAST_PCREL") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW0_LAST_GOT") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_LAST_GOT") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_LAST_TLS_GD") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_LAST_TLS_IE") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_LAST_TLS_LE") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_LAST_PLT_PCREL") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW2_LAST_PLT_PCREL")))) + +;; Returns 1 if OP is an unspec wrapper for a symbol, got, or tls +;; reference. +(define_predicate "const_symbolic_operand" + (and (match_code "const") + (match_test "GET_CODE (XEXP (op,0)) == UNSPEC") + (ior (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW0") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW2") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW3") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW0_PCREL") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_PCREL") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW0_GOT") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW0_TLS_GD") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW0_TLS_IE") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW0_TLS_LE") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW0_PLT_PCREL") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_HW1_PLT_PCREL")))) + +;; Return 1 if OP is a 8-element vector constant with identical signed +;; 8-bit elements or any register. +(define_predicate "reg_or_v8s8bit_operand" + (ior (match_operand 0 "register_operand") + (and (match_code "const_vector") + (match_test "CONST_VECTOR_NUNITS (op) == 8 + && satisfies_constraint_I (CONST_VECTOR_ELT (op, 0)) + && CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 1) + && CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 2) + && CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 3) + && CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 4) + && CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 5) + && CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 6) + && CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 7)")))) + +;; Return 1 if OP is a 4-element vector constant with identical signed +;; 8-bit elements or any register. +(define_predicate "reg_or_v4s8bit_operand" + (ior (match_operand 0 "register_operand") + (and (match_code "const_vector") + (match_test "CONST_VECTOR_NUNITS (op) == 4 + && satisfies_constraint_I (CONST_VECTOR_ELT (op, 0)) + && CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 1) + && CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 2) + && CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 3)")))) + +;; Return 1 if the operand is a valid second operand to an add insn. +(define_predicate "add_operand" + (if_then_else (match_code "const_int") + (match_test "satisfies_constraint_J (op)") + (ior (match_operand 0 "register_operand") + (match_operand 0 "const_last_symbolic_operand")))) + +;; Return 1 if the operand is a register or signed 8-bit immediate operand. +(define_predicate "reg_or_s8bit_operand" + (if_then_else (match_code "const_int") + (match_test "satisfies_constraint_I (op)") + (match_operand 0 "register_operand"))) + +;; Return 1 if the operand is a register or unsigned 5-bit immediate operand. +(define_predicate "reg_or_u5bit_operand" + (if_then_else (match_code "const_int") + (match_test "INTVAL (op) == (INTVAL (op) & 0x1F)") + (match_operand 0 "register_operand"))) + +;; Return 1 if the operand is a register or unsigned 6-bit immediate operand. +(define_predicate "reg_or_u6bit_operand" + (if_then_else (match_code "const_int") + (match_test "INTVAL (op) == (INTVAL (op) & 0x3F)") + (match_operand 0 "register_operand"))) + +;; Return 1 for an operand suitable for ANDing with a register. +(define_predicate "and_operand" + (if_then_else (match_code "const_int") + (match_test "satisfies_constraint_I (op) || satisfies_constraint_M (op)") + (match_operand 0 "register_operand"))) + +; Return 1 if the operand is 2, 4 or 8. +(define_predicate "cint_248_operand" + (and (match_code "const_int") + (match_test + "INTVAL (op) == 2 || INTVAL (op) == 4 || INTVAL (op) == 8"))) + +;; Return true if OP is a TLS symbolic operand. +(define_predicate "tls_symbolic_operand" + (and (match_code "symbol_ref") + (match_test "SYMBOL_REF_TLS_MODEL (op) != TLS_MODEL_NONE"))) + +;; Return true if OP is a symbolic operand for the TLS Global Dynamic model. +(define_predicate "tls_gd_symbolic_operand" + (and (match_code "symbol_ref") + (match_test "SYMBOL_REF_TLS_MODEL (op) == TLS_MODEL_GLOBAL_DYNAMIC"))) + +;; Return true if OP is a symbolic operand for the TLS Local Dynamic model. +(define_predicate "tls_ld_symbolic_operand" + (and (match_code "symbol_ref") + (match_test "SYMBOL_REF_TLS_MODEL (op) == TLS_MODEL_LOCAL_DYNAMIC"))) + +;; Return true if OP is a symbolic operand that can be used for the +;; TLS Initial Exec model. +(define_predicate "tls_ie_symbolic_operand" + (and (match_code "symbol_ref") + (ior (match_test "SYMBOL_REF_TLS_MODEL (op) == TLS_MODEL_INITIAL_EXEC") + (match_test "SYMBOL_REF_TLS_MODEL (op) == TLS_MODEL_LOCAL_EXEC")))) + +;; Return true if OP is a symbolic operand for the TLS Local Exec model. +(define_predicate "tls_le_symbolic_operand" + (and (match_code "symbol_ref") + (match_test "SYMBOL_REF_TLS_MODEL (op) == TLS_MODEL_LOCAL_EXEC"))) + +;; Returns true if OP is any general operand except for an +;; auto-incrementing address operand. +(define_predicate "nonautoinc_operand" + (and (match_operand 0 "general_operand") + (not (ior (match_code "pre_dec") (match_code "pre_inc") + (match_code "post_dec") (match_code "post_inc") + (match_code "post_modify") (match_code "pre_modify"))))) + +;; Returns true if OP is a non-auto-incrementing memory operand. +(define_predicate "nonautoincmem_operand" + (match_operand 0 "memory_operand") +{ + return nonautoinc_operand (XEXP (op, 0), GET_MODE (XEXP (op, 0))); +}) + +;; Returns true if OP is a non-auto-incrementing memory, general +;; operand. +(define_predicate "nonautoincmem_general_operand" + (match_operand 0 "general_operand") +{ + if (memory_operand (op, mode)) + return nonautoinc_operand (XEXP (op, 0), GET_MODE (XEXP (op, 0))); + else + return true; +}) + +;; Returns true if OP is a non-auto-incrementing memory, non-immediate +;; operand. +(define_predicate "nonautoincmem_nonimmediate_operand" + (match_operand 0 "nonimmediate_operand") +{ + if (memory_operand (op, mode)) + return nonautoinc_operand (XEXP (op, 0), GET_MODE (XEXP (op, 0))); + else + return true; +}) + +;; Return true if OP is a valid operand for the source of a move insn. +(define_predicate "move_operand" + (match_operand 0 "general_operand") +{ + /* If both modes are non-void they must be the same. */ + if (mode != VOIDmode && GET_MODE (op) != VOIDmode && mode != GET_MODE (op)) + return false; + + switch (GET_CODE (op)) + { + case CONST_INT: + return (satisfies_constraint_J (op) + || satisfies_constraint_K (op) + || (mode == DImode && + (satisfies_constraint_N (op) + || satisfies_constraint_P (op)))); + + case MEM: + return memory_address_p (mode, XEXP (op, 0)); + + case CONST: + return const_last_symbolic_operand (op, mode); + + default: + return register_operand (op, mode); + } +}) + +;; Returns 1 if OP is a symbolic operand, i.e. a symbol_ref or a label_ref, +;; possibly with an offset. +(define_predicate "symbolic_operand" + (ior (match_code "symbol_ref,label_ref") + (and (match_code "const") + (match_test "GET_CODE (XEXP (op,0)) == PLUS + && (GET_CODE (XEXP (XEXP (op,0), 0)) == SYMBOL_REF + || GET_CODE (XEXP (XEXP (op,0), 0)) == LABEL_REF) + && CONST_INT_P (XEXP (XEXP (op,0), 1))")))) + +;; Return 1 for an unsigned 16 bit or a const symbolc operand. +(define_predicate "u16bit_or_const_symbolic_operand" + (ior (match_operand 0 "u16bit_cint_operand") + (match_operand 0 "const_symbolic_operand"))) + +;; Return true if OP is an address suitable for a call insn. +;; Call insn on TILE can take a PC-relative constant address +;; or any regular memory address. +(define_predicate "call_address_operand" + (ior (match_operand 0 "symbolic_operand") + (match_test "memory_address_p (Pmode, op)"))) + +;; Return true if OP is an operand suitable for a call insn. +(define_predicate "call_operand" + (and (match_code "mem") + (match_test "call_address_operand (XEXP (op, 0), mode)"))) + +;; Return 1 if OP is a signed comparison operation. +;; We can use these directly in compares against zero. +(define_predicate "signed_comparison_operator" + (match_code "eq,ne,le,lt,ge,gt")) + +;; Return 1 if OP is a equal or not-equal operation. +(define_predicate "eqne_operator" + (match_code "eq,ne")) diff --git a/gcc-4.9/gcc/config/tilegx/sync.md b/gcc-4.9/gcc/config/tilegx/sync.md new file mode 100644 index 000000000..b32b662e6 --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/sync.md @@ -0,0 +1,227 @@ +;; GCC machine description for Tilera TILE-Gx synchronization +;; instructions. +;; Copyright (C) 2011-2014 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_code_iterator fetchop [plus ior and]) +(define_code_attr fetchop_name [(plus "add") (ior "or") (and "and")]) + +(define_insn "mtspr_cmpexch<mode>" + [(set (reg:I48MODE TILEGX_CMPEXCH_REG) + (unspec_volatile:I48MODE + [(match_operand:I48MODE 0 "reg_or_0_operand" "rO")] + UNSPEC_SPR_MOVE))] + "" + "mtspr\tCMPEXCH_VALUE, %r0" + [(set_attr "type" "X1")]) + + +(define_expand "atomic_compare_and_swap<mode>" + [(match_operand:DI 0 "register_operand" "") ;; bool output + (match_operand:I48MODE 1 "register_operand" "") ;; val output + (match_operand:I48MODE 2 "nonautoincmem_operand" "") ;; memory + (match_operand:I48MODE 3 "reg_or_0_operand" "") ;; expected value + (match_operand:I48MODE 4 "reg_or_0_operand" "") ;; desired value + (match_operand:SI 5 "const_int_operand" "") ;; is_weak + (match_operand:SI 6 "const_int_operand" "") ;; mod_s + (match_operand:SI 7 "const_int_operand" "")] ;; mod_f + "" +{ + enum memmodel mod_s = (enum memmodel) INTVAL (operands[6]); + + if (operands[3] != const0_rtx) + operands[3] = force_reg (<MODE>mode, operands[3]); + if (operands[4] != const0_rtx) + operands[4] = force_reg (<MODE>mode, operands[4]); + + tilegx_pre_atomic_barrier (mod_s); + emit_insn (gen_mtspr_cmpexch<mode> (operands[3])); + emit_insn (gen_atomic_compare_and_swap_bare<mode> (operands[1], operands[2], + operands[4])); + tilegx_post_atomic_barrier (mod_s); + emit_insn (gen_insn_cmpeq_<mode>di (operands[0], operands[1], operands[3])); + DONE; +}) + + +(define_insn "atomic_compare_and_swap_bare<mode>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (match_operand:I48MODE 1 "nonautoincmem_operand" "+U")) + (set (match_dup 1) + (unspec_volatile:I48MODE + [(match_dup 1) + (reg:I48MODE TILEGX_CMPEXCH_REG) + (match_operand:I48MODE 2 "reg_or_0_operand" "rO")] + UNSPEC_CMPXCHG))] + "" + "cmpexch<four_if_si>\t%0, %1, %r2" + [(set_attr "type" "X1_remote")]) + + +(define_expand "atomic_exchange<mode>" + [(match_operand:I48MODE 0 "register_operand" "") ;; result + (match_operand:I48MODE 1 "nonautoincmem_operand" "") ;; memory + (match_operand:I48MODE 2 "reg_or_0_operand" "") ;; input + (match_operand:SI 3 "const_int_operand" "")] ;; model + "" +{ + enum memmodel model = (enum memmodel) INTVAL (operands[3]); + + tilegx_pre_atomic_barrier (model); + emit_insn (gen_atomic_exchange_bare<mode> (operands[0], operands[1], + operands[2])); + tilegx_post_atomic_barrier (model); + DONE; +}) + + +(define_insn "atomic_exchange_bare<mode>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (match_operand:I48MODE 1 "nonautoincmem_operand" "+U")) + (set (match_dup 1) + (unspec_volatile:I48MODE + [(match_operand:I48MODE 2 "reg_or_0_operand" "rO")] + UNSPEC_XCHG))] + "" + "exch<four_if_si>\t%0, %1, %r2" + [(set_attr "type" "X1_remote")]) + + +(define_expand "atomic_fetch_<fetchop_name><mode>" + [(match_operand:I48MODE 0 "register_operand" "") ;; result + (match_operand:I48MODE 1 "nonautoincmem_operand" "") ;; memory + (unspec_volatile:I48MODE + [(fetchop:I48MODE + (match_dup 1) + (match_operand:I48MODE 2 "reg_or_0_operand" ""))] ;; value + UNSPEC_ATOMIC) + (match_operand:SI 3 "const_int_operand" "")] ;; model + "" +{ + enum memmodel model = (enum memmodel) INTVAL (operands[3]); + + tilegx_pre_atomic_barrier (model); + emit_insn (gen_atomic_fetch_<fetchop_name>_bare<mode> (operands[0], + operands[1], + operands[2])); + tilegx_post_atomic_barrier (model); + DONE; +}) + + +(define_insn "atomic_fetch_<fetchop_name>_bare<mode>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (match_operand:I48MODE 1 "nonautoincmem_operand" "+U")) + (set (match_dup 1) + (unspec_volatile:I48MODE + [(fetchop:I48MODE + (match_dup 1) + (match_operand:I48MODE 2 "reg_or_0_operand" "rO"))] + UNSPEC_ATOMIC))] + "" + "fetch<fetchop_name><four_if_si>\t%0, %1, %r2" + [(set_attr "type" "X1_remote")]) + + +(define_expand "atomic_fetch_sub<mode>" + [(match_operand:I48MODE 0 "register_operand" "") ;; result + (match_operand:I48MODE 1 "nonautoincmem_operand" "") ;; memory + (unspec_volatile:I48MODE + [(minus:I48MODE + (match_dup 1) + (match_operand:I48MODE 2 "reg_or_0_operand" ""))] ;; value + UNSPEC_ATOMIC) + (match_operand:SI 3 "const_int_operand" "")] ;; model + "" +{ + rtx addend; + enum memmodel model = (enum memmodel) INTVAL (operands[3]); + + if (operands[2] != const0_rtx) + { + addend = gen_reg_rtx (<MODE>mode); + emit_move_insn (addend, + gen_rtx_MINUS (<MODE>mode, const0_rtx, operands[2])); + } + else + addend = operands[2]; + + tilegx_pre_atomic_barrier (model); + emit_insn (gen_atomic_fetch_add_bare<mode> (operands[0], + operands[1], + addend)); + tilegx_post_atomic_barrier (model); + DONE; +}) + + +(define_expand "atomic_test_and_set" + [(match_operand:QI 0 "register_operand" "") ;; bool output + (match_operand:QI 1 "nonautoincmem_operand" "+U") ;; memory + (match_operand:SI 2 "const_int_operand" "")] ;; model + "" +{ + rtx addr, aligned_addr, aligned_mem, offset, word, shmt, tmp; + rtx result = operands[0]; + rtx mem = operands[1]; + enum memmodel model = (enum memmodel) INTVAL (operands[2]); + + addr = force_reg (Pmode, XEXP (mem, 0)); + + aligned_addr = gen_reg_rtx (Pmode); + emit_move_insn (aligned_addr, gen_rtx_AND (Pmode, addr, GEN_INT (-8))); + + aligned_mem = change_address (mem, DImode, aligned_addr); + set_mem_alias_set (aligned_mem, 0); + + tmp = gen_reg_rtx (Pmode); + if (BYTES_BIG_ENDIAN) + { + emit_move_insn (gen_lowpart (DImode, tmp), + gen_rtx_NOT (DImode, gen_lowpart (DImode, addr))); + } + else + { + tmp = addr; + } + + offset = gen_reg_rtx (DImode); + emit_move_insn (offset, gen_rtx_AND (DImode, gen_lowpart (DImode, tmp), + GEN_INT (7))); + + tmp = gen_reg_rtx (DImode); + emit_move_insn (tmp, GEN_INT (1)); + + shmt = gen_reg_rtx (DImode); + emit_move_insn (shmt, gen_rtx_ASHIFT (DImode, offset, GEN_INT (3))); + + word = gen_reg_rtx (DImode); + emit_move_insn (word, gen_rtx_ASHIFT (DImode, tmp, + gen_lowpart (SImode, shmt))); + + tmp = gen_reg_rtx (DImode); + tilegx_pre_atomic_barrier (model); + emit_insn (gen_atomic_fetch_or_baredi (tmp, aligned_mem, word)); + tilegx_post_atomic_barrier (model); + + emit_move_insn (gen_lowpart (DImode, result), + gen_rtx_LSHIFTRT (DImode, tmp, + gen_lowpart (SImode, shmt))); + DONE; +}) diff --git a/gcc-4.9/gcc/config/tilegx/t-tilegx b/gcc-4.9/gcc/config/tilegx/t-tilegx new file mode 100644 index 000000000..4e3203cd1 --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/t-tilegx @@ -0,0 +1,21 @@ +MULTILIB_OPTIONS = m64/m32 +MULTILIB_DIRNAMES = 64 32 +MULTILIB_OSDIRNAMES = ../lib ../lib32 + +LIBGCC = stmp-multilib +INSTALL_LIBGCC = install-multilib + +tilegx-c.o: $(srcdir)/config/tilegx/tilegx-c.c \ + $(CONFIG_H) $(SYSTEM_H) coretypes.h $(MACHMODE_H) \ + $(TM_H) $(TM_P_H) $(CPPLIB_H) $(TREE_H) $(C_COMMON_H) + $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< + +$(srcdir)/config/tilegx/mul-tables.c: \ + $(srcdir)/config/tilepro/gen-mul-tables.cc + $(CC_FOR_BUILD) $(BUILD_CPPFLAGS) -O2 -o gen-mul-tables -lstdc++ $<; + ./gen-mul-tables > $@ + +mul-tables.o: $(srcdir)/config/tilegx/mul-tables.c \ + $(CONFIG_H) $(SYSTEM_H) coretypes.h $(EXPR_H) $(OPTABS_H) \ + $(srcdir)/config/tilegx/tilegx-multiply.h + $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< diff --git a/gcc-4.9/gcc/config/tilegx/tilegx-builtins.h b/gcc-4.9/gcc/config/tilegx/tilegx-builtins.h new file mode 100644 index 000000000..f2b031b08 --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/tilegx-builtins.h @@ -0,0 +1,325 @@ +/* Enum for builtin intrinsics for TILE-Gx. + Copyright (C) 2011-2014 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/>. */ + +#ifndef GCC_TILEGX_BUILTINS_H +#define GCC_TILEGX_BUILTINS_H + +enum tilegx_builtin +{ + TILEGX_INSN_ADD, + TILEGX_INSN_ADDX, + TILEGX_INSN_ADDXSC, + TILEGX_INSN_AND, + TILEGX_INSN_BFEXTS, + TILEGX_INSN_BFEXTU, + TILEGX_INSN_BFINS, + TILEGX_INSN_CLZ, + TILEGX_INSN_CMOVEQZ, + TILEGX_INSN_CMOVNEZ, + TILEGX_INSN_CMPEQ, + TILEGX_INSN_CMPEXCH, + TILEGX_INSN_CMPEXCH4, + TILEGX_INSN_CMPLES, + TILEGX_INSN_CMPLEU, + TILEGX_INSN_CMPLTS, + TILEGX_INSN_CMPLTU, + TILEGX_INSN_CMPNE, + TILEGX_INSN_CMUL, + TILEGX_INSN_CMULA, + TILEGX_INSN_CMULAF, + TILEGX_INSN_CMULF, + TILEGX_INSN_CMULFR, + TILEGX_INSN_CMULH, + TILEGX_INSN_CMULHR, + TILEGX_INSN_CRC32_32, + TILEGX_INSN_CRC32_8, + TILEGX_INSN_CTZ, + TILEGX_INSN_DBLALIGN, + TILEGX_INSN_DBLALIGN2, + TILEGX_INSN_DBLALIGN4, + TILEGX_INSN_DBLALIGN6, + TILEGX_INSN_DRAIN, + TILEGX_INSN_DTLBPR, + TILEGX_INSN_EXCH, + TILEGX_INSN_EXCH4, + TILEGX_INSN_FDOUBLE_ADD_FLAGS, + TILEGX_INSN_FDOUBLE_ADDSUB, + TILEGX_INSN_FDOUBLE_MUL_FLAGS, + TILEGX_INSN_FDOUBLE_PACK1, + TILEGX_INSN_FDOUBLE_PACK2, + TILEGX_INSN_FDOUBLE_SUB_FLAGS, + TILEGX_INSN_FDOUBLE_UNPACK_MAX, + TILEGX_INSN_FDOUBLE_UNPACK_MIN, + TILEGX_INSN_FETCHADD, + TILEGX_INSN_FETCHADD4, + TILEGX_INSN_FETCHADDGEZ, + TILEGX_INSN_FETCHADDGEZ4, + TILEGX_INSN_FETCHAND, + TILEGX_INSN_FETCHAND4, + TILEGX_INSN_FETCHOR, + TILEGX_INSN_FETCHOR4, + TILEGX_INSN_FINV, + TILEGX_INSN_FLUSH, + TILEGX_INSN_FLUSHWB, + TILEGX_INSN_FNOP, + TILEGX_INSN_FSINGLE_ADD1, + TILEGX_INSN_FSINGLE_ADDSUB2, + TILEGX_INSN_FSINGLE_MUL1, + TILEGX_INSN_FSINGLE_MUL2, + TILEGX_INSN_FSINGLE_PACK1, + TILEGX_INSN_FSINGLE_PACK2, + TILEGX_INSN_FSINGLE_SUB1, + TILEGX_INSN_ICOH, + TILEGX_INSN_ILL, + TILEGX_INSN_INFO, + TILEGX_INSN_INFOL, + TILEGX_INSN_INV, + TILEGX_INSN_LD, + TILEGX_INSN_LD1S, + TILEGX_INSN_LD1U, + TILEGX_INSN_LD2S, + TILEGX_INSN_LD2U, + TILEGX_INSN_LD4S, + TILEGX_INSN_LD4U, + TILEGX_INSN_LDNA, + TILEGX_INSN_LDNT, + TILEGX_INSN_LDNT1S, + TILEGX_INSN_LDNT1U, + TILEGX_INSN_LDNT2S, + TILEGX_INSN_LDNT2U, + TILEGX_INSN_LDNT4S, + TILEGX_INSN_LDNT4U, + TILEGX_INSN_LD_L2, + TILEGX_INSN_LD1S_L2, + TILEGX_INSN_LD1U_L2, + TILEGX_INSN_LD2S_L2, + TILEGX_INSN_LD2U_L2, + TILEGX_INSN_LD4S_L2, + TILEGX_INSN_LD4U_L2, + TILEGX_INSN_LDNA_L2, + TILEGX_INSN_LDNT_L2, + TILEGX_INSN_LDNT1S_L2, + TILEGX_INSN_LDNT1U_L2, + TILEGX_INSN_LDNT2S_L2, + TILEGX_INSN_LDNT2U_L2, + TILEGX_INSN_LDNT4S_L2, + TILEGX_INSN_LDNT4U_L2, + TILEGX_INSN_LD_MISS, + TILEGX_INSN_LD1S_MISS, + TILEGX_INSN_LD1U_MISS, + TILEGX_INSN_LD2S_MISS, + TILEGX_INSN_LD2U_MISS, + TILEGX_INSN_LD4S_MISS, + TILEGX_INSN_LD4U_MISS, + TILEGX_INSN_LDNA_MISS, + TILEGX_INSN_LDNT_MISS, + TILEGX_INSN_LDNT1S_MISS, + TILEGX_INSN_LDNT1U_MISS, + TILEGX_INSN_LDNT2S_MISS, + TILEGX_INSN_LDNT2U_MISS, + TILEGX_INSN_LDNT4S_MISS, + TILEGX_INSN_LDNT4U_MISS, + TILEGX_INSN_LNK, + TILEGX_INSN_MF, + TILEGX_INSN_MFSPR, + TILEGX_INSN_MM, + TILEGX_INSN_MNZ, + TILEGX_INSN_MOVE, + TILEGX_INSN_MTSPR, + TILEGX_INSN_MUL_HS_HS, + TILEGX_INSN_MUL_HS_HU, + TILEGX_INSN_MUL_HS_LS, + TILEGX_INSN_MUL_HS_LU, + TILEGX_INSN_MUL_HU_HU, + TILEGX_INSN_MUL_HU_LS, + TILEGX_INSN_MUL_HU_LU, + TILEGX_INSN_MUL_LS_LS, + TILEGX_INSN_MUL_LS_LU, + TILEGX_INSN_MUL_LU_LU, + TILEGX_INSN_MULA_HS_HS, + TILEGX_INSN_MULA_HS_HU, + TILEGX_INSN_MULA_HS_LS, + TILEGX_INSN_MULA_HS_LU, + TILEGX_INSN_MULA_HU_HU, + TILEGX_INSN_MULA_HU_LS, + TILEGX_INSN_MULA_HU_LU, + TILEGX_INSN_MULA_LS_LS, + TILEGX_INSN_MULA_LS_LU, + TILEGX_INSN_MULA_LU_LU, + TILEGX_INSN_MULAX, + TILEGX_INSN_MULX, + TILEGX_INSN_MZ, + TILEGX_INSN_NAP, + TILEGX_INSN_NOP, + TILEGX_INSN_NOR, + TILEGX_INSN_OR, + TILEGX_INSN_PCNT, + TILEGX_INSN_PREFETCH_L1, + TILEGX_INSN_PREFETCH_L1_FAULT, + TILEGX_INSN_PREFETCH_L2, + TILEGX_INSN_PREFETCH_L2_FAULT, + TILEGX_INSN_PREFETCH_L3, + TILEGX_INSN_PREFETCH_L3_FAULT, + TILEGX_INSN_REVBITS, + TILEGX_INSN_REVBYTES, + TILEGX_INSN_ROTL, + TILEGX_INSN_SHL, + TILEGX_INSN_SHL16INSLI, + TILEGX_INSN_SHL1ADD, + TILEGX_INSN_SHL1ADDX, + TILEGX_INSN_SHL2ADD, + TILEGX_INSN_SHL2ADDX, + TILEGX_INSN_SHL3ADD, + TILEGX_INSN_SHL3ADDX, + TILEGX_INSN_SHLX, + TILEGX_INSN_SHRS, + TILEGX_INSN_SHRU, + TILEGX_INSN_SHRUX, + TILEGX_INSN_SHUFFLEBYTES, + TILEGX_INSN_SHUFFLEBYTES1, + TILEGX_INSN_ST, + TILEGX_INSN_ST1, + TILEGX_INSN_ST2, + TILEGX_INSN_ST4, + TILEGX_INSN_STNT, + TILEGX_INSN_STNT1, + TILEGX_INSN_STNT2, + TILEGX_INSN_STNT4, + TILEGX_INSN_SUB, + TILEGX_INSN_SUBX, + TILEGX_INSN_SUBXSC, + TILEGX_INSN_TBLIDXB0, + TILEGX_INSN_TBLIDXB1, + TILEGX_INSN_TBLIDXB2, + TILEGX_INSN_TBLIDXB3, + TILEGX_INSN_V1ADD, + TILEGX_INSN_V1ADDI, + TILEGX_INSN_V1ADDUC, + TILEGX_INSN_V1ADIFFU, + TILEGX_INSN_V1AVGU, + TILEGX_INSN_V1CMPEQ, + TILEGX_INSN_V1CMPEQI, + TILEGX_INSN_V1CMPLES, + TILEGX_INSN_V1CMPLEU, + TILEGX_INSN_V1CMPLTS, + TILEGX_INSN_V1CMPLTSI, + TILEGX_INSN_V1CMPLTU, + TILEGX_INSN_V1CMPLTUI, + TILEGX_INSN_V1CMPNE, + TILEGX_INSN_V1DDOTPU, + TILEGX_INSN_V1DDOTPUA, + TILEGX_INSN_V1DDOTPUS, + TILEGX_INSN_V1DDOTPUSA, + TILEGX_INSN_V1DOTP, + TILEGX_INSN_V1DOTPA, + TILEGX_INSN_V1DOTPU, + TILEGX_INSN_V1DOTPUA, + TILEGX_INSN_V1DOTPUS, + TILEGX_INSN_V1DOTPUSA, + TILEGX_INSN_V1INT_H, + TILEGX_INSN_V1INT_L, + TILEGX_INSN_V1MAXU, + TILEGX_INSN_V1MAXUI, + TILEGX_INSN_V1MINU, + TILEGX_INSN_V1MINUI, + TILEGX_INSN_V1MNZ, + TILEGX_INSN_V1MULTU, + TILEGX_INSN_V1MULU, + TILEGX_INSN_V1MULUS, + TILEGX_INSN_V1MZ, + TILEGX_INSN_V1SADAU, + TILEGX_INSN_V1SADU, + TILEGX_INSN_V1SHL, + TILEGX_INSN_V1SHLI, + TILEGX_INSN_V1SHRS, + TILEGX_INSN_V1SHRSI, + TILEGX_INSN_V1SHRU, + TILEGX_INSN_V1SHRUI, + TILEGX_INSN_V1SUB, + TILEGX_INSN_V1SUBUC, + TILEGX_INSN_V2ADD, + TILEGX_INSN_V2ADDI, + TILEGX_INSN_V2ADDSC, + TILEGX_INSN_V2ADIFFS, + TILEGX_INSN_V2AVGS, + TILEGX_INSN_V2CMPEQ, + TILEGX_INSN_V2CMPEQI, + TILEGX_INSN_V2CMPLES, + TILEGX_INSN_V2CMPLEU, + TILEGX_INSN_V2CMPLTS, + TILEGX_INSN_V2CMPLTSI, + TILEGX_INSN_V2CMPLTU, + TILEGX_INSN_V2CMPLTUI, + TILEGX_INSN_V2CMPNE, + TILEGX_INSN_V2DOTP, + TILEGX_INSN_V2DOTPA, + TILEGX_INSN_V2INT_H, + TILEGX_INSN_V2INT_L, + TILEGX_INSN_V2MAXS, + TILEGX_INSN_V2MAXSI, + TILEGX_INSN_V2MINS, + TILEGX_INSN_V2MINSI, + TILEGX_INSN_V2MNZ, + TILEGX_INSN_V2MULFSC, + TILEGX_INSN_V2MULS, + TILEGX_INSN_V2MULTS, + TILEGX_INSN_V2MZ, + TILEGX_INSN_V2PACKH, + TILEGX_INSN_V2PACKL, + TILEGX_INSN_V2PACKUC, + TILEGX_INSN_V2SADAS, + TILEGX_INSN_V2SADAU, + TILEGX_INSN_V2SADS, + TILEGX_INSN_V2SADU, + TILEGX_INSN_V2SHL, + TILEGX_INSN_V2SHLI, + TILEGX_INSN_V2SHLSC, + TILEGX_INSN_V2SHRS, + TILEGX_INSN_V2SHRSI, + TILEGX_INSN_V2SHRU, + TILEGX_INSN_V2SHRUI, + TILEGX_INSN_V2SUB, + TILEGX_INSN_V2SUBSC, + TILEGX_INSN_V4ADD, + TILEGX_INSN_V4ADDSC, + TILEGX_INSN_V4INT_H, + TILEGX_INSN_V4INT_L, + TILEGX_INSN_V4PACKSC, + TILEGX_INSN_V4SHL, + TILEGX_INSN_V4SHLSC, + TILEGX_INSN_V4SHRS, + TILEGX_INSN_V4SHRU, + TILEGX_INSN_V4SUB, + TILEGX_INSN_V4SUBSC, + TILEGX_INSN_WH64, + TILEGX_INSN_XOR, + TILEGX_NETWORK_BARRIER, + TILEGX_IDN0_RECEIVE, + TILEGX_IDN1_RECEIVE, + TILEGX_IDN_SEND, + TILEGX_UDN0_RECEIVE, + TILEGX_UDN1_RECEIVE, + TILEGX_UDN2_RECEIVE, + TILEGX_UDN3_RECEIVE, + TILEGX_UDN_SEND, + TILEGX_BUILTIN_max +}; + +#endif /* !GCC_TILEGX_BUILTINS_H */ diff --git a/gcc-4.9/gcc/config/tilegx/tilegx-c.c b/gcc-4.9/gcc/config/tilegx/tilegx-c.c new file mode 100644 index 000000000..e71965cfa --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/tilegx-c.c @@ -0,0 +1,57 @@ +/* Definitions of C specific functions for TILE-Gx. + Copyright (C) 2011-2014 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 "machmode.h" +#include "tm.h" +#include "tm_p.h" +#include "cpplib.h" +#include "tree.h" +#include "c-family/c-common.h" + +/* copy defines in c-cppbuiltin.c */ +# define builtin_define(TXT) cpp_define (pfile, TXT) +# define builtin_assert(TXT) cpp_assert (pfile, TXT) + + +/* Implement TARGET_CPU_CPP_BUILTINS. */ +void +tilegx_cpu_cpp_builtins (struct cpp_reader *pfile) +{ + builtin_define ("__tile__"); + builtin_define ("__tilegx__"); + builtin_define ("__tile_chip__=10"); + builtin_define ("__tile_chip_rev__=0"); + builtin_assert ("cpu=tilegx"); + builtin_assert ("machine=tilegx"); + + if (TARGET_32BIT) + builtin_define ("__tilegx32__"); + + builtin_define ("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1"); + builtin_define ("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2"); + + TILEGX_CPU_CPP_ENDIAN_BUILTINS (); + GNU_USER_TARGET_OS_CPP_BUILTINS (); +} + + diff --git a/gcc-4.9/gcc/config/tilegx/tilegx-generic.md b/gcc-4.9/gcc/config/tilegx/tilegx-generic.md new file mode 100644 index 000000000..fbd16f93f --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/tilegx-generic.md @@ -0,0 +1,115 @@ +;; Scheduling description for Tilera TILE-Gx chip. +;; Copyright (C) 2011-2014 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_automaton "tile") + +; Make the scheduling automaton an ndfa. +(automata_option "ndfa") + +; Name the three pipes. +(define_cpu_unit "X0" "tile") +(define_cpu_unit "X1" "tile") +(define_cpu_unit "Y0" "tile") +(define_cpu_unit "Y1" "tile") +(define_cpu_unit "Y2" "tile") + +(define_insn_reservation "X0" 1 + (eq_attr "type" "X0") + "X0") + +(define_insn_reservation "X0_2cycle" 2 + (eq_attr "type" "X0_2cycle") + "X0,nothing") + +(define_insn_reservation "X1" 1 + (eq_attr "type" "X1,X1_branch") + "X1") + +(define_insn_reservation "X1_2cycle" 2 + (eq_attr "type" "X1_2cycle") + "X1,nothing") + +(define_insn_reservation "X1_L2" 11 + (eq_attr "type" "X1_L2") + "X1") + +(define_insn_reservation "X1_remote" 50 + (eq_attr "type" "X1_remote") + "X1") + +(define_insn_reservation "X1_miss" 80 + (eq_attr "type" "X1_miss") + "X1") + +(define_insn_reservation "X01" 1 + (eq_attr "type" "X01") + "X0|X1") + +(define_insn_reservation "Y0" 1 + (eq_attr "type" "Y0") + "Y0|X0") + +(define_insn_reservation "Y0_2cycle" 2 + (eq_attr "type" "Y0_2cycle") + "Y0|X0,nothing") + +(define_insn_reservation "Y1" 1 + (eq_attr "type" "Y1") + "Y1|X1") + +(define_insn_reservation "Y2" 1 + (eq_attr "type" "Y2") + "Y2|X1") + +(define_insn_reservation "Y2_2cycle" 2 + (eq_attr "type" "Y2_2cycle") + "Y2|X1,nothing") + +(define_insn_reservation "Y2_L2" 11 + (eq_attr "type" "Y2_L2") + "Y2|X1") + +(define_insn_reservation "Y2_miss" 80 + (eq_attr "type" "Y2_miss") + "Y2|X1") + +(define_insn_reservation "Y01" 1 + (eq_attr "type" "Y01") + "Y0|Y1|X0|X1") + +(define_insn_reservation "nothing" 0 + (eq_attr "type" "nothing") + "nothing") + +(define_insn_reservation "cannot_bundle" 1 + (eq_attr "type" "cannot_bundle") + "X0+X1") + +(define_insn_reservation "cannot_bundle_3cycle" 3 + (eq_attr "type" "cannot_bundle_3cycle") + "X0+X1") + +(define_insn_reservation "cannot_bundle_4cycle" 4 + (eq_attr "type" "cannot_bundle_4cycle") + "X0+X1") + + +; A bundle must be in either X format or Y format. +(exclusion_set "X0,X1" "Y0,Y1,Y2") diff --git a/gcc-4.9/gcc/config/tilegx/tilegx-modes.def b/gcc-4.9/gcc/config/tilegx/tilegx-modes.def new file mode 100644 index 000000000..deaad2adb --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/tilegx-modes.def @@ -0,0 +1,37 @@ +/* TILE-Gx extra machine modes. + Copyright (C) 2011-2014 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/>. */ + +/* Extra modes for handling struct returns in up to 10 registers. */ +INT_MODE (R3I, 24); +INT_MODE (R5I, 40); +INT_MODE (R6I, 48); +INT_MODE (R7I, 56); +INT_MODE (R8I, 64); +INT_MODE (R9I, 72); +INT_MODE (R10I, 80); + +/* Vector modes. */ +VECTOR_MODES (INT, 8); /* V8QI V4HI V2SI */ +VECTOR_MODE (INT, QI, 16); /* V16QI */ +VECTOR_MODE (INT, HI, 8); /* V8HI */ +VECTOR_MODE (INT, SI, 4); /* V4SI */ +VECTOR_MODE (INT, HI, 2); /* V2HI */ + +VECTOR_MODE (INT, QI, 4); /* V4QI */ diff --git a/gcc-4.9/gcc/config/tilegx/tilegx-multiply.h b/gcc-4.9/gcc/config/tilegx/tilegx-multiply.h new file mode 100644 index 000000000..b59d6b36e --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/tilegx-multiply.h @@ -0,0 +1,78 @@ +/* Header for constant multiple table for TILE-Gx. + Copyright (C) 2011-2014 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/>. */ + +#ifndef GCC_TILEGX_MULTIPLY_H +#define GCC_TILEGX_MULTIPLY_H + +/* A node of a tilegx_multiply_insn_seq, corresponding to a single + machine instruction such as 'add', 's1a', or an shl by a constant. */ +struct tilegx_multiply_insn_seq_entry +{ + /* Which operation this node performs (e.g. an add or sub). + Don't use this directly, call get_opcode() table to get a insn_code. */ + unsigned char compressed_opcode; + + /* The left-hand side of this expression tree. + If equal to 0, it refers to 'zero'. + If equal to 1, it refers to the original input to the multiply operation. + Otherwise, subtract two and it is an index into the containing + tilegx_multiply_insn_seq's 'op' array. Since it can only point to some + value that has already been computed it will always point to an + earlier entry in the array. */ + unsigned char lhs; + + /* This is like lhs, but for the right-hand side. However, for shift + opcodes this is a shift count rather than an operand index. */ + unsigned char rhs; +}; + +/* Maximum size of op array. */ +#define tilegx_multiply_insn_seq_MAX_OPERATIONS 4 + +/* This defines a DAG describing how to multiply by a constant in + terms of one or more machine instructions. */ +struct tilegx_multiply_insn_seq +{ + /* The constant factor by which this expression tree multiplies its input. */ + long long multiplier; + + /* The nodes of the parse tree. These are ordered so that instructions + can be emitted in the same order that they appear in this array. + Entry entry in this array can only refer to earlier entries in + the array. */ + struct tilegx_multiply_insn_seq_entry + op[tilegx_multiply_insn_seq_MAX_OPERATIONS]; + +}; + +/* A mapping from the compressed opcode to the corresponding enum + insn_code. */ +extern const enum insn_code tilegx_multiply_insn_seq_decode_opcode[]; + +/* Table mapping constant int multipliers to an expression + tree that efficiently performs that multiplication. + This is sorted by its 'multiplier' field so a binary search + can look for matches. */ +extern const struct tilegx_multiply_insn_seq tilegx_multiply_insn_seq_table[]; + +/* The number of elements in multiply_insn_seq_table. */ +extern const int tilegx_multiply_insn_seq_table_size; + +#endif /* !GCC_TILEGX_MULTIPLY_H */ diff --git a/gcc-4.9/gcc/config/tilegx/tilegx-opts.h b/gcc-4.9/gcc/config/tilegx/tilegx-opts.h new file mode 100644 index 000000000..3ff010477 --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/tilegx-opts.h @@ -0,0 +1,33 @@ +/* Definitions for option handling for TILE-Gx. + Copyright (C) 2012-2014 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/>. */ + +#ifndef TILEGX_OPTS_H +#define TILEGX_OPTS_H + +enum cmodel { + CM_SMALL, /* Makes various assumpation about sizes of code and + data fits. */ + CM_LARGE, /* No assumptions. */ + CM_SMALL_PIC, /* Makes various assumpation about sizes of code and + data fits. */ + CM_LARGE_PIC /* No assumptions. */ +}; + +#endif diff --git a/gcc-4.9/gcc/config/tilegx/tilegx-protos.h b/gcc-4.9/gcc/config/tilegx/tilegx-protos.h new file mode 100644 index 000000000..0a9b461fa --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/tilegx-protos.h @@ -0,0 +1,75 @@ +/* Prototypes of target machine for TILE-Gx. + Copyright (C) 2011-2014 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/>. */ + +#ifndef GCC_TILEGX_PROTOS_H +#define GCC_TILEGX_PROTOS_H + +extern void tilegx_init_expanders (void); +extern void tilegx_compute_pcrel_address (rtx, rtx); +extern void tilegx_compute_pcrel_plt_address (rtx, rtx); +extern bool tilegx_legitimate_pic_operand_p (rtx); +extern rtx tilegx_simd_int (rtx, enum machine_mode); + +#ifdef RTX_CODE +extern bool tilegx_bitfield_operand_p (HOST_WIDE_INT, int *, int *); +extern void tilegx_expand_set_const64 (rtx, rtx); +extern bool tilegx_expand_mov (enum machine_mode, rtx *); +extern void tilegx_expand_unaligned_load (rtx, rtx, HOST_WIDE_INT, + HOST_WIDE_INT, bool); +extern void tilegx_expand_movmisalign (enum machine_mode, rtx *); +extern void tilegx_allocate_stack (rtx, rtx); +extern bool tilegx_expand_muldi (rtx, rtx, rtx); +extern void tilegx_expand_smuldi3_highpart (rtx, rtx, rtx); +extern void tilegx_expand_umuldi3_highpart (rtx, rtx, rtx); + +extern bool tilegx_emit_setcc (rtx[], enum machine_mode); +extern void tilegx_emit_conditional_branch (rtx[], enum machine_mode); +extern rtx tilegx_emit_conditional_move (rtx); +extern const char *tilegx_output_cbranch_with_opcode (rtx, rtx *, + const char *, + const char *, int); +extern const char *tilegx_output_cbranch (rtx, rtx *, bool); +extern void tilegx_expand_tablejump (rtx, rtx); +extern void tilegx_expand_builtin_vector_binop (rtx (*)(rtx, rtx, rtx), + enum machine_mode, rtx, + enum machine_mode, rtx, rtx, + bool); +extern void tilegx_pre_atomic_barrier (enum memmodel); +extern void tilegx_post_atomic_barrier (enum memmodel); +#endif /* RTX_CODE */ + +extern bool tilegx_can_use_return_insn_p (void); +extern void tilegx_expand_prologue (void); +extern void tilegx_expand_epilogue (bool); +extern int tilegx_initial_elimination_offset (int, int); +extern rtx tilegx_return_addr (int, rtx); +extern rtx tilegx_eh_return_handler_rtx (void); +extern int tilegx_adjust_insn_length (rtx, int); + +extern int tilegx_asm_preferred_eh_data_format (int, int); +extern void tilegx_final_prescan_insn (rtx); +extern const char *tilegx_asm_output_opcode (FILE *, const char *); +extern void tilegx_function_profiler (FILE *, int); + +/* Declare functions in tilegx-c.c */ + +extern void tilegx_cpu_cpp_builtins (struct cpp_reader *); + +#endif /* GCC_TILEGX_PROTOS_H */ diff --git a/gcc-4.9/gcc/config/tilegx/tilegx.c b/gcc-4.9/gcc/config/tilegx/tilegx.c new file mode 100644 index 000000000..c3b712615 --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/tilegx.c @@ -0,0 +1,5707 @@ +/* Subroutines used for code generation on the Tilera TILE-Gx. + Copyright (C) 2011-2014 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 "tm.h" +#include "rtl.h" +#include "regs.h" +#include "insn-config.h" +#include "output.h" +#include "insn-attr.h" +#include "recog.h" +#include "expr.h" +#include "langhooks.h" +#include "optabs.h" +#include "sched-int.h" +#include "tm_p.h" +#include "tm-constrs.h" +#include "target.h" +#include "target-def.h" +#include "function.h" +#include "dwarf2.h" +#include "timevar.h" +#include "tree.h" +#include "pointer-set.h" +#include "hash-table.h" +#include "vec.h" +#include "ggc.h" +#include "basic-block.h" +#include "tree-ssa-alias.h" +#include "internal-fn.h" +#include "gimple-fold.h" +#include "tree-eh.h" +#include "gimple-expr.h" +#include "is-a.h" +#include "gimple.h" +#include "stringpool.h" +#include "stor-layout.h" +#include "varasm.h" +#include "calls.h" +#include "gimplify.h" +#include "cfgloop.h" +#include "tilegx-builtins.h" +#include "tilegx-multiply.h" +#include "diagnostic.h" + +/* SYMBOL_REF for GOT */ +static GTY(()) rtx g_got_symbol = NULL; + +/* In case of a POST_INC or POST_DEC memory reference, we must report + the mode of the memory reference from TARGET_PRINT_OPERAND to + TARGET_PRINT_OPERAND_ADDRESS. */ +static enum machine_mode output_memory_reference_mode; + +/* Report whether we're printing out the first address fragment of a + POST_INC or POST_DEC memory reference, from TARGET_PRINT_OPERAND to + TARGET_PRINT_OPERAND_ADDRESS. */ +static bool output_memory_autoinc_first; + + + +/* Option handling */ + +/* Implement TARGET_OPTION_OVERRIDE. */ +static void +tilegx_option_override (void) +{ + if (global_options_set.x_tilegx_cmodel) + { + switch (tilegx_cmodel) + { + case CM_SMALL: + case CM_SMALL_PIC: + if (flag_pic) + tilegx_cmodel = CM_SMALL_PIC; + break; + + case CM_LARGE: + case CM_LARGE_PIC: + if (flag_pic) + tilegx_cmodel = CM_LARGE_PIC; + break; + + default: + gcc_unreachable (); + } + } + else + tilegx_cmodel = flag_pic ? CM_SMALL_PIC : CM_SMALL; + + /* When modulo scheduling is enabled, we still rely on regular + scheduler for bundling. */ + if (flag_modulo_sched) + flag_resched_modulo_sched = 1; +} + + + +/* Implement TARGET_SCALAR_MODE_SUPPORTED_P. */ +static bool +tilegx_scalar_mode_supported_p (enum machine_mode mode) +{ + switch (mode) + { + case QImode: + case HImode: + case SImode: + case DImode: + case TImode: + return true; + + case SFmode: + case DFmode: + return true; + + default: + return false; + } +} + + +/* Implement TARGET_VECTOR_MODE_SUPPORTED_P. */ +static bool +tilegx_vector_mode_supported_p (enum machine_mode mode) +{ + return mode == V8QImode || mode == V4HImode || mode == V2SImode; +} + + +/* Implement TARGET_CANNOT_FORCE_CONST_MEM. */ +static bool +tilegx_cannot_force_const_mem (enum machine_mode mode ATTRIBUTE_UNUSED, + rtx x ATTRIBUTE_UNUSED) +{ + return true; +} + + +/* Implement TARGET_FUNCTION_OK_FOR_SIBCALL. */ +static bool +tilegx_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED) +{ + return (tilegx_cmodel != CM_LARGE && tilegx_cmodel != CM_LARGE_PIC + && (decl != NULL)); +} + + +/* Implement TARGET_PASS_BY_REFERENCE. Variable sized types are + passed by reference. */ +static bool +tilegx_pass_by_reference (cumulative_args_t cum ATTRIBUTE_UNUSED, + enum machine_mode mode ATTRIBUTE_UNUSED, + const_tree type, bool named ATTRIBUTE_UNUSED) +{ + return (type && TYPE_SIZE (type) + && TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST); +} + + +/* Implement TARGET_RETURN_IN_MSB. We return a value in the most + significant part of a register if: + - the target is big-endian; and + - the value has an aggregate type (e.g., structure or union). */ +static bool +tilegx_return_in_msb (const_tree valtype) +{ + return (TARGET_BIG_ENDIAN && AGGREGATE_TYPE_P (valtype)); +} + + +/* Implement TARGET_RETURN_IN_MEMORY. */ +static bool +tilegx_return_in_memory (const_tree type, const_tree fndecl ATTRIBUTE_UNUSED) +{ + return !IN_RANGE (int_size_in_bytes (type), + 0, TILEGX_NUM_RETURN_REGS * UNITS_PER_WORD); +} + + +/* Implement TARGET_MODE_REP_EXTENDED. */ +static int +tilegx_mode_rep_extended (enum machine_mode mode, enum machine_mode mode_rep) +{ + /* SImode register values are sign-extended to DImode. */ + if (mode == SImode && mode_rep == DImode) + return SIGN_EXTEND; + + return UNKNOWN; +} + + +/* Implement TARGET_FUNCTION_ARG_BOUNDARY. */ +static unsigned int +tilegx_function_arg_boundary (enum machine_mode mode, const_tree type) +{ + unsigned int alignment; + + alignment = type ? TYPE_ALIGN (type) : GET_MODE_ALIGNMENT (mode); + if (alignment < PARM_BOUNDARY) + alignment = PARM_BOUNDARY; + if (alignment > STACK_BOUNDARY) + alignment = STACK_BOUNDARY; + return alignment; +} + + +/* Implement TARGET_FUNCTION_ARG. */ +static rtx +tilegx_function_arg (cumulative_args_t cum_v, + enum machine_mode mode, + const_tree type, bool named ATTRIBUTE_UNUSED) +{ + CUMULATIVE_ARGS cum = *get_cumulative_args (cum_v); + int byte_size = ((mode == BLKmode) + ? int_size_in_bytes (type) : GET_MODE_SIZE (mode)); + bool doubleword_aligned_p; + + if (cum >= TILEGX_NUM_ARG_REGS) + return NULL_RTX; + + /* See whether the argument has doubleword alignment. */ + doubleword_aligned_p = + tilegx_function_arg_boundary (mode, type) > BITS_PER_WORD; + + if (doubleword_aligned_p) + cum += cum & 1; + + /* The ABI does not allow parameters to be passed partially in reg + and partially in stack. */ + if ((cum + (byte_size + UNITS_PER_WORD - 1) / UNITS_PER_WORD) + > TILEGX_NUM_ARG_REGS) + return NULL_RTX; + + return gen_rtx_REG (mode, cum); +} + + +/* Implement TARGET_FUNCTION_ARG_ADVANCE. */ +static void +tilegx_function_arg_advance (cumulative_args_t cum_v, + enum machine_mode mode, + const_tree type, bool named ATTRIBUTE_UNUSED) +{ + CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v); + + int byte_size = ((mode == BLKmode) + ? int_size_in_bytes (type) : GET_MODE_SIZE (mode)); + int word_size = (byte_size + UNITS_PER_WORD - 1) / UNITS_PER_WORD; + bool doubleword_aligned_p; + + /* See whether the argument has doubleword alignment. */ + doubleword_aligned_p = + tilegx_function_arg_boundary (mode, type) > BITS_PER_WORD; + + if (doubleword_aligned_p) + *cum += *cum & 1; + + /* If the current argument does not fit in the pretend_args space, + skip over it. */ + if (*cum < TILEGX_NUM_ARG_REGS + && *cum + word_size > TILEGX_NUM_ARG_REGS) + *cum = TILEGX_NUM_ARG_REGS; + + *cum += word_size; +} + + +/* Implement TARGET_FUNCTION_VALUE. */ +static rtx +tilegx_function_value (const_tree valtype, const_tree fn_decl_or_type, + bool outgoing ATTRIBUTE_UNUSED) +{ + enum machine_mode mode; + int unsigned_p; + + mode = TYPE_MODE (valtype); + unsigned_p = TYPE_UNSIGNED (valtype); + + mode = promote_function_mode (valtype, mode, &unsigned_p, + fn_decl_or_type, 1); + + return gen_rtx_REG (mode, 0); +} + + +/* Implement TARGET_LIBCALL_VALUE. */ +static rtx +tilegx_libcall_value (enum machine_mode mode, + const_rtx fun ATTRIBUTE_UNUSED) +{ + return gen_rtx_REG (mode, 0); +} + + +/* Implement FUNCTION_VALUE_REGNO_P. */ +static bool +tilegx_function_value_regno_p (const unsigned int regno) +{ + return regno < TILEGX_NUM_RETURN_REGS; +} + + +/* Implement TARGET_BUILD_BUILTIN_VA_LIST. */ +static tree +tilegx_build_builtin_va_list (void) +{ + tree f_args, f_skip, record, type_decl; + bool owp; + + record = lang_hooks.types.make_type (RECORD_TYPE); + + type_decl = build_decl (BUILTINS_LOCATION, TYPE_DECL, + get_identifier ("__va_list_tag"), record); + + f_args = build_decl (BUILTINS_LOCATION, FIELD_DECL, + get_identifier ("__args"), ptr_type_node); + f_skip = build_decl (BUILTINS_LOCATION, FIELD_DECL, + get_identifier ("__skip"), ptr_type_node); + + DECL_FIELD_CONTEXT (f_args) = record; + + DECL_FIELD_CONTEXT (f_skip) = record; + + TREE_CHAIN (record) = type_decl; + TYPE_NAME (record) = type_decl; + TYPE_FIELDS (record) = f_args; + TREE_CHAIN (f_args) = f_skip; + + /* We know this is being padded and we want it too. It is an + internal type so hide the warnings from the user. */ + owp = warn_padded; + warn_padded = false; + + layout_type (record); + + warn_padded = owp; + + /* The correct type is an array type of one element. */ + return record; +} + + +/* Implement TARGET_EXPAND_BUILTIN_VA_START. */ +static void +tilegx_va_start (tree valist, rtx nextarg ATTRIBUTE_UNUSED) +{ + tree f_args, f_skip; + tree args, skip, t; + + f_args = TYPE_FIELDS (TREE_TYPE (valist)); + f_skip = TREE_CHAIN (f_args); + + args = + build3 (COMPONENT_REF, TREE_TYPE (f_args), valist, f_args, NULL_TREE); + skip = + build3 (COMPONENT_REF, TREE_TYPE (f_skip), valist, f_skip, NULL_TREE); + + /* Find the __args area. */ + t = make_tree (TREE_TYPE (args), virtual_incoming_args_rtx); + t = fold_build_pointer_plus_hwi (t, + UNITS_PER_WORD * + (crtl->args.info - TILEGX_NUM_ARG_REGS)); + + if (crtl->args.pretend_args_size > 0) + t = fold_build_pointer_plus_hwi (t, -STACK_POINTER_OFFSET); + + t = build2 (MODIFY_EXPR, TREE_TYPE (args), args, t); + TREE_SIDE_EFFECTS (t) = 1; + expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); + + /* Find the __skip area. */ + t = make_tree (TREE_TYPE (skip), virtual_incoming_args_rtx); + t = fold_build_pointer_plus_hwi (t, -STACK_POINTER_OFFSET); + t = build2 (MODIFY_EXPR, TREE_TYPE (skip), skip, t); + TREE_SIDE_EFFECTS (t) = 1; + expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); +} + + +/* Implement TARGET_SETUP_INCOMING_VARARGS. */ +static void +tilegx_setup_incoming_varargs (cumulative_args_t cum, + enum machine_mode mode, + tree type, int *pretend_args, int no_rtl) +{ + CUMULATIVE_ARGS local_cum = *get_cumulative_args (cum); + int first_reg; + + /* The caller has advanced CUM up to, but not beyond, the last named + argument. Advance a local copy of CUM past the last "real" named + argument, to find out how many registers are left over. */ + targetm.calls.function_arg_advance (pack_cumulative_args (&local_cum), + mode, type, true); + first_reg = local_cum; + + if (local_cum < TILEGX_NUM_ARG_REGS) + { + *pretend_args = UNITS_PER_WORD * (TILEGX_NUM_ARG_REGS - first_reg); + + if (!no_rtl) + { + alias_set_type set = get_varargs_alias_set (); + rtx tmp = + gen_rtx_MEM (BLKmode, plus_constant (Pmode, + virtual_incoming_args_rtx, + -STACK_POINTER_OFFSET - + UNITS_PER_WORD * + (TILEGX_NUM_ARG_REGS - + first_reg))); + MEM_NOTRAP_P (tmp) = 1; + set_mem_alias_set (tmp, set); + move_block_from_reg (first_reg, tmp, + TILEGX_NUM_ARG_REGS - first_reg); + } + } + else + *pretend_args = 0; +} + + +/* Implement TARGET_GIMPLIFY_VA_ARG_EXPR. Gimplify va_arg by updating + the va_list structure VALIST as required to retrieve an argument of + type TYPE, and returning that argument. + + ret = va_arg(VALIST, TYPE); + + generates code equivalent to: + + paddedsize = (sizeof(TYPE) + 7) & -8; + if ( (VALIST.__args + paddedsize > VALIST.__skip) + & (VALIST.__args <= VALIST.__skip)) + addr = VALIST.__skip + STACK_POINTER_OFFSET; + else + addr = VALIST.__args; + VALIST.__args = addr + paddedsize; + if (BYTES_BIG_ENDIAN) + ret = *(TYPE *)(addr + paddedsize - sizeof(TYPE)); + else + ret = *(TYPE *)addr; + */ +static tree +tilegx_gimplify_va_arg_expr (tree valist, tree type, gimple_seq *pre_p, + gimple_seq *post_p ATTRIBUTE_UNUSED) +{ + tree f_args, f_skip; + tree args, skip; + HOST_WIDE_INT size, rsize; + tree addr, tmp; + bool pass_by_reference_p; + + f_args = TYPE_FIELDS (va_list_type_node); + f_skip = TREE_CHAIN (f_args); + + args = + build3 (COMPONENT_REF, TREE_TYPE (f_args), valist, f_args, NULL_TREE); + skip = + build3 (COMPONENT_REF, TREE_TYPE (f_skip), valist, f_skip, NULL_TREE); + + addr = create_tmp_var (ptr_type_node, "va_arg"); + + /* If an object is dynamically sized, a pointer to it is passed + instead of the object itself. */ + pass_by_reference_p = pass_by_reference (NULL, TYPE_MODE (type), type, + false); + + if (pass_by_reference_p) + type = build_pointer_type (type); + + size = int_size_in_bytes (type); + rsize = ((size + UNITS_PER_WORD - 1) / UNITS_PER_WORD) * UNITS_PER_WORD; + + /* If the alignment of the type is greater than the default for a + parameter, align to the STACK_BOUNDARY. */ + if (TYPE_ALIGN (type) > PARM_BOUNDARY) + { + /* Assert the only case we generate code for: when + stack boundary = 2 * parm boundary. */ + gcc_assert (STACK_BOUNDARY == PARM_BOUNDARY * 2); + + tmp = build2 (BIT_AND_EXPR, sizetype, + fold_convert (sizetype, unshare_expr (args)), + size_int (PARM_BOUNDARY / 8)); + tmp = build2 (POINTER_PLUS_EXPR, ptr_type_node, + unshare_expr (args), tmp); + + gimplify_assign (unshare_expr (args), tmp, pre_p); + } + + /* Build conditional expression to calculate addr. The expression + will be gimplified later. */ + tmp = fold_build_pointer_plus_hwi (unshare_expr (args), rsize); + tmp = build2 (TRUTH_AND_EXPR, boolean_type_node, + build2 (GT_EXPR, boolean_type_node, tmp, unshare_expr (skip)), + build2 (LE_EXPR, boolean_type_node, unshare_expr (args), + unshare_expr (skip))); + + tmp = build3 (COND_EXPR, ptr_type_node, tmp, + build2 (POINTER_PLUS_EXPR, ptr_type_node, unshare_expr (skip), + size_int (STACK_POINTER_OFFSET)), + unshare_expr (args)); + + /* Adjust the address of va_arg if it is in big endian mode. */ + if (BYTES_BIG_ENDIAN && rsize > size) + tmp = fold_build_pointer_plus_hwi (tmp, rsize - size); + gimplify_assign (addr, tmp, pre_p); + + /* Update VALIST.__args. */ + + if (BYTES_BIG_ENDIAN && rsize > size) + tmp = fold_build_pointer_plus_hwi (addr, size); + else + tmp = fold_build_pointer_plus_hwi (addr, rsize); + gimplify_assign (unshare_expr (args), tmp, pre_p); + + addr = fold_convert (build_pointer_type (type), addr); + + if (pass_by_reference_p) + addr = build_va_arg_indirect_ref (addr); + + return build_va_arg_indirect_ref (addr); +} + + + +/* Implement TARGET_RTX_COSTS. */ +static bool +tilegx_rtx_costs (rtx x, int code, int outer_code, int opno, int *total, + bool speed) +{ + switch (code) + { + case CONST_INT: + /* If this is an 8-bit constant, return zero since it can be + used nearly anywhere with no cost. If it is a valid operand + for an ADD or AND, likewise return 0 if we know it will be + used in that context. Otherwise, return 2 since it might be + used there later. All other constants take at least two + insns. */ + if (satisfies_constraint_I (x)) + { + *total = 0; + return true; + } + else if (outer_code == PLUS && add_operand (x, VOIDmode)) + { + /* Slightly penalize large constants even though we can add + them in one instruction, because it forces the use of + 2-wide bundling mode. */ + *total = 1; + return true; + } + else if (move_operand (x, SImode)) + { + /* We can materialize in one move. */ + *total = COSTS_N_INSNS (1); + return true; + } + else + { + /* We can materialize in two moves. */ + *total = COSTS_N_INSNS (2); + return true; + } + + return false; + + case CONST: + case LABEL_REF: + case SYMBOL_REF: + *total = COSTS_N_INSNS (2); + return true; + + case CONST_DOUBLE: + *total = COSTS_N_INSNS (4); + return true; + + case HIGH: + *total = 0; + return true; + + case MEM: + /* If outer-code was a sign or zero extension, a cost of + COSTS_N_INSNS (1) was already added in, so account for + that. */ + if (outer_code == ZERO_EXTEND || outer_code == SIGN_EXTEND) + *total = COSTS_N_INSNS (1); + else + *total = COSTS_N_INSNS (2); + return true; + + case PLUS: + /* Convey that shl[123]add are efficient. */ + if (GET_CODE (XEXP (x, 0)) == MULT + && cint_248_operand (XEXP (XEXP (x, 0), 1), VOIDmode)) + { + *total = (rtx_cost (XEXP (XEXP (x, 0), 0), + (enum rtx_code) outer_code, opno, speed) + + rtx_cost (XEXP (x, 1), + (enum rtx_code) outer_code, opno, speed) + + COSTS_N_INSNS (1)); + return true; + } + return false; + + case MULT: + *total = COSTS_N_INSNS (2); + return false; + + case DIV: + case UDIV: + case MOD: + case UMOD: + /* These are handled by software and are very expensive. */ + *total = COSTS_N_INSNS (100); + return false; + + case UNSPEC: + case UNSPEC_VOLATILE: + { + int num = XINT (x, 1); + + if (num <= TILEGX_LAST_LATENCY_1_INSN) + *total = COSTS_N_INSNS (1); + else if (num <= TILEGX_LAST_LATENCY_2_INSN) + *total = COSTS_N_INSNS (2); + else if (num > TILEGX_LAST_LATENCY_INSN) + { + if (num == UNSPEC_NON_TEMPORAL) + { + /* These are basically loads. */ + if (outer_code == ZERO_EXTEND || outer_code == SIGN_EXTEND) + *total = COSTS_N_INSNS (1); + else + *total = COSTS_N_INSNS (2); + } + else + { + if (outer_code == PLUS) + *total = 0; + else + *total = COSTS_N_INSNS (1); + } + } + else + { + switch (num) + { + case UNSPEC_BLOCKAGE: + case UNSPEC_NETWORK_BARRIER: + case UNSPEC_ATOMIC: + *total = 0; + break; + + case UNSPEC_LNK_AND_LABEL: + case UNSPEC_MF: + case UNSPEC_MOV_PCREL_STEP3: + case UNSPEC_NETWORK_RECEIVE: + case UNSPEC_NETWORK_SEND: + case UNSPEC_SPR_MOVE: + case UNSPEC_TLS_GD_ADD: + *total = COSTS_N_INSNS (1); + break; + + case UNSPEC_TLS_IE_LOAD: + case UNSPEC_XCHG: + *total = COSTS_N_INSNS (2); + break; + + case UNSPEC_SP_SET: + *total = COSTS_N_INSNS (3); + break; + + case UNSPEC_SP_TEST: + *total = COSTS_N_INSNS (4); + break; + + case UNSPEC_CMPXCHG: + case UNSPEC_INSN_CMPEXCH: + case UNSPEC_LATENCY_L2: + *total = COSTS_N_INSNS (11); + break; + + case UNSPEC_TLS_GD_CALL: + *total = COSTS_N_INSNS (30); + break; + + case UNSPEC_LATENCY_MISS: + *total = COSTS_N_INSNS (80); + break; + + default: + *total = COSTS_N_INSNS (1); + } + } + return true; + } + + default: + return false; + } +} + + + +/* Rtl lowering. */ + +/* Create a temporary variable to hold a partial result, to enable + CSE. */ +static rtx +create_temp_reg_if_possible (enum machine_mode mode, rtx default_reg) +{ + return can_create_pseudo_p () ? gen_reg_rtx (mode) : default_reg; +} + + +/* Functions to save and restore machine-specific function data. */ +static struct machine_function * +tilegx_init_machine_status (void) +{ + return ggc_alloc_cleared_machine_function (); +} + + +/* Do anything needed before RTL is emitted for each function. */ +void +tilegx_init_expanders (void) +{ + /* Arrange to initialize and mark the machine per-function + status. */ + init_machine_status = tilegx_init_machine_status; + + if (cfun && cfun->machine && flag_pic) + { + static int label_num = 0; + + char text_label_name[32]; + + struct machine_function *machine = cfun->machine; + + ASM_GENERATE_INTERNAL_LABEL (text_label_name, "L_PICLNK", label_num++); + + machine->text_label_symbol = + gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (text_label_name)); + + machine->text_label_rtx = + gen_rtx_REG (Pmode, TILEGX_PIC_TEXT_LABEL_REGNUM); + + machine->got_rtx = gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM); + + machine->calls_tls_get_addr = false; + } +} + + +/* Implement TARGET_EXPAND_TO_RTL_HOOK. */ +static void +tilegx_expand_to_rtl_hook (void) +{ + /* Exclude earlier sets of crtl->uses_pic_offset_table, because we + only care about uses actually emitted. */ + crtl->uses_pic_offset_table = 0; +} + + +/* Implement TARGET_SHIFT_TRUNCATION_MASK. DImode shifts use the mode + matching insns and therefore guarantee that the shift count is + modulo 64. SImode shifts sometimes use the 64 bit version so do + not hold such guarantee. */ +static unsigned HOST_WIDE_INT +tilegx_shift_truncation_mask (enum machine_mode mode) +{ + return mode == DImode ? 63 : 0; +} + + +/* Implement TARGET_INIT_LIBFUNCS. */ +static void +tilegx_init_libfuncs (void) +{ + /* We need to explicitly generate these libfunc's to support + conversion of divide by constant to multiply (the divide stubs in + tilegx.md exist also for this reason). Normally we'd expect gcc + to lazily generate them when they are needed, but for some reason + it's set up to only generate them if the mode is the word + mode. */ + set_optab_libfunc (sdiv_optab, SImode, "__divsi3"); + set_optab_libfunc (udiv_optab, SImode, "__udivsi3"); + set_optab_libfunc (smod_optab, SImode, "__modsi3"); + set_optab_libfunc (umod_optab, SImode, "__umodsi3"); +} + + +/* Return true if X contains a thread-local symbol. */ +static bool +tilegx_tls_referenced_p (rtx x) +{ + if (GET_CODE (x) == CONST && GET_CODE (XEXP (x, 0)) == PLUS) + x = XEXP (XEXP (x, 0), 0); + + if (GET_CODE (x) == SYMBOL_REF && SYMBOL_REF_TLS_MODEL (x)) + return true; + + /* That's all we handle in tilegx_legitimize_tls_address for + now. */ + return false; +} + + +/* Return true if X requires a scratch register. It is given that + flag_pic is on and that X satisfies CONSTANT_P. */ +static int +tilegx_pic_address_needs_scratch (rtx x) +{ + if (GET_CODE (x) == CONST + && GET_CODE (XEXP (x, 0)) == PLUS + && (GET_CODE (XEXP (XEXP (x, 0), 0)) == SYMBOL_REF + || GET_CODE (XEXP (XEXP (x, 0), 0)) == LABEL_REF) + && (CONST_INT_P (XEXP (XEXP (x, 0), 1)))) + return true; + + return false; +} + + +/* Implement TARGET_LEGITIMATE_CONSTANT_P. This is all constants for + which we are willing to load the value into a register via a move + pattern. TLS cannot be treated as a constant because it can + include a function call. */ +static bool +tilegx_legitimate_constant_p (enum machine_mode mode ATTRIBUTE_UNUSED, rtx x) +{ + switch (GET_CODE (x)) + { + case CONST: + case SYMBOL_REF: + return !tilegx_tls_referenced_p (x); + + default: + return true; + } +} + + +/* Return true if the constant value X is a legitimate general operand + when generating PIC code. It is given that flag_pic is on and that + X satisfies CONSTANT_P. */ +bool +tilegx_legitimate_pic_operand_p (rtx x) +{ + if (tilegx_pic_address_needs_scratch (x)) + return false; + + if (tilegx_tls_referenced_p (x)) + return false; + + return true; +} + + +/* Return true if the rtx X can be used as an address operand. */ +static bool +tilegx_legitimate_address_p (enum machine_mode ARG_UNUSED (mode), rtx x, + bool strict) +{ + if (GET_CODE (x) == SUBREG) + x = SUBREG_REG (x); + + switch (GET_CODE (x)) + { + case POST_INC: + case POST_DEC: + if (GET_MODE_SIZE (GET_MODE (x)) > UNITS_PER_WORD) + return false; + + x = XEXP (x, 0); + break; + + case POST_MODIFY: + if (GET_MODE_SIZE (GET_MODE (x)) > UNITS_PER_WORD) + return false; + + if (GET_CODE (XEXP (x, 1)) != PLUS) + return false; + + if (!rtx_equal_p (XEXP (x, 0), XEXP (XEXP (x, 1), 0))) + return false; + + if (!satisfies_constraint_I (XEXP (XEXP (x, 1), 1))) + return false; + + x = XEXP (x, 0); + break; + + case REG: + break; + + default: + return false; + } + + /* Check if x is a valid reg. */ + if (!REG_P (x)) + return false; + + if (strict) + return REGNO_OK_FOR_BASE_P (REGNO (x)); + else + return true; +} + + +/* Return the rtx containing SYMBOL_REF to the text label. */ +static rtx +tilegx_text_label_symbol (void) +{ + return cfun->machine->text_label_symbol; +} + + +/* Return the register storing the value of the text label. */ +static rtx +tilegx_text_label_rtx (void) +{ + return cfun->machine->text_label_rtx; +} + + +/* Return the register storing the value of the global offset + table. */ +static rtx +tilegx_got_rtx (void) +{ + return cfun->machine->got_rtx; +} + + +/* Return the SYMBOL_REF for _GLOBAL_OFFSET_TABLE_. */ +static rtx +tilegx_got_symbol (void) +{ + if (g_got_symbol == NULL) + g_got_symbol = gen_rtx_SYMBOL_REF (Pmode, "_GLOBAL_OFFSET_TABLE_"); + + return g_got_symbol; +} + + +/* Return a reference to the got to be used by tls references. */ +static rtx +tilegx_tls_got (void) +{ + rtx temp; + if (flag_pic) + { + crtl->uses_pic_offset_table = 1; + return tilegx_got_rtx (); + } + + temp = gen_reg_rtx (Pmode); + emit_move_insn (temp, tilegx_got_symbol ()); + + return temp; +} + + +/* ADDR contains a thread-local SYMBOL_REF. Generate code to compute + this (thread-local) address. */ +static rtx +tilegx_legitimize_tls_address (rtx addr) +{ + rtx ret; + + gcc_assert (can_create_pseudo_p ()); + + if (GET_CODE (addr) == SYMBOL_REF) + switch (SYMBOL_REF_TLS_MODEL (addr)) + { + case TLS_MODEL_GLOBAL_DYNAMIC: + case TLS_MODEL_LOCAL_DYNAMIC: + { + rtx r0, temp, temp2, temp3, got, last; + + ret = gen_reg_rtx (Pmode); + r0 = gen_rtx_REG (Pmode, 0); + temp = gen_reg_rtx (Pmode); + temp2 = gen_reg_rtx (Pmode); + temp3 = gen_reg_rtx (Pmode); + + got = tilegx_tls_got (); + if (TARGET_32BIT) + { + emit_insn (gen_mov_tls_gd_step1_32bit (temp, addr)); + emit_insn (gen_mov_tls_gd_step2_32bit (temp2, temp, addr)); + emit_insn (gen_tls_add_32bit (temp2, got, temp2, addr)); + } + else + { + emit_insn (gen_mov_tls_gd_step1 (temp, addr)); + emit_insn (gen_mov_tls_gd_step2 (temp2, temp, addr)); + emit_insn (gen_tls_add (temp2, got, temp2, addr)); + } + + emit_move_insn (r0, temp2); + + if (TARGET_32BIT) + { + emit_insn (gen_tls_gd_call_32bit (addr)); + } + else + { + emit_insn (gen_tls_gd_call (addr)); + } + + emit_move_insn (temp3, r0); + + if (TARGET_32BIT) + last = emit_insn (gen_tls_gd_add_32bit (ret, temp3, addr)); + else + last = emit_insn (gen_tls_gd_add (ret, temp3, addr)); + + set_unique_reg_note (last, REG_EQUAL, copy_rtx (addr)); + break; + } + case TLS_MODEL_INITIAL_EXEC: + { + rtx temp, temp2, temp3, got, last; + + ret = gen_reg_rtx (Pmode); + temp = gen_reg_rtx (Pmode); + temp2 = gen_reg_rtx (Pmode); + temp3 = gen_reg_rtx (Pmode); + + got = tilegx_tls_got (); + if (TARGET_32BIT) + { + emit_insn (gen_mov_tls_ie_step1_32bit (temp, addr)); + emit_insn (gen_mov_tls_ie_step2_32bit (temp2, temp, addr)); + emit_insn (gen_tls_add_32bit (temp2, got, temp2, addr)); + emit_insn (gen_tls_ie_load_32bit (temp3, temp2, addr)); + } + else + { + emit_insn (gen_mov_tls_ie_step1 (temp, addr)); + emit_insn (gen_mov_tls_ie_step2 (temp2, temp, addr)); + emit_insn (gen_tls_add (temp2, got, temp2, addr)); + emit_insn (gen_tls_ie_load (temp3, temp2, addr)); + } + + last = + emit_move_insn(ret, + gen_rtx_PLUS (Pmode, + gen_rtx_REG (Pmode, + THREAD_POINTER_REGNUM), + temp3)); + set_unique_reg_note (last, REG_EQUAL, copy_rtx (addr)); + break; + } + case TLS_MODEL_LOCAL_EXEC: + { + rtx temp, temp2, last; + + ret = gen_reg_rtx (Pmode); + temp = gen_reg_rtx (Pmode); + temp2 = gen_reg_rtx (Pmode); + + if (TARGET_32BIT) + { + emit_insn (gen_mov_tls_le_step1_32bit (temp, addr)); + emit_insn (gen_mov_tls_le_step2_32bit (temp2, temp, addr)); + } + else + { + emit_insn (gen_mov_tls_le_step1 (temp, addr)); + emit_insn (gen_mov_tls_le_step2 (temp2, temp, addr)); + } + + last = + emit_move_insn (ret, + gen_rtx_PLUS (Pmode, + gen_rtx_REG (Pmode, + THREAD_POINTER_REGNUM), + temp2)); + set_unique_reg_note (last, REG_EQUAL, copy_rtx (addr)); + break; + } + default: + gcc_unreachable (); + } + else if (GET_CODE (addr) == CONST) + { + rtx base, offset; + + gcc_assert (GET_CODE (XEXP (addr, 0)) == PLUS); + + base = tilegx_legitimize_tls_address (XEXP (XEXP (addr, 0), 0)); + offset = XEXP (XEXP (addr, 0), 1); + + base = force_operand (base, NULL_RTX); + ret = force_reg (Pmode, gen_rtx_PLUS (Pmode, base, offset)); + } + else + gcc_unreachable (); + + return ret; +} + + +/* Returns a register that points to ADDR, a symbolic address, by + computing its address relative to tilegx_text_label_symbol. */ +void +tilegx_compute_pcrel_address (rtx result, rtx addr) +{ + rtx text_label_symbol = tilegx_text_label_symbol (); + rtx text_label_rtx = tilegx_text_label_rtx (); + rtx temp, temp2, temp3; + + temp = create_temp_reg_if_possible (Pmode, result); + temp2 = create_temp_reg_if_possible (Pmode, result); + + if (TARGET_32BIT) + { + emit_insn (gen_mov_pcrel_step1_32bit (temp, addr, text_label_symbol)); + emit_insn (gen_mov_pcrel_step2_32bit (temp2, temp, addr, + text_label_symbol)); + emit_insn (gen_mov_pcrel_step3_32bit (result, temp2, + text_label_rtx, + addr, text_label_symbol)); + } + else if (tilegx_cmodel == CM_LARGE_PIC) + { + temp3 = create_temp_reg_if_possible (Pmode, result); + emit_insn (gen_mov_large_pcrel_step1 (temp, addr, text_label_symbol)); + emit_insn (gen_mov_large_pcrel_step2 (temp2, temp, addr, + text_label_symbol)); + emit_insn (gen_mov_large_pcrel_step3 (temp3, temp2, addr, + text_label_symbol)); + emit_insn (gen_mov_large_pcrel_step4 (result, temp3, + text_label_rtx, + addr, text_label_symbol)); + } + else + { + emit_insn (gen_mov_pcrel_step1 (temp, addr, text_label_symbol)); + emit_insn (gen_mov_pcrel_step2 (temp2, temp, addr, text_label_symbol)); + emit_insn (gen_mov_pcrel_step3 (result, temp2, + text_label_rtx, + addr, text_label_symbol)); + } +} + + +/* Returns a register that points to the plt entry of ADDR, a symbolic + address, by computing its address relative to + tilegx_text_label_symbol. */ +void +tilegx_compute_pcrel_plt_address (rtx result, rtx addr) +{ + rtx text_label_symbol = tilegx_text_label_symbol (); + rtx text_label_rtx = tilegx_text_label_rtx (); + rtx temp, temp2, temp3; + + temp = create_temp_reg_if_possible (Pmode, result); + temp2 = create_temp_reg_if_possible (Pmode, result); + + if (TARGET_32BIT) + { + emit_insn (gen_mov_plt_pcrel_step1_32bit (temp, addr, + text_label_symbol)); + emit_insn (gen_mov_plt_pcrel_step2_32bit (temp2, temp, addr, + text_label_symbol)); + emit_move_insn (result, gen_rtx_PLUS (Pmode, temp2, text_label_rtx)); + } + else + { + temp3 = create_temp_reg_if_possible (Pmode, result); + + emit_insn (gen_mov_plt_pcrel_step1 (temp, addr, text_label_symbol)); + emit_insn (gen_mov_plt_pcrel_step2 (temp2, temp, addr, + text_label_symbol)); + emit_insn (gen_mov_plt_pcrel_step3 (temp3, temp2, addr, + text_label_symbol)); + emit_move_insn (result, gen_rtx_PLUS (Pmode, temp3, text_label_rtx)); + } +} + + +/* Legitimize PIC addresses. If the address is already + position-independent, we return ORIG. Newly generated + position-independent addresses go into a reg. This is REG if + nonzero, otherwise we allocate register(s) as necessary. */ +static rtx +tilegx_legitimize_pic_address (rtx orig, + enum machine_mode mode ATTRIBUTE_UNUSED, + rtx reg) +{ + if (GET_CODE (orig) == SYMBOL_REF) + { + rtx address, pic_ref; + + if (reg == 0) + { + gcc_assert (can_create_pseudo_p ()); + reg = gen_reg_rtx (Pmode); + } + + if (SYMBOL_REF_LOCAL_P (orig)) + { + /* If not during reload, allocate another temp reg here for + loading in the address, so that these instructions can be + optimized properly. */ + rtx temp_reg = create_temp_reg_if_possible (Pmode, reg); + tilegx_compute_pcrel_address (temp_reg, orig); + + /* Note: this is conservative. We use the text_label but we + don't use the pic_offset_table. However, in some cases + we may need the pic_offset_table (see + tilegx_fixup_pcrel_references). */ + crtl->uses_pic_offset_table = 1; + + address = temp_reg; + + emit_move_insn (reg, address); + return reg; + } + else + { + /* If not during reload, allocate another temp reg here for + loading in the address, so that these instructions can be + optimized properly. */ + rtx temp_reg = create_temp_reg_if_possible (Pmode, reg); + + gcc_assert (flag_pic); + if (flag_pic == 1) + { + if (TARGET_32BIT) + { + emit_insn (gen_add_got16_32bit (temp_reg, + tilegx_got_rtx (), + orig)); + } + else + { + emit_insn (gen_add_got16 (temp_reg, + tilegx_got_rtx (), orig)); + } + } + else + { + rtx temp_reg2 = create_temp_reg_if_possible (Pmode, reg); + rtx temp_reg3 = create_temp_reg_if_possible (Pmode, reg); + if (TARGET_32BIT) + { + emit_insn (gen_mov_got32_step1_32bit (temp_reg3, orig)); + emit_insn (gen_mov_got32_step2_32bit + (temp_reg2, temp_reg3, orig)); + } + else + { + emit_insn (gen_mov_got32_step1 (temp_reg3, orig)); + emit_insn (gen_mov_got32_step2 (temp_reg2, temp_reg3, + orig)); + } + emit_move_insn (temp_reg, + gen_rtx_PLUS (Pmode, + tilegx_got_rtx (), temp_reg2)); + } + + address = temp_reg; + + pic_ref = gen_const_mem (Pmode, address); + crtl->uses_pic_offset_table = 1; + emit_move_insn (reg, pic_ref); + /* The following put a REG_EQUAL note on this insn, so that + it can be optimized by loop. But it causes the label to + be optimized away. */ + /* set_unique_reg_note (insn, REG_EQUAL, orig); */ + return reg; + } + } + else if (GET_CODE (orig) == CONST) + { + rtx base, offset; + + if (GET_CODE (XEXP (orig, 0)) == PLUS + && XEXP (XEXP (orig, 0), 0) == tilegx_got_rtx ()) + return orig; + + if (reg == 0) + { + gcc_assert (can_create_pseudo_p ()); + reg = gen_reg_rtx (Pmode); + } + + gcc_assert (GET_CODE (XEXP (orig, 0)) == PLUS); + base = tilegx_legitimize_pic_address (XEXP (XEXP (orig, 0), 0), + Pmode, reg); + offset = tilegx_legitimize_pic_address (XEXP (XEXP (orig, 0), 1), Pmode, + base == reg ? 0 : reg); + + if (CONST_INT_P (offset)) + { + if (can_create_pseudo_p ()) + offset = force_reg (Pmode, offset); + else + /* If we reach here, then something is seriously wrong. */ + gcc_unreachable (); + } + + if (can_create_pseudo_p ()) + return force_reg (Pmode, gen_rtx_PLUS (Pmode, base, offset)); + else + gcc_unreachable (); + } + else if (GET_CODE (orig) == LABEL_REF) + { + rtx address; + rtx temp_reg; + + if (reg == 0) + { + gcc_assert (can_create_pseudo_p ()); + reg = gen_reg_rtx (Pmode); + } + + /* If not during reload, allocate another temp reg here for + loading in the address, so that these instructions can be + optimized properly. */ + temp_reg = create_temp_reg_if_possible (Pmode, reg); + tilegx_compute_pcrel_address (temp_reg, orig); + + /* Note: this is conservative. We use the text_label but we + don't use the pic_offset_table. */ + crtl->uses_pic_offset_table = 1; + + address = temp_reg; + + emit_move_insn (reg, address); + + return reg; + } + + return orig; +} + + +/* Implement TARGET_LEGITIMIZE_ADDRESS. */ +static rtx +tilegx_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED, + enum machine_mode mode) +{ + if (GET_MODE_SIZE (mode) <= UNITS_PER_WORD + && symbolic_operand (x, Pmode) && tilegx_tls_referenced_p (x)) + { + return tilegx_legitimize_tls_address (x); + } + else if (flag_pic) + { + return tilegx_legitimize_pic_address (x, mode, 0); + } + else + return x; +} + + +/* Implement TARGET_DELEGITIMIZE_ADDRESS. */ +static rtx +tilegx_delegitimize_address (rtx x) +{ + x = delegitimize_mem_from_attrs (x); + + if (GET_CODE (x) == CONST && GET_CODE (XEXP (x, 0)) == UNSPEC) + { + switch (XINT (XEXP (x, 0), 1)) + { + case UNSPEC_HW0: + case UNSPEC_HW1: + case UNSPEC_HW2: + case UNSPEC_HW3: + case UNSPEC_HW0_LAST: + case UNSPEC_HW1_LAST: + case UNSPEC_HW2_LAST: + case UNSPEC_HW0_PCREL: + case UNSPEC_HW1_PCREL: + case UNSPEC_HW1_LAST_PCREL: + case UNSPEC_HW2_LAST_PCREL: + case UNSPEC_HW0_PLT_PCREL: + case UNSPEC_HW1_PLT_PCREL: + case UNSPEC_HW1_LAST_PLT_PCREL: + case UNSPEC_HW2_LAST_PLT_PCREL: + case UNSPEC_HW0_GOT: + case UNSPEC_HW0_LAST_GOT: + case UNSPEC_HW1_LAST_GOT: + case UNSPEC_HW0_TLS_GD: + case UNSPEC_HW1_LAST_TLS_GD: + case UNSPEC_HW0_TLS_IE: + case UNSPEC_HW1_LAST_TLS_IE: + case UNSPEC_HW0_TLS_LE: + case UNSPEC_HW1_LAST_TLS_LE: + x = XVECEXP (XEXP (x, 0), 0, 0); + break; + } + } + + return x; +} + + +/* Emit code to load the PIC register. */ +static void +load_pic_register (bool delay_pic_helper ATTRIBUTE_UNUSED) +{ + int orig_flag_pic = flag_pic; + + rtx got_symbol = tilegx_got_symbol (); + rtx text_label_symbol = tilegx_text_label_symbol (); + rtx text_label_rtx = tilegx_text_label_rtx (); + flag_pic = 0; + + if (TARGET_32BIT) + { + emit_insn (gen_insn_lnk_and_label_32bit (text_label_rtx, + text_label_symbol)); + } + else + { + emit_insn (gen_insn_lnk_and_label (text_label_rtx, text_label_symbol)); + } + + tilegx_compute_pcrel_address (tilegx_got_rtx (), got_symbol); + + flag_pic = orig_flag_pic; + + /* Need to emit this whether or not we obey regdecls, since + setjmp/longjmp can cause life info to screw up. ??? In the case + where we don't obey regdecls, this is not sufficient since we may + not fall out the bottom. */ + emit_use (tilegx_got_rtx ()); +} + + +/* Return the simd variant of the constant NUM of mode MODE, by + replicating it to fill an interger of mode DImode. NUM is first + truncated to fit in MODE. */ +rtx +tilegx_simd_int (rtx num, enum machine_mode mode) +{ + HOST_WIDE_INT n = 0; + + gcc_assert (CONST_INT_P (num)); + + n = INTVAL (num); + + switch (mode) + { + case QImode: + n = 0x0101010101010101LL * (n & 0x000000FF); + break; + case HImode: + n = 0x0001000100010001LL * (n & 0x0000FFFF); + break; + case SImode: + n = 0x0000000100000001LL * (n & 0xFFFFFFFF); + break; + case DImode: + break; + default: + gcc_unreachable (); + } + + return GEN_INT (n); +} + + +/* Returns true iff VAL can be moved into a register in one + instruction. And if it can, it emits the code to move the constant + into DEST_REG. + + If THREE_WIDE_ONLY is true, this insists on an instruction that + works in a bundle containing three instructions. */ +static bool +expand_set_cint64_one_inst (rtx dest_reg, + HOST_WIDE_INT val, bool three_wide_only) +{ + if (val == trunc_int_for_mode (val, QImode)) + { + /* Success! */ + emit_move_insn (dest_reg, GEN_INT (val)); + return true; + } + else if (!three_wide_only) + { + /* Test for the following constraints: J, K, N, P. We avoid + generating an rtx and using existing predicates because we + can be testing and rejecting a lot of constants, and GEN_INT + is O(N). */ + if ((val >= -32768 && val <= 65535) + || ((val == (val & 0xFF) * 0x0101010101010101LL)) + || (val == ((trunc_int_for_mode (val, QImode) & 0xFFFF) + * 0x0001000100010001LL))) + { + emit_move_insn (dest_reg, GEN_INT (val)); + return true; + } + } + + return false; +} + + +/* Implement DImode rotatert. */ +static HOST_WIDE_INT +rotate_right (HOST_WIDE_INT n, int count) +{ + unsigned HOST_WIDE_INT x = n & 0xFFFFFFFFFFFFFFFFULL; + if (count == 0) + return x; + return ((x >> count) | (x << (64 - count))) & 0xFFFFFFFFFFFFFFFFULL; +} + + +/* Return true iff n contains exactly one contiguous sequence of 1 + bits, possibly wrapping around from high bits to low bits. */ +bool +tilegx_bitfield_operand_p (HOST_WIDE_INT n, int *first_bit, int *last_bit) +{ + int i; + + if (n == 0) + return false; + + for (i = 0; i < 64; i++) + { + unsigned HOST_WIDE_INT x = rotate_right (n, i); + if (!(x & 1)) + continue; + + /* See if x is a power of two minus one, i.e. only consecutive 1 + bits starting from bit 0. */ + if ((x & (x + 1)) == 0) + { + if (first_bit != NULL) + *first_bit = i; + if (last_bit != NULL) + *last_bit = (i + exact_log2 (x ^ (x >> 1))) & 63; + + return true; + } + } + + return false; +} + + +/* Create code to move the CONST_INT value in src_val to dest_reg. */ +static void +expand_set_cint64 (rtx dest_reg, rtx src_val) +{ + HOST_WIDE_INT val; + int leading_zeroes, trailing_zeroes; + int three_wide_only; + int shift, ins_shift, zero_cluster_shift; + rtx temp, subreg; + + gcc_assert (CONST_INT_P (src_val)); + val = trunc_int_for_mode (INTVAL (src_val), GET_MODE (dest_reg)); + + /* See if we can generate the constant in one instruction. */ + if (expand_set_cint64_one_inst (dest_reg, val, false)) + return; + + /* Force the destination to DImode so we can use DImode instructions + to create it. This both allows instructions like rotl, and + certain efficient 3-wide instructions. */ + subreg = simplify_gen_subreg (DImode, dest_reg, GET_MODE (dest_reg), 0); + gcc_assert (subreg != NULL); + dest_reg = subreg; + + temp = create_temp_reg_if_possible (DImode, dest_reg); + + leading_zeroes = 63 - floor_log2 (val & 0xFFFFFFFFFFFFFFFFULL); + trailing_zeroes = exact_log2 (val & -val); + + /* First try all three-wide instructions that generate a constant + (i.e. movei) followed by various shifts and rotates. If none of + those work, try various two-wide ways of generating a constant + followed by various shifts and rotates. */ + for (three_wide_only = 1; three_wide_only >= 0; three_wide_only--) + { + int count; + + if (expand_set_cint64_one_inst (temp, val >> trailing_zeroes, + three_wide_only)) + { + /* 0xFFFFFFFFFFFFA500 becomes: + movei temp, 0xFFFFFFFFFFFFFFA5 + shli dest, temp, 8 */ + emit_move_insn (dest_reg, + gen_rtx_ASHIFT (DImode, temp, + GEN_INT (trailing_zeroes))); + return; + } + + if (expand_set_cint64_one_inst (temp, val << leading_zeroes, + three_wide_only)) + { + /* 0x7FFFFFFFFFFFFFFF becomes: + movei temp, -2 + shrui dest, temp, 1 */ + emit_move_insn (dest_reg, + gen_rtx_LSHIFTRT (DImode, temp, + GEN_INT (leading_zeroes))); + return; + } + + /* Try rotating a one-instruction immediate. */ + for (count = 1; count < 64; count++) + { + HOST_WIDE_INT r = rotate_right (val, count); + if (expand_set_cint64_one_inst (temp, r, three_wide_only)) + { + /* 0xFFFFFFFFFFA5FFFF becomes: + movei temp, 0xFFFFFFFFFFFFFFA5 + rotli dest, temp, 16 */ + emit_move_insn (dest_reg, + gen_rtx_ROTATE (DImode, temp, GEN_INT (count))); + return; + } + } + } + + /* There are two cases here to produce a large constant. + In the most general case, we do this: + + moveli x, hw3(NUM) + shl16insli x, x, hw2(NUM) + shl16insli x, x, hw1(NUM) + shl16insli x, x, hw0(NUM) + + However, we can sometimes do better. shl16insli is a poor way to + insert 16 zero bits, because simply shifting left by 16 has more + bundling freedom. So if we see any contiguous aligned sequence + of 16 or more zero bits (below the highest set bit), it is always + more efficient to materialize the bits above the zero bits, then + left shift to put in the zeroes, then insert whatever bits + remain. For example, we might end up with: + + movei x, NUM >> (37 + 16) + shli x, x, 37 + shl16insli x, x, hw0(NUM) */ + + zero_cluster_shift = -1; + + for (shift = 0; shift < 48 - leading_zeroes; shift += 16) + { + HOST_WIDE_INT x = val >> shift; + + /* Find the least significant group of 16 aligned zero bits. */ + if ((x & 0xFFFF) == 0x0000) + { + /* Grab any following zero bits as well. */ + zero_cluster_shift = exact_log2 (x & -x); + shift += zero_cluster_shift; + break; + } + } + + if (zero_cluster_shift >= 0) + { + unsigned HOST_WIDE_INT leftover; + + /* Recursively create the constant above the lowest 16 zero + bits. */ + expand_set_cint64 (temp, GEN_INT (val >> shift)); + + /* See if we can easily insert the remaining bits, or if we need + to fall through to the more general case. */ + leftover = val - ((val >> shift) << shift); + if (leftover == 0) + { + /* A simple left shift is enough. */ + emit_move_insn (dest_reg, + gen_rtx_ASHIFT (DImode, temp, GEN_INT (shift))); + return; + } + else if (leftover <= 32767) + { + /* Left shift into position then add in the leftover. */ + rtx temp2 = create_temp_reg_if_possible (DImode, temp); + emit_move_insn (temp2, + gen_rtx_ASHIFT (DImode, temp, GEN_INT (shift))); + emit_move_insn (dest_reg, + gen_rtx_PLUS (DImode, temp2, GEN_INT (leftover))); + return; + } + else + { + /* Shift in the batch of >= 16 zeroes we detected earlier. + After this, shift will be aligned mod 16 so the final + loop can use shl16insli. */ + rtx temp2 = create_temp_reg_if_possible (DImode, temp); + rtx shift_count_rtx = GEN_INT (zero_cluster_shift); + + emit_move_insn (temp2, + gen_rtx_ASHIFT (DImode, temp, shift_count_rtx)); + + shift -= zero_cluster_shift; + temp = temp2; + } + } + else + { + /* Set as many high 16-bit blocks as we can with a single + instruction. We'll insert the remaining 16-bit blocks + below. */ + for (shift = 16;; shift += 16) + { + gcc_assert (shift < 64); + if (expand_set_cint64_one_inst (temp, val >> shift, false)) + break; + } + } + + /* At this point, temp == val >> shift, shift % 16 == 0, and we + still need to insert any bits of 'val' below 'shift'. Those bits + are guaranteed to not have 16 contiguous zeroes. */ + + gcc_assert ((shift & 15) == 0); + + for (ins_shift = shift - 16; ins_shift >= 0; ins_shift -= 16) + { + rtx result; + HOST_WIDE_INT bits = (val >> ins_shift) & 0xFFFF; + gcc_assert (bits != 0); + + /* On the last iteration we need to store into dest_reg. */ + if (ins_shift == 0) + result = dest_reg; + else + result = create_temp_reg_if_possible (DImode, dest_reg); + + emit_insn (gen_insn_shl16insli (result, temp, GEN_INT (bits))); + + temp = result; + } +} + + +/* Load OP1, a 64-bit constant, into OP0, a register. We know it + can't be done in one insn when we get here, the move expander + guarantees this. */ +void +tilegx_expand_set_const64 (rtx op0, rtx op1) +{ + if (CONST_INT_P (op1)) + { + /* TODO: I don't know if we want to split large constants + now, or wait until later (with a define_split). + + Does splitting early help CSE? Does it harm other + optimizations that might fold loads? */ + expand_set_cint64 (op0, op1); + } + else + { + rtx temp = create_temp_reg_if_possible (Pmode, op0); + + if (TARGET_32BIT) + { + /* Generate the 2-insn sequence to materialize a symbolic + address. */ + emit_insn (gen_mov_address_32bit_step1 (temp, op1)); + emit_insn (gen_mov_address_32bit_step2 (op0, temp, op1)); + } + else + { + /* Generate the 3-insn sequence to materialize a symbolic + address. Note that this assumes that virtual addresses + fit in 48 signed bits, which is currently true. */ + rtx temp2 = create_temp_reg_if_possible (Pmode, op0); + emit_insn (gen_mov_address_step1 (temp, op1)); + emit_insn (gen_mov_address_step2 (temp2, temp, op1)); + emit_insn (gen_mov_address_step3 (op0, temp2, op1)); + } + } +} + + +/* Expand a move instruction. Return true if all work is done. */ +bool +tilegx_expand_mov (enum machine_mode mode, rtx *operands) +{ + /* Handle sets of MEM first. */ + if (MEM_P (operands[0])) + { + if (can_create_pseudo_p ()) + operands[0] = validize_mem (operands[0]); + + if (reg_or_0_operand (operands[1], mode)) + return false; + + if (!reload_in_progress) + operands[1] = force_reg (mode, operands[1]); + } + + /* Fixup TLS cases. */ + if (CONSTANT_P (operands[1]) && tilegx_tls_referenced_p (operands[1])) + { + operands[1] = tilegx_legitimize_tls_address (operands[1]); + return false; + } + + /* Fixup PIC cases. */ + if (flag_pic && CONSTANT_P (operands[1])) + { + if (tilegx_pic_address_needs_scratch (operands[1])) + operands[1] = tilegx_legitimize_pic_address (operands[1], mode, 0); + + if (symbolic_operand (operands[1], mode)) + { + operands[1] = tilegx_legitimize_pic_address (operands[1], + mode, + (reload_in_progress ? + operands[0] : + NULL_RTX)); + return false; + } + } + + /* Accept non-constants and valid constants unmodified. */ + if (!CONSTANT_P (operands[1]) || move_operand (operands[1], mode)) + return false; + + /* Split large integers. */ + tilegx_expand_set_const64 (operands[0], operands[1]); + return true; +} + + +/* Expand unaligned loads. */ +void +tilegx_expand_unaligned_load (rtx dest_reg, rtx mem, HOST_WIDE_INT bitsize, + HOST_WIDE_INT bit_offset, bool sign) +{ + enum machine_mode mode; + rtx addr_lo, addr_hi; + rtx mem_lo, mem_hi, hi; + rtx mema, wide_result; + int last_byte_offset; + HOST_WIDE_INT byte_offset = bit_offset / BITS_PER_UNIT; + + mode = GET_MODE (dest_reg); + + if (bitsize == 2 * BITS_PER_UNIT && (bit_offset % BITS_PER_UNIT) == 0) + { + rtx mem_left, mem_right; + rtx left = gen_reg_rtx (mode); + + /* When just loading a two byte value, we can load the two bytes + individually and combine them efficiently. */ + + mem_lo = adjust_address (mem, QImode, byte_offset); + mem_hi = adjust_address (mem, QImode, byte_offset + 1); + + if (BYTES_BIG_ENDIAN) + { + mem_left = mem_lo; + mem_right = mem_hi; + } + else + { + mem_left = mem_hi; + mem_right = mem_lo; + } + + if (sign) + { + /* Do a signed load of the second byte and use bfins to set + the high bits of the result. */ + emit_insn (gen_zero_extendqidi2 (gen_lowpart (DImode, dest_reg), + mem_right)); + emit_insn (gen_extendqidi2 (gen_lowpart (DImode, left), mem_left)); + emit_insn (gen_insv (gen_lowpart (DImode, dest_reg), + GEN_INT (64 - 8), GEN_INT (8), + gen_lowpart (DImode, left))); + } + else + { + /* Do two unsigned loads and use v1int_l to interleave + them. */ + rtx right = gen_reg_rtx (mode); + emit_insn (gen_zero_extendqidi2 (gen_lowpart (DImode, right), + mem_right)); + emit_insn (gen_zero_extendqidi2 (gen_lowpart (DImode, left), + mem_left)); + emit_insn (gen_insn_v1int_l (gen_lowpart (DImode, dest_reg), + gen_lowpart (DImode, left), + gen_lowpart (DImode, right))); + } + + return; + } + + mema = XEXP (mem, 0); + + /* AND addresses cannot be in any alias set, since they may + implicitly alias surrounding code. Ideally we'd have some alias + set that covered all types except those with alignment 8 or + higher. */ + addr_lo = force_reg (Pmode, plus_constant (Pmode, mema, byte_offset)); + mem_lo = change_address (mem, mode, + gen_rtx_AND (GET_MODE (mema), addr_lo, + GEN_INT (-8))); + set_mem_alias_set (mem_lo, 0); + + /* Load the high word at an address that will not fault if the low + address is aligned and at the very end of a page. */ + last_byte_offset = (bit_offset + bitsize - 1) / BITS_PER_UNIT; + addr_hi = force_reg (Pmode, plus_constant (Pmode, mema, last_byte_offset)); + mem_hi = change_address (mem, mode, + gen_rtx_AND (GET_MODE (mema), addr_hi, + GEN_INT (-8))); + set_mem_alias_set (mem_hi, 0); + + if (bitsize == 64) + { + addr_lo = make_safe_from (addr_lo, dest_reg); + wide_result = dest_reg; + } + else + { + wide_result = gen_reg_rtx (mode); + } + + /* Load hi first in case dest_reg is used in mema. */ + hi = gen_reg_rtx (mode); + emit_move_insn (hi, mem_hi); + emit_move_insn (wide_result, mem_lo); + + emit_insn (gen_insn_dblalign (gen_lowpart (DImode, wide_result), + gen_lowpart (DImode, wide_result), + gen_lowpart (DImode, hi), addr_lo)); + + if (bitsize != 64) + { + rtx extracted = + extract_bit_field (gen_lowpart (DImode, wide_result), + bitsize, bit_offset % BITS_PER_UNIT, + !sign, gen_lowpart (DImode, dest_reg), + DImode, DImode); + + if (extracted != dest_reg) + emit_move_insn (dest_reg, gen_lowpart (DImode, extracted)); + } +} + + +/* Expand unaligned stores. */ +static void +tilegx_expand_unaligned_store (rtx mem, rtx src, HOST_WIDE_INT bitsize, + HOST_WIDE_INT bit_offset) +{ + HOST_WIDE_INT byte_offset = bit_offset / BITS_PER_UNIT; + HOST_WIDE_INT bytesize = bitsize / BITS_PER_UNIT; + HOST_WIDE_INT shift_init, shift_increment, shift_amt; + HOST_WIDE_INT i; + rtx mem_addr; + rtx store_val; + + shift_init = BYTES_BIG_ENDIAN ? (bitsize - BITS_PER_UNIT) : 0; + shift_increment = BYTES_BIG_ENDIAN ? -BITS_PER_UNIT : BITS_PER_UNIT; + + for (i = 0, shift_amt = shift_init; + i < bytesize; + i++, shift_amt += shift_increment) + { + mem_addr = adjust_address (mem, QImode, byte_offset + i); + + if (shift_amt) + { + store_val = expand_simple_binop (DImode, LSHIFTRT, + gen_lowpart (DImode, src), + GEN_INT (shift_amt), NULL, 1, + OPTAB_LIB_WIDEN); + store_val = gen_lowpart (QImode, store_val); + } + else + { + store_val = gen_lowpart (QImode, src); + } + + emit_move_insn (mem_addr, store_val); + } +} + + +/* Implement the movmisalign patterns. One of the operands is a + memory that is not naturally aligned. Emit instructions to load + it. */ +void +tilegx_expand_movmisalign (enum machine_mode mode, rtx *operands) +{ + if (MEM_P (operands[1])) + { + rtx tmp; + + if (register_operand (operands[0], mode)) + tmp = operands[0]; + else + tmp = gen_reg_rtx (mode); + + tilegx_expand_unaligned_load (tmp, operands[1], GET_MODE_BITSIZE (mode), + 0, true); + + if (tmp != operands[0]) + emit_move_insn (operands[0], tmp); + } + else if (MEM_P (operands[0])) + { + if (!reg_or_0_operand (operands[1], mode)) + operands[1] = force_reg (mode, operands[1]); + + tilegx_expand_unaligned_store (operands[0], operands[1], + GET_MODE_BITSIZE (mode), 0); + } + else + gcc_unreachable (); + +} + + +/* Implement the allocate_stack pattern (alloca). */ +void +tilegx_allocate_stack (rtx op0, rtx op1) +{ + /* Technically the correct way to initialize chain_loc is with + * gen_frame_mem() instead of gen_rtx_MEM(), but gen_frame_mem() + * sets the alias_set to that of a frame reference. Some of our + * tests rely on some unsafe assumption about when the chaining + * update is done, we need to be conservative about reordering the + * chaining instructions. + */ + rtx fp_addr = gen_reg_rtx (Pmode); + rtx fp_value = gen_reg_rtx (Pmode); + rtx fp_loc; + + emit_move_insn (fp_addr, gen_rtx_PLUS (Pmode, stack_pointer_rtx, + GEN_INT (UNITS_PER_WORD))); + + fp_loc = gen_frame_mem (Pmode, fp_addr); + + emit_move_insn (fp_value, fp_loc); + + op1 = force_reg (Pmode, op1); + + emit_move_insn (stack_pointer_rtx, + gen_rtx_MINUS (Pmode, stack_pointer_rtx, op1)); + + emit_move_insn (fp_addr, gen_rtx_PLUS (Pmode, stack_pointer_rtx, + GEN_INT (UNITS_PER_WORD))); + + fp_loc = gen_frame_mem (Pmode, fp_addr); + + emit_move_insn (fp_loc, fp_value); + + emit_move_insn (op0, virtual_stack_dynamic_rtx); +} + + + +/* Multiplies */ + + +/* Returns the insn_code in ENTRY. */ +static enum insn_code +tilegx_multiply_get_opcode (const struct tilegx_multiply_insn_seq_entry + *entry) +{ + return tilegx_multiply_insn_seq_decode_opcode[entry->compressed_opcode]; +} + + +/* Returns the length of the 'op' array. */ +static int +tilegx_multiply_get_num_ops (const struct tilegx_multiply_insn_seq *seq) +{ + /* The array either uses all of its allocated slots or is terminated + by a bogus opcode. Either way, the array size is the index of the + last valid opcode plus one. */ + int i; + for (i = tilegx_multiply_insn_seq_MAX_OPERATIONS - 1; i >= 0; i--) + if (tilegx_multiply_get_opcode (&seq->op[i]) != CODE_FOR_nothing) + return i + 1; + + /* An empty array is not allowed. */ + gcc_unreachable (); +} + + +/* We precompute a number of expression trees for multiplying by + constants. This generates code for such an expression tree by + walking through the nodes in the tree (which are conveniently + pre-linearized) and emitting an instruction for each one. */ +static void +tilegx_expand_constant_multiply_given_sequence (rtx result, rtx src, + const struct + tilegx_multiply_insn_seq *seq) +{ + int i; + int num_ops; + + /* Keep track of the subexpressions computed so far, so later + instructions can refer to them. We seed the array with zero and + the value being multiplied. */ + int num_subexprs = 2; + rtx subexprs[tilegx_multiply_insn_seq_MAX_OPERATIONS + 2]; + subexprs[0] = const0_rtx; + subexprs[1] = src; + + /* Determine how many instructions we are going to generate. */ + num_ops = tilegx_multiply_get_num_ops (seq); + gcc_assert (num_ops > 0 + && num_ops <= tilegx_multiply_insn_seq_MAX_OPERATIONS); + + for (i = 0; i < num_ops; i++) + { + const struct tilegx_multiply_insn_seq_entry *entry = &seq->op[i]; + + /* Figure out where to store the output of this instruction. */ + const bool is_last_op = (i + 1 == num_ops); + rtx out = is_last_op ? result : gen_reg_rtx (DImode); + + enum insn_code opcode = tilegx_multiply_get_opcode (entry); + if (opcode == CODE_FOR_ashldi3) + { + /* Handle shift by immediate. This is a special case because + the meaning of the second operand is a constant shift + count rather than an operand index. */ + + /* Make sure the shift count is in range. Zero should not + happen. */ + const int shift_count = entry->rhs; + gcc_assert (shift_count > 0 && shift_count < 64); + + /* Emit the actual instruction. */ + emit_insn (GEN_FCN (opcode) + (out, subexprs[entry->lhs], + gen_rtx_CONST_INT (DImode, shift_count))); + } + else + { + /* Handle a normal two-operand instruction, such as add or + shl1add. */ + + /* Make sure we are referring to a previously computed + subexpression. */ + gcc_assert (entry->rhs < num_subexprs); + + /* Emit the actual instruction. */ + emit_insn (GEN_FCN (opcode) + (out, subexprs[entry->lhs], subexprs[entry->rhs])); + } + + /* Record this subexpression for use by later expressions. */ + subexprs[num_subexprs++] = out; + } +} + + +/* bsearch helper function. */ +static int +tilegx_compare_multipliers (const void *key, const void *t) +{ + long long delta = + (*(const long long *) key + - ((const struct tilegx_multiply_insn_seq *) t)->multiplier); + return (delta < 0) ? -1 : (delta > 0); +} + + +/* Returns the tilegx_multiply_insn_seq for multiplier, or NULL if none + exists. */ +static const struct tilegx_multiply_insn_seq * +tilegx_find_multiply_insn_seq_for_constant (long long multiplier) +{ + return ((const struct tilegx_multiply_insn_seq *) + bsearch (&multiplier, tilegx_multiply_insn_seq_table, + tilegx_multiply_insn_seq_table_size, + sizeof tilegx_multiply_insn_seq_table[0], + tilegx_compare_multipliers)); +} + + +/* Try to a expand constant multiply in DImode by looking it up in a + precompiled table. OP0 is the result operand, OP1 is the source + operand, and MULTIPLIER is the value of the constant. Return true + if it succeeds. */ +static bool +tilegx_expand_const_muldi (rtx op0, rtx op1, long long multiplier) +{ + /* See if we have precomputed an efficient way to multiply by this + constant. */ + const struct tilegx_multiply_insn_seq *seq = + tilegx_find_multiply_insn_seq_for_constant (multiplier); + if (seq != NULL) + { + tilegx_expand_constant_multiply_given_sequence (op0, op1, seq); + return true; + } + else + return false; +} + + +/* Expand the muldi pattern. */ +bool +tilegx_expand_muldi (rtx op0, rtx op1, rtx op2) +{ + if (CONST_INT_P (op2)) + { + HOST_WIDE_INT n = trunc_int_for_mode (INTVAL (op2), DImode); + return tilegx_expand_const_muldi (op0, op1, n); + } + return false; +} + + +/* Expand a high multiply pattern in DImode. RESULT, OP1, OP2 are the + operands, and SIGN is true if it's a signed multiply, and false if + it's an unsigned multiply. */ +static void +tilegx_expand_high_multiply (rtx result, rtx op1, rtx op2, bool sign) +{ + rtx tmp0 = gen_reg_rtx (DImode); + rtx tmp1 = gen_reg_rtx (DImode); + rtx tmp2 = gen_reg_rtx (DImode); + rtx tmp3 = gen_reg_rtx (DImode); + rtx tmp4 = gen_reg_rtx (DImode); + rtx tmp5 = gen_reg_rtx (DImode); + rtx tmp6 = gen_reg_rtx (DImode); + rtx tmp7 = gen_reg_rtx (DImode); + rtx tmp8 = gen_reg_rtx (DImode); + rtx tmp9 = gen_reg_rtx (DImode); + rtx tmp10 = gen_reg_rtx (DImode); + rtx tmp11 = gen_reg_rtx (DImode); + rtx tmp12 = gen_reg_rtx (DImode); + rtx tmp13 = gen_reg_rtx (DImode); + rtx result_lo = gen_reg_rtx (DImode); + + if (sign) + { + emit_insn (gen_insn_mul_hs_lu (tmp0, op1, op2)); + emit_insn (gen_insn_mul_hs_lu (tmp1, op2, op1)); + emit_insn (gen_insn_mul_lu_lu (tmp2, op1, op2)); + emit_insn (gen_insn_mul_hs_hs (tmp3, op1, op2)); + } + else + { + emit_insn (gen_insn_mul_hu_lu (tmp0, op1, op2)); + emit_insn (gen_insn_mul_hu_lu (tmp1, op2, op1)); + emit_insn (gen_insn_mul_lu_lu (tmp2, op1, op2)); + emit_insn (gen_insn_mul_hu_hu (tmp3, op1, op2)); + } + + emit_move_insn (tmp4, (gen_rtx_ASHIFT (DImode, tmp0, GEN_INT (32)))); + + emit_move_insn (tmp5, (gen_rtx_ASHIFT (DImode, tmp1, GEN_INT (32)))); + + emit_move_insn (tmp6, (gen_rtx_PLUS (DImode, tmp4, tmp5))); + emit_move_insn (result_lo, (gen_rtx_PLUS (DImode, tmp2, tmp6))); + + emit_move_insn (tmp7, gen_rtx_LTU (DImode, tmp6, tmp4)); + emit_move_insn (tmp8, gen_rtx_LTU (DImode, result_lo, tmp2)); + + if (sign) + { + emit_move_insn (tmp9, (gen_rtx_ASHIFTRT (DImode, tmp0, GEN_INT (32)))); + emit_move_insn (tmp10, (gen_rtx_ASHIFTRT (DImode, tmp1, GEN_INT (32)))); + } + else + { + emit_move_insn (tmp9, (gen_rtx_LSHIFTRT (DImode, tmp0, GEN_INT (32)))); + emit_move_insn (tmp10, (gen_rtx_LSHIFTRT (DImode, tmp1, GEN_INT (32)))); + } + + emit_move_insn (tmp11, (gen_rtx_PLUS (DImode, tmp3, tmp7))); + emit_move_insn (tmp12, (gen_rtx_PLUS (DImode, tmp8, tmp9))); + emit_move_insn (tmp13, (gen_rtx_PLUS (DImode, tmp11, tmp12))); + emit_move_insn (result, (gen_rtx_PLUS (DImode, tmp13, tmp10))); +} + + +/* Implement smuldi3_highpart. */ +void +tilegx_expand_smuldi3_highpart (rtx op0, rtx op1, rtx op2) +{ + tilegx_expand_high_multiply (op0, op1, op2, true); +} + + +/* Implement umuldi3_highpart. */ +void +tilegx_expand_umuldi3_highpart (rtx op0, rtx op1, rtx op2) +{ + tilegx_expand_high_multiply (op0, op1, op2, false); +} + + + +/* Compare and branches */ + +/* Produce the rtx yielding a bool for a floating point + comparison. */ +static bool +tilegx_emit_fp_setcc (rtx res, enum rtx_code code, enum machine_mode mode, + rtx op0, rtx op1) +{ + /* TODO: Certain compares again constants can be done using entirely + integer operations. But you have to get the special cases right + e.g. NaN, +0 == -0, etc. */ + + rtx flags; + int flag_index; + rtx a = force_reg (DImode, gen_lowpart (DImode, op0)); + rtx b = force_reg (DImode, gen_lowpart (DImode, op1)); + + flags = gen_reg_rtx (DImode); + + if (mode == SFmode) + { + emit_insn (gen_insn_fsingle_add1 (flags, a, b)); + } + else + { + gcc_assert (mode == DFmode); + emit_insn (gen_insn_fdouble_add_flags (flags, a, b)); + } + + switch (code) + { + case EQ: flag_index = 30; break; + case NE: flag_index = 31; break; + case LE: flag_index = 27; break; + case LT: flag_index = 26; break; + case GE: flag_index = 29; break; + case GT: flag_index = 28; break; + default: gcc_unreachable (); + } + + gcc_assert (GET_MODE (res) == DImode); + emit_move_insn (res, gen_rtx_ZERO_EXTRACT (DImode, flags, GEN_INT (1), + GEN_INT (flag_index))); + return true; +} + + +/* Certain simplifications can be done to make invalid setcc + operations valid. Return the final comparison, or NULL if we can't + work. */ +static bool +tilegx_emit_setcc_internal (rtx res, enum rtx_code code, rtx op0, rtx op1, + enum machine_mode cmp_mode) +{ + rtx tmp; + bool swap = false; + + if (cmp_mode == SFmode || cmp_mode == DFmode) + return tilegx_emit_fp_setcc (res, code, cmp_mode, op0, op1); + + /* The general case: fold the comparison code to the types of + compares that we have, choosing the branch as necessary. */ + + switch (code) + { + case EQ: + case NE: + case LE: + case LT: + case LEU: + case LTU: + /* We have these compares. */ + break; + + case GE: + case GT: + case GEU: + case GTU: + /* We do not have these compares, so we reverse the + operands. */ + swap = true; + break; + + default: + /* We should not have called this with any other code. */ + gcc_unreachable (); + } + + if (swap) + { + code = swap_condition (code); + tmp = op0, op0 = op1, op1 = tmp; + } + + if (!reg_or_0_operand (op0, cmp_mode)) + op0 = force_reg (cmp_mode, op0); + + if (!CONST_INT_P (op1) && !register_operand (op1, cmp_mode)) + op1 = force_reg (cmp_mode, op1); + + /* Return the setcc comparison. */ + emit_insn (gen_rtx_SET (VOIDmode, res, + gen_rtx_fmt_ee (code, DImode, op0, op1))); + + return true; +} + + +/* Implement cstore patterns. */ +bool +tilegx_emit_setcc (rtx operands[], enum machine_mode cmp_mode) +{ + return + tilegx_emit_setcc_internal (operands[0], GET_CODE (operands[1]), + operands[2], operands[3], cmp_mode); +} + + +/* Return whether CODE is a signed comparison. */ +static bool +signed_compare_p (enum rtx_code code) +{ + return (code == EQ || code == NE || code == LT || code == LE + || code == GT || code == GE); +} + + +/* Generate the comparison for a DImode conditional branch. */ +static rtx +tilegx_emit_cc_test (enum rtx_code code, rtx op0, rtx op1, + enum machine_mode cmp_mode, bool eq_ne_only) +{ + enum rtx_code branch_code; + rtx temp; + + if (cmp_mode == SFmode || cmp_mode == DFmode) + { + /* Compute a boolean saying whether the comparison is true. */ + temp = gen_reg_rtx (DImode); + tilegx_emit_setcc_internal (temp, code, op0, op1, cmp_mode); + + /* Test that flag. */ + return gen_rtx_fmt_ee (NE, VOIDmode, temp, const0_rtx); + } + + /* Check for a compare against zero using a comparison we can do + directly. */ + if (op1 == const0_rtx + && (code == EQ || code == NE + || (!eq_ne_only && signed_compare_p (code)))) + { + op0 = force_reg (cmp_mode, op0); + return gen_rtx_fmt_ee (code, VOIDmode, op0, const0_rtx); + } + + /* The general case: fold the comparison code to the types of + compares that we have, choosing the branch as necessary. */ + switch (code) + { + case EQ: + case LE: + case LT: + case LEU: + case LTU: + /* We have these compares. */ + branch_code = NE; + break; + + case NE: + case GE: + case GT: + case GEU: + case GTU: + /* These must be reversed (except NE, but let's + canonicalize). */ + code = reverse_condition (code); + branch_code = EQ; + break; + + default: + gcc_unreachable (); + } + + if (CONST_INT_P (op1) && (!satisfies_constraint_I (op1) || code == LEU)) + { + HOST_WIDE_INT n = INTVAL (op1); + + switch (code) + { + case EQ: + /* Subtract off the value we want to compare against and see + if we get zero. This is cheaper than creating a constant + in a register. Except that subtracting -128 is more + expensive than seqi to -128, so we leave that alone. */ + /* ??? Don't do this when comparing against symbols, + otherwise we'll reduce (&x == 0x1234) to (&x-0x1234 == + 0), which will be declared false out of hand (at least + for non-weak). */ + if (n != -128 + && add_operand (GEN_INT (-n), DImode) + && !(symbolic_operand (op0, VOIDmode) + || (REG_P (op0) && REG_POINTER (op0)))) + { + /* TODO: Use a SIMD add immediate to hit zero for tiled + constants in a single instruction. */ + if (GET_MODE (op0) != DImode) + { + /* Convert to DImode so we can use addli. Note that + this will not actually generate any code because + sign extension from SI -> DI is a no-op. I don't + know if it's safe just to make a paradoxical + subreg here though. */ + rtx temp2 = gen_reg_rtx (DImode); + emit_insn (gen_extendsidi2 (temp2, op0)); + op0 = temp2; + } + else + { + op0 = force_reg (DImode, op0); + } + temp = gen_reg_rtx (DImode); + emit_move_insn (temp, gen_rtx_PLUS (DImode, op0, GEN_INT (-n))); + return gen_rtx_fmt_ee (reverse_condition (branch_code), + VOIDmode, temp, const0_rtx); + } + break; + + case LEU: + if (n == -1) + break; + /* FALLTHRU */ + + case LTU: + /* Change ((unsigned)x < 0x1000) into !((int)x >> 12), etc. + We use arithmetic shift right because it's a 3-wide op, + while logical shift right is not. */ + { + int first = exact_log2 (code == LTU ? n : n + 1); + if (first != -1) + { + op0 = force_reg (cmp_mode, op0); + temp = gen_reg_rtx (cmp_mode); + emit_move_insn (temp, + gen_rtx_ASHIFTRT (cmp_mode, op0, + GEN_INT (first))); + return gen_rtx_fmt_ee (reverse_condition (branch_code), + VOIDmode, temp, const0_rtx); + } + } + break; + + default: + break; + } + } + + /* Compute a flag saying whether we should branch. */ + temp = gen_reg_rtx (DImode); + tilegx_emit_setcc_internal (temp, code, op0, op1, cmp_mode); + + /* Return the branch comparison. */ + return gen_rtx_fmt_ee (branch_code, VOIDmode, temp, const0_rtx); +} + + +/* Generate the comparison for a conditional branch. */ +void +tilegx_emit_conditional_branch (rtx operands[], enum machine_mode cmp_mode) +{ + rtx cmp_rtx = + tilegx_emit_cc_test (GET_CODE (operands[0]), operands[1], operands[2], + cmp_mode, false); + rtx branch_rtx = gen_rtx_SET (VOIDmode, pc_rtx, + gen_rtx_IF_THEN_ELSE (VOIDmode, cmp_rtx, + gen_rtx_LABEL_REF + (VOIDmode, + operands[3]), + pc_rtx)); + emit_jump_insn (branch_rtx); +} + + +/* Implement the mov<mode>cc pattern. */ +rtx +tilegx_emit_conditional_move (rtx cmp) +{ + return + tilegx_emit_cc_test (GET_CODE (cmp), XEXP (cmp, 0), XEXP (cmp, 1), + GET_MODE (XEXP (cmp, 0)), true); +} + + +/* Return true if INSN is annotated with a REG_BR_PROB note that + indicates it's a branch that's predicted taken. */ +static bool +cbranch_predicted_p (rtx insn) +{ + rtx x = find_reg_note (insn, REG_BR_PROB, 0); + + if (x) + { + int pred_val = XINT (x, 0); + + return pred_val >= REG_BR_PROB_BASE / 2; + } + + return false; +} + + +/* Output assembly code for a specific branch instruction, appending + the branch prediction flag to the opcode if appropriate. */ +static const char * +tilegx_output_simple_cbranch_with_opcode (rtx insn, const char *opcode, + int regop, bool reverse_predicted) +{ + static char buf[64]; + sprintf (buf, "%s%s\t%%r%d, %%l0", opcode, + (cbranch_predicted_p (insn) ^ reverse_predicted) ? "t" : "", + regop); + return buf; +} + + +/* Output assembly code for a specific branch instruction, appending + the branch prediction flag to the opcode if appropriate. */ +const char * +tilegx_output_cbranch_with_opcode (rtx insn, rtx *operands, + const char *opcode, + const char *rev_opcode, int regop) +{ + const char *branch_if_false; + rtx taken, not_taken; + bool is_simple_branch; + + gcc_assert (LABEL_P (operands[0])); + + is_simple_branch = true; + if (INSN_ADDRESSES_SET_P ()) + { + int from_addr = INSN_ADDRESSES (INSN_UID (insn)); + int to_addr = INSN_ADDRESSES (INSN_UID (operands[0])); + int delta = to_addr - from_addr; + is_simple_branch = IN_RANGE (delta, -524288, 524280); + } + + if (is_simple_branch) + { + /* Just a simple conditional branch. */ + return + tilegx_output_simple_cbranch_with_opcode (insn, opcode, regop, false); + } + + /* Generate a reversed branch around a direct jump. This fallback + does not use branch-likely instructions. */ + not_taken = gen_label_rtx (); + taken = operands[0]; + + /* Generate the reversed branch to NOT_TAKEN. */ + operands[0] = not_taken; + branch_if_false = + tilegx_output_simple_cbranch_with_opcode (insn, rev_opcode, regop, true); + output_asm_insn (branch_if_false, operands); + + output_asm_insn ("j\t%l0", &taken); + + /* Output NOT_TAKEN. */ + targetm.asm_out.internal_label (asm_out_file, "L", + CODE_LABEL_NUMBER (not_taken)); + return ""; +} + + +/* Output assembly code for a conditional branch instruction. */ +const char * +tilegx_output_cbranch (rtx insn, rtx *operands, bool reversed) +{ + enum rtx_code code = GET_CODE (operands[1]); + const char *opcode; + const char *rev_opcode; + + if (reversed) + code = reverse_condition (code); + + switch (code) + { + case NE: + opcode = "bnez"; + rev_opcode = "beqz"; + break; + case EQ: + opcode = "beqz"; + rev_opcode = "bnez"; + break; + case GE: + opcode = "bgez"; + rev_opcode = "bltz"; + break; + case GT: + opcode = "bgtz"; + rev_opcode = "blez"; + break; + case LE: + opcode = "blez"; + rev_opcode = "bgtz"; + break; + case LT: + opcode = "bltz"; + rev_opcode = "bgez"; + break; + default: + gcc_unreachable (); + } + + return tilegx_output_cbranch_with_opcode (insn, operands, opcode, + rev_opcode, 2); +} + + +/* Implement the tablejump pattern. */ +void +tilegx_expand_tablejump (rtx op0, rtx op1) +{ + if (flag_pic) + { + rtx temp = gen_reg_rtx (Pmode); + rtx temp2 = gen_reg_rtx (Pmode); + + tilegx_compute_pcrel_address (temp, gen_rtx_LABEL_REF (Pmode, op1)); + emit_move_insn (temp2, + gen_rtx_PLUS (Pmode, + convert_to_mode (Pmode, op0, false), + temp)); + op0 = temp2; + } + + emit_jump_insn (gen_tablejump_aux (op0, op1)); +} + + +/* Emit barrier before an atomic, as needed for the memory MODEL. */ +void +tilegx_pre_atomic_barrier (enum memmodel model) +{ + if (need_atomic_barrier_p (model, true)) + emit_insn (gen_memory_barrier ()); +} + + +/* Emit barrier after an atomic, as needed for the memory MODEL. */ +void +tilegx_post_atomic_barrier (enum memmodel model) +{ + if (need_atomic_barrier_p (model, false)) + emit_insn (gen_memory_barrier ()); +} + + + +/* Expand a builtin vector binary op, by calling gen function GEN with + operands in the proper modes. DEST is converted to DEST_MODE, and + src0 and src1 (if DO_SRC1 is true) is converted to SRC_MODE. */ +void +tilegx_expand_builtin_vector_binop (rtx (*gen) (rtx, rtx, rtx), + enum machine_mode dest_mode, + rtx dest, + enum machine_mode src_mode, + rtx src0, rtx src1, bool do_src1) +{ + dest = gen_lowpart (dest_mode, dest); + + if (src0 == const0_rtx) + src0 = CONST0_RTX (src_mode); + else + src0 = gen_lowpart (src_mode, src0); + + if (do_src1) + { + if (src1 == const0_rtx) + src1 = CONST0_RTX (src_mode); + else + src1 = gen_lowpart (src_mode, src1); + } + + emit_insn ((*gen) (dest, src0, src1)); +} + + + +/* Intrinsics */ + + +struct tile_builtin_info +{ + enum insn_code icode; + tree fndecl; +}; + +static struct tile_builtin_info tilegx_builtin_info[TILEGX_BUILTIN_max] = { + { CODE_FOR_adddi3, NULL }, /* add */ + { CODE_FOR_addsi3, NULL }, /* addx */ + { CODE_FOR_ssaddsi3, NULL }, /* addxsc */ + { CODE_FOR_anddi3, NULL }, /* and */ + { CODE_FOR_insn_bfexts, NULL }, /* bfexts */ + { CODE_FOR_insn_bfextu, NULL }, /* bfextu */ + { CODE_FOR_insn_bfins, NULL }, /* bfins */ + { CODE_FOR_clzdi2, NULL }, /* clz */ + { CODE_FOR_insn_cmoveqz, NULL }, /* cmoveqz */ + { CODE_FOR_insn_cmovnez, NULL }, /* cmovnez */ + { CODE_FOR_insn_cmpeq_didi, NULL }, /* cmpeq */ + { CODE_FOR_insn_cmpexch, NULL }, /* cmpexch */ + { CODE_FOR_insn_cmpexch4, NULL }, /* cmpexch4 */ + { CODE_FOR_insn_cmples_didi, NULL }, /* cmples */ + { CODE_FOR_insn_cmpleu_didi, NULL }, /* cmpleu */ + { CODE_FOR_insn_cmplts_didi, NULL }, /* cmplts */ + { CODE_FOR_insn_cmpltu_didi, NULL }, /* cmpltu */ + { CODE_FOR_insn_cmpne_didi, NULL }, /* cmpne */ + { CODE_FOR_insn_cmul, NULL }, /* cmul */ + { CODE_FOR_insn_cmula, NULL }, /* cmula */ + { CODE_FOR_insn_cmulaf, NULL }, /* cmulaf */ + { CODE_FOR_insn_cmulf, NULL }, /* cmulf */ + { CODE_FOR_insn_cmulfr, NULL }, /* cmulfr */ + { CODE_FOR_insn_cmulh, NULL }, /* cmulh */ + { CODE_FOR_insn_cmulhr, NULL }, /* cmulhr */ + { CODE_FOR_insn_crc32_32, NULL }, /* crc32_32 */ + { CODE_FOR_insn_crc32_8, NULL }, /* crc32_8 */ + { CODE_FOR_ctzdi2, NULL }, /* ctz */ + { CODE_FOR_insn_dblalign, NULL }, /* dblalign */ + { CODE_FOR_insn_dblalign2, NULL }, /* dblalign2 */ + { CODE_FOR_insn_dblalign4, NULL }, /* dblalign4 */ + { CODE_FOR_insn_dblalign6, NULL }, /* dblalign6 */ + { CODE_FOR_insn_drain, NULL }, /* drain */ + { CODE_FOR_insn_dtlbpr, NULL }, /* dtlbpr */ + { CODE_FOR_insn_exch, NULL }, /* exch */ + { CODE_FOR_insn_exch4, NULL }, /* exch4 */ + { CODE_FOR_insn_fdouble_add_flags, NULL }, /* fdouble_add_flags */ + { CODE_FOR_insn_fdouble_addsub, NULL }, /* fdouble_addsub */ + { CODE_FOR_insn_fdouble_mul_flags, NULL }, /* fdouble_mul_flags */ + { CODE_FOR_insn_fdouble_pack1, NULL }, /* fdouble_pack1 */ + { CODE_FOR_insn_fdouble_pack2, NULL }, /* fdouble_pack2 */ + { CODE_FOR_insn_fdouble_sub_flags, NULL }, /* fdouble_sub_flags */ + { CODE_FOR_insn_fdouble_unpack_max, NULL }, /* fdouble_unpack_max */ + { CODE_FOR_insn_fdouble_unpack_min, NULL }, /* fdouble_unpack_min */ + { CODE_FOR_insn_fetchadd, NULL }, /* fetchadd */ + { CODE_FOR_insn_fetchadd4, NULL }, /* fetchadd4 */ + { CODE_FOR_insn_fetchaddgez, NULL }, /* fetchaddgez */ + { CODE_FOR_insn_fetchaddgez4, NULL }, /* fetchaddgez4 */ + { CODE_FOR_insn_fetchand, NULL }, /* fetchand */ + { CODE_FOR_insn_fetchand4, NULL }, /* fetchand4 */ + { CODE_FOR_insn_fetchor, NULL }, /* fetchor */ + { CODE_FOR_insn_fetchor4, NULL }, /* fetchor4 */ + { CODE_FOR_insn_finv, NULL }, /* finv */ + { CODE_FOR_insn_flush, NULL }, /* flush */ + { CODE_FOR_insn_flushwb, NULL }, /* flushwb */ + { CODE_FOR_insn_fnop, NULL }, /* fnop */ + { CODE_FOR_insn_fsingle_add1, NULL }, /* fsingle_add1 */ + { CODE_FOR_insn_fsingle_addsub2, NULL }, /* fsingle_addsub2 */ + { CODE_FOR_insn_fsingle_mul1, NULL }, /* fsingle_mul1 */ + { CODE_FOR_insn_fsingle_mul2, NULL }, /* fsingle_mul2 */ + { CODE_FOR_insn_fsingle_pack1, NULL }, /* fsingle_pack1 */ + { CODE_FOR_insn_fsingle_pack2, NULL }, /* fsingle_pack2 */ + { CODE_FOR_insn_fsingle_sub1, NULL }, /* fsingle_sub1 */ + { CODE_FOR_insn_icoh, NULL }, /* icoh */ + { CODE_FOR_insn_ill, NULL }, /* ill */ + { CODE_FOR_insn_info, NULL }, /* info */ + { CODE_FOR_insn_infol, NULL }, /* infol */ + { CODE_FOR_insn_inv, NULL }, /* inv */ + { CODE_FOR_insn_ld, NULL }, /* ld */ + { CODE_FOR_insn_ld1s, NULL }, /* ld1s */ + { CODE_FOR_insn_ld1u, NULL }, /* ld1u */ + { CODE_FOR_insn_ld2s, NULL }, /* ld2s */ + { CODE_FOR_insn_ld2u, NULL }, /* ld2u */ + { CODE_FOR_insn_ld4s, NULL }, /* ld4s */ + { CODE_FOR_insn_ld4u, NULL }, /* ld4u */ + { CODE_FOR_insn_ldna, NULL }, /* ldna */ + { CODE_FOR_insn_ldnt, NULL }, /* ldnt */ + { CODE_FOR_insn_ldnt1s, NULL }, /* ldnt1s */ + { CODE_FOR_insn_ldnt1u, NULL }, /* ldnt1u */ + { CODE_FOR_insn_ldnt2s, NULL }, /* ldnt2s */ + { CODE_FOR_insn_ldnt2u, NULL }, /* ldnt2u */ + { CODE_FOR_insn_ldnt4s, NULL }, /* ldnt4s */ + { CODE_FOR_insn_ldnt4u, NULL }, /* ldnt4u */ + { CODE_FOR_insn_ld_L2, NULL }, /* ld_L2 */ + { CODE_FOR_insn_ld1s_L2, NULL }, /* ld1s_L2 */ + { CODE_FOR_insn_ld1u_L2, NULL }, /* ld1u_L2 */ + { CODE_FOR_insn_ld2s_L2, NULL }, /* ld2s_L2 */ + { CODE_FOR_insn_ld2u_L2, NULL }, /* ld2u_L2 */ + { CODE_FOR_insn_ld4s_L2, NULL }, /* ld4s_L2 */ + { CODE_FOR_insn_ld4u_L2, NULL }, /* ld4u_L2 */ + { CODE_FOR_insn_ldna_L2, NULL }, /* ldna_L2 */ + { CODE_FOR_insn_ldnt_L2, NULL }, /* ldnt_L2 */ + { CODE_FOR_insn_ldnt1s_L2, NULL }, /* ldnt1s_L2 */ + { CODE_FOR_insn_ldnt1u_L2, NULL }, /* ldnt1u_L2 */ + { CODE_FOR_insn_ldnt2s_L2, NULL }, /* ldnt2s_L2 */ + { CODE_FOR_insn_ldnt2u_L2, NULL }, /* ldnt2u_L2 */ + { CODE_FOR_insn_ldnt4s_L2, NULL }, /* ldnt4s_L2 */ + { CODE_FOR_insn_ldnt4u_L2, NULL }, /* ldnt4u_L2 */ + { CODE_FOR_insn_ld_miss, NULL }, /* ld_miss */ + { CODE_FOR_insn_ld1s_miss, NULL }, /* ld1s_miss */ + { CODE_FOR_insn_ld1u_miss, NULL }, /* ld1u_miss */ + { CODE_FOR_insn_ld2s_miss, NULL }, /* ld2s_miss */ + { CODE_FOR_insn_ld2u_miss, NULL }, /* ld2u_miss */ + { CODE_FOR_insn_ld4s_miss, NULL }, /* ld4s_miss */ + { CODE_FOR_insn_ld4u_miss, NULL }, /* ld4u_miss */ + { CODE_FOR_insn_ldna_miss, NULL }, /* ldna_miss */ + { CODE_FOR_insn_ldnt_miss, NULL }, /* ldnt_miss */ + { CODE_FOR_insn_ldnt1s_miss, NULL }, /* ldnt1s_miss */ + { CODE_FOR_insn_ldnt1u_miss, NULL }, /* ldnt1u_miss */ + { CODE_FOR_insn_ldnt2s_miss, NULL }, /* ldnt2s_miss */ + { CODE_FOR_insn_ldnt2u_miss, NULL }, /* ldnt2u_miss */ + { CODE_FOR_insn_ldnt4s_miss, NULL }, /* ldnt4s_miss */ + { CODE_FOR_insn_ldnt4u_miss, NULL }, /* ldnt4u_miss */ + { CODE_FOR_insn_lnk, NULL }, /* lnk */ + { CODE_FOR_memory_barrier, NULL }, /* mf */ + { CODE_FOR_insn_mfspr, NULL }, /* mfspr */ + { CODE_FOR_insn_mm, NULL }, /* mm */ + { CODE_FOR_insn_mnz, NULL }, /* mnz */ + { CODE_FOR_movdi, NULL }, /* move */ + { CODE_FOR_insn_mtspr, NULL }, /* mtspr */ + { CODE_FOR_insn_mul_hs_hs, NULL }, /* mul_hs_hs */ + { CODE_FOR_insn_mul_hs_hu, NULL }, /* mul_hs_hu */ + { CODE_FOR_insn_mul_hs_ls, NULL }, /* mul_hs_ls */ + { CODE_FOR_insn_mul_hs_lu, NULL }, /* mul_hs_lu */ + { CODE_FOR_insn_mul_hu_hu, NULL }, /* mul_hu_hu */ + { CODE_FOR_insn_mul_hu_ls, NULL }, /* mul_hu_ls */ + { CODE_FOR_insn_mul_hu_lu, NULL }, /* mul_hu_lu */ + { CODE_FOR_insn_mul_ls_ls, NULL }, /* mul_ls_ls */ + { CODE_FOR_insn_mul_ls_lu, NULL }, /* mul_ls_lu */ + { CODE_FOR_insn_mul_lu_lu, NULL }, /* mul_lu_lu */ + { CODE_FOR_insn_mula_hs_hs, NULL }, /* mula_hs_hs */ + { CODE_FOR_insn_mula_hs_hu, NULL }, /* mula_hs_hu */ + { CODE_FOR_insn_mula_hs_ls, NULL }, /* mula_hs_ls */ + { CODE_FOR_insn_mula_hs_lu, NULL }, /* mula_hs_lu */ + { CODE_FOR_insn_mula_hu_hu, NULL }, /* mula_hu_hu */ + { CODE_FOR_insn_mula_hu_ls, NULL }, /* mula_hu_ls */ + { CODE_FOR_insn_mula_hu_lu, NULL }, /* mula_hu_lu */ + { CODE_FOR_insn_mula_ls_ls, NULL }, /* mula_ls_ls */ + { CODE_FOR_insn_mula_ls_lu, NULL }, /* mula_ls_lu */ + { CODE_FOR_insn_mula_lu_lu, NULL }, /* mula_lu_lu */ + { CODE_FOR_insn_mulax, NULL }, /* mulax */ + { CODE_FOR_mulsi3, NULL }, /* mulx */ + { CODE_FOR_insn_mz, NULL }, /* mz */ + { CODE_FOR_insn_nap, NULL }, /* nap */ + { CODE_FOR_nop, NULL }, /* nop */ + { CODE_FOR_insn_nor_di, NULL }, /* nor */ + { CODE_FOR_iordi3, NULL }, /* or */ + { CODE_FOR_popcountdi2, NULL }, /* pcnt */ + { CODE_FOR_insn_prefetch_l1, NULL }, /* prefetch_l1 */ + { CODE_FOR_insn_prefetch_l1_fault, NULL }, /* prefetch_l1_fault */ + { CODE_FOR_insn_prefetch_l2, NULL }, /* prefetch_l2 */ + { CODE_FOR_insn_prefetch_l2_fault, NULL }, /* prefetch_l2_fault */ + { CODE_FOR_insn_prefetch_l3, NULL }, /* prefetch_l3 */ + { CODE_FOR_insn_prefetch_l3_fault, NULL }, /* prefetch_l3_fault */ + { CODE_FOR_insn_revbits, NULL }, /* revbits */ + { CODE_FOR_bswapdi2, NULL }, /* revbytes */ + { CODE_FOR_rotldi3, NULL }, /* rotl */ + { CODE_FOR_ashldi3, NULL }, /* shl */ + { CODE_FOR_insn_shl16insli, NULL }, /* shl16insli */ + { CODE_FOR_insn_shl1add, NULL }, /* shl1add */ + { CODE_FOR_insn_shl1addx, NULL }, /* shl1addx */ + { CODE_FOR_insn_shl2add, NULL }, /* shl2add */ + { CODE_FOR_insn_shl2addx, NULL }, /* shl2addx */ + { CODE_FOR_insn_shl3add, NULL }, /* shl3add */ + { CODE_FOR_insn_shl3addx, NULL }, /* shl3addx */ + { CODE_FOR_ashlsi3, NULL }, /* shlx */ + { CODE_FOR_ashrdi3, NULL }, /* shrs */ + { CODE_FOR_lshrdi3, NULL }, /* shru */ + { CODE_FOR_lshrsi3, NULL }, /* shrux */ + { CODE_FOR_insn_shufflebytes, NULL }, /* shufflebytes */ + { CODE_FOR_insn_shufflebytes1, NULL }, /* shufflebytes1 */ + { CODE_FOR_insn_st, NULL }, /* st */ + { CODE_FOR_insn_st1, NULL }, /* st1 */ + { CODE_FOR_insn_st2, NULL }, /* st2 */ + { CODE_FOR_insn_st4, NULL }, /* st4 */ + { CODE_FOR_insn_stnt, NULL }, /* stnt */ + { CODE_FOR_insn_stnt1, NULL }, /* stnt1 */ + { CODE_FOR_insn_stnt2, NULL }, /* stnt2 */ + { CODE_FOR_insn_stnt4, NULL }, /* stnt4 */ + { CODE_FOR_subdi3, NULL }, /* sub */ + { CODE_FOR_subsi3, NULL }, /* subx */ + { CODE_FOR_sssubsi3, NULL }, /* subxsc */ + { CODE_FOR_insn_tblidxb0, NULL }, /* tblidxb0 */ + { CODE_FOR_insn_tblidxb1, NULL }, /* tblidxb1 */ + { CODE_FOR_insn_tblidxb2, NULL }, /* tblidxb2 */ + { CODE_FOR_insn_tblidxb3, NULL }, /* tblidxb3 */ + { CODE_FOR_insn_v1add, NULL }, /* v1add */ + { CODE_FOR_insn_v1addi, NULL }, /* v1addi */ + { CODE_FOR_insn_v1adduc, NULL }, /* v1adduc */ + { CODE_FOR_insn_v1adiffu, NULL }, /* v1adiffu */ + { CODE_FOR_insn_v1avgu, NULL }, /* v1avgu */ + { CODE_FOR_insn_v1cmpeq, NULL }, /* v1cmpeq */ + { CODE_FOR_insn_v1cmpeqi, NULL }, /* v1cmpeqi */ + { CODE_FOR_insn_v1cmples, NULL }, /* v1cmples */ + { CODE_FOR_insn_v1cmpleu, NULL }, /* v1cmpleu */ + { CODE_FOR_insn_v1cmplts, NULL }, /* v1cmplts */ + { CODE_FOR_insn_v1cmpltsi, NULL }, /* v1cmpltsi */ + { CODE_FOR_insn_v1cmpltu, NULL }, /* v1cmpltu */ + { CODE_FOR_insn_v1cmpltui, NULL }, /* v1cmpltui */ + { CODE_FOR_insn_v1cmpne, NULL }, /* v1cmpne */ + { CODE_FOR_insn_v1ddotpu, NULL }, /* v1ddotpu */ + { CODE_FOR_insn_v1ddotpua, NULL }, /* v1ddotpua */ + { CODE_FOR_insn_v1ddotpus, NULL }, /* v1ddotpus */ + { CODE_FOR_insn_v1ddotpusa, NULL }, /* v1ddotpusa */ + { CODE_FOR_insn_v1dotp, NULL }, /* v1dotp */ + { CODE_FOR_insn_v1dotpa, NULL }, /* v1dotpa */ + { CODE_FOR_insn_v1dotpu, NULL }, /* v1dotpu */ + { CODE_FOR_insn_v1dotpua, NULL }, /* v1dotpua */ + { CODE_FOR_insn_v1dotpus, NULL }, /* v1dotpus */ + { CODE_FOR_insn_v1dotpusa, NULL }, /* v1dotpusa */ + { CODE_FOR_insn_v1int_h, NULL }, /* v1int_h */ + { CODE_FOR_insn_v1int_l, NULL }, /* v1int_l */ + { CODE_FOR_insn_v1maxu, NULL }, /* v1maxu */ + { CODE_FOR_insn_v1maxui, NULL }, /* v1maxui */ + { CODE_FOR_insn_v1minu, NULL }, /* v1minu */ + { CODE_FOR_insn_v1minui, NULL }, /* v1minui */ + { CODE_FOR_insn_v1mnz, NULL }, /* v1mnz */ + { CODE_FOR_insn_v1multu, NULL }, /* v1multu */ + { CODE_FOR_insn_v1mulu, NULL }, /* v1mulu */ + { CODE_FOR_insn_v1mulus, NULL }, /* v1mulus */ + { CODE_FOR_insn_v1mz, NULL }, /* v1mz */ + { CODE_FOR_insn_v1sadau, NULL }, /* v1sadau */ + { CODE_FOR_insn_v1sadu, NULL }, /* v1sadu */ + { CODE_FOR_insn_v1shl, NULL }, /* v1shl */ + { CODE_FOR_insn_v1shl, NULL }, /* v1shli */ + { CODE_FOR_insn_v1shrs, NULL }, /* v1shrs */ + { CODE_FOR_insn_v1shrs, NULL }, /* v1shrsi */ + { CODE_FOR_insn_v1shru, NULL }, /* v1shru */ + { CODE_FOR_insn_v1shru, NULL }, /* v1shrui */ + { CODE_FOR_insn_v1sub, NULL }, /* v1sub */ + { CODE_FOR_insn_v1subuc, NULL }, /* v1subuc */ + { CODE_FOR_insn_v2add, NULL }, /* v2add */ + { CODE_FOR_insn_v2addi, NULL }, /* v2addi */ + { CODE_FOR_insn_v2addsc, NULL }, /* v2addsc */ + { CODE_FOR_insn_v2adiffs, NULL }, /* v2adiffs */ + { CODE_FOR_insn_v2avgs, NULL }, /* v2avgs */ + { CODE_FOR_insn_v2cmpeq, NULL }, /* v2cmpeq */ + { CODE_FOR_insn_v2cmpeqi, NULL }, /* v2cmpeqi */ + { CODE_FOR_insn_v2cmples, NULL }, /* v2cmples */ + { CODE_FOR_insn_v2cmpleu, NULL }, /* v2cmpleu */ + { CODE_FOR_insn_v2cmplts, NULL }, /* v2cmplts */ + { CODE_FOR_insn_v2cmpltsi, NULL }, /* v2cmpltsi */ + { CODE_FOR_insn_v2cmpltu, NULL }, /* v2cmpltu */ + { CODE_FOR_insn_v2cmpltui, NULL }, /* v2cmpltui */ + { CODE_FOR_insn_v2cmpne, NULL }, /* v2cmpne */ + { CODE_FOR_insn_v2dotp, NULL }, /* v2dotp */ + { CODE_FOR_insn_v2dotpa, NULL }, /* v2dotpa */ + { CODE_FOR_insn_v2int_h, NULL }, /* v2int_h */ + { CODE_FOR_insn_v2int_l, NULL }, /* v2int_l */ + { CODE_FOR_insn_v2maxs, NULL }, /* v2maxs */ + { CODE_FOR_insn_v2maxsi, NULL }, /* v2maxsi */ + { CODE_FOR_insn_v2mins, NULL }, /* v2mins */ + { CODE_FOR_insn_v2minsi, NULL }, /* v2minsi */ + { CODE_FOR_insn_v2mnz, NULL }, /* v2mnz */ + { CODE_FOR_insn_v2mulfsc, NULL }, /* v2mulfsc */ + { CODE_FOR_insn_v2muls, NULL }, /* v2muls */ + { CODE_FOR_insn_v2mults, NULL }, /* v2mults */ + { CODE_FOR_insn_v2mz, NULL }, /* v2mz */ + { CODE_FOR_insn_v2packh, NULL }, /* v2packh */ + { CODE_FOR_insn_v2packl, NULL }, /* v2packl */ + { CODE_FOR_insn_v2packuc, NULL }, /* v2packuc */ + { CODE_FOR_insn_v2sadas, NULL }, /* v2sadas */ + { CODE_FOR_insn_v2sadau, NULL }, /* v2sadau */ + { CODE_FOR_insn_v2sads, NULL }, /* v2sads */ + { CODE_FOR_insn_v2sadu, NULL }, /* v2sadu */ + { CODE_FOR_insn_v2shl, NULL }, /* v2shl */ + { CODE_FOR_insn_v2shl, NULL }, /* v2shli */ + { CODE_FOR_insn_v2shlsc, NULL }, /* v2shlsc */ + { CODE_FOR_insn_v2shrs, NULL }, /* v2shrs */ + { CODE_FOR_insn_v2shrs, NULL }, /* v2shrsi */ + { CODE_FOR_insn_v2shru, NULL }, /* v2shru */ + { CODE_FOR_insn_v2shru, NULL }, /* v2shrui */ + { CODE_FOR_insn_v2sub, NULL }, /* v2sub */ + { CODE_FOR_insn_v2subsc, NULL }, /* v2subsc */ + { CODE_FOR_insn_v4add, NULL }, /* v4add */ + { CODE_FOR_insn_v4addsc, NULL }, /* v4addsc */ + { CODE_FOR_insn_v4int_h, NULL }, /* v4int_h */ + { CODE_FOR_insn_v4int_l, NULL }, /* v4int_l */ + { CODE_FOR_insn_v4packsc, NULL }, /* v4packsc */ + { CODE_FOR_insn_v4shl, NULL }, /* v4shl */ + { CODE_FOR_insn_v4shlsc, NULL }, /* v4shlsc */ + { CODE_FOR_insn_v4shrs, NULL }, /* v4shrs */ + { CODE_FOR_insn_v4shru, NULL }, /* v4shru */ + { CODE_FOR_insn_v4sub, NULL }, /* v4sub */ + { CODE_FOR_insn_v4subsc, NULL }, /* v4subsc */ + { CODE_FOR_insn_wh64, NULL }, /* wh64 */ + { CODE_FOR_xordi3, NULL }, /* xor */ + { CODE_FOR_tilegx_network_barrier, NULL }, /* network_barrier */ + { CODE_FOR_tilegx_idn0_receive, NULL }, /* idn0_receive */ + { CODE_FOR_tilegx_idn1_receive, NULL }, /* idn1_receive */ + { CODE_FOR_tilegx_idn_send, NULL }, /* idn_send */ + { CODE_FOR_tilegx_udn0_receive, NULL }, /* udn0_receive */ + { CODE_FOR_tilegx_udn1_receive, NULL }, /* udn1_receive */ + { CODE_FOR_tilegx_udn2_receive, NULL }, /* udn2_receive */ + { CODE_FOR_tilegx_udn3_receive, NULL }, /* udn3_receive */ + { CODE_FOR_tilegx_udn_send, NULL }, /* udn_send */ +}; + + +struct tilegx_builtin_def +{ + const char *name; + enum tilegx_builtin code; + bool is_const; + /* The first character is the return type. Subsequent characters + are the argument types. See char_to_type. */ + const char *type; +}; + + +static const struct tilegx_builtin_def tilegx_builtins[] = { + { "__insn_add", TILEGX_INSN_ADD, true, "lll" }, + { "__insn_addi", TILEGX_INSN_ADD, true, "lll" }, + { "__insn_addli", TILEGX_INSN_ADD, true, "lll" }, + { "__insn_addx", TILEGX_INSN_ADDX, true, "iii" }, + { "__insn_addxi", TILEGX_INSN_ADDX, true, "iii" }, + { "__insn_addxli", TILEGX_INSN_ADDX, true, "iii" }, + { "__insn_addxsc", TILEGX_INSN_ADDXSC, true, "iii" }, + { "__insn_and", TILEGX_INSN_AND, true, "lll" }, + { "__insn_andi", TILEGX_INSN_AND, true, "lll" }, + { "__insn_bfexts", TILEGX_INSN_BFEXTS, true, "llll" }, + { "__insn_bfextu", TILEGX_INSN_BFEXTU, true, "llll" }, + { "__insn_bfins", TILEGX_INSN_BFINS, true, "lllll"}, + { "__insn_clz", TILEGX_INSN_CLZ, true, "ll" }, + { "__insn_cmoveqz", TILEGX_INSN_CMOVEQZ, true, "llll" }, + { "__insn_cmovnez", TILEGX_INSN_CMOVNEZ, true, "llll" }, + { "__insn_cmpeq", TILEGX_INSN_CMPEQ, true, "lll" }, + { "__insn_cmpeqi", TILEGX_INSN_CMPEQ, true, "lll" }, + { "__insn_cmpexch", TILEGX_INSN_CMPEXCH, false, "lpl" }, + { "__insn_cmpexch4", TILEGX_INSN_CMPEXCH4, false, "ipi" }, + { "__insn_cmples", TILEGX_INSN_CMPLES, true, "lll" }, + { "__insn_cmpleu", TILEGX_INSN_CMPLEU, true, "lll" }, + { "__insn_cmplts", TILEGX_INSN_CMPLTS, true, "lll" }, + { "__insn_cmpltsi", TILEGX_INSN_CMPLTS, true, "lll" }, + { "__insn_cmpltu", TILEGX_INSN_CMPLTU, true, "lll" }, + { "__insn_cmpltui", TILEGX_INSN_CMPLTU, true, "lll" }, + { "__insn_cmpne", TILEGX_INSN_CMPNE, true, "lll" }, + { "__insn_cmul", TILEGX_INSN_CMUL, true, "lll" }, + { "__insn_cmula", TILEGX_INSN_CMULA, true, "llll" }, + { "__insn_cmulaf", TILEGX_INSN_CMULAF, true, "llll" }, + { "__insn_cmulf", TILEGX_INSN_CMULF, true, "lll" }, + { "__insn_cmulfr", TILEGX_INSN_CMULFR, true, "lll" }, + { "__insn_cmulh", TILEGX_INSN_CMULH, true, "lll" }, + { "__insn_cmulhr", TILEGX_INSN_CMULHR, true, "lll" }, + { "__insn_crc32_32", TILEGX_INSN_CRC32_32, true, "lll" }, + { "__insn_crc32_8", TILEGX_INSN_CRC32_8, true, "lll" }, + { "__insn_ctz", TILEGX_INSN_CTZ, true, "ll" }, + { "__insn_dblalign", TILEGX_INSN_DBLALIGN, true, "lllk" }, + { "__insn_dblalign2", TILEGX_INSN_DBLALIGN2, true, "lll" }, + { "__insn_dblalign4", TILEGX_INSN_DBLALIGN4, true, "lll" }, + { "__insn_dblalign6", TILEGX_INSN_DBLALIGN6, true, "lll" }, + { "__insn_drain", TILEGX_INSN_DRAIN, false, "v" }, + { "__insn_dtlbpr", TILEGX_INSN_DTLBPR, false, "vl" }, + { "__insn_exch", TILEGX_INSN_EXCH, false, "lpl" }, + { "__insn_exch4", TILEGX_INSN_EXCH4, false, "ipi" }, + { "__insn_fdouble_add_flags", TILEGX_INSN_FDOUBLE_ADD_FLAGS, true, "lll" }, + { "__insn_fdouble_addsub", TILEGX_INSN_FDOUBLE_ADDSUB, true, "llll" }, + { "__insn_fdouble_mul_flags", TILEGX_INSN_FDOUBLE_MUL_FLAGS, true, "lll" }, + { "__insn_fdouble_pack1", TILEGX_INSN_FDOUBLE_PACK1, true, "lll" }, + { "__insn_fdouble_pack2", TILEGX_INSN_FDOUBLE_PACK2, true, "llll" }, + { "__insn_fdouble_sub_flags", TILEGX_INSN_FDOUBLE_SUB_FLAGS, true, "lll" }, + { "__insn_fdouble_unpack_max", TILEGX_INSN_FDOUBLE_UNPACK_MAX, true, "lll" }, + { "__insn_fdouble_unpack_min", TILEGX_INSN_FDOUBLE_UNPACK_MIN, true, "lll" }, + { "__insn_fetchadd", TILEGX_INSN_FETCHADD, false, "lpl" }, + { "__insn_fetchadd4", TILEGX_INSN_FETCHADD4, false, "ipi" }, + { "__insn_fetchaddgez", TILEGX_INSN_FETCHADDGEZ, false, "lpl" }, + { "__insn_fetchaddgez4", TILEGX_INSN_FETCHADDGEZ4, false, "ipi" }, + { "__insn_fetchand", TILEGX_INSN_FETCHAND, false, "lpl" }, + { "__insn_fetchand4", TILEGX_INSN_FETCHAND4, false, "ipi" }, + { "__insn_fetchor", TILEGX_INSN_FETCHOR, false, "lpl" }, + { "__insn_fetchor4", TILEGX_INSN_FETCHOR4, false, "ipi" }, + { "__insn_finv", TILEGX_INSN_FINV, false, "vk" }, + { "__insn_flush", TILEGX_INSN_FLUSH, false, "vk" }, + { "__insn_flushwb", TILEGX_INSN_FLUSHWB, false, "v" }, + { "__insn_fnop", TILEGX_INSN_FNOP, false, "v" }, + { "__insn_fsingle_add1", TILEGX_INSN_FSINGLE_ADD1, true, "lll" }, + { "__insn_fsingle_addsub2", TILEGX_INSN_FSINGLE_ADDSUB2, true, "llll" }, + { "__insn_fsingle_mul1", TILEGX_INSN_FSINGLE_MUL1, true, "lll" }, + { "__insn_fsingle_mul2", TILEGX_INSN_FSINGLE_MUL2, true, "lll" }, + { "__insn_fsingle_pack1", TILEGX_INSN_FSINGLE_PACK1, true, "ll" }, + { "__insn_fsingle_pack2", TILEGX_INSN_FSINGLE_PACK2, true, "lll" }, + { "__insn_fsingle_sub1", TILEGX_INSN_FSINGLE_SUB1, true, "lll" }, + { "__insn_icoh", TILEGX_INSN_ICOH, false, "vk" }, + { "__insn_ill", TILEGX_INSN_ILL, false, "v" }, + { "__insn_info", TILEGX_INSN_INFO, false, "vl" }, + { "__insn_infol", TILEGX_INSN_INFOL, false, "vl" }, + { "__insn_inv", TILEGX_INSN_INV, false, "vp" }, + { "__insn_ld", TILEGX_INSN_LD, false, "lk" }, + { "__insn_ld1s", TILEGX_INSN_LD1S, false, "lk" }, + { "__insn_ld1u", TILEGX_INSN_LD1U, false, "lk" }, + { "__insn_ld2s", TILEGX_INSN_LD2S, false, "lk" }, + { "__insn_ld2u", TILEGX_INSN_LD2U, false, "lk" }, + { "__insn_ld4s", TILEGX_INSN_LD4S, false, "lk" }, + { "__insn_ld4u", TILEGX_INSN_LD4U, false, "lk" }, + { "__insn_ldna", TILEGX_INSN_LDNA, false, "lk" }, + { "__insn_ldnt", TILEGX_INSN_LDNT, false, "lk" }, + { "__insn_ldnt1s", TILEGX_INSN_LDNT1S, false, "lk" }, + { "__insn_ldnt1u", TILEGX_INSN_LDNT1U, false, "lk" }, + { "__insn_ldnt2s", TILEGX_INSN_LDNT2S, false, "lk" }, + { "__insn_ldnt2u", TILEGX_INSN_LDNT2U, false, "lk" }, + { "__insn_ldnt4s", TILEGX_INSN_LDNT4S, false, "lk" }, + { "__insn_ldnt4u", TILEGX_INSN_LDNT4U, false, "lk" }, + { "__insn_ld_L2", TILEGX_INSN_LD_L2, false, "lk" }, + { "__insn_ld1s_L2", TILEGX_INSN_LD1S_L2, false, "lk" }, + { "__insn_ld1u_L2", TILEGX_INSN_LD1U_L2, false, "lk" }, + { "__insn_ld2s_L2", TILEGX_INSN_LD2S_L2, false, "lk" }, + { "__insn_ld2u_L2", TILEGX_INSN_LD2U_L2, false, "lk" }, + { "__insn_ld4s_L2", TILEGX_INSN_LD4S_L2, false, "lk" }, + { "__insn_ld4u_L2", TILEGX_INSN_LD4U_L2, false, "lk" }, + { "__insn_ldna_L2", TILEGX_INSN_LDNA_L2, false, "lk" }, + { "__insn_ldnt_L2", TILEGX_INSN_LDNT_L2, false, "lk" }, + { "__insn_ldnt1s_L2", TILEGX_INSN_LDNT1S_L2, false, "lk" }, + { "__insn_ldnt1u_L2", TILEGX_INSN_LDNT1U_L2, false, "lk" }, + { "__insn_ldnt2s_L2", TILEGX_INSN_LDNT2S_L2, false, "lk" }, + { "__insn_ldnt2u_L2", TILEGX_INSN_LDNT2U_L2, false, "lk" }, + { "__insn_ldnt4s_L2", TILEGX_INSN_LDNT4S_L2, false, "lk" }, + { "__insn_ldnt4u_L2", TILEGX_INSN_LDNT4U_L2, false, "lk" }, + { "__insn_ld_miss", TILEGX_INSN_LD_MISS, false, "lk" }, + { "__insn_ld1s_miss", TILEGX_INSN_LD1S_MISS, false, "lk" }, + { "__insn_ld1u_miss", TILEGX_INSN_LD1U_MISS, false, "lk" }, + { "__insn_ld2s_miss", TILEGX_INSN_LD2S_MISS, false, "lk" }, + { "__insn_ld2u_miss", TILEGX_INSN_LD2U_MISS, false, "lk" }, + { "__insn_ld4s_miss", TILEGX_INSN_LD4S_MISS, false, "lk" }, + { "__insn_ld4u_miss", TILEGX_INSN_LD4U_MISS, false, "lk" }, + { "__insn_ldna_miss", TILEGX_INSN_LDNA_MISS, false, "lk" }, + { "__insn_ldnt_miss", TILEGX_INSN_LDNT_MISS, false, "lk" }, + { "__insn_ldnt1s_miss", TILEGX_INSN_LDNT1S_MISS, false, "lk" }, + { "__insn_ldnt1u_miss", TILEGX_INSN_LDNT1U_MISS, false, "lk" }, + { "__insn_ldnt2s_miss", TILEGX_INSN_LDNT2S_MISS, false, "lk" }, + { "__insn_ldnt2u_miss", TILEGX_INSN_LDNT2U_MISS, false, "lk" }, + { "__insn_ldnt4s_miss", TILEGX_INSN_LDNT4S_MISS, false, "lk" }, + { "__insn_ldnt4u_miss", TILEGX_INSN_LDNT4U_MISS, false, "lk" }, + { "__insn_lnk", TILEGX_INSN_LNK, true, "l" }, + { "__insn_mf", TILEGX_INSN_MF, false, "v" }, + { "__insn_mfspr", TILEGX_INSN_MFSPR, false, "ll" }, + { "__insn_mm", TILEGX_INSN_MM, true, "lllll"}, + { "__insn_mnz", TILEGX_INSN_MNZ, true, "lll" }, + { "__insn_move", TILEGX_INSN_MOVE, true, "ll" }, + { "__insn_movei", TILEGX_INSN_MOVE, true, "ll" }, + { "__insn_moveli", TILEGX_INSN_MOVE, true, "ll" }, + { "__insn_mtspr", TILEGX_INSN_MTSPR, false, "vll" }, + { "__insn_mul_hs_hs", TILEGX_INSN_MUL_HS_HS, true, "lll" }, + { "__insn_mul_hs_hu", TILEGX_INSN_MUL_HS_HU, true, "lll" }, + { "__insn_mul_hs_ls", TILEGX_INSN_MUL_HS_LS, true, "lll" }, + { "__insn_mul_hs_lu", TILEGX_INSN_MUL_HS_LU, true, "lll" }, + { "__insn_mul_hu_hu", TILEGX_INSN_MUL_HU_HU, true, "lll" }, + { "__insn_mul_hu_ls", TILEGX_INSN_MUL_HU_LS, true, "lll" }, + { "__insn_mul_hu_lu", TILEGX_INSN_MUL_HU_LU, true, "lll" }, + { "__insn_mul_ls_ls", TILEGX_INSN_MUL_LS_LS, true, "lll" }, + { "__insn_mul_ls_lu", TILEGX_INSN_MUL_LS_LU, true, "lll" }, + { "__insn_mul_lu_lu", TILEGX_INSN_MUL_LU_LU, true, "lll" }, + { "__insn_mula_hs_hs", TILEGX_INSN_MULA_HS_HS, true, "llll" }, + { "__insn_mula_hs_hu", TILEGX_INSN_MULA_HS_HU, true, "llll" }, + { "__insn_mula_hs_ls", TILEGX_INSN_MULA_HS_LS, true, "llll" }, + { "__insn_mula_hs_lu", TILEGX_INSN_MULA_HS_LU, true, "llll" }, + { "__insn_mula_hu_hu", TILEGX_INSN_MULA_HU_HU, true, "llll" }, + { "__insn_mula_hu_ls", TILEGX_INSN_MULA_HU_LS, true, "llll" }, + { "__insn_mula_hu_lu", TILEGX_INSN_MULA_HU_LU, true, "llll" }, + { "__insn_mula_ls_ls", TILEGX_INSN_MULA_LS_LS, true, "llll" }, + { "__insn_mula_ls_lu", TILEGX_INSN_MULA_LS_LU, true, "llll" }, + { "__insn_mula_lu_lu", TILEGX_INSN_MULA_LU_LU, true, "llll" }, + { "__insn_mulax", TILEGX_INSN_MULAX, true, "iiii" }, + { "__insn_mulx", TILEGX_INSN_MULX, true, "iii" }, + { "__insn_mz", TILEGX_INSN_MZ, true, "lll" }, + { "__insn_nap", TILEGX_INSN_NAP, false, "v" }, + { "__insn_nop", TILEGX_INSN_NOP, true, "v" }, + { "__insn_nor", TILEGX_INSN_NOR, true, "lll" }, + { "__insn_or", TILEGX_INSN_OR, true, "lll" }, + { "__insn_ori", TILEGX_INSN_OR, true, "lll" }, + { "__insn_pcnt", TILEGX_INSN_PCNT, true, "ll" }, + { "__insn_prefetch", TILEGX_INSN_PREFETCH_L1, false, "vk" }, + { "__insn_prefetch_l1", TILEGX_INSN_PREFETCH_L1, false, "vk" }, + { "__insn_prefetch_l1_fault", TILEGX_INSN_PREFETCH_L1_FAULT, false, "vk" }, + { "__insn_prefetch_l2", TILEGX_INSN_PREFETCH_L2, false, "vk" }, + { "__insn_prefetch_l2_fault", TILEGX_INSN_PREFETCH_L2_FAULT, false, "vk" }, + { "__insn_prefetch_l3", TILEGX_INSN_PREFETCH_L3, false, "vk" }, + { "__insn_prefetch_l3_fault", TILEGX_INSN_PREFETCH_L3_FAULT, false, "vk" }, + { "__insn_revbits", TILEGX_INSN_REVBITS, true, "ll" }, + { "__insn_revbytes", TILEGX_INSN_REVBYTES, true, "ll" }, + { "__insn_rotl", TILEGX_INSN_ROTL, true, "lli" }, + { "__insn_rotli", TILEGX_INSN_ROTL, true, "lli" }, + { "__insn_shl", TILEGX_INSN_SHL, true, "lli" }, + { "__insn_shl16insli", TILEGX_INSN_SHL16INSLI, true, "lll" }, + { "__insn_shl1add", TILEGX_INSN_SHL1ADD, true, "lll" }, + { "__insn_shl1addx", TILEGX_INSN_SHL1ADDX, true, "iii" }, + { "__insn_shl2add", TILEGX_INSN_SHL2ADD, true, "lll" }, + { "__insn_shl2addx", TILEGX_INSN_SHL2ADDX, true, "iii" }, + { "__insn_shl3add", TILEGX_INSN_SHL3ADD, true, "lll" }, + { "__insn_shl3addx", TILEGX_INSN_SHL3ADDX, true, "iii" }, + { "__insn_shli", TILEGX_INSN_SHL, true, "lli" }, + { "__insn_shlx", TILEGX_INSN_SHLX, true, "iii" }, + { "__insn_shlxi", TILEGX_INSN_SHLX, true, "iii" }, + { "__insn_shrs", TILEGX_INSN_SHRS, true, "lli" }, + { "__insn_shrsi", TILEGX_INSN_SHRS, true, "lli" }, + { "__insn_shru", TILEGX_INSN_SHRU, true, "lli" }, + { "__insn_shrui", TILEGX_INSN_SHRU, true, "lli" }, + { "__insn_shrux", TILEGX_INSN_SHRUX, true, "iii" }, + { "__insn_shruxi", TILEGX_INSN_SHRUX, true, "iii" }, + { "__insn_shufflebytes", TILEGX_INSN_SHUFFLEBYTES, true, "llll" }, + { "__insn_shufflebytes1", TILEGX_INSN_SHUFFLEBYTES1, true, "lll" }, + { "__insn_st", TILEGX_INSN_ST, false, "vpl" }, + { "__insn_st1", TILEGX_INSN_ST1, false, "vpl" }, + { "__insn_st2", TILEGX_INSN_ST2, false, "vpl" }, + { "__insn_st4", TILEGX_INSN_ST4, false, "vpl" }, + { "__insn_stnt", TILEGX_INSN_STNT, false, "vpl" }, + { "__insn_stnt1", TILEGX_INSN_STNT1, false, "vpl" }, + { "__insn_stnt2", TILEGX_INSN_STNT2, false, "vpl" }, + { "__insn_stnt4", TILEGX_INSN_STNT4, false, "vpl" }, + { "__insn_sub", TILEGX_INSN_SUB, true, "lll" }, + { "__insn_subx", TILEGX_INSN_SUBX, true, "iii" }, + { "__insn_subxsc", TILEGX_INSN_SUBXSC, true, "iii" }, + { "__insn_tblidxb0", TILEGX_INSN_TBLIDXB0, true, "lll" }, + { "__insn_tblidxb1", TILEGX_INSN_TBLIDXB1, true, "lll" }, + { "__insn_tblidxb2", TILEGX_INSN_TBLIDXB2, true, "lll" }, + { "__insn_tblidxb3", TILEGX_INSN_TBLIDXB3, true, "lll" }, + { "__insn_v1add", TILEGX_INSN_V1ADD, true, "lll" }, + { "__insn_v1addi", TILEGX_INSN_V1ADDI, true, "lll" }, + { "__insn_v1adduc", TILEGX_INSN_V1ADDUC, true, "lll" }, + { "__insn_v1adiffu", TILEGX_INSN_V1ADIFFU, true, "lll" }, + { "__insn_v1avgu", TILEGX_INSN_V1AVGU, true, "lll" }, + { "__insn_v1cmpeq", TILEGX_INSN_V1CMPEQ, true, "lll" }, + { "__insn_v1cmpeqi", TILEGX_INSN_V1CMPEQI, true, "lll" }, + { "__insn_v1cmples", TILEGX_INSN_V1CMPLES, true, "lll" }, + { "__insn_v1cmpleu", TILEGX_INSN_V1CMPLEU, true, "lll" }, + { "__insn_v1cmplts", TILEGX_INSN_V1CMPLTS, true, "lll" }, + { "__insn_v1cmpltsi", TILEGX_INSN_V1CMPLTSI, true, "lll" }, + { "__insn_v1cmpltu", TILEGX_INSN_V1CMPLTU, true, "lll" }, + { "__insn_v1cmpltui", TILEGX_INSN_V1CMPLTUI, true, "lll" }, + { "__insn_v1cmpne", TILEGX_INSN_V1CMPNE, true, "lll" }, + { "__insn_v1ddotpu", TILEGX_INSN_V1DDOTPU, true, "lll" }, + { "__insn_v1ddotpua", TILEGX_INSN_V1DDOTPUA, true, "llll" }, + { "__insn_v1ddotpus", TILEGX_INSN_V1DDOTPUS, true, "lll" }, + { "__insn_v1ddotpusa", TILEGX_INSN_V1DDOTPUSA, true, "llll" }, + { "__insn_v1dotp", TILEGX_INSN_V1DOTP, true, "lll" }, + { "__insn_v1dotpa", TILEGX_INSN_V1DOTPA, true, "llll" }, + { "__insn_v1dotpu", TILEGX_INSN_V1DOTPU, true, "lll" }, + { "__insn_v1dotpua", TILEGX_INSN_V1DOTPUA, true, "llll" }, + { "__insn_v1dotpus", TILEGX_INSN_V1DOTPUS, true, "lll" }, + { "__insn_v1dotpusa", TILEGX_INSN_V1DOTPUSA, true, "llll" }, + { "__insn_v1int_h", TILEGX_INSN_V1INT_H, true, "lll" }, + { "__insn_v1int_l", TILEGX_INSN_V1INT_L, true, "lll" }, + { "__insn_v1maxu", TILEGX_INSN_V1MAXU, true, "lll" }, + { "__insn_v1maxui", TILEGX_INSN_V1MAXUI, true, "lll" }, + { "__insn_v1minu", TILEGX_INSN_V1MINU, true, "lll" }, + { "__insn_v1minui", TILEGX_INSN_V1MINUI, true, "lll" }, + { "__insn_v1mnz", TILEGX_INSN_V1MNZ, true, "lll" }, + { "__insn_v1multu", TILEGX_INSN_V1MULTU, true, "lll" }, + { "__insn_v1mulu", TILEGX_INSN_V1MULU, true, "lll" }, + { "__insn_v1mulus", TILEGX_INSN_V1MULUS, true, "lll" }, + { "__insn_v1mz", TILEGX_INSN_V1MZ, true, "lll" }, + { "__insn_v1sadau", TILEGX_INSN_V1SADAU, true, "llll" }, + { "__insn_v1sadu", TILEGX_INSN_V1SADU, true, "lll" }, + { "__insn_v1shl", TILEGX_INSN_V1SHL, true, "lll" }, + { "__insn_v1shli", TILEGX_INSN_V1SHLI, true, "lll" }, + { "__insn_v1shrs", TILEGX_INSN_V1SHRS, true, "lll" }, + { "__insn_v1shrsi", TILEGX_INSN_V1SHRSI, true, "lll" }, + { "__insn_v1shru", TILEGX_INSN_V1SHRU, true, "lll" }, + { "__insn_v1shrui", TILEGX_INSN_V1SHRUI, true, "lll" }, + { "__insn_v1sub", TILEGX_INSN_V1SUB, true, "lll" }, + { "__insn_v1subuc", TILEGX_INSN_V1SUBUC, true, "lll" }, + { "__insn_v2add", TILEGX_INSN_V2ADD, true, "lll" }, + { "__insn_v2addi", TILEGX_INSN_V2ADDI, true, "lll" }, + { "__insn_v2addsc", TILEGX_INSN_V2ADDSC, true, "lll" }, + { "__insn_v2adiffs", TILEGX_INSN_V2ADIFFS, true, "lll" }, + { "__insn_v2avgs", TILEGX_INSN_V2AVGS, true, "lll" }, + { "__insn_v2cmpeq", TILEGX_INSN_V2CMPEQ, true, "lll" }, + { "__insn_v2cmpeqi", TILEGX_INSN_V2CMPEQI, true, "lll" }, + { "__insn_v2cmples", TILEGX_INSN_V2CMPLES, true, "lll" }, + { "__insn_v2cmpleu", TILEGX_INSN_V2CMPLEU, true, "lll" }, + { "__insn_v2cmplts", TILEGX_INSN_V2CMPLTS, true, "lll" }, + { "__insn_v2cmpltsi", TILEGX_INSN_V2CMPLTSI, true, "lll" }, + { "__insn_v2cmpltu", TILEGX_INSN_V2CMPLTU, true, "lll" }, + { "__insn_v2cmpltui", TILEGX_INSN_V2CMPLTUI, true, "lll" }, + { "__insn_v2cmpne", TILEGX_INSN_V2CMPNE, true, "lll" }, + { "__insn_v2dotp", TILEGX_INSN_V2DOTP, true, "lll" }, + { "__insn_v2dotpa", TILEGX_INSN_V2DOTPA, true, "llll" }, + { "__insn_v2int_h", TILEGX_INSN_V2INT_H, true, "lll" }, + { "__insn_v2int_l", TILEGX_INSN_V2INT_L, true, "lll" }, + { "__insn_v2maxs", TILEGX_INSN_V2MAXS, true, "lll" }, + { "__insn_v2maxsi", TILEGX_INSN_V2MAXSI, true, "lll" }, + { "__insn_v2mins", TILEGX_INSN_V2MINS, true, "lll" }, + { "__insn_v2minsi", TILEGX_INSN_V2MINSI, true, "lll" }, + { "__insn_v2mnz", TILEGX_INSN_V2MNZ, true, "lll" }, + { "__insn_v2mulfsc", TILEGX_INSN_V2MULFSC, true, "lll" }, + { "__insn_v2muls", TILEGX_INSN_V2MULS, true, "lll" }, + { "__insn_v2mults", TILEGX_INSN_V2MULTS, true, "lll" }, + { "__insn_v2mz", TILEGX_INSN_V2MZ, true, "lll" }, + { "__insn_v2packh", TILEGX_INSN_V2PACKH, true, "lll" }, + { "__insn_v2packl", TILEGX_INSN_V2PACKL, true, "lll" }, + { "__insn_v2packuc", TILEGX_INSN_V2PACKUC, true, "lll" }, + { "__insn_v2sadas", TILEGX_INSN_V2SADAS, true, "llll" }, + { "__insn_v2sadau", TILEGX_INSN_V2SADAU, true, "llll" }, + { "__insn_v2sads", TILEGX_INSN_V2SADS, true, "lll" }, + { "__insn_v2sadu", TILEGX_INSN_V2SADU, true, "lll" }, + { "__insn_v2shl", TILEGX_INSN_V2SHL, true, "lll" }, + { "__insn_v2shli", TILEGX_INSN_V2SHLI, true, "lll" }, + { "__insn_v2shlsc", TILEGX_INSN_V2SHLSC, true, "lll" }, + { "__insn_v2shrs", TILEGX_INSN_V2SHRS, true, "lll" }, + { "__insn_v2shrsi", TILEGX_INSN_V2SHRSI, true, "lll" }, + { "__insn_v2shru", TILEGX_INSN_V2SHRU, true, "lll" }, + { "__insn_v2shrui", TILEGX_INSN_V2SHRUI, true, "lll" }, + { "__insn_v2sub", TILEGX_INSN_V2SUB, true, "lll" }, + { "__insn_v2subsc", TILEGX_INSN_V2SUBSC, true, "lll" }, + { "__insn_v4add", TILEGX_INSN_V4ADD, true, "lll" }, + { "__insn_v4addsc", TILEGX_INSN_V4ADDSC, true, "lll" }, + { "__insn_v4int_h", TILEGX_INSN_V4INT_H, true, "lll" }, + { "__insn_v4int_l", TILEGX_INSN_V4INT_L, true, "lll" }, + { "__insn_v4packsc", TILEGX_INSN_V4PACKSC, true, "lll" }, + { "__insn_v4shl", TILEGX_INSN_V4SHL, true, "lll" }, + { "__insn_v4shlsc", TILEGX_INSN_V4SHLSC, true, "lll" }, + { "__insn_v4shrs", TILEGX_INSN_V4SHRS, true, "lll" }, + { "__insn_v4shru", TILEGX_INSN_V4SHRU, true, "lll" }, + { "__insn_v4sub", TILEGX_INSN_V4SUB, true, "lll" }, + { "__insn_v4subsc", TILEGX_INSN_V4SUBSC, true, "lll" }, + { "__insn_wh64", TILEGX_INSN_WH64, false, "vp" }, + { "__insn_xor", TILEGX_INSN_XOR, true, "lll" }, + { "__insn_xori", TILEGX_INSN_XOR, true, "lll" }, + { "__tile_network_barrier", TILEGX_NETWORK_BARRIER, false, "v" }, + { "__tile_idn0_receive", TILEGX_IDN0_RECEIVE, false, "l" }, + { "__tile_idn1_receive", TILEGX_IDN1_RECEIVE, false, "l" }, + { "__tile_idn_send", TILEGX_IDN_SEND, false, "vl" }, + { "__tile_udn0_receive", TILEGX_UDN0_RECEIVE, false, "l" }, + { "__tile_udn1_receive", TILEGX_UDN1_RECEIVE, false, "l" }, + { "__tile_udn2_receive", TILEGX_UDN2_RECEIVE, false, "l" }, + { "__tile_udn3_receive", TILEGX_UDN3_RECEIVE, false, "l" }, + { "__tile_udn_send", TILEGX_UDN_SEND, false, "vl" }, +}; + + +/* Convert a character in a builtin type string to a tree type. */ +static tree +char_to_type (char c) +{ + static tree volatile_ptr_type_node = NULL; + static tree volatile_const_ptr_type_node = NULL; + + if (volatile_ptr_type_node == NULL) + { + volatile_ptr_type_node = + build_pointer_type (build_qualified_type (void_type_node, + TYPE_QUAL_VOLATILE)); + volatile_const_ptr_type_node = + build_pointer_type (build_qualified_type (void_type_node, + TYPE_QUAL_CONST + | TYPE_QUAL_VOLATILE)); + } + + switch (c) + { + case 'v': + return void_type_node; + case 'i': + return unsigned_type_node; + case 'l': + return long_long_unsigned_type_node; + case 'p': + return volatile_ptr_type_node; + case 'k': + return volatile_const_ptr_type_node; + default: + gcc_unreachable (); + } +} + + +/* Implement TARGET_INIT_BUILTINS. */ +static void +tilegx_init_builtins (void) +{ + size_t i; + + for (i = 0; i < ARRAY_SIZE (tilegx_builtins); i++) + { + const struct tilegx_builtin_def *p = &tilegx_builtins[i]; + tree ftype, ret_type, arg_type_list = void_list_node; + tree decl; + int j; + + for (j = strlen (p->type) - 1; j > 0; j--) + { + arg_type_list = + tree_cons (NULL_TREE, char_to_type (p->type[j]), arg_type_list); + } + + ret_type = char_to_type (p->type[0]); + + ftype = build_function_type (ret_type, arg_type_list); + + decl = add_builtin_function (p->name, ftype, p->code, BUILT_IN_MD, + NULL, NULL); + + if (p->is_const) + TREE_READONLY (decl) = 1; + TREE_NOTHROW (decl) = 1; + + if (tilegx_builtin_info[p->code].fndecl == NULL) + tilegx_builtin_info[p->code].fndecl = decl; + } +} + + +/* Implement TARGET_EXPAND_BUILTIN. */ +static rtx +tilegx_expand_builtin (tree exp, + rtx target, + rtx subtarget ATTRIBUTE_UNUSED, + enum machine_mode mode ATTRIBUTE_UNUSED, + int ignore ATTRIBUTE_UNUSED) +{ +#define MAX_BUILTIN_ARGS 4 + + tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0); + unsigned int fcode = DECL_FUNCTION_CODE (fndecl); + tree arg; + call_expr_arg_iterator iter; + enum insn_code icode; + rtx op[MAX_BUILTIN_ARGS + 1], pat; + int opnum; + bool nonvoid; + insn_gen_fn fn; + + if (fcode >= TILEGX_BUILTIN_max) + internal_error ("bad builtin fcode"); + icode = tilegx_builtin_info[fcode].icode; + if (icode == 0) + internal_error ("bad builtin icode"); + + nonvoid = TREE_TYPE (TREE_TYPE (fndecl)) != void_type_node; + + opnum = nonvoid; + FOR_EACH_CALL_EXPR_ARG (arg, iter, exp) + { + const struct insn_operand_data *insn_op; + + if (arg == error_mark_node) + return NULL_RTX; + if (opnum > MAX_BUILTIN_ARGS) + return NULL_RTX; + + insn_op = &insn_data[icode].operand[opnum]; + + op[opnum] = expand_expr (arg, NULL_RTX, insn_op->mode, EXPAND_NORMAL); + + if (!(*insn_op->predicate) (op[opnum], insn_op->mode)) + { + enum machine_mode opmode = insn_op->mode; + + /* pointer_operand and pmode_register_operand operands do + not specify a mode, so use the operand's mode instead + (which should always be right by the time we get here, + except for constants, which are VOIDmode). */ + if (opmode == VOIDmode) + { + enum machine_mode m = GET_MODE (op[opnum]); + gcc_assert (m == Pmode || m == VOIDmode); + opmode = Pmode; + } + + op[opnum] = copy_to_mode_reg (opmode, op[opnum]); + } + + if (!(*insn_op->predicate) (op[opnum], insn_op->mode)) + { + /* We still failed to meet the predicate even after moving + into a register. Assume we needed an immediate. */ + error_at (EXPR_LOCATION (exp), + "operand must be an immediate of the right size"); + return const0_rtx; + } + + opnum++; + } + + if (nonvoid) + { + enum machine_mode tmode = insn_data[icode].operand[0].mode; + if (!target + || GET_MODE (target) != tmode + || !(*insn_data[icode].operand[0].predicate) (target, tmode)) + { + if (tmode == VOIDmode) + { + /* get the mode from the return type. */ + tmode = TYPE_MODE (TREE_TYPE (TREE_TYPE (fndecl))); + } + target = gen_reg_rtx (tmode); + } + op[0] = target; + } + + fn = GEN_FCN (icode); + switch (opnum) + { + case 0: + pat = fn (NULL_RTX); + break; + case 1: + pat = fn (op[0]); + break; + case 2: + pat = fn (op[0], op[1]); + break; + case 3: + pat = fn (op[0], op[1], op[2]); + break; + case 4: + pat = fn (op[0], op[1], op[2], op[3]); + break; + case 5: + pat = fn (op[0], op[1], op[2], op[3], op[4]); + break; + default: + gcc_unreachable (); + } + if (!pat) + return NULL_RTX; + + /* If we are generating a prefetch, tell the scheduler not to move + it around. */ + if (GET_CODE (pat) == PREFETCH) + PREFETCH_SCHEDULE_BARRIER_P (pat) = true; + + emit_insn (pat); + + if (nonvoid) + return target; + else + return const0_rtx; +} + + +/* Implement TARGET_BUILTIN_DECL. */ +static tree +tilegx_builtin_decl (unsigned code, bool initialize_p ATTRIBUTE_UNUSED) +{ + if (code >= TILEGX_BUILTIN_max) + return error_mark_node; + + return tilegx_builtin_info[code].fndecl; +} + + + +/* Stack frames */ + +/* Return whether REGNO needs to be saved in the stack frame. */ +static bool +need_to_save_reg (unsigned int regno) +{ + if (!fixed_regs[regno] && !call_used_regs[regno] + && df_regs_ever_live_p (regno)) + return true; + + if (flag_pic + && (regno == PIC_OFFSET_TABLE_REGNUM + || regno == TILEGX_PIC_TEXT_LABEL_REGNUM) + && (crtl->uses_pic_offset_table || crtl->saves_all_registers)) + return true; + + if (crtl->calls_eh_return) + { + unsigned i; + for (i = 0; EH_RETURN_DATA_REGNO (i) != INVALID_REGNUM; i++) + { + if (regno == EH_RETURN_DATA_REGNO (i)) + return true; + } + } + + return false; +} + + +/* Return the size of the register savev area. This function is only + correct starting with local register allocation */ +static int +tilegx_saved_regs_size (void) +{ + int reg_save_size = 0; + int regno; + int offset_to_frame; + int align_mask; + + for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) + if (need_to_save_reg (regno)) + reg_save_size += UNITS_PER_WORD; + + /* Pad out the register save area if necessary to make + frame_pointer_rtx be as aligned as the stack pointer. */ + offset_to_frame = crtl->args.pretend_args_size + reg_save_size; + align_mask = (STACK_BOUNDARY / BITS_PER_UNIT) - 1; + reg_save_size += (-offset_to_frame) & align_mask; + + return reg_save_size; +} + + +/* Round up frame size SIZE. */ +static int +round_frame_size (int size) +{ + return ((size + STACK_BOUNDARY / BITS_PER_UNIT - 1) + & -STACK_BOUNDARY / BITS_PER_UNIT); +} + + +/* Emit a store in the stack frame to save REGNO at address ADDR, and + emit the corresponding REG_CFA_OFFSET note described by CFA and + CFA_OFFSET. Return the emitted insn. */ +static rtx +frame_emit_store (int regno, int regno_note, rtx addr, rtx cfa, + int cfa_offset) +{ + rtx reg = gen_rtx_REG (DImode, regno); + rtx mem = gen_frame_mem (DImode, addr); + rtx mov = gen_movdi (mem, reg); + + /* Describe what just happened in a way that dwarf understands. We + use temporary registers to hold the address to make scheduling + easier, and use the REG_CFA_OFFSET to describe the address as an + offset from the CFA. */ + rtx reg_note = gen_rtx_REG (DImode, regno_note); + rtx cfa_relative_addr = gen_rtx_PLUS (Pmode, cfa, GEN_INT (cfa_offset)); + rtx cfa_relative_mem = gen_frame_mem (DImode, cfa_relative_addr); + rtx real = gen_rtx_SET (VOIDmode, cfa_relative_mem, reg_note); + add_reg_note (mov, REG_CFA_OFFSET, real); + + return emit_insn (mov); +} + + +/* Emit a load in the stack frame to load REGNO from address ADDR. + Add a REG_CFA_RESTORE note to CFA_RESTORES if CFA_RESTORES is + non-null. Return the emitted insn. */ +static rtx +frame_emit_load (int regno, rtx addr, rtx *cfa_restores) +{ + rtx reg = gen_rtx_REG (DImode, regno); + rtx mem = gen_frame_mem (DImode, addr); + if (cfa_restores) + *cfa_restores = alloc_reg_note (REG_CFA_RESTORE, reg, *cfa_restores); + return emit_insn (gen_movdi (reg, mem)); +} + + +/* Helper function to set RTX_FRAME_RELATED_P on instructions, + including sequences. */ +static rtx +set_frame_related_p (void) +{ + rtx seq = get_insns (); + rtx insn; + + end_sequence (); + + if (!seq) + return NULL_RTX; + + if (INSN_P (seq)) + { + insn = seq; + while (insn != NULL_RTX) + { + RTX_FRAME_RELATED_P (insn) = 1; + insn = NEXT_INSN (insn); + } + seq = emit_insn (seq); + } + else + { + seq = emit_insn (seq); + RTX_FRAME_RELATED_P (seq) = 1; + } + return seq; +} + + +#define FRP(exp) (start_sequence (), exp, set_frame_related_p ()) + +/* This emits code for 'sp += offset'. + + The ABI only allows us to modify 'sp' in a single 'addi' or + 'addli', so the backtracer understands it. Larger amounts cannot + use those instructions, so are added by placing the offset into a + large register and using 'add'. + + This happens after reload, so we need to expand it ourselves. */ +static rtx +emit_sp_adjust (int offset, int *next_scratch_regno, bool frame_related, + rtx reg_notes) +{ + rtx to_add; + rtx imm_rtx = GEN_INT (offset); + + rtx insn; + if (satisfies_constraint_J (imm_rtx)) + { + /* We can add this using a single immediate add. */ + to_add = imm_rtx; + } + else + { + rtx tmp = gen_rtx_REG (Pmode, (*next_scratch_regno)--); + tilegx_expand_set_const64 (tmp, imm_rtx); + to_add = tmp; + } + + /* Actually adjust the stack pointer. */ + if (TARGET_32BIT) + insn = gen_sp_adjust_32bit (stack_pointer_rtx, stack_pointer_rtx, to_add); + else + insn = gen_sp_adjust (stack_pointer_rtx, stack_pointer_rtx, to_add); + + insn = emit_insn (insn); + REG_NOTES (insn) = reg_notes; + + /* Describe what just happened in a way that dwarf understands. */ + if (frame_related) + { + rtx real = gen_rtx_SET (VOIDmode, stack_pointer_rtx, + gen_rtx_PLUS (Pmode, stack_pointer_rtx, + imm_rtx)); + RTX_FRAME_RELATED_P (insn) = 1; + add_reg_note (insn, REG_CFA_ADJUST_CFA, real); + } + + return insn; +} + + +/* Return whether the current function is leaf. This takes into + account whether the function calls tls_get_addr. */ +static bool +tilegx_current_function_is_leaf (void) +{ + return crtl->is_leaf && !cfun->machine->calls_tls_get_addr; +} + + +/* Return the frame size. */ +static int +compute_total_frame_size (void) +{ + int total_size = (get_frame_size () + tilegx_saved_regs_size () + + crtl->outgoing_args_size + + crtl->args.pretend_args_size); + + if (!tilegx_current_function_is_leaf () || cfun->calls_alloca) + { + /* Make room for save area in callee. */ + total_size += STACK_POINTER_OFFSET; + } + + return round_frame_size (total_size); +} + + +/* Return nonzero if this function is known to have a null epilogue. + This allows the optimizer to omit jumps to jumps if no stack was + created. */ +bool +tilegx_can_use_return_insn_p (void) +{ + return (reload_completed + && cfun->static_chain_decl == 0 + && compute_total_frame_size () == 0 + && tilegx_current_function_is_leaf () + && !crtl->profile && !df_regs_ever_live_p (TILEGX_LINK_REGNUM)); +} + + +/* Returns an rtx for a stack slot at 'FP + offset_from_fp'. If there + is a frame pointer, it computes the value relative to + that. Otherwise it uses the stack pointer. */ +static rtx +compute_frame_addr (int offset_from_fp, int *next_scratch_regno) +{ + rtx base_reg_rtx, tmp_reg_rtx, offset_rtx; + int offset_from_base; + + if (frame_pointer_needed) + { + base_reg_rtx = hard_frame_pointer_rtx; + offset_from_base = offset_from_fp; + } + else + { + int offset_from_sp = compute_total_frame_size () + offset_from_fp; + offset_from_base = offset_from_sp; + base_reg_rtx = stack_pointer_rtx; + } + + if (offset_from_base == 0) + return base_reg_rtx; + + /* Compute the new value of the stack pointer. */ + tmp_reg_rtx = gen_rtx_REG (Pmode, (*next_scratch_regno)--); + offset_rtx = GEN_INT (offset_from_base); + + if (!add_operand (offset_rtx, Pmode)) + { + expand_set_cint64 (tmp_reg_rtx, offset_rtx); + offset_rtx = tmp_reg_rtx; + } + + emit_insn (gen_rtx_SET (VOIDmode, tmp_reg_rtx, + gen_rtx_PLUS (Pmode, base_reg_rtx, offset_rtx))); + + return tmp_reg_rtx; +} + + +/* The stack frame looks like this: + +-------------+ + | ... | + | incoming | + | stack args | + AP -> +-------------+ + | caller's HFP| + +-------------+ + | lr save | + HFP -> +-------------+ + | var args | + | reg save | crtl->args.pretend_args_size bytes + +-------------+ + | ... | + | saved regs | tilegx_saved_regs_size() bytes + FP -> +-------------+ + | ... | + | vars | get_frame_size() bytes + +-------------+ + | ... | + | outgoing | + | stack args | crtl->outgoing_args_size bytes + +-------------+ + | HFP | ptr_size bytes (only here if nonleaf / alloca) + +-------------+ + | callee lr | ptr_size bytes (only here if nonleaf / alloca) + | save | + SP -> +-------------+ + + HFP == incoming SP. + + For functions with a frame larger than 32767 bytes, or which use + alloca (), r52 is used as a frame pointer. Otherwise there is no + frame pointer. + + FP is saved at SP+ptr_size before calling a subroutine so the callee + can chain. */ +void +tilegx_expand_prologue (void) +{ +#define ROUND_ROBIN_SIZE 4 + /* We round-robin through four scratch registers to hold temporary + addresses for saving registers, to make instruction scheduling + easier. */ + rtx reg_save_addr[ROUND_ROBIN_SIZE] = { + NULL_RTX, NULL_RTX, NULL_RTX, NULL_RTX + }; + rtx insn, cfa; + unsigned int which_scratch; + int offset, start_offset, regno; + + /* A register that holds a copy of the incoming fp. */ + int fp_copy_regno = -1; + + /* A register that holds a copy of the incoming sp. */ + int sp_copy_regno = -1; + + /* Next scratch register number to hand out (postdecrementing). */ + int next_scratch_regno = 29; + + int total_size = compute_total_frame_size (); + + if (flag_stack_usage_info) + current_function_static_stack_size = total_size; + + /* Save lr first in its special location because code after this + might use the link register as a scratch register. */ + if (df_regs_ever_live_p (TILEGX_LINK_REGNUM) || crtl->calls_eh_return) + FRP (frame_emit_store (TILEGX_LINK_REGNUM, TILEGX_LINK_REGNUM, + stack_pointer_rtx, stack_pointer_rtx, 0)); + + if (total_size == 0) + { + /* Load the PIC register if needed. */ + if (flag_pic && crtl->uses_pic_offset_table) + load_pic_register (false); + + return; + } + + cfa = stack_pointer_rtx; + + if (frame_pointer_needed) + { + fp_copy_regno = next_scratch_regno--; + + /* Copy the old frame pointer aside so we can save it later. */ + insn = + FRP (emit_move_insn (gen_rtx_REG (word_mode, fp_copy_regno), + gen_lowpart (word_mode, hard_frame_pointer_rtx))); + add_reg_note (insn, REG_CFA_REGISTER, NULL_RTX); + + /* Set up the frame pointer. */ + insn = FRP (emit_move_insn (hard_frame_pointer_rtx, stack_pointer_rtx)); + add_reg_note (insn, REG_CFA_DEF_CFA, hard_frame_pointer_rtx); + cfa = hard_frame_pointer_rtx; + REGNO_POINTER_ALIGN (HARD_FRAME_POINTER_REGNUM) = STACK_BOUNDARY; + + /* fp holds a copy of the incoming sp, in case we need to store + it. */ + sp_copy_regno = HARD_FRAME_POINTER_REGNUM; + } + else if (!tilegx_current_function_is_leaf ()) + { + /* Copy the old stack pointer aside so we can save it later. */ + sp_copy_regno = next_scratch_regno--; + emit_move_insn (gen_rtx_REG (Pmode, sp_copy_regno), + stack_pointer_rtx); + } + + if (tilegx_current_function_is_leaf ()) + { + /* No need to store chain pointer to caller's frame. */ + emit_sp_adjust (-total_size, &next_scratch_regno, + !frame_pointer_needed, NULL_RTX); + } + else + { + /* Save the frame pointer (incoming sp value) to support + backtracing. First we need to create an rtx with the store + address. */ + rtx chain_addr = gen_rtx_REG (Pmode, next_scratch_regno--); + rtx size_rtx = GEN_INT (-(total_size - UNITS_PER_WORD)); + + if (add_operand (size_rtx, Pmode)) + { + /* Expose more parallelism by computing this value from the + original stack pointer, not the one after we have pushed + the frame. */ + rtx p = gen_rtx_PLUS (Pmode, stack_pointer_rtx, size_rtx); + emit_insn (gen_rtx_SET (VOIDmode, chain_addr, p)); + emit_sp_adjust (-total_size, &next_scratch_regno, + !frame_pointer_needed, NULL_RTX); + } + else + { + /* The stack frame is large, so just store the incoming sp + value at *(new_sp + UNITS_PER_WORD). */ + rtx p; + emit_sp_adjust (-total_size, &next_scratch_regno, + !frame_pointer_needed, NULL_RTX); + p = gen_rtx_PLUS (Pmode, stack_pointer_rtx, + GEN_INT (UNITS_PER_WORD)); + emit_insn (gen_rtx_SET (VOIDmode, chain_addr, p)); + } + + /* Save our frame pointer for backtrace chaining. */ + emit_insn (gen_movdi (gen_frame_mem (DImode, chain_addr), + gen_rtx_REG (DImode, sp_copy_regno))); + } + + /* Compute where to start storing registers we need to save. */ + start_offset = -crtl->args.pretend_args_size - UNITS_PER_WORD; + offset = start_offset; + + /* Store all registers that need saving. */ + which_scratch = 0; + for (regno = FIRST_PSEUDO_REGISTER - 1; regno >= 0; regno--) + if (need_to_save_reg (regno)) + { + rtx r = reg_save_addr[which_scratch]; + int from_regno; + int cfa_offset = frame_pointer_needed ? offset : total_size + offset; + + if (r == NULL_RTX) + { + int prev_scratch_regno = next_scratch_regno; + r = compute_frame_addr (offset, &next_scratch_regno); + if (prev_scratch_regno != next_scratch_regno) + reg_save_addr[which_scratch] = r; + } + else + { + /* Advance to the next stack slot to store this + register. */ + int stride = ROUND_ROBIN_SIZE * -UNITS_PER_WORD; + rtx p = gen_rtx_PLUS (Pmode, r, GEN_INT (stride)); + emit_insn (gen_rtx_SET (VOIDmode, r, p)); + } + + /* Save this register to the stack (but use the old fp value + we copied aside if appropriate). */ + from_regno = + (fp_copy_regno >= 0 && regno == HARD_FRAME_POINTER_REGNUM) + ? fp_copy_regno : regno; + FRP (frame_emit_store (from_regno, regno, r, cfa, cfa_offset)); + + offset -= UNITS_PER_WORD; + which_scratch = (which_scratch + 1) % ROUND_ROBIN_SIZE; + } + + /* If profiling, force that to happen after the frame is set up. */ + if (crtl->profile) + emit_insn (gen_blockage ()); + + /* Load the PIC register if needed. */ + if (flag_pic && crtl->uses_pic_offset_table) + load_pic_register (false); +} + + +/* Implement the epilogue and sibcall_epilogue patterns. SIBCALL_P is + true for a sibcall_epilogue pattern, and false for an epilogue + pattern. */ +void +tilegx_expand_epilogue (bool sibcall_p) +{ + /* We round-robin through four scratch registers to hold temporary + addresses for saving registers, to make instruction scheduling + easier. */ + rtx reg_save_addr[ROUND_ROBIN_SIZE] = { + NULL_RTX, NULL_RTX, NULL_RTX, NULL_RTX + }; + rtx last_insn, insn; + unsigned int which_scratch; + int offset, start_offset, regno; + rtx cfa_restores = NULL_RTX; + + /* A register that holds a copy of the incoming fp. */ + int fp_copy_regno = -1; + + /* Next scratch register number to hand out (postdecrementing). */ + int next_scratch_regno = 29; + + int total_size = compute_total_frame_size (); + + last_insn = get_last_insn (); + + /* Load lr first since we are going to need it first. */ + insn = NULL; + if (df_regs_ever_live_p (TILEGX_LINK_REGNUM)) + { + insn = frame_emit_load (TILEGX_LINK_REGNUM, + compute_frame_addr (0, &next_scratch_regno), + &cfa_restores); + } + + if (total_size == 0) + { + if (insn) + { + RTX_FRAME_RELATED_P (insn) = 1; + REG_NOTES (insn) = cfa_restores; + } + goto done; + } + + /* Compute where to start restoring registers. */ + start_offset = -crtl->args.pretend_args_size - UNITS_PER_WORD; + offset = start_offset; + + if (frame_pointer_needed) + fp_copy_regno = next_scratch_regno--; + + /* Restore all callee-saved registers. */ + which_scratch = 0; + for (regno = FIRST_PSEUDO_REGISTER - 1; regno >= 0; regno--) + if (need_to_save_reg (regno)) + { + rtx r = reg_save_addr[which_scratch]; + if (r == NULL_RTX) + { + r = compute_frame_addr (offset, &next_scratch_regno); + reg_save_addr[which_scratch] = r; + } + else + { + /* Advance to the next stack slot to store this register. */ + int stride = ROUND_ROBIN_SIZE * -UNITS_PER_WORD; + rtx p = gen_rtx_PLUS (Pmode, r, GEN_INT (stride)); + emit_insn (gen_rtx_SET (VOIDmode, r, p)); + } + + if (fp_copy_regno >= 0 && regno == HARD_FRAME_POINTER_REGNUM) + frame_emit_load (fp_copy_regno, r, NULL); + else + frame_emit_load (regno, r, &cfa_restores); + + offset -= UNITS_PER_WORD; + which_scratch = (which_scratch + 1) % ROUND_ROBIN_SIZE; + } + + if (!tilegx_current_function_is_leaf ()) + cfa_restores = + alloc_reg_note (REG_CFA_RESTORE, stack_pointer_rtx, cfa_restores); + + emit_insn (gen_blockage ()); + + if (frame_pointer_needed) + { + /* Restore the old stack pointer by copying from the frame + pointer. */ + if (TARGET_32BIT) + { + insn = emit_insn (gen_sp_restore_32bit (stack_pointer_rtx, + hard_frame_pointer_rtx)); + } + else + { + insn = emit_insn (gen_sp_restore (stack_pointer_rtx, + hard_frame_pointer_rtx)); + } + RTX_FRAME_RELATED_P (insn) = 1; + REG_NOTES (insn) = cfa_restores; + add_reg_note (insn, REG_CFA_DEF_CFA, stack_pointer_rtx); + } + else + { + insn = emit_sp_adjust (total_size, &next_scratch_regno, true, + cfa_restores); + } + + if (crtl->calls_eh_return) + { + if (TARGET_32BIT) + emit_insn (gen_sp_adjust_32bit (stack_pointer_rtx, stack_pointer_rtx, + EH_RETURN_STACKADJ_RTX)); + else + emit_insn (gen_sp_adjust (stack_pointer_rtx, stack_pointer_rtx, + EH_RETURN_STACKADJ_RTX)); + } + + /* Restore the old frame pointer. */ + if (frame_pointer_needed) + { + insn = emit_move_insn (gen_lowpart (DImode, hard_frame_pointer_rtx), + gen_rtx_REG (DImode, fp_copy_regno)); + add_reg_note (insn, REG_CFA_RESTORE, hard_frame_pointer_rtx); + } + + /* Mark the pic registers as live outside of the function. */ + if (flag_pic) + { + emit_use (cfun->machine->text_label_rtx); + emit_use (cfun->machine->got_rtx); + } + +done: + if (!sibcall_p) + { + emit_jump_insn (gen__return ()); + } + else + { + emit_use (gen_rtx_REG (Pmode, TILEGX_LINK_REGNUM)); + } + + /* Mark all insns we just emitted as frame-related. */ + for (; last_insn != NULL_RTX; last_insn = next_insn (last_insn)) + RTX_FRAME_RELATED_P (last_insn) = 1; +} + +#undef ROUND_ROBIN_SIZE + + +/* Implement INITIAL_ELIMINATION_OFFSET. */ +int +tilegx_initial_elimination_offset (int from, int to) +{ + int total_size = compute_total_frame_size (); + + if (from == FRAME_POINTER_REGNUM && to == STACK_POINTER_REGNUM) + { + return (total_size - crtl->args.pretend_args_size + - tilegx_saved_regs_size ()); + } + else if (from == FRAME_POINTER_REGNUM && to == HARD_FRAME_POINTER_REGNUM) + { + return -(crtl->args.pretend_args_size + tilegx_saved_regs_size ()); + } + else if (from == ARG_POINTER_REGNUM && to == STACK_POINTER_REGNUM) + { + return STACK_POINTER_OFFSET + total_size; + } + else if (from == ARG_POINTER_REGNUM && to == HARD_FRAME_POINTER_REGNUM) + { + return STACK_POINTER_OFFSET; + } + else + gcc_unreachable (); +} + + +/* Return an RTX indicating where the return address to the calling + function can be found. */ +rtx +tilegx_return_addr (int count, rtx frame ATTRIBUTE_UNUSED) +{ + if (count != 0) + return const0_rtx; + + return get_hard_reg_initial_val (Pmode, TILEGX_LINK_REGNUM); +} + + +/* Implement EH_RETURN_HANDLER_RTX. The MEM needs to be volatile to + prevent it from being deleted. */ +rtx +tilegx_eh_return_handler_rtx (void) +{ + rtx tmp = gen_frame_mem (Pmode, hard_frame_pointer_rtx); + MEM_VOLATILE_P (tmp) = true; + return tmp; +} + + + +/* Registers */ + +/* Implemnet TARGET_CONDITIONAL_REGISTER_USAGE. */ +static void +tilegx_conditional_register_usage (void) +{ + global_regs[TILEGX_NETORDER_REGNUM] = 1; + /* TILEGX_PIC_TEXT_LABEL_REGNUM is conditionally used. It is a + member of fixed_regs, and therefore must be member of + call_used_regs, but it is not a member of call_really_used_regs[] + because it is not clobbered by a call. */ + if (TILEGX_PIC_TEXT_LABEL_REGNUM != INVALID_REGNUM) + { + fixed_regs[TILEGX_PIC_TEXT_LABEL_REGNUM] = 1; + call_used_regs[TILEGX_PIC_TEXT_LABEL_REGNUM] = 1; + } + if (PIC_OFFSET_TABLE_REGNUM != INVALID_REGNUM) + { + fixed_regs[PIC_OFFSET_TABLE_REGNUM] = 1; + call_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1; + } +} + + +/* Implement TARGET_FRAME_POINTER_REQUIRED. */ +static bool +tilegx_frame_pointer_required (void) +{ + return crtl->calls_eh_return || cfun->calls_alloca; +} + + + +/* Scheduling and reorg */ + +/* Return the length of INSN. LENGTH is the initial length computed + by attributes in the machine-description file. This is where we + account for bundles. */ +int +tilegx_adjust_insn_length (rtx insn, int length) +{ + enum machine_mode mode = GET_MODE (insn); + + /* A non-termininating instruction in a bundle has length 0. */ + if (mode == SImode) + return 0; + + /* By default, there is not length adjustment. */ + return length; +} + + +/* Implement TARGET_SCHED_ISSUE_RATE. */ +static int +tilegx_issue_rate (void) +{ + return 3; +} + + +/* Return the rtx for the jump target. */ +static rtx +get_jump_target (rtx branch) +{ + if (CALL_P (branch)) + { + rtx call; + call = PATTERN (branch); + + if (GET_CODE (call) == PARALLEL) + call = XVECEXP (call, 0, 0); + + if (GET_CODE (call) == SET) + call = SET_SRC (call); + + if (GET_CODE (call) == CALL) + return XEXP (XEXP (call, 0), 0); + } + return 0; +} + + +/* Implement TARGET_SCHED_ADJUST_COST. */ +static int +tilegx_sched_adjust_cost (rtx insn, rtx link, rtx dep_insn, int cost) +{ + /* If we have a true dependence, INSN is a call, and DEP_INSN + defines a register that is needed by the call (argument or stack + pointer) , set its latency to 0 so that it can be bundled with + the call. Explicitly check for and exclude the case when + DEP_INSN defines the target of the jump. */ + if (CALL_P (insn) && REG_NOTE_KIND (link) == REG_DEP_TRUE) + { + rtx target = get_jump_target (insn); + if (!REG_P (target) || !set_of (target, dep_insn)) + return 0; + } + + return cost; +} + + +/* Skip over irrelevant NOTEs and such and look for the next insn we + would consider bundling. */ +static rtx +next_insn_to_bundle (rtx r, rtx end) +{ + for (; r != end; r = NEXT_INSN (r)) + { + if (NONDEBUG_INSN_P (r) + && GET_CODE (PATTERN (r)) != USE + && GET_CODE (PATTERN (r)) != CLOBBER) + return r; + } + + return NULL_RTX; +} + + +/* Go through all insns, and use the information generated during + scheduling to generate SEQUENCEs to represent bundles of + instructions issued simultaneously. */ +static void +tilegx_gen_bundles (void) +{ + basic_block bb; + FOR_EACH_BB_FN (bb, cfun) + { + rtx insn, next, prev; + rtx end = NEXT_INSN (BB_END (bb)); + + prev = NULL_RTX; + for (insn = next_insn_to_bundle (BB_HEAD (bb), end); insn; + prev = insn, insn = next) + { + next = next_insn_to_bundle (NEXT_INSN (insn), end); + + /* Never wrap {} around inline asm. */ + if (GET_CODE (PATTERN (insn)) != ASM_INPUT) + { + if (next == NULL_RTX || GET_MODE (next) == TImode + /* NOTE: The scheduler incorrectly believes a call + insn can execute in the same cycle as the insn + after the call. This is of course impossible. + Really we need to fix the scheduler somehow, so + the code after the call gets scheduled + optimally. */ + || CALL_P (insn)) + { + /* Mark current insn as the end of a bundle. */ + PUT_MODE (insn, QImode); + } + else + { + /* Mark it as part of a bundle. */ + PUT_MODE (insn, SImode); + } + } + + /* Delete barrier insns, because they can mess up the + emitting of bundle braces. If it is end-of-bundle, then + the previous insn must be marked end-of-bundle. */ + if (get_attr_type (insn) == TYPE_NOTHING) { + if (GET_MODE (insn) == QImode && prev != NULL + && GET_MODE (prev) == SImode) + { + PUT_MODE (prev, QImode); + } + delete_insn (insn); + } + } + } +} + + +/* Replace OLD_INSN with NEW_INSN. */ +static void +replace_insns (rtx old_insn, rtx new_insns) +{ + if (new_insns) + emit_insn_before (new_insns, old_insn); + + delete_insn (old_insn); +} + + +/* Returns true if INSN is the first instruction of a pc-relative + address compuatation. */ +static bool +match_pcrel_step1 (rtx insn) +{ + rtx pattern = PATTERN (insn); + rtx src; + + if (GET_CODE (pattern) != SET) + return false; + + src = SET_SRC (pattern); + + return (GET_CODE (src) == CONST + && GET_CODE (XEXP (src, 0)) == UNSPEC + && XINT (XEXP (src, 0), 1) == UNSPEC_HW1_LAST_PCREL); +} + + +/* Do the first replacement step in tilegx_fixup_pcrel_references. */ +static void +replace_mov_pcrel_step1 (rtx insn) +{ + rtx pattern = PATTERN (insn); + rtx unspec; + rtx opnds[2]; + rtx new_insns; + + gcc_assert (GET_CODE (pattern) == SET); + opnds[0] = SET_DEST (pattern); + + gcc_assert (GET_CODE (SET_SRC (pattern)) == CONST); + + unspec = XEXP (SET_SRC (pattern), 0); + gcc_assert (GET_CODE (unspec) == UNSPEC); + gcc_assert (XINT (unspec, 1) == UNSPEC_HW1_LAST_PCREL); + opnds[1] = XVECEXP (unspec, 0, 0); + + /* We only need to replace SYMBOL_REFs, not LABEL_REFs. */ + if (GET_CODE (opnds[1]) != SYMBOL_REF) + return; + + start_sequence (); + + if (flag_pic != 1) + { + if (TARGET_32BIT) + emit_insn (gen_mov_got32_step1_32bit (opnds[0], opnds[1])); + else + emit_insn (gen_mov_got32_step1 (opnds[0], opnds[1])); + } + + new_insns = get_insns (); + end_sequence (); + + replace_insns (insn, new_insns); +} + + +/* Returns true if INSN is the second instruction of a pc-relative + address compuatation. */ +static bool +match_pcrel_step2 (rtx insn) +{ + rtx unspec; + rtx addr; + + if (TARGET_32BIT) + { + if (recog_memoized (insn) != CODE_FOR_insn_addr_shl16insli_32bit) + return false; + } + else + { + if (recog_memoized (insn) != CODE_FOR_insn_addr_shl16insli) + return false; + } + + unspec = SET_SRC (PATTERN (insn)); + addr = XVECEXP (unspec, 0, 1); + + return (GET_CODE (addr) == CONST + && GET_CODE (XEXP (addr, 0)) == UNSPEC + && XINT (XEXP (addr, 0), 1) == UNSPEC_HW0_PCREL); +} + + +/* Do the second replacement step in tilegx_fixup_pcrel_references. */ +static void +replace_mov_pcrel_step2 (rtx insn) +{ + rtx pattern = PATTERN (insn); + rtx unspec; + rtx addr; + rtx opnds[3]; + rtx new_insns; + rtx got_rtx = tilegx_got_rtx (); + + gcc_assert (GET_CODE (pattern) == SET); + opnds[0] = SET_DEST (pattern); + + unspec = SET_SRC (pattern); + gcc_assert (GET_CODE (unspec) == UNSPEC); + gcc_assert (XINT (unspec, 1) == UNSPEC_INSN_ADDR_SHL16INSLI); + + opnds[1] = XVECEXP (unspec, 0, 0); + + addr = XVECEXP (unspec, 0, 1); + gcc_assert (GET_CODE (addr) == CONST); + + unspec = XEXP (addr, 0); + gcc_assert (GET_CODE (unspec) == UNSPEC); + gcc_assert (XINT (unspec, 1) == UNSPEC_HW0_PCREL); + opnds[2] = XVECEXP (unspec, 0, 0); + + /* We only need to replace SYMBOL_REFs, not LABEL_REFs. */ + if (GET_CODE (opnds[2]) != SYMBOL_REF) + return; + + start_sequence (); + + if (flag_pic == 1) + { + if (TARGET_32BIT) + emit_insn (gen_add_got16_32bit (opnds[0], got_rtx, opnds[2])); + else + emit_insn (gen_add_got16 (opnds[0], got_rtx, opnds[2])); + } + else + { + if (TARGET_32BIT) + emit_insn (gen_mov_got32_step2_32bit + (opnds[0], opnds[1], opnds[2])); + else + emit_insn (gen_mov_got32_step2 (opnds[0], opnds[1], opnds[2])); + } + + new_insns = get_insns (); + end_sequence (); + + replace_insns (insn, new_insns); +} + + +/* Do the third replacement step in tilegx_fixup_pcrel_references. */ +static void +replace_mov_pcrel_step3 (rtx insn) +{ + rtx pattern = PATTERN (insn); + rtx unspec; + rtx opnds[4]; + rtx new_insns; + rtx got_rtx = tilegx_got_rtx (); + rtx text_label_rtx = tilegx_text_label_rtx (); + + gcc_assert (GET_CODE (pattern) == SET); + opnds[0] = SET_DEST (pattern); + + unspec = SET_SRC (pattern); + gcc_assert (GET_CODE (unspec) == UNSPEC); + gcc_assert (XINT (unspec, 1) == UNSPEC_MOV_PCREL_STEP3); + + opnds[1] = got_rtx; + + if (XVECEXP (unspec, 0, 0) == text_label_rtx) + opnds[2] = XVECEXP (unspec, 0, 1); + else + { + gcc_assert (XVECEXP (unspec, 0, 1) == text_label_rtx); + opnds[2] = XVECEXP (unspec, 0, 0); + } + + opnds[3] = XVECEXP (unspec, 0, 2); + + /* We only need to replace SYMBOL_REFs, not LABEL_REFs. */ + if (GET_CODE (opnds[3]) != SYMBOL_REF) + return; + + start_sequence (); + + if (flag_pic == 1) + { + emit_move_insn (opnds[0], gen_const_mem (Pmode, opnds[2])); + } + else + { + emit_move_insn (opnds[0], gen_rtx_PLUS (Pmode, opnds[1], opnds[2])); + emit_move_insn (opnds[0], gen_const_mem (Pmode, opnds[0])); + } + + new_insns = get_insns (); + end_sequence (); + + replace_insns (insn, new_insns); +} + + +/* We generate PC relative SYMBOL_REFs as an optimization, to avoid + going through the GOT when the symbol is local to the compilation + unit. But such a symbol requires that the common text_label that + we generate at the beginning of the function be in the same section + as the reference to the SYMBOL_REF. This may not be true if we + generate hot/cold sections. This function looks for such cases and + replaces such references with the longer sequence going through the + GOT. + + We expect following instruction sequence: + moveli tmp1, hw1_last(x-.L_PICLNK) [1] + shl16insli tmp2, tmp1, hw0(x-.L_PICLNK) [2] + add<x> tmp3, txt_label_reg, tmp2 [3] + + If we're compiling -fpic, we replace with the following sequence + (the numbers in brackets match the instructions they're replacing + above). + + add<x>li tmp2, got_reg, hw0_last_got(x) [2] + ld<4> tmp3, tmp2 [3] + + If we're compiling -fPIC, we replace the first instruction with: + + moveli tmp1, hw1_last_got(x) [1] + shl16insli tmp2, tmp1, hw0_got(x) [2] + add<x> tmp3, got_reg, tmp2 [3] + ld<4> tmp3, tmp3 [3] + + Note that we're careful to disturb the instruction sequence as + little as possible, since it's very late in the compilation + process. */ +static void +tilegx_fixup_pcrel_references (void) +{ + rtx insn, next_insn; + bool same_section_as_entry = true; + + for (insn = get_insns (); insn; insn = next_insn) + { + next_insn = NEXT_INSN (insn); + + if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_SWITCH_TEXT_SECTIONS) + { + same_section_as_entry = !same_section_as_entry; + continue; + } + + if (same_section_as_entry) + continue; + + if (!(INSN_P (insn) + && GET_CODE (PATTERN (insn)) != USE + && GET_CODE (PATTERN (insn)) != CLOBBER)) + continue; + + if (TARGET_32BIT) + { + if (match_pcrel_step1 (insn)) + replace_mov_pcrel_step1 (insn); + else if (match_pcrel_step2 (insn)) + replace_mov_pcrel_step2 (insn); + else if (recog_memoized (insn) == CODE_FOR_mov_pcrel_step3_32bit) + replace_mov_pcrel_step3 (insn); + } + else + { + if (match_pcrel_step1 (insn)) + replace_mov_pcrel_step1 (insn); + else if (match_pcrel_step2 (insn)) + replace_mov_pcrel_step2 (insn); + else if (recog_memoized (insn) == CODE_FOR_mov_pcrel_step3) + replace_mov_pcrel_step3 (insn); + } + } +} + + +/* Ensure that no var tracking notes are emitted in the middle of a + three-instruction bundle. */ +static void +reorder_var_tracking_notes (void) +{ + basic_block bb; + FOR_EACH_BB_FN (bb, cfun) + { + rtx insn, next; + rtx queue = NULL_RTX; + bool in_bundle = false; + + for (insn = BB_HEAD (bb); insn != BB_END (bb); insn = next) + { + next = NEXT_INSN (insn); + + if (INSN_P (insn)) + { + /* Emit queued up notes at the last instruction of a + bundle. */ + if (GET_MODE (insn) == QImode) + { + while (queue) + { + rtx next_queue = PREV_INSN (queue); + PREV_INSN (NEXT_INSN (insn)) = queue; + NEXT_INSN (queue) = NEXT_INSN (insn); + NEXT_INSN (insn) = queue; + PREV_INSN (queue) = insn; + queue = next_queue; + } + in_bundle = false; + } + else if (GET_MODE (insn) == SImode) + in_bundle = true; + } + else if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_VAR_LOCATION) + { + if (in_bundle) + { + rtx prev = PREV_INSN (insn); + PREV_INSN (next) = prev; + NEXT_INSN (prev) = next; + + PREV_INSN (insn) = queue; + queue = insn; + } + } + } + } +} + + +/* Perform machine dependent operations on the rtl chain INSNS. */ +static void +tilegx_reorg (void) +{ + /* We are freeing block_for_insn in the toplev to keep compatibility + with old MDEP_REORGS that are not CFG based. Recompute it + now. */ + compute_bb_for_insn (); + + if (flag_reorder_blocks_and_partition) + { + tilegx_fixup_pcrel_references (); + } + + if (flag_schedule_insns_after_reload) + { + split_all_insns (); + + timevar_push (TV_SCHED2); + schedule_insns (); + timevar_pop (TV_SCHED2); + + /* Examine the schedule to group into bundles. */ + tilegx_gen_bundles (); + } + + df_analyze (); + + if (flag_var_tracking) + { + timevar_push (TV_VAR_TRACKING); + variable_tracking_main (); + reorder_var_tracking_notes (); + timevar_pop (TV_VAR_TRACKING); + } + + df_finish_pass (false); +} + + + +/* Assembly */ + +/* Select a format to encode pointers in exception handling data. + CODE is 0 for data, 1 for code labels, 2 for function pointers. + GLOBAL is true if the symbol may be affected by dynamic + relocations. */ +int +tilegx_asm_preferred_eh_data_format (int code ATTRIBUTE_UNUSED, int global) +{ + int type = TARGET_32BIT ? DW_EH_PE_sdata4 : DW_EH_PE_sdata8; + return (global ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | type; +} + + +/* Implement TARGET_ASM_OUTPUT_MI_THUNK. */ +static void +tilegx_output_mi_thunk (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED, + HOST_WIDE_INT delta, HOST_WIDE_INT vcall_offset, + tree function) +{ + rtx this_rtx, insn, funexp, addend; + + /* Pretend to be a post-reload pass while generating rtl. */ + reload_completed = 1; + + /* Mark the end of the (empty) prologue. */ + emit_note (NOTE_INSN_PROLOGUE_END); + + /* Find the "this" pointer. If the function returns a structure, + the structure return pointer is in $1. */ + if (aggregate_value_p (TREE_TYPE (TREE_TYPE (function)), function)) + this_rtx = gen_rtx_REG (Pmode, 1); + else + this_rtx = gen_rtx_REG (Pmode, 0); + + /* Add DELTA to THIS_RTX. */ + if (!(delta >= -32868 && delta <= 32767)) + { + addend = gen_rtx_REG (Pmode, 29); + emit_move_insn (addend, GEN_INT (delta)); + } + else + addend = GEN_INT (delta); + + if (TARGET_32BIT) + emit_insn (gen_addsi3 (this_rtx, this_rtx, addend)); + else + emit_insn (gen_adddi3 (this_rtx, this_rtx, addend)); + + /* If needed, add *(*THIS_RTX + VCALL_OFFSET) to THIS_RTX. */ + if (vcall_offset) + { + rtx tmp; + + tmp = gen_rtx_REG (Pmode, 29); + emit_move_insn (tmp, gen_rtx_MEM (Pmode, this_rtx)); + + if (!(vcall_offset >= -32868 && vcall_offset <= 32767)) + { + addend = gen_rtx_REG (Pmode, 28); + emit_move_insn (addend, GEN_INT (vcall_offset)); + } + else + addend = GEN_INT (vcall_offset); + + if (TARGET_32BIT) + emit_insn (gen_addsi3 (tmp, tmp, addend)); + else + emit_insn (gen_adddi3 (tmp, tmp, addend)); + + emit_move_insn (tmp, gen_rtx_MEM (Pmode, tmp)); + + if (TARGET_32BIT) + emit_insn (gen_addsi3 (this_rtx, this_rtx, tmp)); + else + emit_insn (gen_adddi3 (this_rtx, this_rtx, tmp)); + } + + /* Generate a tail call to the target function. */ + if (!TREE_USED (function)) + { + assemble_external (function); + TREE_USED (function) = 1; + } + funexp = XEXP (DECL_RTL (function), 0); + funexp = gen_rtx_MEM (FUNCTION_MODE, funexp); + insn = emit_call_insn (gen_sibcall (funexp, const0_rtx)); + SIBLING_CALL_P (insn) = 1; + + /* Run just enough of rest_of_compilation to get the insns emitted. + There's not really enough bulk here to make other passes such as + instruction scheduling worth while. Note that use_thunk calls + assemble_start_function and assemble_end_function. + + We don't currently bundle, but the instruciton sequence is all + serial except for the tail call, so we're only wasting one cycle. + */ + insn = get_insns (); + shorten_branches (insn); + final_start_function (insn, file, 1); + final (insn, file, 1); + final_end_function (); + + /* Stop pretending to be a post-reload pass. */ + reload_completed = 0; +} + + +/* Implement TARGET_ASM_TRAMPOLINE_TEMPLATE. */ +static void +tilegx_asm_trampoline_template (FILE *file) +{ + int ptr_mode_size = GET_MODE_SIZE (ptr_mode); + if (TARGET_32BIT) + { + fprintf (file, "\tlnk r10\n"); + fprintf (file, "\taddxi r10, r10, 32\n"); + fprintf (file, "\tld4s_add r11, r10, %d\n", ptr_mode_size); + fprintf (file, "\tld4s r10, r10\n"); + fprintf (file, "\tjr r11\n"); + fprintf (file, "\t.word 0 # <function address>\n"); + fprintf (file, "\t.word 0 # <static chain value>\n"); + } + else + { + fprintf (file, "\tlnk r10\n"); + fprintf (file, "\taddi r10, r10, 32\n"); + fprintf (file, "\tld_add r11, r10, %d\n", ptr_mode_size); + fprintf (file, "\tld r10, r10\n"); + fprintf (file, "\tjr r11\n"); + fprintf (file, "\t.quad 0 # <function address>\n"); + fprintf (file, "\t.quad 0 # <static chain value>\n"); + } +} + + +/* Implement TARGET_TRAMPOLINE_INIT. */ +static void +tilegx_trampoline_init (rtx m_tramp, tree fndecl, rtx static_chain) +{ + rtx fnaddr, chaddr; + rtx mem; + rtx begin_addr, end_addr; + int ptr_mode_size = GET_MODE_SIZE (ptr_mode); + + fnaddr = copy_to_reg (XEXP (DECL_RTL (fndecl), 0)); + chaddr = copy_to_reg (static_chain); + + emit_block_move (m_tramp, assemble_trampoline_template (), + GEN_INT (TRAMPOLINE_SIZE), BLOCK_OP_NORMAL); + + mem = adjust_address (m_tramp, ptr_mode, + TRAMPOLINE_SIZE - 2 * ptr_mode_size); + emit_move_insn (mem, fnaddr); + mem = adjust_address (m_tramp, ptr_mode, + TRAMPOLINE_SIZE - ptr_mode_size); + emit_move_insn (mem, chaddr); + + /* Get pointers to the beginning and end of the code block. */ + begin_addr = force_reg (Pmode, XEXP (m_tramp, 0)); + end_addr = force_reg (Pmode, plus_constant (Pmode, XEXP (m_tramp, 0), + TRAMPOLINE_SIZE)); + + emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__clear_cache"), + LCT_NORMAL, VOIDmode, 2, begin_addr, Pmode, + end_addr, Pmode); +} + + +/* Implement TARGET_PRINT_OPERAND. */ +static void +tilegx_print_operand (FILE *file, rtx x, int code) +{ + switch (code) + { + case 'c': + /* Print the compare operator opcode for conditional moves. */ + switch (GET_CODE (x)) + { + case EQ: + fputs ("z", file); + break; + case NE: + fputs ("nz", file); + break; + default: + output_operand_lossage ("invalid %%c operand"); + } + return; + + case 'C': + /* Print the compare operator opcode for conditional moves. */ + switch (GET_CODE (x)) + { + case EQ: + fputs ("nz", file); + break; + case NE: + fputs ("z", file); + break; + default: + output_operand_lossage ("invalid %%C operand"); + } + return; + + case 'd': + { + /* Print the compare operator opcode for conditional moves. */ + switch (GET_CODE (x)) + { + case EQ: + fputs ("eq", file); + break; + case NE: + fputs ("ne", file); + break; + default: + output_operand_lossage ("invalid %%d operand"); + } + return; + } + + case 'D': + { + /* Print the compare operator opcode for conditional moves. */ + switch (GET_CODE (x)) + { + case EQ: + fputs ("ne", file); + break; + case NE: + fputs ("eq", file); + break; + default: + output_operand_lossage ("invalid %%D operand"); + } + return; + } + + case 'H': + { + if (GET_CODE (x) == CONST + && GET_CODE (XEXP (x, 0)) == UNSPEC) + { + rtx addr = XVECEXP (XEXP (x, 0), 0, 0); + int unspec = XINT (XEXP (x, 0), 1); + const char *opstr = NULL; + switch (unspec) + { + case UNSPEC_HW0: + case UNSPEC_HW0_PCREL: + opstr = "hw0"; + break; + case UNSPEC_HW1: + case UNSPEC_HW1_PCREL: + opstr = "hw1"; + break; + case UNSPEC_HW2: + opstr = "hw2"; + break; + case UNSPEC_HW3: + opstr = "hw3"; + break; + case UNSPEC_HW0_LAST: + opstr = "hw0_last"; + break; + case UNSPEC_HW1_LAST: + case UNSPEC_HW1_LAST_PCREL: + opstr = "hw1_last"; + break; + case UNSPEC_HW2_LAST: + case UNSPEC_HW2_LAST_PCREL: + opstr = "hw2_last"; + break; + case UNSPEC_HW0_GOT: + opstr = "hw0_got"; + break; + case UNSPEC_HW0_LAST_GOT: + opstr = "hw0_last_got"; + break; + case UNSPEC_HW1_LAST_GOT: + opstr = "hw1_last_got"; + break; + case UNSPEC_HW0_TLS_GD: + opstr = "hw0_tls_gd"; + break; + case UNSPEC_HW1_LAST_TLS_GD: + opstr = "hw1_last_tls_gd"; + break; + case UNSPEC_HW0_TLS_IE: + opstr = "hw0_tls_ie"; + break; + case UNSPEC_HW1_LAST_TLS_IE: + opstr = "hw1_last_tls_ie"; + break; + case UNSPEC_HW0_TLS_LE: + opstr = "hw0_tls_le"; + break; + case UNSPEC_HW1_LAST_TLS_LE: + opstr = "hw1_last_tls_le"; + break; + case UNSPEC_HW0_PLT_PCREL: + opstr = "hw0_plt"; + break; + case UNSPEC_HW1_PLT_PCREL: + opstr = "hw1_plt"; + break; + case UNSPEC_HW1_LAST_PLT_PCREL: + opstr = "hw1_last_plt"; + break; + case UNSPEC_HW2_LAST_PLT_PCREL: + opstr = "hw2_last_plt"; + break; + default: + output_operand_lossage ("invalid %%H specifier"); + } + + fputs (opstr, file); + fputc ('(', file); + output_addr_const (file, addr); + + if (unspec == UNSPEC_HW0_PCREL + || unspec == UNSPEC_HW1_PCREL + || unspec == UNSPEC_HW1_LAST_PCREL + || unspec == UNSPEC_HW2_LAST_PCREL + || unspec == UNSPEC_HW0_PLT_PCREL + || unspec == UNSPEC_HW1_PLT_PCREL + || unspec == UNSPEC_HW1_LAST_PLT_PCREL + || unspec == UNSPEC_HW2_LAST_PLT_PCREL) + { + rtx addr2 = XVECEXP (XEXP (x, 0), 0, 1); + fputs (" - " , file); + output_addr_const (file, addr2); + } + + fputc (')', file); + return; + } + else if (symbolic_operand (x, VOIDmode)) + { + output_addr_const (file, x); + return; + } + } + /* FALLTHRU */ + + case 'h': + { + /* Print the low 16 bits of a constant. */ + HOST_WIDE_INT i; + if (CONST_INT_P (x)) + i = INTVAL (x); + else if (GET_CODE (x) == CONST_DOUBLE) + i = CONST_DOUBLE_LOW (x); + else + { + output_operand_lossage ("invalid %%h operand"); + return; + } + i = trunc_int_for_mode (i, HImode); + fprintf (file, HOST_WIDE_INT_PRINT_DEC, i); + return; + } + + case 'I': + /* Print an auto-inc memory operand. */ + if (!MEM_P (x)) + { + output_operand_lossage ("invalid %%I operand"); + return; + } + + output_memory_reference_mode = GET_MODE (x); + output_memory_autoinc_first = true; + output_address (XEXP (x, 0)); + output_memory_reference_mode = VOIDmode; + return; + + case 'i': + /* Print an auto-inc memory operand. */ + if (!MEM_P (x)) + { + output_operand_lossage ("invalid %%i operand"); + return; + } + + output_memory_reference_mode = GET_MODE (x); + output_memory_autoinc_first = false; + output_address (XEXP (x, 0)); + output_memory_reference_mode = VOIDmode; + return; + + case 'j': + { + /* Print the low 8 bits of a constant. */ + HOST_WIDE_INT i; + if (CONST_INT_P (x)) + i = INTVAL (x); + else if (GET_CODE (x) == CONST_DOUBLE) + i = CONST_DOUBLE_LOW (x); + else if (GET_CODE (x) == CONST_VECTOR + && CONST_INT_P (CONST_VECTOR_ELT (x, 0))) + i = INTVAL (CONST_VECTOR_ELT (x, 0)); + else + { + output_operand_lossage ("invalid %%j operand"); + return; + } + i = trunc_int_for_mode (i, QImode); + fprintf (file, HOST_WIDE_INT_PRINT_DEC, i); + return; + } + + case 'P': + { + /* Print a constant plus one. */ + if (!CONST_INT_P (x)) + { + output_operand_lossage ("invalid %%P operand"); + return; + } + fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (x) + 1); + return; + } + + case 'm': + case 'M': + { + /* Print a bfextu-style bit range. */ + int first_bit, last_bit; + HOST_WIDE_INT flip = (code == 'm') ? ~0 : 0; + + if (!CONST_INT_P (x) + || !tilegx_bitfield_operand_p (INTVAL (x) ^ flip, + &first_bit, &last_bit)) + { + output_operand_lossage ("invalid %%%c operand", code); + return; + } + + fprintf (file, "%d, %d", first_bit, last_bit); + return; + } + + case 'N': + { + const char *reg = NULL; + + /* Print a network register. */ + if (!CONST_INT_P (x)) + { + output_operand_lossage ("invalid %%N operand"); + return; + } + + switch (INTVAL (x)) + { + case TILEGX_NETREG_IDN0: reg = "idn0"; break; + case TILEGX_NETREG_IDN1: reg = "idn1"; break; + case TILEGX_NETREG_UDN0: reg = "udn0"; break; + case TILEGX_NETREG_UDN1: reg = "udn1"; break; + case TILEGX_NETREG_UDN2: reg = "udn2"; break; + case TILEGX_NETREG_UDN3: reg = "udn3"; break; + default: + gcc_unreachable (); + } + + fprintf (file, reg); + return; + } + + case 'p': + if (GET_CODE (x) == SYMBOL_REF) + { + if (flag_pic && !SYMBOL_REF_LOCAL_P (x)) + fprintf (file, "plt("); + output_addr_const (file, x); + if (flag_pic && !SYMBOL_REF_LOCAL_P (x)) + fprintf (file, ")"); + } + else + output_addr_const (file, x); + return; + + case 'r': + /* In this case we need a register. Use 'zero' if the operand + is const0_rtx. */ + if (x == const0_rtx + || (GET_MODE (x) != VOIDmode && x == CONST0_RTX (GET_MODE (x)))) + { + fputs ("zero", file); + return; + } + else if (!REG_P (x)) + { + output_operand_lossage ("invalid operand for 'r' specifier"); + return; + } + /* FALLTHRU */ + + case 0: + if (REG_P (x)) + { + fprintf (file, "%s", reg_names[REGNO (x)]); + return; + } + else if (MEM_P (x)) + { + output_memory_reference_mode = VOIDmode; + output_address (XEXP (x, 0)); + return; + } + else + { + output_addr_const (file, x); + return; + } + } + + debug_rtx (x); + output_operand_lossage ("unable to print out operand yet; code == %d (%c)", + code, code); +} + + +/* Implement TARGET_PRINT_OPERAND_ADDRESS. */ +static void +tilegx_print_operand_address (FILE *file, rtx addr) +{ + if (GET_CODE (addr) == POST_DEC + || GET_CODE (addr) == POST_INC) + { + int offset = GET_MODE_SIZE (output_memory_reference_mode); + + gcc_assert (output_memory_reference_mode != VOIDmode); + + if (output_memory_autoinc_first) + fprintf (file, "%s", reg_names[REGNO (XEXP (addr, 0))]); + else + fprintf (file, "%d", + GET_CODE (addr) == POST_DEC ? -offset : offset); + } + else if (GET_CODE (addr) == POST_MODIFY) + { + gcc_assert (output_memory_reference_mode != VOIDmode); + + gcc_assert (GET_CODE (XEXP (addr, 1)) == PLUS); + + if (output_memory_autoinc_first) + fprintf (file, "%s", reg_names[REGNO (XEXP (addr, 0))]); + else + fprintf (file, HOST_WIDE_INT_PRINT_DEC, + INTVAL (XEXP (XEXP (addr, 1), 1))); + } + else + tilegx_print_operand (file, addr, 'r'); +} + + +/* Machine mode of current insn, for determining curly brace + placement. */ +static enum machine_mode insn_mode; + + +/* Implement FINAL_PRESCAN_INSN. This is used to emit bundles. */ +void +tilegx_final_prescan_insn (rtx insn) +{ + /* Record this for tilegx_asm_output_opcode to examine. */ + insn_mode = GET_MODE (insn); +} + + +/* While emitting asm, are we currently inside '{' for a bundle? */ +static bool tilegx_in_bundle = false; + +/* Implement ASM_OUTPUT_OPCODE. Prepend/append curly braces as + appropriate given the bundling information recorded by + tilegx_gen_bundles. */ +const char * +tilegx_asm_output_opcode (FILE *stream, const char *code) +{ + bool pseudo = !strcmp (code, "pseudo"); + + if (!tilegx_in_bundle && insn_mode == SImode) + { + /* Start a new bundle. */ + fprintf (stream, "{\n\t"); + tilegx_in_bundle = true; + } + + if (tilegx_in_bundle && insn_mode == QImode) + { + /* Close an existing bundle. */ + static char buf[100]; + + gcc_assert (strlen (code) + 3 + 1 < sizeof (buf)); + + strcpy (buf, pseudo ? "" : code); + strcat (buf, "\n\t}"); + tilegx_in_bundle = false; + + return buf; + } + else + { + return pseudo ? "" : code; + } +} + + +/* Output assembler code to FILE to increment profiler label # LABELNO + for profiling a function entry. */ +void +tilegx_function_profiler (FILE *file, int labelno ATTRIBUTE_UNUSED) +{ + if (tilegx_in_bundle) + { + fprintf (file, "\t}\n"); + } + + if (flag_pic) + { + fprintf (file, + "\t{\n" + "\tmove\tr10, lr\n" + "\tjal\tplt(%s)\n" + "\t}\n", MCOUNT_NAME); + } + else + { + fprintf (file, + "\t{\n" + "\tmove\tr10, lr\n" + "\tjal\t%s\n" + "\t}\n", MCOUNT_NAME); + } + + tilegx_in_bundle = false; +} + + +/* Implement TARGET_ASM_FILE_END. */ +static void +tilegx_file_end (void) +{ + if (NEED_INDICATE_EXEC_STACK) + file_end_indicate_exec_stack (); +} + + + +#undef TARGET_HAVE_TLS +#define TARGET_HAVE_TLS HAVE_AS_TLS + +#undef TARGET_OPTION_OVERRIDE +#define TARGET_OPTION_OVERRIDE tilegx_option_override + +#undef TARGET_SCALAR_MODE_SUPPORTED_P +#define TARGET_SCALAR_MODE_SUPPORTED_P tilegx_scalar_mode_supported_p + +#undef TARGET_VECTOR_MODE_SUPPORTED_P +#define TARGET_VECTOR_MODE_SUPPORTED_P tilegx_vector_mode_supported_p + +#undef TARGET_CANNOT_FORCE_CONST_MEM +#define TARGET_CANNOT_FORCE_CONST_MEM tilegx_cannot_force_const_mem + +#undef TARGET_FUNCTION_OK_FOR_SIBCALL +#define TARGET_FUNCTION_OK_FOR_SIBCALL tilegx_function_ok_for_sibcall + +#undef TARGET_PASS_BY_REFERENCE +#define TARGET_PASS_BY_REFERENCE tilegx_pass_by_reference + +#undef TARGET_RETURN_IN_MSB +#define TARGET_RETURN_IN_MSB tilegx_return_in_msb + +#undef TARGET_RETURN_IN_MEMORY +#define TARGET_RETURN_IN_MEMORY tilegx_return_in_memory + +#undef TARGET_MODE_REP_EXTENDED +#define TARGET_MODE_REP_EXTENDED tilegx_mode_rep_extended + +#undef TARGET_FUNCTION_ARG_BOUNDARY +#define TARGET_FUNCTION_ARG_BOUNDARY tilegx_function_arg_boundary + +#undef TARGET_FUNCTION_ARG +#define TARGET_FUNCTION_ARG tilegx_function_arg + +#undef TARGET_FUNCTION_ARG_ADVANCE +#define TARGET_FUNCTION_ARG_ADVANCE tilegx_function_arg_advance + +#undef TARGET_FUNCTION_VALUE +#define TARGET_FUNCTION_VALUE tilegx_function_value + +#undef TARGET_LIBCALL_VALUE +#define TARGET_LIBCALL_VALUE tilegx_libcall_value + +#undef TARGET_FUNCTION_VALUE_REGNO_P +#define TARGET_FUNCTION_VALUE_REGNO_P tilegx_function_value_regno_p + +#undef TARGET_PROMOTE_FUNCTION_MODE +#define TARGET_PROMOTE_FUNCTION_MODE default_promote_function_mode_always_promote + +#undef TARGET_PROMOTE_PROTOTYPES +#define TARGET_PROMOTE_PROTOTYPES hook_bool_const_tree_false + +#undef TARGET_BUILD_BUILTIN_VA_LIST +#define TARGET_BUILD_BUILTIN_VA_LIST tilegx_build_builtin_va_list + +#undef TARGET_EXPAND_BUILTIN_VA_START +#define TARGET_EXPAND_BUILTIN_VA_START tilegx_va_start + +#undef TARGET_SETUP_INCOMING_VARARGS +#define TARGET_SETUP_INCOMING_VARARGS tilegx_setup_incoming_varargs + +#undef TARGET_GIMPLIFY_VA_ARG_EXPR +#define TARGET_GIMPLIFY_VA_ARG_EXPR tilegx_gimplify_va_arg_expr + +#undef TARGET_RTX_COSTS +#define TARGET_RTX_COSTS tilegx_rtx_costs + +#undef TARGET_EXPAND_TO_RTL_HOOK +#define TARGET_EXPAND_TO_RTL_HOOK tilegx_expand_to_rtl_hook + +#undef TARGET_SHIFT_TRUNCATION_MASK +#define TARGET_SHIFT_TRUNCATION_MASK tilegx_shift_truncation_mask + +#undef TARGET_INIT_LIBFUNCS +#define TARGET_INIT_LIBFUNCS tilegx_init_libfuncs + +/* Limit to what we can reach in one addli. */ +#undef TARGET_MIN_ANCHOR_OFFSET +#define TARGET_MIN_ANCHOR_OFFSET -32768 +#undef TARGET_MAX_ANCHOR_OFFSET +#define TARGET_MAX_ANCHOR_OFFSET 32767 + +#undef TARGET_LEGITIMATE_CONSTANT_P +#define TARGET_LEGITIMATE_CONSTANT_P tilegx_legitimate_constant_p + +#undef TARGET_LEGITIMATE_ADDRESS_P +#define TARGET_LEGITIMATE_ADDRESS_P tilegx_legitimate_address_p + +#undef TARGET_LEGITIMIZE_ADDRESS +#define TARGET_LEGITIMIZE_ADDRESS tilegx_legitimize_address + +#undef TARGET_DELEGITIMIZE_ADDRESS +#define TARGET_DELEGITIMIZE_ADDRESS tilegx_delegitimize_address + +#undef TARGET_INIT_BUILTINS +#define TARGET_INIT_BUILTINS tilegx_init_builtins + +#undef TARGET_BUILTIN_DECL +#define TARGET_BUILTIN_DECL tilegx_builtin_decl + +#undef TARGET_EXPAND_BUILTIN +#define TARGET_EXPAND_BUILTIN tilegx_expand_builtin + +#undef TARGET_CONDITIONAL_REGISTER_USAGE +#define TARGET_CONDITIONAL_REGISTER_USAGE tilegx_conditional_register_usage + +#undef TARGET_FRAME_POINTER_REQUIRED +#define TARGET_FRAME_POINTER_REQUIRED tilegx_frame_pointer_required + +#undef TARGET_DELAY_SCHED2 +#define TARGET_DELAY_SCHED2 true + +#undef TARGET_DELAY_VARTRACK +#define TARGET_DELAY_VARTRACK true + +#undef TARGET_SCHED_ISSUE_RATE +#define TARGET_SCHED_ISSUE_RATE tilegx_issue_rate + +#undef TARGET_SCHED_ADJUST_COST +#define TARGET_SCHED_ADJUST_COST tilegx_sched_adjust_cost + +#undef TARGET_MACHINE_DEPENDENT_REORG +#define TARGET_MACHINE_DEPENDENT_REORG tilegx_reorg + +#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK +#define TARGET_ASM_CAN_OUTPUT_MI_THUNK \ + hook_bool_const_tree_hwi_hwi_const_tree_true + +#undef TARGET_ASM_OUTPUT_MI_THUNK +#define TARGET_ASM_OUTPUT_MI_THUNK tilegx_output_mi_thunk + +#undef TARGET_ASM_TRAMPOLINE_TEMPLATE +#define TARGET_ASM_TRAMPOLINE_TEMPLATE tilegx_asm_trampoline_template + +#undef TARGET_TRAMPOLINE_INIT +#define TARGET_TRAMPOLINE_INIT tilegx_trampoline_init + +#undef TARGET_PRINT_OPERAND +#define TARGET_PRINT_OPERAND tilegx_print_operand + +#undef TARGET_PRINT_OPERAND_ADDRESS +#define TARGET_PRINT_OPERAND_ADDRESS tilegx_print_operand_address + +#undef TARGET_ASM_FILE_END +#define TARGET_ASM_FILE_END tilegx_file_end + +#undef TARGET_ASM_ALIGNED_DI_OP +#define TARGET_ASM_ALIGNED_DI_OP "\t.quad\t" + +#undef TARGET_CAN_USE_DOLOOP_P +#define TARGET_CAN_USE_DOLOOP_P can_use_doloop_if_innermost + +struct gcc_target targetm = TARGET_INITIALIZER; + +#include "gt-tilegx.h" diff --git a/gcc-4.9/gcc/config/tilegx/tilegx.h b/gcc-4.9/gcc/config/tilegx/tilegx.h new file mode 100644 index 000000000..f241fe4f2 --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/tilegx.h @@ -0,0 +1,556 @@ +/* Definitions of target machine for GNU compiler for TILE-Gx. + Copyright (C) 2011-2014 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/>. */ + +/* Default target_flags if no switches are specified */ +#ifndef TARGET_DEFAULT +#define TARGET_DEFAULT 0 +#endif + +#ifndef TARGET_BIG_ENDIAN_DEFAULT +#define TARGET_BIG_ENDIAN_DEFAULT 0 +#endif + +#ifndef TARGET_ENDIAN_DEFAULT +#if TARGET_BIG_ENDIAN_DEFAULT +#define TARGET_ENDIAN_DEFAULT MASK_BIG_ENDIAN +#else +#define TARGET_ENDIAN_DEFAULT 0 +#endif +#endif + +/* This is used by tilegx_cpu_cpp_builtins to indicate the byte order + we're compiling for. */ +#define TILEGX_CPU_CPP_ENDIAN_BUILTINS() \ + do \ + { \ + if (TARGET_BIG_ENDIAN) \ + builtin_define ("__BIG_ENDIAN__"); \ + else \ + builtin_define ("__LITTLE_ENDIAN__"); \ + } \ + while (0) + +#include "config/tilegx/tilegx-opts.h" + + +/* Target CPU builtins. */ +#define TARGET_CPU_CPP_BUILTINS() \ + tilegx_cpu_cpp_builtins (pfile) + +#undef PTRDIFF_TYPE +#define PTRDIFF_TYPE (TARGET_32BIT ? "int" : "long int") + +#undef SIZE_TYPE +#define SIZE_TYPE (TARGET_32BIT ? "unsigned int" : "long unsigned int") + +#undef WCHAR_TYPE +#define WCHAR_TYPE "int" + +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE 32 + + +/* Target machine storage layout */ + +#define BITS_BIG_ENDIAN 0 +#define BYTES_BIG_ENDIAN (TARGET_BIG_ENDIAN != 0) +#define WORDS_BIG_ENDIAN (TARGET_BIG_ENDIAN != 0) +#define FLOAT_WORDS_BIG_ENDIAN (TARGET_BIG_ENDIAN != 0) + +#define UNITS_PER_WORD 8 +#define PARM_BOUNDARY BITS_PER_WORD +#define STACK_BOUNDARY 128 +#define FUNCTION_BOUNDARY 64 +#define BIGGEST_ALIGNMENT 128 +#define STRICT_ALIGNMENT 1 + +#define INT_TYPE_SIZE 32 +#define LONG_TYPE_SIZE (TARGET_32BIT ? 32 : 64) +#define LONG_LONG_TYPE_SIZE 64 +#define FLOAT_TYPE_SIZE 32 +#define DOUBLE_TYPE_SIZE 64 +#define LONG_DOUBLE_TYPE_SIZE 64 +#define POINTER_SIZE LONG_TYPE_SIZE + +#define PCC_BITFIELD_TYPE_MATTERS 1 +#define FASTEST_ALIGNMENT 64 +#define BIGGEST_FIELD_ALIGNMENT 128 +#define WIDEST_HARDWARE_FP_SIZE 64 + +/* Unaligned moves trap and are very slow. */ +#define SLOW_UNALIGNED_ACCESS(MODE, ALIGN) 1 + +/* Make strings word-aligned so strcpy from constants will be + faster. */ +#define CONSTANT_ALIGNMENT(EXP, ALIGN) \ + ((TREE_CODE (EXP) == STRING_CST \ + && (ALIGN) < FASTEST_ALIGNMENT) \ + ? FASTEST_ALIGNMENT : (ALIGN)) + +/* Make arrays of chars word-aligned for the same reasons. */ +#define DATA_ALIGNMENT(TYPE, ALIGN) \ + (TREE_CODE (TYPE) == ARRAY_TYPE \ + && TYPE_MODE (TREE_TYPE (TYPE)) == QImode \ + && (ALIGN) < FASTEST_ALIGNMENT ? FASTEST_ALIGNMENT : (ALIGN)) + +/* Make local arrays of chars word-aligned for the same reasons. */ +#define LOCAL_ALIGNMENT(TYPE, ALIGN) DATA_ALIGNMENT (TYPE, ALIGN) + + +/* Standard register usage. */ + +#define FIRST_PSEUDO_REGISTER (64 + 4) + +#define FIXED_REGISTERS \ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ + 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, \ + 1, 1, 1, 1} +#define CALL_USED_REGISTERS \ + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, \ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ + 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ + 1, 1, 1, 1} + +#define CALL_REALLY_USED_REGISTERS \ + CALL_USED_REGISTERS + +#define REG_ALLOC_ORDER { \ + 10, 11, 12, 13, 14, /* call used */ \ + 15, 16, 17, 18, 19, \ + 20, 21, 22, 23, 24, \ + 25, 26, 27, 28, 29, \ + \ + 9, 8, 7, 6, 5, /* argument */ \ + 4, 3, 2, 1, 0, \ + \ + 55, /* return address */ \ + \ + 30, 31, 32, 33, 34, /* call saved registers */ \ + 35, 36, 37, 38, 39, \ + 40, 41, 42, 43, 44, \ + 45, 46, 47, 48, 49, \ + 50, 51, \ + \ + 52, /* hard frame pointer */ \ + 53, 54, /* tp, sp */ \ + \ + 56, 57, 58, 59, 60, /* special purpose */ \ + 61, 62, 63, 64, 65, /* or fake registers */ \ + 66, 67 \ +} + +#define HARD_REGNO_NREGS(REGNO, MODE) \ + ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) + +#define HARD_REGNO_MODE_OK(REGNO, MODE) 1 + +#define MODES_TIEABLE_P(MODE1, MODE2) 1 + +/* Register that holds an address into the text segment that can be + used by pic code. */ +#define TILEGX_PIC_TEXT_LABEL_REGNUM (flag_pic ? 50 : INVALID_REGNUM) +#define PIC_OFFSET_TABLE_REGNUM (flag_pic ? 51 : INVALID_REGNUM) +#define HARD_FRAME_POINTER_REGNUM 52 +#define THREAD_POINTER_REGNUM 53 +#define STACK_POINTER_REGNUM 54 +#define TILEGX_LINK_REGNUM 55 +#define FRAME_POINTER_REGNUM 64 +#define ARG_POINTER_REGNUM 65 +/* SPR storing the comparison value for compare and exchange. */ +#define TILEGX_CMPEXCH_REGNUM 66 +/* Pseudo registers used to enforce order between instructions that + touch the networks. */ +#define TILEGX_NETORDER_REGNUM 67 +#define STATIC_CHAIN_REGNUM 10 + + +enum reg_class +{ + NO_REGS, + R0_REGS, + R1_REGS, + R2_REGS, + R3_REGS, + R4_REGS, + R5_REGS, + R6_REGS, + R7_REGS, + R8_REGS, + R9_REGS, + R10_REGS, + ALL_REGS, + LIM_REG_CLASSES +}; + +#define N_REG_CLASSES (int) LIM_REG_CLASSES + +/* Since GENERAL_REGS is the same class as ALL_REGS, don't give it a + different class number; just make it an alias. */ +#define GENERAL_REGS ALL_REGS + +#define REG_CLASS_NAMES \ + { \ + "NO_REGS", \ + "R0_REGS", \ + "R1_REGS", \ + "R2_REGS", \ + "R3_REGS", \ + "R4_REGS", \ + "R5_REGS", \ + "R6_REGS", \ + "R7_REGS", \ + "R8_REGS", \ + "R9_REGS", \ + "R10_REGS", \ + "ALL_REGS" \ + } + +#define REG_CLASS_CONTENTS \ + { \ + { 0 }, \ + { 1 << 0 }, \ + { 1 << 1 }, \ + { 1 << 2 }, \ + { 1 << 3 }, \ + { 1 << 4 }, \ + { 1 << 5 }, \ + { 1 << 6 }, \ + { 1 << 7 }, \ + { 1 << 8 }, \ + { 1 << 9 }, \ + { 1 << 10 }, \ + { 0xffffffff, 0xffffffff } \ + } + +#define REGNO_REG_CLASS(REGNO) \ + ((unsigned)(REGNO) <= 10 ? \ + (enum reg_class)(R0_REGS + (REGNO)) : ALL_REGS) + +#define INDEX_REG_CLASS NO_REGS +#define BASE_REG_CLASS ALL_REGS + +#define PREFERRED_RELOAD_CLASS(X,CLASS) (CLASS) + +#define CLASS_MAX_NREGS(CLASS, MODE) \ + ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) + + +/* Stack layout; function entry, exit and calling. */ + +#define STACK_GROWS_DOWNWARD +#define FRAME_GROWS_DOWNWARD 1 +#define STARTING_FRAME_OFFSET 0 + +#define DYNAMIC_CHAIN_ADDRESS(FRAME) \ + plus_constant (Pmode, (FRAME), UNITS_PER_WORD) + +#define FIRST_PARM_OFFSET(FNDECL) 0 + +#define ACCUMULATE_OUTGOING_ARGS 1 + +#define OUTGOING_REG_PARM_STACK_SPACE(FNTYPE) 1 + +#define INCOMING_FRAME_SP_OFFSET 0 + +#define STACK_POINTER_OFFSET (2 * UNITS_PER_WORD) + +#define ARG_POINTER_CFA_OFFSET(FNDECL) (-STACK_POINTER_OFFSET) + +#define DEFAULT_PCC_STRUCT_RETURN 0 + +/* The first 10 registers may hold return value. */ +#define TILEGX_NUM_RETURN_REGS 10 + +/* The first 10 registers hold function arguments. */ +#define TILEGX_NUM_ARG_REGS 10 + +#define FUNCTION_ARG_REGNO_P(N) ((N) < TILEGX_NUM_ARG_REGS) + +/* The type used to store the number of words of arguments scanned so + far during argument scanning. This includes any space that is + skipped. */ +#define CUMULATIVE_ARGS int + +#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, INDIRECT, N_NAMED_ARGS) \ + ((CUM) = 0) + + +#define ELIMINABLE_REGS \ + {{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ + {ARG_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}, \ + {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ + {FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}} + +#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \ + ((OFFSET) = tilegx_initial_elimination_offset((FROM),(TO))) + +#define PROFILE_BEFORE_PROLOGUE 1 + +#define FUNCTION_PROFILER(FILE, LABELNO) \ + tilegx_function_profiler (FILE, LABELNO) + +#define TRAMPOLINE_SIZE (TARGET_32BIT ? 48 : 56) +#define TRAMPOLINE_ALIGNMENT 64 +#define TRAMPOLINE_SECTION text_section + + +/* Call frame debugging information. */ + +#define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, TILEGX_LINK_REGNUM) + +#define RETURN_ADDR_RTX tilegx_return_addr + +#define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (TILEGX_LINK_REGNUM) + +#define DWARF_ZERO_REG 63 + +#define EH_RETURN_DATA_REGNO(N) ((N) < 4 ? (N + 12) : INVALID_REGNUM) +#define EH_RETURN_STACKADJ_RTX gen_rtx_REG (Pmode, 11) +#define EH_RETURN_HANDLER_RTX tilegx_eh_return_handler_rtx () + +#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \ + tilegx_asm_preferred_eh_data_format ((CODE), (GLOBAL)) + + +/* Addressing modes, and classification of registers for them. */ + +#define HAVE_POST_INCREMENT 1 +#define HAVE_POST_DECREMENT 1 +#define HAVE_POST_MODIFY_DISP 1 + +#define REGNO_OK_FOR_INDEX_P(regno) 0 +#define REGNO_OK_FOR_BASE_P(regno) \ + ((regno) < FIRST_PSEUDO_REGISTER || reg_renumber[regno] >= 0) + +#define MAX_REGS_PER_ADDRESS 1 + +#define CONSTANT_ADDRESS_P(X) 0 + +#define LEGITIMATE_PIC_OPERAND_P(X) tilegx_legitimate_pic_operand_p (X) + + +#define CASE_VECTOR_MODE Pmode +#define CASE_VECTOR_PC_RELATIVE 0 +#define JUMP_TABLES_IN_TEXT_SECTION 0 + +#define DEFAULT_SIGNED_CHAR 1 + +#define MOVE_MAX UNITS_PER_WORD + +/* Use a value of 11 for MOVE_RATIO and friends, because TILEPro + returns structs as large as 10 words in registers. Because of some + some code generation inefficiency, we never get smaller code for + turning that into a memcpy, so pick a value that guarantees this + doesn't happen. */ +#define TILEGX_CALL_RATIO 11 +#define MOVE_RATIO(speed) ((speed) ? 15 : TILEGX_CALL_RATIO) +#define CLEAR_RATIO(speed) ((speed) ? 15 : TILEGX_CALL_RATIO) +#define SET_RATIO(speed) ((speed) ? 15 : TILEGX_CALL_RATIO) + +#define WORD_REGISTER_OPERATIONS + +#define LOAD_EXTEND_OP(MODE) ((MODE) == SImode ? SIGN_EXTEND : ZERO_EXTEND) + +#define PROMOTE_MODE(MODE, UNSIGNEDP, TYPE) \ + if (GET_MODE_CLASS (MODE) == MODE_INT \ + && GET_MODE_SIZE (MODE) < UNITS_PER_WORD) \ + { \ + if ((MODE) == SImode) \ + (UNSIGNEDP) = 0; \ + (MODE) = DImode; \ + } + +/* Define SLOW_BYTE_ACCESS to avoid making a QI or HI mode + register. */ +#define SLOW_BYTE_ACCESS 1 + +#define SHIFT_COUNT_TRUNCATED 0 + +#define SHORT_IMMEDIATES_SIGN_EXTEND + +/* We represent all SI values as sign-extended DI values in + registers. */ +#define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) \ + ((INPREC) <= 32 || (OUTPREC) > 32) + +#define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) ((VALUE) = 64, 1) +#define CTZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) ((VALUE) = 64, 1) + +#define Pmode (TARGET_32BIT ? SImode : DImode) + +#define STACK_SIZE_MODE Pmode + +#define STORE_FLAG_VALUE 1 + +#define FUNCTION_MODE DImode + +#define NO_FUNCTION_CSE 1 + +#define ADJUST_INSN_LENGTH(INSN, LENGTH) \ + ((LENGTH) = tilegx_adjust_insn_length ((INSN), (LENGTH))) + +#define TARGET_FLOAT_FORMAT IEEE_FLOAT_FORMAT + +#define BRANCH_COST(speed_p, predictable_p) ((predictable_p) ? 2 : 6) + + +/* Control the assembler format that we output. */ + +#undef NO_DOLLAR_IN_LABEL + +#define ASM_COMMENT_START "##" + +#define TEXT_SECTION_ASM_OP "\t.text" + +#define DATA_SECTION_ASM_OP "\t.data" + +#undef READONLY_DATA_SECTION_ASM_OP +#define READONLY_DATA_SECTION_ASM_OP "\t.section\t.rodata, \"a\"" + +#undef BSS_SECTION_ASM_OP +#define BSS_SECTION_ASM_OP "\t.section\t.bss, \"wa\"" + +#undef INIT_SECTION_ASM_OP +#define INIT_SECTION_ASM_OP "\t.section\t.init, \"ax\"" + +#undef FINI_SECTION_ASM_OP +#define FINI_SECTION_ASM_OP "\t.section\t.fini, \"ax\"" + +#define GLOBAL_ASM_OP ".global " + +#define SUPPORTS_WEAK 1 + +#define USER_LABEL_PREFIX "" + +#define REGISTER_PREFIX "" +#define REGISTER_NAMES \ + { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", \ + "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", \ + "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", \ + "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", \ + "r32", "r33", "r34", "r35", "r36", "r37", "r38", "r39", \ + "r40", "r41", "r42", "r43", "r44", "r45", "r46", "r47", \ + "r48", "r49", "r50", "r51", "r52", "tp", "sp", "lr", \ + "?r56?","idn0", "idn1", "udn0", "udn1", "udn2", "udn3", "zero", \ + "?FRAME?", "?ARG?", "?CMPEXCH?", "?NET?" } + +#define FINAL_PRESCAN_INSN(INSN, OPVEC, NOPERANDS) \ + tilegx_final_prescan_insn (insn) + +#define ASM_OUTPUT_OPCODE(STREAM, PTR) \ + (PTR = tilegx_asm_output_opcode (STREAM, PTR)) + +#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \ + do \ + { \ + char label[256]; \ + ASM_GENERATE_INTERNAL_LABEL (label, "L", (VALUE)); \ + fprintf (FILE, "%s ", \ + integer_asm_op (GET_MODE_SIZE (Pmode), TRUE)); \ + assemble_name (FILE, label); \ + fprintf (FILE, "\n"); \ + } \ + while (0) + +#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \ + do \ + { \ + char label[256]; \ + ASM_GENERATE_INTERNAL_LABEL (label, "L", (VALUE)); \ + fprintf (FILE, "%s ", \ + integer_asm_op (GET_MODE_SIZE (Pmode), TRUE)); \ + assemble_name (FILE, label); \ + ASM_GENERATE_INTERNAL_LABEL (label, "L", (REL)); \ + fprintf (FILE, "-"); \ + assemble_name (FILE, label); \ + fprintf (FILE, "\n"); \ + } \ + while (0) + +#define ASM_OUTPUT_ALIGN(FILE,LOG) \ + do { if ((LOG) != 0) fprintf (FILE, "\t.align %d\n", 1 << (LOG)); } while (0) + +#define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED) \ + ( fputs (".comm ", (FILE)), \ + assemble_name ((FILE), (NAME)), \ + fprintf ((FILE), ",%u\n", (unsigned int)(ROUNDED))) + +#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED) \ + ( fputs (".lcomm ", (FILE)), \ + assemble_name ((FILE), (NAME)), \ + fprintf ((FILE), ",%u\n", (unsigned int)(ROUNDED))) + +#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC) \ +static void __attribute__((__used__)) \ +call_ ## FUNC (void) \ +{ \ + asm (SECTION_OP); \ + asm ("{ moveli r0, hw2_last(" #FUNC " - . - 8); lnk r1 }\n"); \ + asm ("shl16insli r0, r0, hw1(" #FUNC " - .)\n"); \ + asm ("shl16insli r0, r0, hw0(" #FUNC " - . + 8)\n"); \ + asm ("add r0, r1, r0\n"); \ + asm ("jalr r0\n"); \ + asm (TEXT_SECTION_ASM_OP); \ +} + + + +#define INIT_EXPANDERS tilegx_init_expanders () + +/* A C structure for machine-specific, per-function data. This is + added to the cfun structure. */ +typedef struct GTY(()) machine_function +{ + /* Symbol for the text label used for pic. */ + rtx text_label_symbol; + + /* Register for the text label. */ + rtx text_label_rtx; + + /* Register for the pic offset table. */ + rtx got_rtx; + + /* The function calls tls_get_addr. */ + int calls_tls_get_addr; +} machine_function; + +#ifndef HAVE_AS_TLS +#define HAVE_AS_TLS 0 +#endif + +#ifndef ENDIAN_SPEC +#if TARGET_BIG_ENDIAN_DEFAULT +#define ENDIAN_SPEC \ + "%{!mlittle-endian:-EB} \ + %{mlittle-endian:%{mbig-endian: \ + %e-mbig-endian and -mlittle-endian may not be used together}-EL}" +#else +#define ENDIAN_SPEC \ + "%{!mbig-endian:-EL} \ + %{mbig-endian:%{mlittle-endian: \ + %e-mbig-endian and -mlittle-endian may not be used together}-EB}" +#endif +#endif + +#define EXTRA_SPECS \ + { "endian_spec", ENDIAN_SPEC } diff --git a/gcc-4.9/gcc/config/tilegx/tilegx.md b/gcc-4.9/gcc/config/tilegx/tilegx.md new file mode 100644 index 000000000..94946bb9b --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/tilegx.md @@ -0,0 +1,5630 @@ +;; Machine description for Tilera TILE-Gx chip for GCC. +;; Copyright (C) 2011-2014 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_constants [ + ;; + ;; The following represent intrinsic insns, organized by latency. + ;; + + ;; single cycle + (UNSPEC_INSN_ADDR_SHL16INSLI 1) + (UNSPEC_INSN_BFEXTS 2) + (UNSPEC_INSN_BFEXTU 3) + (UNSPEC_INSN_BFINS 4) + (UNSPEC_INSN_CRC32_32 5) + (UNSPEC_INSN_CRC32_8 6) + (UNSPEC_INSN_DBLALIGN 7) + (UNSPEC_INSN_DBLALIGN2 8) + (UNSPEC_INSN_DBLALIGN4 9) + (UNSPEC_INSN_DBLALIGN6 10) + (UNSPEC_INSN_DRAIN 11) + (UNSPEC_INSN_DTLBPR 12) + (UNSPEC_INSN_FINV 13) + (UNSPEC_INSN_FLUSH 14) + (UNSPEC_INSN_FLUSHWB 15) + (UNSPEC_INSN_FNOP 16) + (UNSPEC_INSN_ICOH 17) + (UNSPEC_INSN_ILL 18) + (UNSPEC_INSN_INFO 19) + (UNSPEC_INSN_INFOL 20) + (UNSPEC_INSN_INV 21) + (UNSPEC_INSN_LNK 22) + (UNSPEC_INSN_MFSPR 23) + (UNSPEC_INSN_MM 24) + (UNSPEC_INSN_MTSPR 25) + (UNSPEC_INSN_NAP 26) + (UNSPEC_INSN_PREFETCH_L1_FAULT 27) + (UNSPEC_INSN_PREFETCH_L2_FAULT 28) + (UNSPEC_INSN_PREFETCH_L3_FAULT 29) + (UNSPEC_INSN_REVBITS 30) + (UNSPEC_INSN_SHUFFLEBYTES 31) + (UNSPEC_INSN_TBLIDXB0 32) + (UNSPEC_INSN_TBLIDXB1 33) + (UNSPEC_INSN_TBLIDXB2 34) + (UNSPEC_INSN_TBLIDXB3 35) + (UNSPEC_INSN_V1AVGU 36) + (UNSPEC_INSN_V2AVGS 37) + (UNSPEC_INSN_WH64 38) + + ;; 2 cycles + (UNSPEC_INSN_CMUL 100) + (UNSPEC_INSN_CMULA 101) + (UNSPEC_INSN_CMULAF 102) + (UNSPEC_INSN_CMULFR 103) + (UNSPEC_INSN_CMULHR 104) + (UNSPEC_INSN_CMULF 105) + (UNSPEC_INSN_CMULH 106) + (UNSPEC_INSN_EXCH 107) + (UNSPEC_INSN_FDOUBLE_ADDSUB 108) + (UNSPEC_INSN_FDOUBLE_ADD_FLAGS 109) + (UNSPEC_INSN_FDOUBLE_MUL_FLAGS 110) + (UNSPEC_INSN_FDOUBLE_PACK1 111) + (UNSPEC_INSN_FDOUBLE_PACK2 112) + (UNSPEC_INSN_FDOUBLE_SUB_FLAGS 113) + (UNSPEC_INSN_FDOUBLE_UNPACK_MAX 114) + (UNSPEC_INSN_FDOUBLE_UNPACK_MIN 115) + (UNSPEC_INSN_FETCHADDGEZ 116) + (UNSPEC_INSN_FSINGLE_ADD1 117) + (UNSPEC_INSN_FSINGLE_ADDSUB2 118) + (UNSPEC_INSN_FSINGLE_MUL1 119) + (UNSPEC_INSN_FSINGLE_MUL2 120) + (UNSPEC_INSN_FSINGLE_PACK1 121) + (UNSPEC_INSN_FSINGLE_PACK2 122) + (UNSPEC_INSN_FSINGLE_SUB1 123) + (UNSPEC_INSN_MULAX 124) + (UNSPEC_INSN_MULA_HS_HS 125) + (UNSPEC_INSN_MULA_HS_HU 126) + (UNSPEC_INSN_MULA_HS_LS 127) + (UNSPEC_INSN_MULA_HS_LU 128) + (UNSPEC_INSN_MULA_HU_HU 129) + (UNSPEC_INSN_MULA_HU_LS 130) + (UNSPEC_INSN_MULA_HU_LU 131) + (UNSPEC_INSN_MULA_LS_LS 132) + (UNSPEC_INSN_MULA_LS_LU 133) + (UNSPEC_INSN_MULA_LU_LU 134) + (UNSPEC_INSN_MUL_HS_HS 135) + (UNSPEC_INSN_MUL_HS_HU 136) + (UNSPEC_INSN_MUL_HS_LS 137) + (UNSPEC_INSN_MUL_HS_LU 138) + (UNSPEC_INSN_MUL_HU_HU 139) + (UNSPEC_INSN_MUL_HU_LS 140) + (UNSPEC_INSN_MUL_HU_LU 141) + (UNSPEC_INSN_MUL_LS_LS 142) + (UNSPEC_INSN_MUL_LS_LU 143) + (UNSPEC_INSN_MUL_LU_LU 144) + (UNSPEC_INSN_V1ADIFFU 145) + (UNSPEC_INSN_V1DDOTPU 146) + (UNSPEC_INSN_V1DDOTPUA 147) + (UNSPEC_INSN_V1DDOTPUS 148) + (UNSPEC_INSN_V1DDOTPUSA 149) + (UNSPEC_INSN_V1DOTP 150) + (UNSPEC_INSN_V1DOTPA 151) + (UNSPEC_INSN_V1DOTPU 152) + (UNSPEC_INSN_V1DOTPUA 153) + (UNSPEC_INSN_V1DOTPUS 154) + (UNSPEC_INSN_V1DOTPUSA 155) + (UNSPEC_INSN_V1SADAU 156) + (UNSPEC_INSN_V1SADU 157) + (UNSPEC_INSN_V2ADIFFS 158) + (UNSPEC_INSN_V2DOTP 159) + (UNSPEC_INSN_V2DOTPA 160) + (UNSPEC_INSN_V2MULFSC 161) + (UNSPEC_INSN_V2SADAS 162) + (UNSPEC_INSN_V2SADAU 163) + (UNSPEC_INSN_V2SADS 164) + (UNSPEC_INSN_V2SADU 165) + + ;; 11 cycles + (UNSPEC_INSN_CMPEXCH 200) + + ;; + ;; The following are special insns. + ;; + + ;; Blockage + (UNSPEC_BLOCKAGE 201) + + ;; Lnk and its label + (UNSPEC_LNK_AND_LABEL 202) + + ;; Memory fence + (UNSPEC_MF 203) + + ;; Insns generating difference of two labels + (UNSPEC_MOV_PCREL_STEP3 204) + (UNSPEC_MOV_LARGE_PCREL_STEP4 205) + + ;; Latency specifying loads. + (UNSPEC_LATENCY_L2 206) + (UNSPEC_LATENCY_MISS 207) + + ;; A pseudo-op that prevents network operations from being ordered. + (UNSPEC_NETWORK_BARRIER 208) + + ;; Operations that access network registers. + (UNSPEC_NETWORK_RECEIVE 209) + (UNSPEC_NETWORK_SEND 210) + + ;; Stack protector operations + (UNSPEC_SP_SET 211) + (UNSPEC_SP_TEST 212) + + ;; This is used to move a value to a SPR. + (UNSPEC_SPR_MOVE 213) + + ;; A call to __tls_get_addr + (UNSPEC_TLS_GD_CALL 214) + + ;; An opaque TLS "add" operation for TLS general dynamic model + ;; access. + (UNSPEC_TLS_GD_ADD 215) + + ;; An opaque TLS "load" operation for TLS initial exec model access. + (UNSPEC_TLS_IE_LOAD 216) + + ;; An opaque TLS "add" operation for TLS access. + (UNSPEC_TLS_ADD 217) + + ;; Atomics + (UNSPEC_ATOMIC 218) + (UNSPEC_CMPXCHG 219) + (UNSPEC_XCHG 220) + + ;; + ;; The following are operands. + ;; + (UNSPEC_HW0 300) + (UNSPEC_HW1 301) + (UNSPEC_HW2 302) + (UNSPEC_HW3 303) + (UNSPEC_HW0_LAST 304) + (UNSPEC_HW1_LAST 305) + (UNSPEC_HW2_LAST 306) + + (UNSPEC_HW0_PCREL 307) + (UNSPEC_HW1_PCREL 308) + (UNSPEC_HW1_LAST_PCREL 309) + (UNSPEC_HW2_LAST_PCREL 310) + + (UNSPEC_HW0_GOT 311) + (UNSPEC_HW0_LAST_GOT 312) + (UNSPEC_HW1_LAST_GOT 313) + + (UNSPEC_HW0_TLS_GD 314) + (UNSPEC_HW1_LAST_TLS_GD 315) + + (UNSPEC_HW0_TLS_IE 316) + (UNSPEC_HW1_LAST_TLS_IE 317) + + (UNSPEC_HW0_TLS_LE 318) + (UNSPEC_HW1_LAST_TLS_LE 319) + + (UNSPEC_HW0_PLT_PCREL 320) + (UNSPEC_HW1_PLT_PCREL 321) + + (UNSPEC_HW1_LAST_PLT_PCREL 322) + (UNSPEC_HW2_LAST_PLT_PCREL 323) + + ;; This is used to wrap around the addresses of non-temporal load/store + ;; intrinsics. + (UNSPEC_NON_TEMPORAL 324) +]) + +;; Mark the last instruction of various latencies, used to +;; determine the rtx costs of unspec insns. +(define_constants [ + (TILEGX_LAST_LATENCY_1_INSN 99) + (TILEGX_LAST_LATENCY_2_INSN 199) + (TILEGX_LAST_LATENCY_INSN 299) +]) + +(define_constants [ + (TILEGX_NETREG_IDN0 0) + (TILEGX_NETREG_IDN1 1) + (TILEGX_NETREG_UDN0 2) + (TILEGX_NETREG_UDN1 3) + (TILEGX_NETREG_UDN2 4) + (TILEGX_NETREG_UDN3 5) +]) + +(define_constants [ + (TILEGX_CMPEXCH_REG 66) + (TILEGX_NETORDER_REG 67) +]) + + +;; Operand and operator predicates and constraints + +(include "predicates.md") +(include "constraints.md") +(include "tilegx-generic.md") + +;; Define an insn type attribute. This defines what pipes things can go in. +(define_attr "type" + "X0,X0_2cycle,X1,X1_branch,X1_2cycle,X1_L2,X1_remote,X1_miss,X01,Y0,Y0_2cycle,Y1,Y2,Y2_2cycle,Y2_L2,Y2_miss,Y01,cannot_bundle,cannot_bundle_3cycle,cannot_bundle_4cycle,nothing" + (const_string "Y01")) + +(define_attr "length" "" + (cond [(eq_attr "type" "X1_branch") + (if_then_else + (and (le (minus (match_dup 0) (pc)) (const_int 524280)) + (le (minus (pc) (match_dup 0)) (const_int 524288))) + (const_int 8) + (const_int 16)) + ] + (const_int 8))) + + +;; Define some iterators. +(define_mode_iterator IVMODE [SI DI V8QI V4HI V2SI]) +(define_mode_iterator IVNMODE [SI V8QI V4HI V2SI]) +(define_mode_iterator I48MODE [SI DI]) +(define_mode_iterator I48MODE2 [SI DI]) +(define_mode_iterator I124MODE [QI HI SI]) +(define_mode_iterator FI48MODE [SF DF SI DI]) +(define_mode_iterator VEC48MODE [V8QI V4HI]) +(define_mode_iterator VEC248MODE [V8QI V4HI V2SI]) + +(define_mode_attr n [(QI "1") (HI "2") (SI "4") (DI "") + (V8QI "1") (V4HI "2") (V2SI "4")]) +(define_mode_attr x [(SI "x") (DI "")]) +(define_mode_attr bitsuffix [(SI "_32bit") (DI "")]) +(define_mode_attr four_if_si [(SI "4") (DI "")]) +(define_mode_attr four_s_if_si [(SI "4s") (DI "")]) +(define_mode_attr nbits [(SI "5") (DI "6")]) +(define_mode_attr shift_pipe [(SI "X01") (DI "*")]) + +;; Code iterator for either extend. +(define_code_iterator any_extend [sign_extend zero_extend]) + +;; Code iterator for all three shifts. +(define_code_iterator any_shift [ashift ashiftrt lshiftrt]) + +;; Code iterator for all byte ops without immediate variants. +(define_code_iterator v1op [us_minus us_plus minus ne le leu mult]) + +;; Code iterator for all 2-byte vector ops without immediate variants. +(define_code_iterator v2op [ss_minus ss_plus minus ne le leu]) + +;; Code iterator for all 4-byte vector ops without immediate variants. +(define_code_iterator v4op [ss_minus ss_plus minus plus]) + +;; Code iterator for all byte vector ops with immediate variants. +(define_code_iterator v1op_immed [plus umax umin eq lt ltu]) + +;; Code iterator for all 2-byte vector ops with immediate variants. +(define_code_iterator v2op_immed [plus smax smin eq lt ltu]) + +;; Code iterator for all 2-byte vector shifts without immediate variants. +(define_code_iterator v2shift [ss_ashift]) + +;; Code iterator for all 4-byte vector shifts without immediate variants. +(define_code_iterator v4shift [ashift ashiftrt lshiftrt ss_ashift]) + +;; <optab> expands to the name of the optab for a particular code. +(define_code_attr optab [(ashift "ashl") + (ashiftrt "ashr") + (lshiftrt "lshr") + (ss_ashift "ssashl") + (eq "seq") + (ne "sne") + (lt "slt") + (ltu "sltu") + (le "sle") + (leu "sleu") + (minus "sub") + (plus "add") + (mult "mul") + (smax "smax") + (smin "smin") + (ss_minus "sssub") + (ss_plus "ssadd") + (umax "umax") + (umin "umin") + (us_minus "ussub") + (us_plus "usadd") + ]) + +;; <insn> expands to the name of the insn that implements a particular +;; code. +(define_code_attr insn [(ashift "shl") + (ashiftrt "shrs") + (lshiftrt "shru") + (ss_ashift "shlsc") + (eq "cmpeq") + (ne "cmpne") + (lt "cmplts") + (ltu "cmpltu") + (le "cmples") + (leu "cmpleu") + (minus "sub") + (plus "add") + (mult "multu") + (smax "maxs") + (smin "mins") + (umax "maxu") + (umin "minu") + (ss_minus "subsc") + (ss_plus "addsc") + (us_minus "subuc") + (us_plus "adduc") + ]) + +;; <pipe> expands to the pipeline resource that contains the +;; particular code. +(define_code_attr pipe [(ashift "X01") + (ashiftrt "X01") + (lshiftrt "X01") + (ss_ashift "X01") + (eq "X01") + (ne "X01") + (lt "X01") + (ltu "X01") + (le "X01") + (leu "X01") + (minus "X01") + (plus "X01") + (mult "X0_2cycle") + (smax "X01") + (smin "X01") + (umax "X01") + (umin "X01") + (ss_minus "X01") + (ss_plus "X01") + (us_minus "X01") + (us_plus "X01") + ]) + +;; <comm> indicates whether a particular code is commutative, using +;; the "%" commutative opterator constraint. +(define_code_attr comm [(ashift "") + (ashiftrt "") + (lshiftrt "") + (ss_ashift "") + (eq "%") + (ne "%") + (lt "") + (ltu "") + (le "") + (leu "") + (minus "") + (plus "%") + (mult "%") + (smin "%") + (umin "%") + (smax "%") + (umax "%") + (ss_plus "%") + (us_plus "%") + (ss_minus "") + (us_minus "") + ]) + +;; <s> is the load/store extension suffix. +(define_code_attr s [(zero_extend "u") + (sign_extend "s")]) + +;; Code for packing two 2-byte vectors. +(define_code_iterator v2pack [truncate us_truncate]) + +;; <pack_optab> expands to the part of the optab name describing how +;; two vectors are packed. +(define_code_attr pack_optab [(truncate "trunc") + (us_truncate "usat") + (ss_truncate "ssat")]) + +;; <pack_insn> expands to the insn that implements a particular vector +;; packing code. +(define_code_attr pack_insn [(truncate "packl") + (us_truncate "packuc") + (ss_truncate "packsc")]) + +;; +;; The basic data move insns. +;; + +(define_expand "movqi" + [(set (match_operand:QI 0 "nonimmediate_operand" "") + (match_operand:QI 1 "nonautoinc_operand" ""))] + "" +{ + if (tilegx_expand_mov (QImode, operands)) + DONE; +}) + +(define_insn "*movqi_insn" + [(set (match_operand:QI 0 "nonimmediate_operand" "=r,r,r,r,U,m") + (match_operand:QI 1 "move_operand" "r,I,U,m,rO,rO"))] + "(register_operand (operands[0], QImode) + || reg_or_0_operand (operands[1], QImode))" + "@ + move\t%0, %r1 + movei\t%0, %1 + ld1u\t%0, %1 + ld1u_add\t%0, %I1, %i1 + st1\t%0, %r1 + st1_add\t%I0, %r1, %i0" + [(set_attr "type" "*,*,Y2_2cycle,X1_2cycle,Y2,X1")]) + +(define_expand "movhi" + [(set (match_operand:HI 0 "nonimmediate_operand" "") + (match_operand:HI 1 "nonautoinc_operand" ""))] + "" +{ + if (tilegx_expand_mov (HImode, operands)) + DONE; +}) + +(define_insn "*movhi_insn" + [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,r,r,r,U,m") + (match_operand:HI 1 "move_operand" "r,I,JT,U,m,rO,rO"))] + "(register_operand (operands[0], HImode) + || reg_or_0_operand (operands[1], HImode))" + "@ + move\t%0, %r1 + movei\t%0, %1 + moveli\t%0, %H1 + ld2u\t%0, %1 + ld2u_add\t%0, %I1, %i1 + st2\t%0, %r1 + st2_add\t%I0, %r1, %i0" + [(set_attr "type" "*,*,X01,Y2_2cycle,X1_2cycle,Y2,X1")]) + +(define_expand "movsi" + [(set (match_operand:SI 0 "nonimmediate_operand" "") + (match_operand:SI 1 "nonautoinc_operand" ""))] + "" +{ + if (tilegx_expand_mov (SImode, operands)) + DONE; +}) + +(define_insn "*movsi_insn" + [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,r,r,r,U,m") + (match_operand:SI 1 "move_operand" "r,I,JT,K,U,m,rO,rO"))] + "(register_operand (operands[0], SImode) + || reg_or_0_operand (operands[1], SImode))" + "@ + move\t%0, %r1 + movei\t%0, %1 + moveli\t%0, %H1 + shl16insli\t%0, zero, %h1 + ld4s\t%0, %1 + ld4s_add\t%0, %I1, %i1 + st4\t%0, %r1 + st4_add\t%I0, %r1, %i0" + [(set_attr "type" "*,*,X01,X01,Y2_2cycle,X1_2cycle,Y2,X1")]) + +(define_expand "movdi" + [(set (match_operand:DI 0 "nonimmediate_operand" "") + (match_operand:DI 1 "nonautoinc_operand" ""))] + "" +{ + if (tilegx_expand_mov (DImode, operands)) + DONE; +}) + +(define_insn "*movdi_insn" + [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,r,r,r,r,r,r,U,m") + (match_operand:DI 1 "move_operand" "r,I,JT,K,N,P,U,m,rO,rO"))] + "(register_operand (operands[0], DImode) + || reg_or_0_operand (operands[1], DImode))" + "@ + move\t%0, %r1 + movei\t%0, %1 + moveli\t%0, %H1 + shl16insli\t%0, zero, %h1 + v1addi\t%0, zero, %j1 + v2addi\t%0, zero, %h1 + ld\t%0, %1 + ld_add\t%0, %I1, %i1 + st\t%0, %r1 + st_add\t%I0, %r1, %i0" + [(set_attr "type" "*,*,X01,X01,X01,X01,Y2_2cycle,X1_2cycle,Y2,X1")]) + +(define_expand "movmisalign<mode>" + [(set (match_operand:VEC248MODE 0 "nonautoincmem_nonimmediate_operand" "") + (match_operand:VEC248MODE 1 "nonautoincmem_general_operand" ""))] + "" +{ + tilegx_expand_movmisalign (<MODE>mode, operands); + DONE; +}) + +(define_expand "movsf" + [(set (match_operand:SF 0 "nonimmediate_operand" "") + (match_operand:SF 1 "general_operand" ""))] + "" +{ + /* Materialize immediates using clever SImode code, but don't + do this after reload starts, since gen_lowpart will choke + during reload if given an illegitimate address. */ + if (immediate_operand (operands[1], SFmode) + && operands[1] != const0_rtx + && (register_operand (operands[0], SFmode) + || (!reload_in_progress && !reload_completed))) + { + emit_insn (gen_movsi (gen_lowpart (SImode, operands[0]), + gen_lowpart (SImode, operands[1]))); + DONE; + } +}) + +(define_insn "*movsf" + [(set (match_operand:SF 0 "nonimmediate_operand" "=r,r,r,U,m") + (match_operand:SF 1 "general_operand" "rO,U,m,rO,rO"))] + "" + "@ + move\t%0, %r1 + ld4s\t%0, %1 + ld4s_add\t%0, %I1, %i1 + st4\t%0, %r1 + st4_add\t%I0, %r1, %i0" + [(set_attr "type" "*,Y2_2cycle,X1_2cycle,Y2,X1")]) + +(define_expand "movdf" + [(set (match_operand:DF 0 "nonimmediate_operand" "") + (match_operand:DF 1 "general_operand" ""))] + "" +{ + /* Materialize immediates using clever DImode code, but don't + do this after reload starts, since gen_lowpart will choke + during reload if given an illegitimate address. */ + if (immediate_operand (operands[1], DFmode) + && operands[1] != const0_rtx + && (register_operand (operands[0], DFmode) + || (!reload_in_progress && !reload_completed))) + { + emit_insn (gen_movdi (gen_lowpart (DImode, operands[0]), + gen_lowpart (DImode, operands[1]))); + DONE; + } +}) + +(define_insn "*movdf" + [(set (match_operand:DF 0 "nonimmediate_operand" "=r,r,r,U,m") + (match_operand:DF 1 "general_operand" "rO,U,m,rO,rO"))] + "" + "@ + move\t%0, %r1 + ld\t%0, %1 + ld_add\t%0, %I1, %i1 + st\t%0, %r1 + st_add\t%I0, %r1, %i0" + [(set_attr "type" "*,Y2_2cycle,X1_2cycle,Y2,X1")]) + +(define_expand "mov<mode>" + [(set (match_operand:VEC248MODE 0 "nonimmediate_operand" "") + (match_operand:VEC248MODE 1 "general_operand" ""))] + "" +{ + /* Materialize immediates using clever DImode code, but don't + do this after reload starts, since gen_lowpart will choke + during reload if given an illegitimate address. */ + if (immediate_operand (operands[1], <MODE>mode) + && operands[1] != const0_rtx + && (register_operand (operands[0], <MODE>mode) + || (!reload_in_progress && !reload_completed))) + { + emit_insn (gen_movdi (gen_lowpart (DImode, operands[0]), + gen_lowpart (DImode, operands[1]))); + DONE; + } +}) + +(define_insn "*mov<mode>" + [(set (match_operand:VEC248MODE 0 "nonimmediate_operand" "=r,r,r,U,m") + (match_operand:VEC248MODE 1 "general_operand" "rO,U,m,rO,rO"))] + "" + "@ + move\t%0, %r1 + ld\t%0, %1 + ld_add\t%0, %I1, %i1 + st\t%0, %r1 + st_add\t%I0, %r1, %i0" + [(set_attr "type" "*,Y2_2cycle,X1_2cycle,Y2,X1")]) + +(define_insn "movstrictqi" + [(set (strict_low_part (match_operand:QI 0 "register_operand" "+r")) + (match_operand:QI 1 "reg_or_0_operand" "rO"))] + "" + "bfins\t%0, %r1, 0, 7" + [(set_attr "type" "X0")]) + +(define_insn "movstricthi" + [(set (strict_low_part (match_operand:HI 0 "register_operand" "+r")) + (match_operand:HI 1 "reg_or_0_operand" "rO"))] + "" + "bfins\t%0, %r1, 0, 15" + [(set_attr "type" "X0")]) + +(define_insn "movstrictsi" + [(set (strict_low_part (match_operand:SI 0 "register_operand" "+r")) + (match_operand:SI 1 "reg_or_0_operand" "rO"))] + "" + "bfins\t%0, %r1, 0, 31" + [(set_attr "type" "X0")]) + + +;; +;; Bit-field extracts/inserts +;; + +(define_expand "insv" + [(set (zero_extract:DI (match_operand:DI 0 "register_operand" "") + (match_operand:DI 1 "u6bit_cint_operand" "") + (match_operand:DI 2 "u6bit_cint_operand" "")) + (match_operand:DI 3 "reg_or_cint_operand" ""))] + "" +{ + rtx first_rtx = operands[2]; + HOST_WIDE_INT first = INTVAL (first_rtx); + HOST_WIDE_INT width = INTVAL (operands[1]); + rtx v = operands[3]; + + if (CONST_INT_P (v)) + { + /* Which bits are we affecting? */ + HOST_WIDE_INT mask = ((((HOST_WIDE_INT) 1) << width) - 1) << first; + + /* Extract just the bits we need, sign extending them to make the + constant easier to materialize in a register. */ + int shift = sizeof(HOST_WIDE_INT) * 8 - width; + HOST_WIDE_INT n = (INTVAL (v) << shift) >> shift; + + if (n == 0) + { + /* We are setting every bit in the bitfield to zero. Try to use + andi instead, since that is more efficient. */ + rtx mask_rtx = GEN_INT (~mask); + if (satisfies_constraint_I (mask_rtx)) + { + emit_insn (gen_anddi3 (operands[0], operands[0], mask_rtx)); + DONE; + } + + operands[3] = const0_rtx; + } + else + { + if (n == -1) + { + /* We are setting every bit in the bitfield to one. Try to use + ori instead, since that is more efficient. */ + rtx mask_rtx = GEN_INT (mask); + if (satisfies_constraint_I (mask_rtx)) + { + emit_insn (gen_iordi3 (operands[0], operands[0], mask_rtx)); + DONE; + } + } + + if (!can_create_pseudo_p ()) + FAIL; + + operands[3] = force_reg (DImode, GEN_INT (n)); + } + } +}) + +(define_insn "*insv_tblidxb0" + [(set (zero_extract:DI + (match_operand:DI 0 "register_operand" "+r") + (const_int 8) + (const_int 2)) + (match_operand:DI 1 "register_operand" "rO"))] + "" + "tblidxb0\t%0, %r1" + [(set_attr "type" "Y0")]) + +(define_insn "*insv_tblidxb1" + [(set (zero_extract:DI + (match_operand:DI 0 "register_operand" "+r") + (const_int 8) + (const_int 2)) + (zero_extract:DI + (const_int 8) + (const_int 8) + (match_operand:DI 1 "register_operand" "rO")))] + "" + "tblidxb1\t%0, %r1" + [(set_attr "type" "Y0")]) + +(define_insn "*insv_tblidxb2" + [(set (zero_extract:DI + (match_operand:DI 0 "register_operand" "+r") + (const_int 8) + (const_int 2)) + (zero_extract:DI + (const_int 8) + (const_int 16) + (match_operand:DI 1 "register_operand" "rO")))] + "" + "tblidxb2\t%0, %r1" + [(set_attr "type" "Y0")]) + +(define_insn "*insv_tblidxb3" + [(set (zero_extract:DI + (match_operand:DI 0 "register_operand" "+r") + (const_int 8) + (const_int 2)) + (zero_extract:DI + (const_int 8) + (const_int 24) + (match_operand:DI 1 "register_operand" "rO")))] + "" + "tblidxb3\t%0, %r1" + [(set_attr "type" "Y0")]) + +(define_insn "*insv_bfins" + [(set (zero_extract:DI + (match_operand:DI 0 "register_operand" "+r") + (match_operand:DI 1 "u6bit_cint_operand" "n") + (match_operand:DI 2 "u6bit_cint_operand" "n")) + (match_operand:DI 3 "reg_or_cint_operand" "rO"))] + "" + "bfins\t%0, %r3, %2, %2+%1-1" + [(set_attr "type" "X0")]) + +(define_insn "*insv_mm" + [(set (zero_extract:DI + (match_operand:DI 0 "register_operand" "+r") + (match_operand:DI 1 "u6bit_cint_operand" "n") + (match_operand:DI 2 "u6bit_cint_operand" "n")) + (zero_extract:DI + (match_operand:DI 3 "register_operand" "rO") + (match_dup 1) + (match_dup 2)))] + "" +{ + int n; + + operands[1] = GEN_INT (INTVAL (operands[1]) + INTVAL (operands[2])); + + n = INTVAL (operands[2]); + n = (n == 0) ? 63 : n - 1; + operands[2] = GEN_INT (n); + + return "mm\t%0, %r3, %1, %2"; +} + [(set_attr "type" "X0")]) + +(define_expand "extv" + [(set (match_operand:DI 0 "register_operand" "") + (sign_extract:DI (match_operand 1 "nonautoincmem_general_operand" "") + (match_operand:DI 2 "immediate_operand" "") + (match_operand:DI 3 "immediate_operand" "")))] + "" +{ + if (MEM_P (operands[1])) + { + HOST_WIDE_INT bit_offset, bit_width; + HOST_WIDE_INT first_byte_offset, last_byte_offset; + + if (GET_MODE (operands[1]) != QImode) + FAIL; + + bit_width = INTVAL (operands[2]); + bit_offset = INTVAL (operands[3]); + + /* NOTE: bit_offset is relative to the mode of operand + 1 (QImode). It will be negative in big-endian mode + here. Convert that back to the real offset. */ + if (BYTES_BIG_ENDIAN) + bit_offset = GET_MODE_BITSIZE (QImode) - bit_width - bit_offset; + + /* Reject bitfields that can be done with a normal load. */ + if (MEM_ALIGN (operands[1]) >= bit_offset + bit_width) + FAIL; + + /* The value in memory cannot span more than 8 bytes. */ + first_byte_offset = bit_offset / BITS_PER_UNIT; + last_byte_offset = (bit_offset + bit_width - 1) / BITS_PER_UNIT; + if (last_byte_offset - first_byte_offset > 7) + FAIL; + + tilegx_expand_unaligned_load (operands[0], operands[1], + bit_width, bit_offset, 1); + + DONE; + } + + operands[1] = force_reg (DImode, operands[1]); +}) + +(define_expand "extzv" + [(set (match_operand:DI 0 "register_operand" "") + (zero_extract:DI (match_operand 1 "nonautoincmem_general_operand" "") + (match_operand:DI 2 "immediate_operand" "") + (match_operand:DI 3 "immediate_operand" "")))] + "" +{ + HOST_WIDE_INT bit_width = INTVAL (operands[2]); + HOST_WIDE_INT bit_offset = INTVAL (operands[3]); + + if (MEM_P (operands[1])) + { + HOST_WIDE_INT first_byte_offset, last_byte_offset; + + if (GET_MODE (operands[1]) != QImode) + FAIL; + + /* NOTE: bit_offset is relative to the mode of operand + 1 (QImode). It will be negative in big-endian mode + here. */ + if (BYTES_BIG_ENDIAN) + bit_offset = GET_MODE_BITSIZE (QImode) - bit_width - bit_offset; + + /* Reject bitfields that can be done with a normal load. */ + if (MEM_ALIGN (operands[1]) >= bit_offset + bit_width) + FAIL; + + /* The value in memory cannot span more than 8 bytes. */ + first_byte_offset = bit_offset / BITS_PER_UNIT; + last_byte_offset = (bit_offset + bit_width - 1) / BITS_PER_UNIT; + if (last_byte_offset - first_byte_offset > 7) + FAIL; + + tilegx_expand_unaligned_load (operands[0], operands[1], + bit_width, bit_offset, 0); + + DONE; + } + + operands[1] = force_reg (DImode, operands[1]); + + if (bit_offset == 0) + { + /* Extracting the low bits is just a bitwise AND. */ + HOST_WIDE_INT mask = ((HOST_WIDE_INT)1 << bit_width) - 1; + emit_insn (gen_anddi3 (operands[0], operands[1], GEN_INT (mask))); + DONE; + } +}) + + +;; +;; Addresses +;; + +;; The next three patterns are used to to materialize a position +;; independent address by adding the difference of two labels to a base +;; label in the text segment, assuming that the difference fits in 32 +;; signed bits. +(define_expand "mov_address_step1" + [(set (match_operand:DI 0 "register_operand" "") + (const:DI (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")] + UNSPEC_HW2_LAST)))]) + +(define_expand "mov_address_step2" + [(set (match_operand:DI 0 "register_operand" "") + (unspec:DI + [(match_operand:DI 1 "reg_or_0_operand" "") + (const:DI (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")] + UNSPEC_HW1))] + UNSPEC_INSN_ADDR_SHL16INSLI))]) + +(define_expand "mov_address_step3" + [(set (match_operand:DI 0 "register_operand" "") + (unspec:DI + [(match_operand:DI 1 "reg_or_0_operand" "") + (const:DI (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")] + UNSPEC_HW0))] + UNSPEC_INSN_ADDR_SHL16INSLI))]) + +;; First step of the 2-insn sequence to materialize a 32-bit symbolic +;; address. +(define_expand "mov_address_32bit_step1" + [(set (match_operand:SI 0 "register_operand" "") + (const:SI (unspec:SI [(match_operand:SI 1 "symbolic_operand" "")] + UNSPEC_HW1_LAST)))]) + +;; Second step of the 2-insn sequence to materialize a 32-bit symbolic +;; address. +(define_expand "mov_address_32bit_step2" + [(set (match_operand:SI 0 "register_operand" "") + (unspec:SI + [(match_operand:SI 1 "reg_or_0_operand" "") + (const:SI (unspec:SI [(match_operand:SI 2 "symbolic_operand" "")] + UNSPEC_HW0))] + UNSPEC_INSN_ADDR_SHL16INSLI))]) + + +;; +;; pic related instructions +;; + +;; NOTE: We compute the label in this unusual way because if we place +;; the label after the lnk, whether it is at the same address as the +;; lnk will vary depending on whether the optimization level chooses +;; to insert bundling braces. +(define_insn "insn_lnk_and_label<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (unspec_volatile:I48MODE + [(match_operand:I48MODE 1 "symbolic_operand" "")] + UNSPEC_LNK_AND_LABEL))] + "" + "%1 = . + 8\n\tlnk\t%0" + [(set_attr "type" "Y1")]) + +;; The next three patterns are used to to materialize a position +;; independent address by adding the difference of two labels to a +;; base label in the text segment, assuming that the difference fits +;; in 32 signed bits. +(define_expand "mov_pcrel_step1<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "") + (const:I48MODE (unspec:I48MODE + [(match_operand:I48MODE 1 "symbolic_operand" "") + (match_operand:I48MODE 2 "symbolic_operand" "")] + UNSPEC_HW1_LAST_PCREL)))] + "flag_pic") + +(define_expand "mov_pcrel_step2<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "") + (unspec:I48MODE + [(match_operand:I48MODE 1 "reg_or_0_operand" "") + (const:I48MODE + (unspec:I48MODE [(match_operand:I48MODE 2 "symbolic_operand" "") + (match_operand:I48MODE 3 "symbolic_operand" "")] + UNSPEC_HW0_PCREL))] + UNSPEC_INSN_ADDR_SHL16INSLI))] + "flag_pic") + +(define_insn "mov_pcrel_step3<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (unspec:I48MODE [(match_operand:I48MODE 1 "reg_or_0_operand" "rO") + (match_operand:I48MODE 2 "reg_or_0_operand" "rO") + (match_operand:I48MODE 3 "symbolic_operand" "in") + (match_operand:I48MODE 4 "symbolic_operand" "in")] + UNSPEC_MOV_PCREL_STEP3))] + "flag_pic" + "add<x>\t%0, %r1, %r2") + +;; The next three patterns are used to to materialize a position +;; independent 64-bit address by adding the difference of two labels to +;; a base label in the text segment, without any limitation on the size +;; of the difference. +(define_expand "mov_large_pcrel_step1" + [(set (match_operand:DI 0 "register_operand" "") + (const:DI (unspec:DI + [(match_operand:DI 1 "symbolic_operand" "") + (match_operand:DI 2 "symbolic_operand" "")] + UNSPEC_HW2_LAST_PCREL)))] + "flag_pic") + +(define_expand "mov_large_pcrel_step2" + [(set (match_operand:DI 0 "register_operand" "") + (unspec:DI + [(match_operand:DI 1 "reg_or_0_operand" "") + (const:DI + (unspec:DI [(match_operand:DI 2 "symbolic_operand" "") + (match_operand:DI 3 "symbolic_operand" "")] + UNSPEC_HW1_PCREL))] + UNSPEC_INSN_ADDR_SHL16INSLI))] + "flag_pic") + +;; Note: step 3 is same as move_pcrel_step2. +(define_expand "mov_large_pcrel_step3" + [(set (match_operand:DI 0 "register_operand" "") + (unspec:DI + [(match_operand:DI 1 "reg_or_0_operand" "") + (const:DI + (unspec:DI [(match_operand:DI 2 "symbolic_operand" "") + (match_operand:DI 3 "symbolic_operand" "")] + UNSPEC_HW0_PCREL))] + UNSPEC_INSN_ADDR_SHL16INSLI))] + "flag_pic") + +(define_insn "mov_large_pcrel_step4" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "symbolic_operand" "in") + (match_operand:DI 4 "symbolic_operand" "in")] + UNSPEC_MOV_LARGE_PCREL_STEP4))] + "flag_pic" + "add\t%0, %r1, %r2") + +;; The next three patterns are used to materialize a position +;; independent 64-bit plt address by adding the difference of two +;; labels to a base label in the text segment. +(define_expand "mov_plt_pcrel_step1" + [(set (match_operand:DI 0 "register_operand" "") + (const:DI (unspec:DI + [(match_operand:DI 1 "symbolic_operand" "") + (match_operand:DI 2 "symbolic_operand" "")] + UNSPEC_HW2_LAST_PLT_PCREL)))] + "flag_pic") + +(define_expand "mov_plt_pcrel_step2" + [(set (match_operand:DI 0 "register_operand" "") + (unspec:DI + [(match_operand:DI 1 "reg_or_0_operand" "") + (const:DI + (unspec:DI [(match_operand:DI 2 "symbolic_operand" "") + (match_operand:DI 3 "symbolic_operand" "")] + UNSPEC_HW1_PLT_PCREL))] + UNSPEC_INSN_ADDR_SHL16INSLI))] + "flag_pic") + +(define_expand "mov_plt_pcrel_step3" + [(set (match_operand:DI 0 "register_operand" "") + (unspec:DI + [(match_operand:DI 1 "reg_or_0_operand" "") + (const:DI + (unspec:DI [(match_operand:DI 2 "symbolic_operand" "") + (match_operand:DI 3 "symbolic_operand" "")] + UNSPEC_HW0_PLT_PCREL))] + UNSPEC_INSN_ADDR_SHL16INSLI))] + "flag_pic") + +;; The next two patterns are used to materialize a position independent +;; 32-bit plt address by adding the difference of two labels to a base +;; label in the text segment. +(define_expand "mov_plt_pcrel_step1_32bit" + [(set (match_operand:SI 0 "register_operand" "") + (const:SI (unspec:SI + [(match_operand:SI 1 "symbolic_operand" "") + (match_operand:SI 2 "symbolic_operand" "")] + UNSPEC_HW1_LAST_PLT_PCREL)))] + "flag_pic") + +(define_expand "mov_plt_pcrel_step2_32bit" + [(set (match_operand:SI 0 "register_operand" "") + (unspec:SI + [(match_operand:SI 1 "reg_or_0_operand" "") + (const:SI + (unspec:SI [(match_operand:SI 2 "symbolic_operand" "") + (match_operand:SI 3 "symbolic_operand" "")] + UNSPEC_HW0_PLT_PCREL))] + UNSPEC_INSN_ADDR_SHL16INSLI))] + "flag_pic") + +(define_expand "add_got16<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "") + (plus:I48MODE + (match_operand:I48MODE 1 "reg_or_0_operand" "") + (const:I48MODE + (unspec:I48MODE [(match_operand:I48MODE 2 "symbolic_operand" "")] + UNSPEC_HW0_LAST_GOT))))] + "flag_pic == 1") + +(define_expand "mov_got32_step1<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "") + (const:I48MODE + (unspec:I48MODE [(match_operand:I48MODE 1 "symbolic_operand" "")] + UNSPEC_HW1_LAST_GOT)))] + "flag_pic == 2") + +(define_expand "mov_got32_step2<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "") + (unspec:I48MODE + [(match_operand:I48MODE 1 "reg_or_0_operand" "") + (const:I48MODE + (unspec:I48MODE [(match_operand:I48MODE 2 "symbolic_operand" "")] + UNSPEC_HW0_GOT))] + UNSPEC_INSN_ADDR_SHL16INSLI))] + "flag_pic == 2") + + +;; +;; TLS +;; + +(define_expand "mov_tls_gd_step1<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "") + (const:I48MODE + (unspec:I48MODE [(match_operand:I48MODE 1 "tls_symbolic_operand" "")] + UNSPEC_HW1_LAST_TLS_GD)))] + "HAVE_AS_TLS") + +(define_expand "mov_tls_gd_step2<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "") + (unspec:I48MODE + [(match_operand:I48MODE 1 "reg_or_0_operand" "") + (const:I48MODE + (unspec:I48MODE [(match_operand:I48MODE 2 "tls_symbolic_operand" "")] + UNSPEC_HW0_TLS_GD))] + UNSPEC_INSN_ADDR_SHL16INSLI))] + "HAVE_AS_TLS") + +(define_expand "mov_tls_ie_step1<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "") + (const:I48MODE + (unspec:I48MODE [(match_operand:I48MODE 1 "tls_symbolic_operand" "")] + UNSPEC_HW1_LAST_TLS_IE)))] + "HAVE_AS_TLS") + +(define_expand "mov_tls_ie_step2<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "") + (unspec:I48MODE + [(match_operand:I48MODE 1 "reg_or_0_operand" "") + (const:I48MODE + (unspec:I48MODE [(match_operand:I48MODE 2 "tls_symbolic_operand" "")] + UNSPEC_HW0_TLS_IE))] + UNSPEC_INSN_ADDR_SHL16INSLI))] + "HAVE_AS_TLS") + +(define_expand "mov_tls_le_step1<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "") + (const:I48MODE + (unspec:I48MODE [(match_operand:I48MODE 1 "tls_symbolic_operand" "")] + UNSPEC_HW1_LAST_TLS_LE)))] + "HAVE_AS_TLS") + +(define_expand "mov_tls_le_step2<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "") + (unspec:I48MODE + [(match_operand:I48MODE 1 "reg_or_0_operand" "") + (const:I48MODE + (unspec:I48MODE [(match_operand:I48MODE 2 "tls_symbolic_operand" "")] + UNSPEC_HW0_TLS_LE))] + UNSPEC_INSN_ADDR_SHL16INSLI))] + "HAVE_AS_TLS") + +(define_expand "tls_gd_call<bitsuffix>" + [(parallel + [(set (reg:I48MODE 0) + (unspec:I48MODE [(match_operand:I48MODE 0 "tls_symbolic_operand" "") + (reg:I48MODE 0)] + UNSPEC_TLS_GD_CALL)) + (clobber (reg:I48MODE 25)) + (clobber (reg:I48MODE 26)) + (clobber (reg:I48MODE 27)) + (clobber (reg:I48MODE 28)) + (clobber (reg:I48MODE 29)) + (clobber (reg:I48MODE 55))])] + "" +{ + cfun->machine->calls_tls_get_addr = true; +}) + +(define_insn "*tls_gd_call<bitsuffix>" + [(set (reg:I48MODE 0) + (unspec:I48MODE [(match_operand:I48MODE 0 "tls_symbolic_operand" "") + (reg:I48MODE 0)] + UNSPEC_TLS_GD_CALL)) + (clobber (reg:I48MODE 25)) + (clobber (reg:I48MODE 26)) + (clobber (reg:I48MODE 27)) + (clobber (reg:I48MODE 28)) + (clobber (reg:I48MODE 29)) + (clobber (reg:I48MODE 55))] + "" + "jal\ttls_gd_call(%0)" + [(set_attr "type" "X1")]) + +(define_insn "tls_gd_add<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (unspec:I48MODE [(match_operand:I48MODE 1 "register_operand" "r") + (match_operand:I48MODE 2 "tls_symbolic_operand" "")] + UNSPEC_TLS_GD_ADD))] + "HAVE_AS_TLS" + "add<x>i\t%0, %1, tls_gd_add(%2)") + +(define_insn "tls_add<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (unspec:I48MODE [(match_operand:I48MODE 1 "register_operand" "r") + (match_operand:I48MODE 2 "register_operand" "0") + (match_operand:I48MODE 3 "tls_symbolic_operand" "")] + UNSPEC_TLS_ADD))] + "HAVE_AS_TLS" + "add<x>i\t%0, %1, tls_add(%3)") + +(define_insn "tls_ie_load<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (unspec:I48MODE [(match_operand:I48MODE 1 "register_operand" "r") + (match_operand:I48MODE 2 "tls_symbolic_operand" "")] + UNSPEC_TLS_IE_LOAD))] + "HAVE_AS_TLS" + "ld<four_s_if_si>_tls\t%0, %1, tls_ie_load(%2)" + [(set_attr "type" "X1_2cycle")]) + +(define_insn "*zero_extract<mode>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (zero_extract:I48MODE + (match_operand:I48MODE 1 "reg_or_0_operand" "r") + (match_operand:I48MODE 2 "u6bit_cint_operand" "n") + (match_operand:I48MODE 3 "u6bit_cint_operand" "n")))] + "" + "bfextu\t%0, %r1, %3, %3+%2-1" + [(set_attr "type" "X0")]) + +(define_insn "*sign_extract_low32" + [(set (match_operand:DI 0 "register_operand" "=r") + (sign_extract:DI + (match_operand:DI 1 "reg_or_0_operand" "r") + (match_operand:DI 2 "u6bit_cint_operand" "n") + (match_operand:DI 3 "u6bit_cint_operand" "n")))] + "INTVAL (operands[3]) == 0 && INTVAL (operands[2]) == 32" + "addxi\t%0, %r1, 0") + +(define_insn "*sign_extract" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (sign_extract:I48MODE + (match_operand:I48MODE 1 "reg_or_0_operand" "r") + (match_operand:I48MODE 2 "u6bit_cint_operand" "n") + (match_operand:I48MODE 3 "u6bit_cint_operand" "n")))] + "" + "bfexts\t%0, %r1, %3, %3+%2-1" + [(set_attr "type" "X0")]) + + +;; +;; Arithmetic ops +;; + +(define_insn "add<mode>3" + [(set (match_operand:I48MODE 0 "register_operand" "=r,r,r") + (plus:I48MODE (match_operand:I48MODE 1 "reg_or_0_operand" "%rO,rO,rO") + (match_operand:I48MODE 2 "add_operand" "r,I,JT")))] + "" + "@ + add<x>\t%0, %r1, %r2 + add<x>i\t%0, %r1, %2 + add<x>li\t%0, %r1, %H2" + [(set_attr "type" "*,*,X01")]) + +(define_insn "*addsi3_sext" + [(set (match_operand:DI 0 "register_operand" "=r,r,r") + (sign_extend:DI + (plus:SI (match_operand:SI 1 "reg_or_0_operand" "%rO,rO,rO") + (match_operand:SI 2 "add_operand" "r,I,JT"))))] + "" + "@ + addx\t%0, %r1, %r2 + addxi\t%0, %r1, %2 + addxli\t%0, %r1, %H2" + [(set_attr "type" "*,*,X01")]) + +(define_insn "sub<mode>3" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (minus:I48MODE (match_operand:I48MODE 1 "reg_or_0_operand" "rO") + (match_operand:I48MODE 2 "reg_or_0_operand" "rO")))] + "" + "sub<x>\t%0, %r1, %r2") + +(define_insn "*subsi3_sext" + [(set (match_operand:DI 0 "register_operand" "=r") + (sign_extend:DI + (minus:SI (match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO"))))] + "" + "subx\t%0, %r1, %r2") + +(define_insn "neg<mode>2" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (neg:I48MODE (match_operand:I48MODE 1 "reg_or_0_operand" "rO")))] + "" + "sub<x>\t%0, zero, %r1") + +(define_insn "*negsi2_sext" + [(set (match_operand:DI 0 "register_operand" "=r") + (sign_extend:DI + (neg:SI (match_operand:SI 1 "reg_or_0_operand" "rO"))))] + "" + "subx\t%0, zero, %r1") + +(define_insn "ssaddsi3" + [(set (match_operand:SI 0 "register_operand" "=r") + (ss_plus:SI (match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")))] + "" + "addxsc\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "*ssaddsi3_sext" + [(set (match_operand:DI 0 "register_operand" "=r") + (sign_extend:DI + (ss_plus:SI (match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO"))))] + "" + "addxsc\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "sssubsi3" + [(set (match_operand:SI 0 "register_operand" "=r") + (ss_minus:SI (match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")))] + "" + "subxsc\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "*sssubsi3_sext" + [(set (match_operand:DI 0 "register_operand" "=r") + (sign_extend:DI + (ss_minus:SI (match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO"))))] + "" + "subxsc\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_expand "addsf3" + [(set (match_operand:SF 0 "register_operand" "") + (plus:SF (match_operand:SF 1 "register_operand" "") + (match_operand:SF 2 "register_operand" "")))] + "" +{ + rtx result = gen_lowpart (DImode, operands[0]); + rtx a = gen_lowpart (DImode, operands[1]); + rtx b = gen_lowpart (DImode, operands[2]); + + rtx tmp = gen_reg_rtx (DImode); + rtx flags = gen_reg_rtx (DImode); + + emit_insn (gen_insn_fsingle_add1 (tmp, a, b)); + emit_insn (gen_insn_fsingle_addsub2 (tmp, tmp, a, b)); + emit_insn (gen_insn_fsingle_pack1 (flags, tmp)); + emit_insn (gen_insn_fsingle_pack2 (result, tmp, flags)); + + DONE; +}) + +(define_expand "subsf3" + [(set (match_operand:SF 0 "register_operand" "") + (minus:SF (match_operand:SF 1 "register_operand" "") + (match_operand:SF 2 "register_operand" "")))] + "" +{ + rtx result = gen_lowpart (DImode, operands[0]); + rtx a = gen_lowpart (DImode, operands[1]); + rtx b = gen_lowpart (DImode, operands[2]); + + rtx tmp = gen_reg_rtx (DImode); + rtx flags = gen_reg_rtx (DImode); + + emit_insn (gen_insn_fsingle_sub1 (tmp, a, b)); + emit_insn (gen_insn_fsingle_addsub2 (tmp, tmp, a, b)); + emit_insn (gen_insn_fsingle_pack1 (flags, tmp)); + emit_insn (gen_insn_fsingle_pack2 (result, tmp, flags)); + + DONE; +}) + +(define_expand "mulsf3" + [(set (match_operand:SF 0 "register_operand" "") + (mult:SF (match_operand:SF 1 "register_operand" "") + (match_operand:SF 2 "register_operand" "")))] + "" +{ + rtx result = gen_lowpart (DImode, operands[0]); + rtx a = gen_lowpart (DImode, operands[1]); + rtx b = gen_lowpart (DImode, operands[2]); + + rtx tmp1 = gen_reg_rtx (DImode); + rtx tmp2 = gen_reg_rtx (DImode); + rtx flags = gen_reg_rtx (DImode); + + emit_insn (gen_insn_fsingle_mul1 (tmp1, a, b)); + emit_insn (gen_insn_fsingle_mul2 (tmp2, tmp1, b)); + emit_insn (gen_insn_fsingle_pack1 (flags, tmp2)); + emit_insn (gen_insn_fsingle_pack2 (result, tmp2, flags)); + + DONE; +}) + +(define_expand "adddf3" + [(set (match_operand:DF 0 "register_operand" "") + (plus:DF (match_operand:DF 1 "register_operand" "") + (match_operand:DF 2 "register_operand" "")))] + "" +{ + rtx result = gen_lowpart (DImode, operands[0]); + rtx a = gen_lowpart (DImode, operands[1]); + rtx b = gen_lowpart (DImode, operands[2]); + + rtx min = gen_reg_rtx (DImode); + rtx max = gen_reg_rtx (DImode); + rtx flags = gen_reg_rtx (DImode); + + emit_insn (gen_insn_fdouble_unpack_min (min, a, b)); + emit_insn (gen_insn_fdouble_unpack_max (max, a, b)); + emit_insn (gen_insn_fdouble_add_flags (flags, a, b)); + emit_insn (gen_insn_fdouble_addsub (max, max, min, flags)); + emit_insn (gen_insn_fdouble_pack1 (result, max, flags)); + emit_insn (gen_insn_fdouble_pack2 (result, result, max, const0_rtx)); + + DONE; +}) + +(define_expand "subdf3" + [(set (match_operand:DF 0 "register_operand" "") + (minus:DF (match_operand:DF 1 "register_operand" "") + (match_operand:DF 2 "register_operand" "")))] + "" +{ + rtx result = gen_lowpart (DImode, operands[0]); + rtx a = gen_lowpart (DImode, operands[1]); + rtx b = gen_lowpart (DImode, operands[2]); + + rtx min = gen_reg_rtx (DImode); + rtx max = gen_reg_rtx (DImode); + rtx flags = gen_reg_rtx (DImode); + + emit_insn (gen_insn_fdouble_unpack_min (min, a, b)); + emit_insn (gen_insn_fdouble_unpack_max (max, a, b)); + emit_insn (gen_insn_fdouble_sub_flags (flags, a, b)); + emit_insn (gen_insn_fdouble_addsub (max, max, min, flags)); + emit_insn (gen_insn_fdouble_pack1 (result, max, flags)); + emit_insn (gen_insn_fdouble_pack2 (result, result, max, const0_rtx)); + + DONE; +}) + +(define_expand "muldf3" + [(set (match_operand:DF 0 "register_operand" "") + (mult:DF (match_operand:DF 1 "register_operand" "") + (match_operand:DF 2 "register_operand" "")))] + "" + ;; TODO: Decide if we should not inline this with -Os. + ;; "optimize_function_for_speed_p (cfun)" +{ + rtx result = gen_lowpart (DImode, operands[0]); + rtx a = gen_lowpart (DImode, operands[1]); + rtx b = gen_lowpart (DImode, operands[2]); + + rtx a_unpacked = gen_reg_rtx (DImode); + rtx b_unpacked = gen_reg_rtx (DImode); + rtx flags = gen_reg_rtx (DImode); + + rtx low1 = gen_reg_rtx (DImode); + rtx low = gen_reg_rtx (DImode); + rtx low_carry = gen_reg_rtx (DImode); + + rtx mid = gen_reg_rtx (DImode); + rtx mid_l32 = gen_reg_rtx (DImode); + rtx mid_r32 = gen_reg_rtx (DImode); + + rtx high1 = gen_reg_rtx (DImode); + rtx high = gen_reg_rtx (DImode); + rtx high1_plus_mid_r32 = gen_reg_rtx (DImode); + + /* NOTE: We compute using max(a, 0) and max(b, 0) rather than + min(a, b) and max(a, b) because for multiply we just need to unpack, + we don't actually care which is min and which is max. And this + formulation gives the scheduler more freedom in case one of a or b + would stall at the start of this code sequence. */ + emit_insn (gen_insn_fdouble_unpack_max (a_unpacked, a, const0_rtx)); + emit_insn (gen_insn_fdouble_unpack_max (b_unpacked, b, const0_rtx)); + emit_insn (gen_insn_fdouble_mul_flags (flags, a, b)); + + /* This depends on the fact that the high few bits of the unpacked + mantissa are zero, so we can't have a carry out from the mid sum. */ + emit_insn (gen_insn_mul_lu_lu (low1, a_unpacked, b_unpacked)); + emit_insn (gen_insn_mul_hu_lu (mid, a_unpacked, b_unpacked)); + emit_insn (gen_insn_mula_hu_lu (mid, mid, b_unpacked, a_unpacked)); + emit_insn (gen_insn_mul_hu_hu (high1, a_unpacked, b_unpacked)); + + emit_insn (gen_ashldi3 (mid_l32, mid, GEN_INT (32))); + emit_insn (gen_lshrdi3 (mid_r32, mid, GEN_INT (32))); + + emit_insn (gen_adddi3 (high1_plus_mid_r32, high1, mid_r32)); + + emit_insn (gen_adddi3 (low, low1, mid_l32)); + emit_insn (gen_insn_cmpltu_didi (low_carry, low, mid_l32)); + + emit_insn (gen_adddi3 (high, high1_plus_mid_r32, low_carry)); + + emit_insn (gen_insn_fdouble_pack1 (result, high, flags)); + emit_insn (gen_insn_fdouble_pack2 (result, result, high, low)); + + DONE; +}) + + +;; +;; Shifts +;; + +(define_insn "ashl<mode>3" + [(set (match_operand:I48MODE 0 "register_operand" "=r,r") + (ashift:I48MODE + (match_operand:I48MODE 1 "reg_or_0_operand" "rO,rO") + (match_operand:SI 2 "reg_or_u<nbits>bit_operand" "I,rO")))] + "" + "@ + shl<x>i\t%0, %r1, %2 + shl<x>\t%0, %r1, %r2" + [(set_attr "type" "<shift_pipe>,<shift_pipe>")]) + +(define_insn "*ashlsi3_sext" + [(set (match_operand:DI 0 "register_operand" "=r,r") + (sign_extend:DI + (ashift:SI + (match_operand:SI 1 "reg_or_0_operand" "rO,rO") + (match_operand:SI 2 "reg_or_u5bit_operand" "I,rO"))))] + "" + "@ + shlxi\t%0, %r1, %2 + shlx\t%0, %r1, %r2" + [(set_attr "type" "X01,X01")]) + +(define_insn "ashr<mode>3" + [(set (match_operand:I48MODE 0 "register_operand" "=r,r") + (ashiftrt:I48MODE + (match_operand:I48MODE 1 "reg_or_0_operand" "rO,rO") + (match_operand:SI 2 "reg_or_u<nbits>bit_operand" "I,rO")))] + "" + "@ + shrsi\t%0, %r1, %2 + shrs\t%0, %r1, %r2") + +(define_insn "*ashrsi3_sext" + [(set (match_operand:DI 0 "register_operand" "=r,r") + (sign_extend:DI + (ashiftrt:SI (match_operand:SI 1 "reg_or_0_operand" "rO,rO") + (match_operand:SI 2 "reg_or_u5bit_operand" "I,rO"))))] + "" + "@ + shrsi\t%0, %r1, %2 + shrs\t%0, %r1, %r2") + +(define_insn "lshr<mode>3" + [(set (match_operand:I48MODE 0 "register_operand" "=r,r") + (lshiftrt:I48MODE + (match_operand:I48MODE 1 "reg_or_0_operand" "rO,rO") + (match_operand:SI 2 "reg_or_u<nbits>bit_operand" "I,rO")))] + "" + "@ + shru<x>i\t%0, %r1, %2 + shru<x>\t%0, %r1, %r2" + [(set_attr "type" "<shift_pipe>,<shift_pipe>")]) + +(define_insn "*lshrsi3_sext" + [(set (match_operand:DI 0 "register_operand" "=r,r") + (sign_extend:DI + (lshiftrt:SI + (match_operand:SI 1 "reg_or_0_operand" "rO,rO") + (match_operand:SI 2 "reg_or_u5bit_operand" "I,rO"))))] + "" + "@ + shruxi\t%0, %r1, %2 + shrux\t%0, %r1, %r2" + [(set_attr "type" "X01,X01")]) + +(define_insn "rotldi3" + [(set (match_operand:DI 0 "register_operand" "=r,r") + (rotate:DI (match_operand:DI 1 "reg_or_0_operand" "rO,rO") + (match_operand:SI 2 "reg_or_u6bit_operand" "I,rO")))] + "" + "@ + rotli\t%0, %r1, %2 + rotl\t%0, %r1, %r2") + +(define_insn "insn_shl16insli" + [(set (match_operand:DI 0 "register_operand" "=r,r") + (ior:DI + (ashift:DI + (match_operand:DI 1 "reg_or_0_operand" "rO,rO") + (const_int 16)) + (match_operand:DI 2 "u16bit_or_const_symbolic_operand" "O,KT")))] + "" + "@ + shli\t%0, %r1, 16 + shl16insli\t%0, %r1, %H2" + [(set_attr "type" "*,X01")]) + +(define_insn "insn_addr_shl16insli<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (unspec:I48MODE + [(match_operand:I48MODE 1 "reg_or_0_operand" "rO") + (match_operand:I48MODE 2 "const_symbolic_operand" "T")] + UNSPEC_INSN_ADDR_SHL16INSLI))] + "" + "shl16insli\t%0, %r1, %H2" + [(set_attr "type" "X01")]) + + +;; +;; Compares +;; + +(define_expand "cstore<mode>4" + [(set (match_operand:DI 0 "register_operand" "") + (match_operator:DI 1 "ordered_comparison_operator" + [(match_operand:FI48MODE 2 "reg_or_cint_operand" "") + (match_operand:FI48MODE 3 "reg_or_cint_operand" "")]))] + "" +{ + if (!tilegx_emit_setcc (operands, GET_MODE (operands[2]))) + FAIL; + else + DONE; +}) + + +(define_insn "insn_cmpne_<I48MODE:mode><I48MODE2:mode>" + [(set (match_operand:I48MODE2 0 "register_operand" "=r") + (ne:I48MODE2 (match_operand:I48MODE 1 "reg_or_0_operand" "rO") + (match_operand:I48MODE 2 "reg_or_cint_operand" "rO")))] + "" + "cmpne\t%0, %r1, %r2") + +(define_insn "insn_cmpeq_<I48MODE:mode><I48MODE2:mode>" + [(set (match_operand:I48MODE2 0 "register_operand" "=r,r") + (eq:I48MODE2 (match_operand:I48MODE 1 "reg_or_0_operand" "%rO,rO") + (match_operand:I48MODE 2 "reg_or_cint_operand" "I,rO")))] + "" + "@ + cmpeqi\t%0, %r1, %2 + cmpeq\t%0, %r1, %r2") + +(define_insn "insn_cmplts_<I48MODE:mode><I48MODE2:mode>" + [(set (match_operand:I48MODE2 0 "register_operand" "=r,r") + (lt:I48MODE2 (match_operand:I48MODE 1 "reg_or_0_operand" "rO,rO") + (match_operand:I48MODE 2 "reg_or_cint_operand" "I,rO")))] + "" + "@ + cmpltsi\t%0, %r1, %2 + cmplts\t%0, %r1, %r2") + +(define_insn "insn_cmpltu_<I48MODE:mode><I48MODE2:mode>" + [(set (match_operand:I48MODE2 0 "register_operand" "=r,r") + (ltu:I48MODE2 (match_operand:I48MODE 1 "reg_or_0_operand" "rO,rO") + (match_operand:I48MODE 2 "reg_or_cint_operand" "I,rO")))] + "" + "@ + cmpltui\t%0, %r1, %2 + cmpltu\t%0, %r1, %r2" + [(set_attr "type" "X01,*")]) + +(define_insn "insn_cmples_<I48MODE:mode><I48MODE2:mode>" + [(set (match_operand:I48MODE2 0 "register_operand" "=r,r") + (le:I48MODE2 (match_operand:I48MODE 1 "reg_or_0_operand" "rO,rO") + (match_operand:I48MODE 2 "reg_or_cint_operand" "L,rO")))] + "" + "@ + cmpltsi\t%0, %r1, %P2 + cmples\t%0, %r1, %r2") + +(define_insn "insn_cmpleu_<I48MODE:mode><I48MODE2:mode>" + [(set (match_operand:I48MODE2 0 "register_operand" "=r,r") + (leu:I48MODE2 (match_operand:I48MODE 1 "reg_or_0_operand" "rO,rO") + (match_operand:I48MODE 2 "reg_or_cint_operand" "Q,rO")))] + "" + "@ + cmpltui\t%0, %r1, %P2 + cmpleu\t%0, %r1, %r2" + [(set_attr "type" "X01,*")]) + + +;; +;; Logical ops +;; + +(define_insn "and<mode>3" + [(set (match_operand:IVNMODE 0 "register_operand" "=r,r,r,r") + (and:IVNMODE (match_operand:IVNMODE 1 "reg_or_0_operand" "%rO,rO,0,rO") + (match_operand:IVNMODE 2 "and_operand" "I,S,M,rO")))] + "" + "@ + andi\t%0, %r1, %2 + bfextu\t%0, %r1, %M2 + bfins\t%0, zero, %m2 + and\t%0, %r1, %r2" + [(set_attr "type" "*,X0,X0,*")]) + +(define_insn "*andsi3_sext" + [(set (match_operand:DI 0 "register_operand" "=r,r,r,r") + (sign_extend:DI + (and:SI (match_operand:SI 1 "reg_or_0_operand" "%rO,rO,0,rO") + (match_operand:SI 2 "and_operand" "I,S,M,rO"))))] + "" + "@ + andi\t%0, %r1, %2 + bfextu\t%0, %r1, %M2 + bfins\t%0, zero, %m2 + and\t%0, %r1, %r2" + [(set_attr "type" "*,X0,X0,*")]) + +(define_insn "anddi3" + [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r,r") + (and:DI (match_operand:DI 1 "reg_or_0_operand" "%rO,rO,rO,rO,0,rO") + (match_operand:DI 2 "and_operand" "I,Z0,Z1,S,M,rO")))] + "" + "@ + andi\t%0, %r1, %2 + v4int_l\t%0, zero, %r1 + v4int_h\t%0, %r1, zero + bfextu\t%0, %r1, %M2 + bfins\t%0, zero, %m2 + and\t%0, %r1, %r2" + [(set_attr "type" "*,X01,X01,X0,X0,*")]) + +(define_insn "ior<mode>3" + [(set (match_operand:IVMODE 0 "register_operand" "=r,r") + (ior:IVMODE (match_operand:IVMODE 1 "reg_or_0_operand" "%rO,rO") + (match_operand:IVMODE 2 "reg_or_s8bit_operand" "rO,I")))] + "" + "@ + or\t%0, %r1, %r2 + ori\t%0, %r1, %2" + [(set_attr "type" "*,X01")]) + +(define_insn "*iorsi3_sext" + [(set (match_operand:DI 0 "register_operand" "=r,r") + (sign_extend:DI + (ior:SI (match_operand:SI 1 "reg_or_0_operand" "%rO,rO") + (match_operand:SI 2 "reg_or_s8bit_operand" "rO,I"))))] + "" + "@ + or\t%0, %r1, %r2 + ori\t%0, %r1, %2" + [(set_attr "type" "*,X01")]) + +(define_insn "xor<mode>3" + [(set (match_operand:IVMODE 0 "register_operand" "=r,r") + (xor:IVMODE (match_operand:IVMODE 1 "reg_or_0_operand" "%rO,rO") + (match_operand:IVMODE 2 "reg_or_s8bit_operand" "rO,I")))] + "" + "@ + xor\t%0, %r1, %r2 + xori\t%0, %r1, %2" + [(set_attr "type" "*,X01")]) + +(define_insn "*xorsi3_sext" + [(set (match_operand:DI 0 "register_operand" "=r,r") + (sign_extend:DI + (xor:SI (match_operand:SI 1 "reg_or_0_operand" "%rO,rO") + (match_operand:SI 2 "reg_or_s8bit_operand" "rO,I"))))] + "" + "@ + xor\t%0, %r1, %r2 + xori\t%0, %r1, %2" + [(set_attr "type" "*,X01")]) + +(define_insn "clzdi2" + [(set (match_operand:DI 0 "register_operand" "=r") + (clz:DI (match_operand:DI 1 "reg_or_0_operand" "rO")))] + "" + "clz\t%0, %r1" + [(set_attr "type" "Y0")]) + +(define_expand "clzsi2" + [(set (match_dup 2) + (ashift:DI (match_operand:SI 1 "reg_or_0_operand" "") + (const_int 32))) + (set (subreg:DI (match_operand:SI 0 "register_operand" "") 0) + (clz:DI (match_dup 2)))] + "" + { + operands[1] = simplify_gen_subreg (DImode, operands[1], SImode, 0); + operands[2] = gen_reg_rtx (DImode); + }) + +(define_insn "ctz<mode>2" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (ctz:I48MODE (match_operand:DI 1 "reg_or_0_operand" "rO")))] + "" + "ctz\t%0, %r1" + [(set_attr "type" "Y0")]) + +(define_insn "popcount<mode>2" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (popcount:I48MODE (match_operand:DI 1 "reg_or_0_operand" "rO")))] + "" + "pcnt\t%0, %r1" + [(set_attr "type" "Y0")]) + +(define_expand "parity<mode>2" + [(set (match_operand:I48MODE 0 "register_operand" "") + (parity:I48MODE (match_operand:DI 1 "reg_or_0_operand" "")))] + "" + { + rtx tmp = gen_reg_rtx (<MODE>mode); + emit_insn (gen_popcount<mode>2 (tmp, operands[1])); + emit_insn (gen_and<mode>3 (operands[0], tmp, const1_rtx)); + DONE; + }) + +(define_insn "bswapdi2" + [(set (match_operand:DI 0 "register_operand" "=r") + (bswap:DI (match_operand:DI 1 "reg_or_0_operand" "rO")))] + "" + "revbytes\t%0, %r1" + [(set_attr "type" "Y0")]) + +(define_expand "bswapsi2" + [(set (match_operand:SI 0 "register_operand" "") + (bswap:SI (match_operand:SI 1 "reg_or_0_operand" "")))] + "" + { + rtx tmp = gen_reg_rtx (DImode); + emit_insn (gen_bswapdi2 (tmp, gen_lowpart (DImode, operands[1]))); + emit_insn (gen_ashrdi3 (gen_lowpart (DImode, operands[0]), + tmp, GEN_INT (32))); + DONE; + }) + +(define_insn "one_cmpl<mode>2" + [(set (match_operand:IVMODE 0 "register_operand" "=r") + (not:IVMODE (match_operand:IVMODE 1 "reg_or_0_operand" "rO")))] + "" + "nor\t%0, %r1, zero") + + +;; +;; Conditional moves +;; + +(define_expand "mov<mode>cc" + [(set (match_operand:I48MODE 0 "register_operand" "") + (if_then_else:I48MODE + (match_operand 1 "comparison_operator" "") + (match_operand:I48MODE 2 "reg_or_0_operand" "") + (match_operand:I48MODE 3 "reg_or_0_operand" "")))] + "" + { operands[1] = tilegx_emit_conditional_move (operands[1]); }) + +(define_insn "movcc_insn_<I48MODE2:mode><I48MODE:mode>" + [(set (match_operand:I48MODE 0 "register_operand" "=r,r,r,r") + (if_then_else:I48MODE + (match_operator 4 "eqne_operator" + [(match_operand:I48MODE2 1 "reg_or_0_operand" "rO,rO,rO,rO") + (const_int 0)]) + (match_operand:I48MODE 2 "reg_or_0_operand" "rO,O,rO,0") + (match_operand:I48MODE 3 "reg_or_0_operand" "O,rO,0,rO")))] + "" + "@ + m%c4\t%0, %r1, %r2 + m%C4\t%0, %r1, %r3 + cmov%d4z\t%0, %r1, %r2 + cmov%D4z\t%0, %r1, %r3" + [(set_attr "type" "*,*,Y0,Y0")]) + +(define_expand "insn_mz" + [(set (match_operand:DI 0 "register_operand" "") + (if_then_else:DI + (eq (match_operand:DI 1 "reg_or_0_operand" "") + (const_int 0)) + (match_operand:DI 2 "reg_or_0_operand" "") + (const_int 0)))]) + +(define_expand "insn_mnz" + [(set (match_operand:DI 0 "register_operand" "") + (if_then_else:DI + (ne (match_operand:DI 1 "reg_or_0_operand" "") + (const_int 0)) + (match_operand:DI 2 "reg_or_0_operand" "") + (const_int 0)))]) + +(define_expand "insn_cmoveqz" + [(set (match_operand:DI 0 "register_operand" "") + (if_then_else:DI + (eq (match_operand:DI 2 "reg_or_0_operand" "") + (const_int 0)) + (match_operand:DI 3 "reg_or_0_operand" "") + (match_operand:DI 1 "reg_or_0_operand" "")))]) + +(define_expand "insn_cmovnez" + [(set (match_operand:DI 0 "register_operand" "") + (if_then_else:DI + (ne (match_operand:DI 2 "reg_or_0_operand" "") + (const_int 0)) + (match_operand:DI 3 "reg_or_0_operand" "") + (match_operand:DI 1 "reg_or_0_operand" "")))]) + + +;; +;; Conversions +;; + +(define_insn "zero_extendqi<mode>2" + [(set (match_operand:I48MODE 0 "register_operand" "=r,r,r") + (zero_extend:I48MODE (match_operand:QI 1 "move_operand" "rO,U,m")))] + "" + "@ + bfextu\t%0, %r1, 0, 7 + ld1u\t%0, %1 + ld1u_add\t%0, %I1, %i1" + [(set_attr "type" "X0,Y2_2cycle,X1_2cycle")]) + +(define_insn "zero_extendhi<mode>2" + [(set (match_operand:I48MODE 0 "register_operand" "=r,r,r") + (zero_extend:I48MODE (match_operand:HI 1 "move_operand" "rO,U,m")))] + "" + "@ + bfextu\t%0, %r1, 0, 15 + ld2u\t%0, %1 + ld2u_add\t%0, %I1, %i1" + [(set_attr "type" "X0,Y2_2cycle,X1_2cycle")]) + +(define_insn "zero_extendsidi2" + [(set (match_operand:DI 0 "register_operand" "=r,r,r") + (zero_extend:DI (match_operand:SI 1 "move_operand" "rO,U,m")))] + "" + "@ + v4int_l\t%0, zero, %r1 + ld4u\t%0, %1 + ld4u_add\t%0, %I1, %i1" + [(set_attr "type" "X01,Y2_2cycle,X1_2cycle")]) + +(define_insn "extendqi<mode>2" + [(set (match_operand:I48MODE 0 "register_operand" "=r,r,r") + (sign_extend:I48MODE (match_operand:QI 1 "move_operand" "rO,U,m")))] + "" + "@ + bfexts\t%0, %r1, 0, 7 + ld1s\t%0, %1 + ld1s_add\t%0, %I1, %i1" + [(set_attr "type" "X0,Y2_2cycle,X1_2cycle")]) + +(define_insn "extendhi<mode>2" + [(set (match_operand:I48MODE 0 "register_operand" "=r,r,r") + (sign_extend:I48MODE (match_operand:HI 1 "move_operand" "rO,U,m")))] + "" + "@ + bfexts\t%0, %r1, 0, 15 + ld2s\t%0, %1 + ld2s_add\t%0, %I1, %i1" + [(set_attr "type" "X0,Y2_2cycle,X1_2cycle")]) + +;; All SImode integer registers should already be in sign-extended +;; form (see TRULY_NOOP_TRUNCATION and truncdisi2). We can therefore +;; get rid of register->register instructions if we constrain the +;; source to be in the same register as the destination. +(define_insn_and_split "extendsidi2" + [(set (match_operand:DI 0 "register_operand" "=r,r,r") + (sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "0,U,m")))] + "" + "@ + # + ld4s\t%0, %1 + ld4s_add\t%0, %I1, %i1" + "&& reload_completed && register_operand (operands[1], VOIDmode)" + [(const_int 0)] +{ + emit_note (NOTE_INSN_DELETED); + DONE; +} + [(set_attr "type" "*,Y2_2cycle,X1_2cycle")]) + +;; Integer truncation patterns. Truncating SImode values to smaller +;; modes is a no-op, as it is for most other GCC ports. Truncating +;; DImode values to SImode is not a no-op since we +;; need to make sure that the lower 32 bits are properly sign-extended +;; (see TRULY_NOOP_TRUNCATION). Truncating DImode values into modes +;; smaller than SImode is equivalent to two separate truncations: +;; +;; A B +;; DI ---> HI == DI ---> SI ---> HI +;; DI ---> QI == DI ---> SI ---> QI +;; +;; Step A needs a real instruction but step B does not. + +(define_insn "truncdisi2" + [(set (match_operand:SI 0 "nonimmediate_operand" "=r,U,m") + (truncate:SI (match_operand:DI 1 "reg_or_0_operand" "rO,rO,rO")))] + "" + "@ + addxi\t%0, %r1, 0 + st4\t%0, %r1 + st4_add\t%I0, %r1, %i0" + [(set_attr "type" "Y01,Y2,X1")]) + +(define_insn "truncdihi2" + [(set (match_operand:HI 0 "nonimmediate_operand" "=r,U,m") + (truncate:HI (match_operand:DI 1 "reg_or_0_operand" "rO,rO,rO")))] + "" + "@ + addxi\t%0, %r1, 0 + st2\t%0, %r1 + st2_add\t%I0, %r1, %i0" + [(set_attr "type" "Y01,Y2,X1")]) + +(define_insn "truncdiqi2" + [(set (match_operand:QI 0 "nonimmediate_operand" "=r,U,m") + (truncate:QI (match_operand:DI 1 "reg_or_0_operand" "rO,rO,rO")))] + "" + "@ + addxi\t%0, %r1, 0 + st1\t%0, %r1 + st1_add\t%I0, %r1, %i0" + [(set_attr "type" "Y01,Y2,X1")]) + +;; Combiner patterns to optimize away unnecessary truncates. + +(define_insn "*zero_extendsidi_truncdisi" + [(set (match_operand:DI 0 "register_operand" "=r") + (zero_extend:DI + (truncate:SI (match_operand:DI 1 "reg_or_0_operand" "rO"))))] + "" + "v4int_l\t%0, zero, %r1" + [(set_attr "type" "X01")]) + +(define_insn "*addsi_truncdisi" + [(set (match_operand:SI 0 "register_operand" "=r,r,r") + (plus:SI + (truncate:SI (match_operand:DI 1 "reg_or_0_operand" "%rO,rO,rO")) + (match_operand:SI 2 "add_operand" "r,I,JT")))] + "" + "@ + addx\t%0, %r1, %r2 + addxi\t%0, %r1, %2 + addxli\t%0, %r1, %H2" + [(set_attr "type" "*,*,X01")]) + +(define_insn "*addsi_truncdisi2" + [(set (match_operand:SI 0 "register_operand" "=r") + (plus:SI + (truncate:SI (match_operand:DI 1 "reg_or_0_operand" "rO")) + (truncate:SI (match_operand:DI 2 "reg_or_0_operand" "rO"))))] + "" + "addx\t%0, %r1, %r2") + +(define_insn "*ashldi_truncdisi" + [(set (match_operand:DI 0 "register_operand" "=r") + (ashift:DI + (match_operand:DI 1 "reg_or_0_operand" "rO") + (truncate:SI (match_operand:DI 2 "reg_or_u6bit_operand" "rO"))))] + "" + "shl\t%0, %r1, %r2") + +(define_insn "*ashlsi_truncdisi" + [(set (match_operand:SI 0 "register_operand" "=r,r") + (ashift:SI + (truncate:SI (match_operand:DI 1 "reg_or_0_operand" "rO,rO")) + (match_operand:SI 2 "reg_or_u5bit_operand" "I,rO")))] + "" + "@ + shlxi\t%0, %r1, %2 + shlx\t%0, %r1, %r2" + [(set_attr "type" "X01,X01")]) + +(define_insn "*ashlsi_truncdisi2" + [(set (match_operand:SI 0 "register_operand" "=r") + (ashift:SI + (truncate:SI (match_operand:DI 1 "reg_or_0_operand" "rO")) + (truncate:SI (match_operand:DI 2 "reg_or_0_operand" "rO"))))] + "" + "shlx\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "*ashrdi3_truncdisi" + [(set (match_operand:DI 0 "register_operand" "=r") + (ashiftrt:DI + (match_operand:DI 1 "reg_or_0_operand" "rO") + (truncate:SI (match_operand:DI 2 "reg_or_u6bit_operand" "rO"))))] + "" + "shrs\t%0, %r1, %r2") + +(define_insn "*lshrsi_truncdisi" + [(set (match_operand:SI 0 "register_operand" "=r,r") + (lshiftrt:SI + (truncate:SI (match_operand:DI 1 "reg_or_0_operand" "rO,rO")) + (match_operand:SI 2 "reg_or_u5bit_operand" "I,rO")))] + "" + "@ + shruxi\t%0, %r1, %2 + shrux\t%0, %r1, %r2" + [(set_attr "type" "X01,X01")]) + +(define_insn "*lshrsi_truncdisi2" + [(set (match_operand:SI 0 "register_operand" "=r") + (lshiftrt:SI + (truncate:SI (match_operand:DI 1 "reg_or_0_operand" "rO")) + (truncate:SI (match_operand:DI 2 "reg_or_0_operand" "rO"))))] + "" + "shrux\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "*lshrdi_truncdisi" + [(set (match_operand:DI 0 "register_operand" "=r") + (lshiftrt:DI + (match_operand:DI 1 "reg_or_0_operand" "rO") + (truncate:SI (match_operand:DI 2 "reg_or_u6bit_operand" "rO"))))] + "" + "shru\t%0, %r1, %r2") + +(define_insn "*rotldi_truncdisi" + [(set (match_operand:DI 0 "register_operand" "=r") + (rotate:DI + (match_operand:DI 1 "reg_or_0_operand" "rO") + (truncate:SI (match_operand:DI 2 "reg_or_u6bit_operand" "rO"))))] + "" + "rotl\t%0, %r1, %r2") + +;; Integer to floating point conversions + +(define_expand "floatsisf2" + [(set (match_operand:SF 0 "register_operand" "") + (float:SI (match_operand:SI 1 "register_operand" "")))] + "" +{ + rtx result = gen_lowpart (DImode, operands[0]); + rtx a = operands[1]; + + rtx nega = gen_reg_rtx (SImode); + rtx exp = gen_reg_rtx (DImode); + rtx sign = gen_reg_rtx (DImode); + rtx abs = gen_reg_rtx (DImode); + rtx flags = gen_reg_rtx (DImode); + rtx tmp1 = gen_reg_rtx (DImode); + rtx tmp2 = gen_reg_rtx (DImode); + + emit_move_insn (exp, GEN_INT (0x9e)); + + emit_insn (gen_negsi2 (nega, a)); + + emit_insn (gen_insn_cmplts_sisi (gen_lowpart (SImode, sign), a, const0_rtx)); + emit_insn (gen_insn_cmoveqz (abs, gen_lowpart (DImode, nega), sign, + gen_lowpart (DImode, a))); + + emit_insn (gen_insn_bfins (tmp1, exp, sign, GEN_INT (10), GEN_INT (10))); + emit_insn (gen_insn_bfins (tmp2, tmp1, abs, GEN_INT (32), GEN_INT (63))); + emit_insn (gen_insn_fsingle_pack1 (flags, tmp2)); + emit_insn (gen_insn_fsingle_pack2 (result, tmp2, flags)); + DONE; +}) + +(define_expand "floatunssisf2" + [(set (match_operand:SF 0 "register_operand" "") + (float:SI (match_operand:SI 1 "register_operand" "")))] + "" +{ + rtx result = gen_lowpart (DImode, operands[0]); + rtx a = operands[1]; + + rtx exp = gen_reg_rtx (DImode); + rtx flags = gen_reg_rtx (DImode); + rtx tmp = gen_reg_rtx (DImode); + + emit_move_insn (exp, GEN_INT (0x9e)); + emit_insn (gen_insn_bfins (tmp, exp, gen_lowpart (DImode, a), + GEN_INT (32), GEN_INT (63))); + emit_insn (gen_insn_fsingle_pack1 (flags, tmp)); + emit_insn (gen_insn_fsingle_pack2 (result, tmp, flags)); + DONE; +}) + +(define_expand "floatsidf2" + [(set (match_operand:DF 0 "register_operand" "") + (float:SI (match_operand:SI 1 "register_operand" "")))] + "" +{ + rtx result = gen_lowpart (DImode, operands[0]); + rtx a = gen_lowpart (DImode, operands[1]); + + rtx nega = gen_reg_rtx (DImode); + rtx exp = gen_reg_rtx (DImode); + rtx sign = gen_reg_rtx (DImode); + rtx abs = gen_reg_rtx (DImode); + rtx tmp1 = gen_reg_rtx (DImode); + rtx tmp2 = gen_reg_rtx (DImode); + rtx tmp3 = gen_reg_rtx (DImode); + + emit_move_insn (exp, GEN_INT (0x21b00)); + + emit_insn (gen_negdi2 (nega, a)); + + emit_insn (gen_insn_cmplts_didi (sign, a, const0_rtx)); + emit_insn (gen_insn_cmovnez (abs, a, sign, nega)); + + emit_insn (gen_ashldi3 (tmp1, abs, GEN_INT (4))); + emit_insn (gen_insn_bfins (tmp2, exp, sign, GEN_INT (20), GEN_INT (20))); + emit_insn (gen_insn_fdouble_pack1 (tmp3, tmp1, tmp2)); + emit_insn (gen_insn_fdouble_pack2 (result, tmp3, tmp1, const0_rtx)); + DONE; +}) + +(define_expand "floatunssidf2" + [(set (match_operand:DF 0 "register_operand" "") + (float:SI (match_operand:SI 1 "register_operand" "")))] + "" +{ + rtx result = gen_lowpart (DImode, operands[0]); + rtx a = gen_lowpart (DImode, operands[1]); + + rtx exp = gen_reg_rtx (DImode); + rtx tmp1 = gen_reg_rtx (DImode); + rtx tmp2 = gen_reg_rtx (DImode); + + emit_move_insn (exp, GEN_INT (0x21b00)); + emit_insn (gen_insn_bfins (tmp1, const0_rtx, a, GEN_INT (4), GEN_INT (35))); + emit_insn (gen_insn_fdouble_pack1 (tmp2, tmp1, exp)); + emit_insn (gen_insn_fdouble_pack2 (result, tmp2, tmp1, const0_rtx)); + DONE; +}) + + +;; +;; Multiplies +;; + +(define_insn "mulsi3" + [(set (match_operand:SI 0 "register_operand" "=r") + (mult:SI (match_operand:SI 1 "reg_or_0_operand" "%rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")))] + "" + "mulx\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "mulsidi3" + [(set (match_operand:DI 0 "register_operand" "=r") + (mult:DI (sign_extend:DI + (match_operand:SI 1 "reg_or_0_operand" "%rO")) + (sign_extend:DI + (match_operand:SI 2 "reg_or_0_operand" "rO"))))] + "" + "mul_ls_ls\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "umulsidi3" + [(set (match_operand:DI 0 "register_operand" "=r") + (mult:DI (zero_extend:DI + (match_operand:SI 1 "reg_or_0_operand" "%rO")) + (zero_extend:DI + (match_operand:SI 2 "reg_or_0_operand" "rO"))))] + "" + "mul_lu_lu\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_expand "muldi3" + [(set (match_operand:DI 0 "register_operand" "") + (unspec:DI [(match_operand:DI 1 "nonmemory_operand" "") + (match_operand:DI 2 "nonmemory_operand" "")] + UNSPEC_INSN_MUL_HU_LU)) + (set (match_dup 0) + (unspec:DI [(match_dup 0) (match_dup 2) (match_dup 1)] + UNSPEC_INSN_MULA_HU_LU)) + (set (match_dup 0) + (ashift:DI (match_dup 0) (const_int 32))) + (set (match_dup 0) + (unspec:DI [(match_dup 0) (match_dup 2) (match_dup 1)] + UNSPEC_INSN_MULA_LU_LU))] + "" + { + operands[1] = force_reg (DImode, operands[1]); + operands[1] = make_safe_from (operands[1], operands[0]); + + if (tilegx_expand_muldi (operands[0], operands[1], operands[2])) + DONE; + else + { + operands[2] = force_reg (DImode, operands[2]); + operands[2] = make_safe_from (operands[2], operands[0]); + } + }) + +(define_insn "usmulsidi3" + [(set (match_operand:DI 0 "register_operand" "=r") + (mult:DI (zero_extend:DI + (match_operand:SI 1 "reg_or_0_operand" "rO")) + (sign_extend:DI + (match_operand:SI 2 "reg_or_0_operand" "rO"))))] + "" + "mul_ls_lu\t%0, %r2, %r1" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "maddsidi4" + [(set (match_operand:DI 0 "register_operand" "=r") + (plus:DI + (mult:DI (sign_extend:DI + (match_operand:SI 1 "reg_or_0_operand" "rO")) + (sign_extend:DI + (match_operand:SI 2 "reg_or_0_operand" "rO"))) + (match_operand:DI 3 "register_operand" "0")))] + "" + "mula_ls_ls\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "umaddsidi4" + [(set (match_operand:DI 0 "register_operand" "=r") + (plus:DI + (mult:DI (zero_extend:DI + (match_operand:SI 1 "reg_or_0_operand" "rO")) + (zero_extend:DI + (match_operand:SI 2 "reg_or_0_operand" "rO"))) + (match_operand:DI 3 "register_operand" "0")))] + "" + "mula_lu_lu\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_expand "smulsi3_highpart" + [(set (match_dup 3) + (mult:DI (sign_extend:DI (match_operand:SI 1 "reg_or_0_operand" "")) + (sign_extend:DI (match_operand:SI 2 "reg_or_0_operand" "")))) + (set (match_dup 4) + (ashiftrt:DI (match_dup 3) (const_int 32))) + (set (match_operand:SI 0 "register_operand" "") + (truncate:SI (match_dup 4)))] + "" + { + operands[3] = gen_reg_rtx (DImode); + operands[4] = gen_reg_rtx (DImode); + }) + +(define_expand "umulsi3_highpart" + [(set (match_dup 3) + (mult:DI (zero_extend:DI (match_operand:SI 1 "reg_or_0_operand" "")) + (zero_extend:DI (match_operand:SI 2 "reg_or_0_operand" "")))) + (set (match_dup 4) + (lshiftrt:DI (match_dup 3) (const_int 32))) + (set (match_operand:SI 0 "register_operand" "") + (truncate:SI (match_dup 4)))] + "" + { + operands[3] = gen_reg_rtx (DImode); + operands[4] = gen_reg_rtx (DImode); + }) + +(define_expand "smuldi3_highpart" + [(set (match_operand:DI 0 "register_operand" "") + (truncate:DI + (ashiftrt:TI + (mult:TI (sign_extend:TI (match_operand:DI 1 "reg_or_0_operand" "")) + (sign_extend:TI (match_operand:DI 2 "reg_or_0_operand" ""))) + (const_int 64))))] + "" + { + tilegx_expand_smuldi3_highpart (operands[0], operands[1], operands[2]); + DONE; + }) + +(define_expand "umuldi3_highpart" + [(set (match_operand:DI 0 "register_operand" "") + (truncate:DI + (lshiftrt:TI + (mult:TI (zero_extend:TI (match_operand:DI 1 "reg_or_0_operand" "")) + (zero_extend:TI (match_operand:DI 2 "reg_or_0_operand" ""))) + (const_int 64))))] + "" +{ + tilegx_expand_umuldi3_highpart (operands[0], operands[1], operands[2]); + DONE; +}) + + +;; +;; Divide stubs. These exist to work around a bug in expmed.c, which +;; will not attempt to convert a divide by constant into a multiply +;; unless there is a pattern for a divide of the same mode. The end +;; result is a 32-bit divide turns into 64-bit multiply. +;; + +(define_expand "divsi3" + [(set (match_operand:SI 0 "register_operand" "") + (div:SI (match_operand:SI 1 "reg_or_0_operand" "") + (match_operand:SI 2 "reg_or_0_operand" "")))] + "" +{ + FAIL; +}) + +(define_expand "udivsi3" + [(set (match_operand:SI 0 "register_operand" "") + (udiv:SI (match_operand:SI 1 "reg_or_0_operand" "") + (match_operand:SI 2 "reg_or_0_operand" "")))] + "" +{ + FAIL; +}) + + +;; +;; Loops +;; + +;; Define the subtract-one-and-jump insns so loop.c knows what to +;; generate. +(define_expand "doloop_end" + [(use (match_operand 0 "" "")) ;; loop pseudo + (use (match_operand 1 "" ""))] ;; label + "" +{ + if (optimize > 0 && flag_modulo_sched) + { + rtx s0; + rtx bcomp; + rtx loc_ref; + enum machine_mode mode = GET_MODE (operands[0]); + + /* only deal with loop counters in SImode or DImode */ + if (mode != SImode && mode != DImode) + FAIL; + + s0 = operands [0]; + emit_move_insn (s0, gen_rtx_PLUS (mode, s0, GEN_INT (-1))); + bcomp = gen_rtx_NE(mode, s0, const0_rtx); + loc_ref = gen_rtx_LABEL_REF (VOIDmode, operands [1]); + emit_jump_insn (gen_rtx_SET (VOIDmode, pc_rtx, + gen_rtx_IF_THEN_ELSE (VOIDmode, bcomp, + loc_ref, pc_rtx))); + DONE; + } + else + FAIL; + +}) + +;; +;; Prologue/epilogue +;; +(define_expand "prologue" + [(const_int 0)] + "" +{ + tilegx_expand_prologue (); + DONE; +}) + +(define_expand "epilogue" + [(const_int 0)] + "" +{ + tilegx_expand_epilogue (false); + DONE; +}) + +(define_expand "sibcall_epilogue" + [(const_int 0)] + "" +{ + tilegx_expand_epilogue (true); + DONE; +}) + +;; +;; Stack manipulations +;; + +;; An insn to allocate new stack space for dynamic use (e.g., alloca). +(define_expand "allocate_stack" + [(set (match_operand 0 "register_operand" "") + (minus (reg 54) (match_operand 1 "nonmemory_operand" ""))) + (set (reg 54) + (minus (reg 54) (match_dup 1)))] + "" + "tilegx_allocate_stack (operands[0], operands[1]); DONE;") + +;; +;; Branches +;; + +(define_expand "call" + [(parallel [(call (match_operand:DI 0 "call_operand" "") + (match_operand 1 "" "")) + (use (reg:DI 54)) + (clobber (reg:DI 55))])] + "" +{ + rtx orig_addr = XEXP (operands[0], 0); + rtx addr; + if (GET_CODE (orig_addr) == SYMBOL_REF) + { + if (tilegx_cmodel == CM_LARGE) + { + addr = gen_reg_rtx (Pmode); + tilegx_expand_set_const64 (addr, orig_addr); + operands[0] = gen_rtx_MEM (DImode, addr); + } + else if (tilegx_cmodel == CM_LARGE_PIC) + { + crtl->uses_pic_offset_table = 1; + addr = gen_reg_rtx (Pmode); + if (SYMBOL_REF_LOCAL_P (orig_addr)) + tilegx_compute_pcrel_address (addr, orig_addr); + else + tilegx_compute_pcrel_plt_address (addr, orig_addr); + operands[0] = gen_rtx_MEM (DImode, addr); + } + } +}) + +(define_insn "*call_insn" + [(call (mem:DI (match_operand:I48MODE 0 "call_address_operand" "rO,i")) + (match_operand 1 "" "")) + (use (reg:DI 54)) + (clobber (reg:DI 55))] + "" + "@ + jalr\t%r0 + jal\t%p0" + [(set_attr "type" "Y1,X1")]) + +(define_expand "call_value" + [(parallel [(set (match_operand 0 "register_operand" "") + (call (match_operand:DI 1 "call_operand" "") + (match_operand 2 "" ""))) + (use (reg:DI 54)) + (clobber (reg:DI 55))])] + "" +{ + rtx orig_addr = XEXP (operands[1], 0); + rtx addr; + if (GET_CODE (orig_addr) == SYMBOL_REF) + { + if (tilegx_cmodel == CM_LARGE) + { + addr = gen_reg_rtx (Pmode); + tilegx_expand_set_const64 (addr, orig_addr); + operands[1] = gen_rtx_MEM (DImode, addr); + } + else if (tilegx_cmodel == CM_LARGE_PIC) + { + crtl->uses_pic_offset_table = 1; + addr = gen_reg_rtx (Pmode); + if (SYMBOL_REF_LOCAL_P (orig_addr)) + tilegx_compute_pcrel_address (addr, orig_addr); + else + tilegx_compute_pcrel_plt_address (addr, orig_addr); + operands[1] = gen_rtx_MEM (DImode, addr); + } + } +}) + +(define_insn "*call_value_insn" + [(set (match_operand 0 "register_operand" "=r,r") + (call (mem:DI (match_operand:I48MODE 1 "call_address_operand" "rO,i")) + (match_operand 2 "" ""))) + (use (reg:DI 54)) + (clobber (reg:DI 55))] + "" + "@ + jalr\t%r1 + jal\t%p1" + [(set_attr "type" "Y1,X1")]) + +(define_expand "sibcall" + [(parallel [(call (match_operand:DI 0 "call_operand" "") + (match_operand 1 "" "")) + (use (reg:DI 54))])] + "" + "") + +(define_insn "*sibcall_insn" + [(call (mem:DI (match_operand:I48MODE 0 "call_address_operand" "rO,i")) + (match_operand 1 "" "")) + (use (reg:DI 54))] + "SIBLING_CALL_P(insn)" + "@ + jr\t%r0 + j\t%p0" + [(set_attr "type" "Y1,X1")]) + +(define_expand "sibcall_value" + [(parallel [(set (match_operand 0 "" "") + (call (match_operand:DI 1 "call_operand" "") + (match_operand 2 "" ""))) + (use (reg:DI 54))])] + "" + "") + +(define_insn "*sibcall_value" + [(set (match_operand 0 "" "") + (call (mem:DI (match_operand:I48MODE 1 "call_address_operand" "rO,i")) + (match_operand 2 "" ""))) + (use (reg:DI 54))] + "SIBLING_CALL_P(insn)" + "@ + jr\t%r1 + j\t%p1" + [(set_attr "type" "Y1,X1")]) + +(define_insn "jump" + [(set (pc) (label_ref (match_operand 0 "" "")))] + "" + "j\t%l0" + [(set_attr "type" "X1")]) + +(define_insn "indirect_jump" + [(set (pc) (match_operand 0 "pointer_operand" "rO"))] + "" + "jr\t%r0" + [(set_attr "type" "Y1")]) + +(define_expand "return" + [(parallel + [(return) + (use (reg:DI 55))])] + "tilegx_can_use_return_insn_p ()" + "") + +(define_insn "_return" + [(return) + (use (reg:DI 55))] + "reload_completed" + "jrp\tlr" + [(set_attr "type" "Y1")]) + +(define_expand "tablejump" + [(set (pc) (match_operand 0 "pointer_operand" "")) + (use (label_ref (match_operand 1 "" "")))] + "" +{ + tilegx_expand_tablejump (operands[0], operands[1]); + DONE; +}) + +(define_insn "tablejump_aux" + [(set (pc) (match_operand 0 "pointer_operand" "rO")) + (use (label_ref (match_operand 1 "" "")))] + "" + "jr\t%r0" + [(set_attr "type" "Y1")]) + +;; Call subroutine returning any type. +(define_expand "untyped_call" + [(parallel [(call (match_operand 0 "" "") + (const_int 0)) + (match_operand 1 "" "") + (match_operand 2 "" "")])] + "" +{ + int i; + + emit_call_insn (GEN_CALL (operands[0], const0_rtx, NULL, const0_rtx)); + + for (i = 0; i < XVECLEN (operands[2], 0); i++) + { + rtx set = XVECEXP (operands[2], 0, i); + emit_move_insn (SET_DEST (set), SET_SRC (set)); + } + + /* The optimizer does not know that the call sets the function value + registers we stored in the result block. We avoid problems by + claiming that all hard registers are used and clobbered at this + point. */ + emit_insn (gen_blockage ()); + + DONE; +}) + +;; UNSPEC_VOLATILE is considered to use and clobber all hard registers +;; and all of memory. This blocks insns from being moved across this +;; point. +(define_insn "blockage" + [(unspec_volatile [(const_int 0)] UNSPEC_BLOCKAGE)] + "" + "pseudo" + [(set_attr "type" "nothing") + (set_attr "length" "0")]) + +;; Internal expanders to prevent memory ops from moving around frame +;; allocation/deallocation. +;; +;; TODO: really this clobber should just clobber the frame memory. Is +;; this possibly by clobbering memory @ the sp reg (as alpha does?) +;; or by explicitly setting the alias set to the frame? +(define_insn "sp_adjust" + [(set (match_operand:DI 0 "register_operand" "=r,r,r") + (plus:DI + (match_operand:DI 1 "register_operand" "%r,r,r") + (match_operand:DI 2 "add_operand" "r,I,JT"))) + (clobber (mem:BLK (scratch)))] + "" + "@ + add\t%0, %1, %2 + addi\t%0, %1, %2 + addli\t%0, %1, %H2" + [(set_attr "type" "*,*,X01")]) + +(define_insn "sp_adjust_32bit" + [(set (match_operand:SI 0 "register_operand" "=r,r,r") + (plus:SI + (match_operand:SI 1 "register_operand" "%r,r,r") + (match_operand:SI 2 "add_operand" "r,I,JT"))) + (clobber (mem:BLK (scratch)))] + "" + "@ + addx\t%0, %1, %2 + addxi\t%0, %1, %2 + addxli\t%0, %1, %H2" + [(set_attr "type" "*,*,X01")]) + +;; Used for move sp, r52, to pop a stack frame. We need to make sure +;; that stack frame memory operations have been issued before we do +;; this. TODO: see above TODO. +(define_insn "sp_restore<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (match_operand:I48MODE 1 "register_operand" "r")) + (clobber (mem:BLK (scratch)))] + "" + "move\t%0, %1") + +(define_insn "nop" + [(const_int 0)] + "" + "nop" + [(set_attr "type" "Y01")]) + + +;; +;; Conditional branches +;; + +(define_expand "cbranch<mode>4" + [(set (pc) + (if_then_else (match_operator 0 "ordered_comparison_operator" + [(match_operand:FI48MODE 1 "reg_or_cint_operand") + (match_operand:FI48MODE 2 "reg_or_cint_operand")]) + (label_ref (match_operand 3 "")) + (pc)))] + "" +{ + tilegx_emit_conditional_branch (operands, GET_MODE (operands[1])); + DONE; +}) + +(define_insn "*bcc_normal<mode>" + [(set (pc) + (if_then_else + (match_operator 1 "signed_comparison_operator" + [(match_operand:I48MODE 2 "reg_or_0_operand" "rO") + (const_int 0)]) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + { return tilegx_output_cbranch (insn, operands, false); } + [(set_attr "type" "X1_branch")]) + +(define_insn "*bcc_reverse<mode>" + [(set (pc) + (if_then_else + (match_operator 1 "signed_comparison_operator" + [(match_operand:I48MODE 2 "reg_or_0_operand" "rO") + (const_int 0)]) + (pc) + (label_ref (match_operand 0 "" ""))))] + "" + { return tilegx_output_cbranch (insn, operands, true); } + [(set_attr "type" "X1_branch")]) + +(define_insn "*blbs_normal<mode>" + [(set (pc) + (if_then_else + (ne (zero_extract:I48MODE + (match_operand:I48MODE 1 "reg_or_0_operand" "rO") + (const_int 1) + (const_int 0)) + (const_int 0)) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + { return tilegx_output_cbranch_with_opcode (insn, operands, "blbs", "blbc", + 1); } + [(set_attr "type" "X1_branch")]) + +(define_insn "*blbc_normal<mode>" + [(set (pc) + (if_then_else + (eq (zero_extract:I48MODE + (match_operand:I48MODE 1 "reg_or_0_operand" "rO") + (const_int 1) + (const_int 0)) + (const_int 0)) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + { return tilegx_output_cbranch_with_opcode (insn, operands, "blbc", "blbs", + 1); } + [(set_attr "type" "X1_branch")]) + +;; Note that __insn_mf() expands to this. +(define_expand "memory_barrier" + [(set (match_dup 0) + (unspec_volatile:BLK [(match_dup 0)] UNSPEC_MF))] + "" +{ + operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode)); + MEM_VOLATILE_P (operands[0]) = 1; +}) + +(define_insn "*memory_barrier" + [(set (match_operand:BLK 0 "" "") + (unspec_volatile:BLK [(match_dup 0)] UNSPEC_MF))] + "" + "mf" + [(set_attr "type" "X1")]) + +(define_insn "prefetch" + [(prefetch (match_operand 0 "address_operand" "rO") + (match_operand 1 "const_int_operand" "") + (match_operand 2 "const_int_operand" ""))] + "" +{ + switch (INTVAL (operands[2])) + { + case 0: + case 1: return "prefetch_l3\t%r0"; + case 2: return "prefetch_l2\t%r0"; + case 3: return "prefetch_l1\t%r0"; + default: gcc_unreachable (); + } +} + [(set_attr "type" "Y2")]) + + +;; +;; "__insn" Intrinsics (some expand directly to normal patterns above). +;; + +(define_insn "insn_bfexts" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "u6bit_cint_operand" "n") + (match_operand:DI 3 "u6bit_cint_operand" "n")] + UNSPEC_INSN_BFEXTS))] + "" + "bfexts\t%0, %r1, %2, %3" + [(set_attr "type" "X0")]) + +(define_insn "insn_bfextu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "u6bit_cint_operand" "n") + (match_operand:DI 3 "u6bit_cint_operand" "n")] + UNSPEC_INSN_BFEXTU))] + "" + "bfextu\t%0, %r1, %2, %3" + [(set_attr "type" "X0")]) + +(define_insn "insn_bfins" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "u6bit_cint_operand" "n") + (match_operand:DI 4 "u6bit_cint_operand" "n")] + UNSPEC_INSN_BFINS))] + "" + "bfins\t%0, %r2, %3, %4" + [(set_attr "type" "X0")]) + +(define_insn "insn_cmpexch<four_if_si>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (mem:I48MODE (match_operand 1 "pointer_operand" "rO"))) + (set (mem:I48MODE (match_dup 1)) + (unspec_volatile:I48MODE + [(mem:I48MODE (match_dup 1)) + (reg:I48MODE TILEGX_CMPEXCH_REG) + (match_operand:I48MODE 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_CMPEXCH))] + "" + "cmpexch<four_if_si>\t%0, %r1, %r2" + [(set_attr "type" "X1_remote")]) + +(define_insn "insn_cmul" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_CMUL))] + "" + "cmul\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_cmula" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_CMULA))] + "" + "cmula\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_cmulaf" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_CMULAF))] + "" + "cmulaf\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_cmulf" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_CMULF))] + "" + "cmulf\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_cmulfr" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_CMULFR))] + "" + "cmulfr\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_cmulh" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_CMULH))] + "" + "cmulh\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_cmulhr" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_CMULHR))] + "" + "cmulhr\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_crc32_32" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_CRC32_32))] + "" + "crc32_32\t%0, %r1, %r2" + [(set_attr "type" "X0")]) + +(define_insn "insn_crc32_8" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_CRC32_8))] + "" + "crc32_8\t%0, %r1, %r2" + [(set_attr "type" "X0")]) + +(define_insn "insn_dblalign" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand 3 "pointer_operand" "rO")] + UNSPEC_INSN_DBLALIGN))] + "" + "dblalign\t%0, %r2, %r3" + [(set_attr "type" "X0")]) + +(define_insn "insn_dblalign2" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_DBLALIGN2))] + "" + "dblalign2\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "insn_dblalign4" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_DBLALIGN4))] + "" + "dblalign4\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "insn_dblalign6" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_DBLALIGN6))] + "" + "dblalign6\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "insn_dtlbpr" + [(unspec_volatile:VOID [(match_operand:DI 0 "reg_or_0_operand" "rO")] + UNSPEC_INSN_DTLBPR)] + "" + "dtlbpr\t%r0" + [(set_attr "type" "X1")]) + +(define_insn "insn_exch<four_if_si>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (mem:I48MODE (match_operand 1 "pointer_operand" "rO"))) + (set (mem:I48MODE (match_dup 1)) + (unspec_volatile:I48MODE + [(match_operand:I48MODE 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_EXCH))] + "" + "exch<four_if_si>\t%0, %r1, %r2" + [(set_attr "type" "X1_remote")]) + +(define_insn "insn_fdouble_add_flags" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_FDOUBLE_ADD_FLAGS))] + "" + "fdouble_add_flags\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_fdouble_addsub" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_FDOUBLE_ADDSUB))] + "" + "fdouble_addsub\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_fdouble_mul_flags" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_FDOUBLE_MUL_FLAGS))] + "" + "fdouble_mul_flags\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_fdouble_pack1" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_FDOUBLE_PACK1))] + "" + "fdouble_pack1\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_fdouble_pack2" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_FDOUBLE_PACK2))] + "" + "fdouble_pack2\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_fdouble_sub_flags" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_FDOUBLE_SUB_FLAGS))] + "" + "fdouble_sub_flags\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_fdouble_unpack_max" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_FDOUBLE_UNPACK_MAX))] + "" + "fdouble_unpack_max\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_fdouble_unpack_min" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_FDOUBLE_UNPACK_MIN))] + "" + "fdouble_unpack_min\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_fetchadd<four_if_si>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (unspec_volatile:I48MODE + [(mem:I48MODE (match_operand 1 "pointer_operand" "rO"))] + UNSPEC_ATOMIC)) + (set (mem:I48MODE (match_dup 1)) + (plus:I48MODE (mem:I48MODE (match_dup 1)) + (match_operand:I48MODE 2 "reg_or_0_operand" "rO")))] + "" + "fetchadd<four_if_si>\t%0, %r1, %r2" + [(set_attr "type" "X1_remote")]) + +(define_insn "insn_fetchaddgez<four_if_si>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (unspec_volatile:I48MODE + [(mem:I48MODE (match_operand 1 "pointer_operand" "rO"))] + UNSPEC_ATOMIC)) + (set (mem:I48MODE (match_dup 1)) + (unspec:I48MODE [(match_operand:I48MODE 2 "reg_or_0_operand" "rO") + (mem:I48MODE (match_dup 1))] + UNSPEC_INSN_FETCHADDGEZ))] + "" + "fetchaddgez<four_if_si>\t%0, %r1, %r2" + [(set_attr "type" "X1_remote")]) + +(define_insn "insn_fetchand<four_if_si>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (unspec_volatile:I48MODE + [(mem:I48MODE (match_operand 1 "pointer_operand" "rO"))] + UNSPEC_ATOMIC)) + (set (mem:I48MODE (match_dup 1)) + (and:I48MODE (mem:I48MODE (match_dup 1)) + (match_operand:I48MODE 2 "reg_or_0_operand" "rO")))] + "" + "fetchand<four_if_si>\t%0, %r1, %r2" + [(set_attr "type" "X1_remote")]) + +(define_insn "insn_fetchor<four_if_si>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (unspec_volatile:I48MODE + [(mem:I48MODE (match_operand 1 "pointer_operand" "rO"))] + UNSPEC_ATOMIC)) + (set (mem:I48MODE (match_dup 1)) + (ior:I48MODE (mem:I48MODE (match_dup 1)) + (match_operand:I48MODE 2 "reg_or_0_operand" "rO")))] + "" + "fetchor<four_if_si>\t%0, %r1, %r2" + [(set_attr "type" "X1_remote")]) + +(define_insn "insn_finv" + [(unspec_volatile:VOID [(match_operand 0 "pointer_operand" "rO")] + UNSPEC_INSN_FINV)] + "" + "finv\t%r0" + [(set_attr "type" "X1")]) + +(define_insn "insn_flush" + [(unspec_volatile:VOID [(match_operand 0 "pointer_operand" "rO")] + UNSPEC_INSN_FLUSH)] + "" + "flush\t%r0" + [(set_attr "type" "X1")]) + +(define_insn "insn_flushwb" + [(unspec_volatile:VOID [(const_int 0)] UNSPEC_INSN_FLUSHWB)] + "" + "flushwb" + [(set_attr "type" "X1")]) + +(define_insn "insn_fnop" + [(unspec_volatile:VOID [(const_int 0)] UNSPEC_INSN_FNOP)] + "" + "fnop") + +(define_insn "insn_fsingle_add1" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_FSINGLE_ADD1))] + "" + "fsingle_add1\t%0, %r1, %r2" + [(set_attr "type" "X0")]) + +(define_insn "insn_fsingle_addsub2" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_FSINGLE_ADDSUB2))] + "" + "fsingle_addsub2\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_fsingle_mul1" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_FSINGLE_MUL1))] + "" + "fsingle_mul1\t%0, %r1, %r2" + [(set_attr "type" "X0")]) + +(define_insn "insn_fsingle_mul2" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_FSINGLE_MUL2))] + "" + "fsingle_mul2\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_fsingle_pack1" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO")] + UNSPEC_INSN_FSINGLE_PACK1))] + "" + "fsingle_pack1\t%0, %r1" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_fsingle_pack2" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_FSINGLE_PACK2))] + "" + "fsingle_pack2\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_fsingle_sub1" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_FSINGLE_SUB1))] + "" + "fsingle_sub1\t%0, %r1, %r2" + [(set_attr "type" "X0")]) + +(define_insn "insn_drain" + [(unspec_volatile:VOID [(const_int 0)] UNSPEC_INSN_DRAIN)] + "" + "drain" + [(set_attr "type" "cannot_bundle")]) + +(define_insn "insn_icoh" + [(unspec_volatile:VOID [(match_operand 0 "pointer_operand" "rO")] + UNSPEC_INSN_ICOH)] + "" + "icoh\t%r0" + [(set_attr "type" "X1")]) + +(define_insn "insn_ill" + [(unspec_volatile:VOID [(const_int 0)] UNSPEC_INSN_ILL)] + "" + "ill" + [(set_attr "type" "cannot_bundle")]) + +(define_insn "insn_info" + [(unspec_volatile:VOID [(match_operand:DI 0 "s8bit_cint_operand" "i")] + UNSPEC_INSN_INFO)] + "" + "info\t%0") + +(define_insn "insn_infol" + [(unspec_volatile:VOID [(match_operand:DI 0 "s16bit_cint_operand" "i")] + UNSPEC_INSN_INFOL)] + "" + "infol\t%0" + [(set_attr "type" "X01")]) + +(define_insn "insn_inv" + [(unspec_volatile:VOID [(match_operand 0 "pointer_operand" "rO")] + UNSPEC_INSN_INV)] + "" + "inv\t%r0" + [(set_attr "type" "X1")]) + +;; loads + +(define_expand "insn_ld" + [(set (match_operand:DI 0 "register_operand" "") + (mem:DI (match_operand 1 "pointer_operand" "")))] + "") + +(define_insn "insn_ld_add<bitsuffix>" + [(set (match_operand:I48MODE 1 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "1") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (match_operand:DI 0 "register_operand" "=r") + (mem:DI (match_dup 3)))] + "" + "ld_add\t%0, %1, %2" + [(set_attr "type" "X1_2cycle")]) + +(define_insn "insn_ldna" + [(set (match_operand:DI 0 "register_operand" "=r") + (mem:DI (and:DI (match_operand 1 "pointer_operand" "rO") + (const_int -8))))] + "" + "ldna\t%0, %r1" + [(set_attr "type" "X1_2cycle")]) + +(define_insn "insn_ldna_add<bitsuffix>" + [(set (match_operand:I48MODE 1 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "1") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (match_operand:DI 0 "register_operand" "=r") + (mem:DI (and:DI (match_dup 3) (const_int -8))))] + "" + "ldna_add\t%0, %1, %2" + [(set_attr "type" "X1_2cycle")]) + +(define_expand "insn_ld<n><s>" + [(set (match_operand:DI 0 "register_operand" "") + (any_extend:DI + (mem:I124MODE (match_operand 1 "pointer_operand" ""))))] + "") + +(define_insn "insn_ld<I124MODE:n><s>_add<I48MODE:bitsuffix>" + [(set (match_operand:I48MODE 1 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "1") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (match_operand:DI 0 "register_operand" "=r") + (any_extend:DI (mem:I124MODE (match_dup 3))))] + "" + "ld<I124MODE:n><s>_add\t%0, %1, %2" + [(set_attr "type" "X1_2cycle")]) + +;; non temporal loads + +(define_insn "insn_ldnt" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(mem:DI (match_operand 1 "pointer_operand" "rO"))] + UNSPEC_NON_TEMPORAL))] + "" + "ldnt\t%0, %r1" + [(set_attr "type" "X1_2cycle")]) + +(define_insn "insn_ldnt_add<bitsuffix>" + [(set (match_operand:I48MODE 1 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "1") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(mem:DI (match_dup 3))] + UNSPEC_NON_TEMPORAL))] + "" + "ldnt_add\t%0, %1, %2" + [(set_attr "type" "X1_2cycle")]) + +(define_insn "insn_ldnt<n><s>" + [(set (match_operand:DI 0 "register_operand" "=r") + (any_extend:DI + (unspec:I124MODE + [(mem:I124MODE (match_operand 1 "pointer_operand" "rO"))] + UNSPEC_NON_TEMPORAL)))] + "" + "ldnt<n><s>\t%0, %r1" + [(set_attr "type" "X1_2cycle")]) + +(define_insn "insn_ldnt<I124MODE:n><s>_add<I48MODE:bitsuffix>" + [(set (match_operand:I48MODE 1 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "1") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (match_operand:DI 0 "register_operand" "=r") + (any_extend:DI (unspec:I124MODE [(mem:I124MODE (match_dup 3))] + UNSPEC_NON_TEMPORAL)))] + "" + "ldnt<I124MODE:n><s>_add\t%0, %1, %2" + [(set_attr "type" "X1_2cycle")]) + +;; L2 hits + +(define_insn "insn_ld_L2" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(mem:DI (match_operand 1 "pointer_operand" "rO"))] + UNSPEC_LATENCY_L2))] + "" + "ld\t%0, %r1" + [(set_attr "type" "Y2_L2")]) + +(define_insn "insn_ld_add_L2<bitsuffix>" + [(set (match_operand:I48MODE 1 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "1") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(mem:DI (match_dup 3))] + UNSPEC_LATENCY_L2))] + "" + "ld_add\t%0, %1, %2" + [(set_attr "type" "X1_L2")]) + +(define_insn "insn_ldna_L2" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(mem:DI (and:DI (match_operand 1 "pointer_operand" "rO") + (const_int -8)))] + UNSPEC_LATENCY_L2))] + "" + "ldna\t%0, %r1" + [(set_attr "type" "X1_L2")]) + +(define_insn "insn_ldna_add_L2<bitsuffix>" + [(set (match_operand:I48MODE 1 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "1") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(mem:DI (and:DI (match_dup 3) (const_int -8)))] + UNSPEC_LATENCY_L2))] + "" + "ldna_add\t%0, %1, %2" + [(set_attr "type" "X1_L2")]) + +(define_insn "insn_ld<n><s>_L2" + [(set (match_operand:DI 0 "register_operand" "=r") + (any_extend:DI + (unspec:I124MODE + [(mem:I124MODE (match_operand 1 "pointer_operand" "rO"))] + UNSPEC_LATENCY_L2)))] + "" + "ld<n><s>\t%0, %r1" + [(set_attr "type" "Y2_L2")]) + +(define_insn "insn_ld<I124MODE:n><s>_add_L2<I48MODE:bitsuffix>" + [(set (match_operand:I48MODE 1 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "1") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (match_operand:DI 0 "register_operand" "=r") + (any_extend:DI (unspec:I124MODE [(mem:I124MODE (match_dup 3))] + UNSPEC_LATENCY_L2)))] + "" + "ld<I124MODE:n><s>_add\t%0, %1, %2" + [(set_attr "type" "X1_L2")]) + +;; L2 hits, non temporal loads + +(define_insn "insn_ldnt_L2" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(unspec:DI + [(mem:DI (match_operand 1 "pointer_operand" "rO"))] + UNSPEC_NON_TEMPORAL)] + UNSPEC_LATENCY_L2))] + "" + "ldnt\t%0, %r1" + [(set_attr "type" "X1_L2")]) + +(define_insn "insn_ldnt_add_L2<bitsuffix>" + [(set (match_operand:I48MODE 1 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "1") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(unspec:DI + [(mem:DI (match_dup 3))] + UNSPEC_NON_TEMPORAL)] + UNSPEC_LATENCY_L2))] + "" + "ldnt_add\t%0, %1, %2" + [(set_attr "type" "X1_L2")]) + +(define_insn "insn_ldnt<n><s>_L2" + [(set (match_operand:DI 0 "register_operand" "=r") + (any_extend:DI + (unspec:I124MODE + [(unspec:I124MODE + [(mem:I124MODE (match_operand 1 "pointer_operand" "rO"))] + UNSPEC_NON_TEMPORAL)] + UNSPEC_LATENCY_L2)))] + "" + "ldnt<n><s>\t%0, %r1" + [(set_attr "type" "X1_L2")]) + +(define_insn "insn_ldnt<I124MODE:n><s>_add_L2<I48MODE:bitsuffix>" + [(set (match_operand:I48MODE 1 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "1") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (match_operand:DI 0 "register_operand" "=r") + (any_extend:DI + (unspec:I124MODE [(unspec:I124MODE + [(mem:I124MODE (match_dup 3))] + UNSPEC_NON_TEMPORAL)] + UNSPEC_LATENCY_L2)))] + "" + "ldnt<I124MODE:n><s>_add\t%0, %1, %2" + [(set_attr "type" "X1_L2")]) + +;; L2 miss + +(define_insn "insn_ld_miss" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(mem:DI (match_operand 1 "pointer_operand" "rO"))] + UNSPEC_LATENCY_MISS))] + "" + "ld\t%0, %r1" + [(set_attr "type" "Y2_miss")]) + +(define_insn "insn_ld_add_miss<bitsuffix>" + [(set (match_operand:I48MODE 1 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "1") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(mem:DI (match_dup 3))] + UNSPEC_LATENCY_MISS))] + "" + "ld_add\t%0, %1, %2" + [(set_attr "type" "X1_miss")]) + +(define_insn "insn_ldna_miss" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(mem:DI (and:DI (match_operand 1 "pointer_operand" "rO") + (const_int -8)))] + UNSPEC_LATENCY_MISS))] + "" + "ldna\t%0, %r1" + [(set_attr "type" "X1_miss")]) + +(define_insn "insn_ldna_add_miss<bitsuffix>" + [(set (match_operand:I48MODE 1 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "1") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(mem:DI (and:DI (match_dup 3) (const_int -8)))] + UNSPEC_LATENCY_MISS))] + "" + "ldna_add\t%0, %1, %2" + [(set_attr "type" "X1_miss")]) + +(define_insn "insn_ld<n><s>_miss" + [(set (match_operand:DI 0 "register_operand" "=r") + (any_extend:DI + (unspec:I124MODE + [(mem:I124MODE (match_operand 1 "pointer_operand" "rO"))] + UNSPEC_LATENCY_MISS)))] + "" + "ld<n><s>\t%0, %r1" + [(set_attr "type" "Y2_miss")]) + +(define_insn "insn_ld<I124MODE:n><s>_add_miss<I48MODE:bitsuffix>" + [(set (match_operand:I48MODE 1 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "1") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (match_operand:DI 0 "register_operand" "=r") + (any_extend:DI (unspec:I124MODE [(mem:I124MODE (match_dup 3))] + UNSPEC_LATENCY_MISS)))] + "" + "ld<I124MODE:n><s>_add\t%0, %1, %2" + [(set_attr "type" "X1_miss")]) + +;; L2 miss, non temporal loads + +(define_insn "insn_ldnt_miss" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(unspec:DI + [(mem:DI (match_operand 1 "pointer_operand" "rO"))] + UNSPEC_NON_TEMPORAL)] + UNSPEC_LATENCY_MISS))] + "" + "ldnt\t%0, %r1" + [(set_attr "type" "X1_miss")]) + +(define_insn "insn_ldnt_add_miss<bitsuffix>" + [(set (match_operand:I48MODE 1 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "1") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(unspec:DI + [(mem:DI (match_dup 3))] + UNSPEC_NON_TEMPORAL)] + UNSPEC_LATENCY_MISS))] + "" + "ldnt_add\t%0, %1, %2" + [(set_attr "type" "X1_miss")]) + +(define_insn "insn_ldnt<n><s>_miss" + [(set (match_operand:DI 0 "register_operand" "=r") + (any_extend:DI + (unspec:I124MODE + [(unspec:I124MODE + [(mem:I124MODE (match_operand 1 "pointer_operand" "rO"))] + UNSPEC_NON_TEMPORAL)] + UNSPEC_LATENCY_MISS)))] + "" + "ldnt<n><s>\t%0, %r1" + [(set_attr "type" "X1_miss")]) + +(define_insn "insn_ldnt<I124MODE:n><s>_add_miss<I48MODE:bitsuffix>" + [(set (match_operand:I48MODE 1 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "1") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (match_operand:DI 0 "register_operand" "=r") + (any_extend:DI + (unspec:I124MODE [(unspec:I124MODE + [(mem:I124MODE (match_dup 3))] + UNSPEC_NON_TEMPORAL)] + UNSPEC_LATENCY_MISS)))] + "" + "ldnt<I124MODE:n><s>_add\t%0, %1, %2" + [(set_attr "type" "X1_miss")]) + +;; end loads + +(define_insn "insn_lnk" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(const_int 0)] UNSPEC_INSN_LNK))] + "" + "lnk\t%0" + [(set_attr "type" "Y1")]) + +(define_insn "insn_mfspr" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec_volatile:DI [(match_operand:DI 1 "u14bit_cint_operand" "i")] + UNSPEC_INSN_MFSPR)) + (clobber (mem:BLK (const_int 0)))] + "" + "mfspr\t%0, %1" + [(set_attr "type" "X1")]) + +(define_insn "insn_mtspr" + [(unspec_volatile:DI [(match_operand:DI 0 "u14bit_cint_operand" "i") + (match_operand:DI 1 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MTSPR) + (clobber (mem:BLK (const_int 0)))] + "" + "mtspr\t%0, %r1" + [(set_attr "type" "X1")]) + +(define_insn "insn_mm" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "u6bit_cint_operand" "i") + (match_operand:DI 4 "u6bit_cint_operand" "i")] + UNSPEC_INSN_MM))] + "" + "mm\t%0, %r2, %3, %4" + [(set_attr "type" "X0")]) + +(define_insn "insn_mul_hs_hs" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MUL_HS_HS))] + "" + "mul_hs_hs\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_mul_hs_hu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MUL_HS_HU))] + "" + "mul_hs_hu\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mul_hs_ls" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MUL_HS_LS))] + "" + "mul_hs_ls\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mul_hs_lu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MUL_HS_LU))] + "" + "mul_hs_lu\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mul_hu_hu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MUL_HU_HU))] + "" + "mul_hu_hu\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_mul_hu_ls" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MUL_HU_LS))] + "" + "mul_hu_ls\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mul_hu_lu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MUL_HU_LU))] + "" + "mul_hu_lu\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mul_ls_ls" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MUL_LS_LS))] + "" + "mul_ls_ls\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_mul_ls_lu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MUL_LS_LU))] + "" + "mul_ls_lu\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mul_lu_lu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MUL_LU_LU))] + "" + "mul_lu_lu\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_mula_hs_hs" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULA_HS_HS))] + "" + "mula_hs_hs\t%0, %r2, %r3" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_mula_hs_hu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULA_HS_HU))] + "" + "mula_hs_hu\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mula_hs_ls" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULA_HS_LS))] + "" + "mula_hs_ls\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mula_hs_lu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULA_HS_LU))] + "" + "mula_hs_lu\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mula_hu_hu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULA_HU_HU))] + "" + "mula_hu_hu\t%0, %r2, %r3" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_mula_hu_ls" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULA_HU_LS))] + "" + "mula_hu_ls\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mula_hu_lu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULA_HU_LU))] + "" + "mula_hu_lu\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mula_ls_ls" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULA_LS_LS))] + "" + "mula_ls_ls\t%0, %r2, %r3" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_mula_ls_lu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULA_LS_LU))] + "" + "mula_ls_lu\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mula_lu_lu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULA_LU_LU))] + "" + "mula_lu_lu\t%0, %r2, %r3" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_mulax" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "0") + (match_operand:SI 2 "reg_or_0_operand" "rO") + (match_operand:SI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULAX))] + "" + "mulax\t%0, %r2, %r3" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_nap" + [(unspec_volatile:VOID [(const_int 0)] UNSPEC_INSN_NAP)] + "" + "nap" + [(set_attr "type" "cannot_bundle")]) + +(define_insn "insn_nor_<mode>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (and:I48MODE + (not:I48MODE (match_operand:I48MODE 1 "reg_or_0_operand" "rO")) + (not:I48MODE (match_operand:I48MODE 2 "reg_or_0_operand" "rO"))))] + "" + "nor\t%0, %r1, %r2") + +(define_expand "insn_prefetch_l1" + [(prefetch (match_operand 0 "pointer_operand" "") + (const_int 0) + (const_int 3))] + "") + +(define_expand "insn_prefetch_l2" + [(prefetch (match_operand 0 "pointer_operand" "") + (const_int 0) + (const_int 2))] + "") + +(define_expand "insn_prefetch_l3" + [(prefetch (match_operand 0 "pointer_operand" "") + (const_int 0) + (const_int 1))] + "") + +(define_insn "insn_prefetch_l1_fault" + [(unspec_volatile:VOID [(match_operand 0 "pointer_operand" "rO")] + UNSPEC_INSN_PREFETCH_L1_FAULT)] + "" + "prefetch_l1_fault\t%r0" + [(set_attr "type" "Y2")]) + +(define_insn "insn_prefetch_l2_fault" + [(unspec_volatile:VOID [(match_operand 0 "pointer_operand" "rO")] + UNSPEC_INSN_PREFETCH_L2_FAULT)] + "" + "prefetch_l2_fault\t%r0" + [(set_attr "type" "Y2")]) + +(define_insn "insn_prefetch_l3_fault" + [(unspec_volatile:VOID [(match_operand 0 "pointer_operand" "rO")] + UNSPEC_INSN_PREFETCH_L3_FAULT)] + "" + "prefetch_l3_fault\t%r0" + [(set_attr "type" "Y2")]) + +(define_insn "insn_revbits" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO")] + UNSPEC_INSN_REVBITS))] + "" + "revbits\t%0, %r1" + [(set_attr "type" "Y0")]) + +(define_insn "insn_shl1add" + [(set (match_operand:DI 0 "register_operand" "=r") + (plus:DI (mult:DI (match_operand:DI 1 "reg_or_0_operand" "rO") + (const_int 2)) + (match_operand:DI 2 "reg_or_0_operand" "rO")))] + "" + "shl1add\t%0, %r1, %r2") + +(define_insn "insn_shl1addx" + [(set (match_operand:SI 0 "register_operand" "=r") + (plus:SI (mult:SI (match_operand:SI 1 "reg_or_0_operand" "rO") + (const_int 2)) + (match_operand:SI 2 "reg_or_0_operand" "rO")))] + "" + "shl1addx\t%0, %r1, %r2") + +(define_insn "insn_shl2add" + [(set (match_operand:DI 0 "register_operand" "=r") + (plus:DI (mult:DI (match_operand:DI 1 "reg_or_0_operand" "rO") + (const_int 4)) + (match_operand:DI 2 "reg_or_0_operand" "rO")))] + "" + "shl2add\t%0, %r1, %r2") + +(define_insn "insn_shl2addx" + [(set (match_operand:SI 0 "register_operand" "=r") + (plus:SI (mult:SI (match_operand:SI 1 "reg_or_0_operand" "rO") + (const_int 4)) + (match_operand:SI 2 "reg_or_0_operand" "rO")))] + "" + "shl2addx\t%0, %r1, %r2") + +(define_insn "insn_shl3add" + [(set (match_operand:DI 0 "register_operand" "=r") + (plus:DI (mult:DI (match_operand:DI 1 "reg_or_0_operand" "rO") + (const_int 8)) + (match_operand:DI 2 "reg_or_0_operand" "rO")))] + "" + "shl3add\t%0, %r1, %r2") + +(define_insn "insn_shl3addx" + [(set (match_operand:SI 0 "register_operand" "=r") + (plus:SI (mult:SI (match_operand:SI 1 "reg_or_0_operand" "rO") + (const_int 8)) + (match_operand:SI 2 "reg_or_0_operand" "rO")))] + "" + "shl3addx\t%0, %r1, %r2") + +(define_insn "insn_shufflebytes" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_SHUFFLEBYTES))] + "" + "shufflebytes\t%0, %r2, %r3" + [(set_attr "type" "X0")]) + +(define_insn "insn_shufflebytes1" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_SHUFFLEBYTES))] + "" + "shufflebytes\t%0, %r1, %r2" + [(set_attr "type" "X0")]) + +;; stores + +(define_expand "insn_st" + [(set (mem:DI (match_operand 0 "pointer_operand" "")) + (match_operand:DI 1 "reg_or_0_operand" ""))] + "") + +(define_insn "insn_st_add<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "0") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (mem:DI (match_dup 3)) + (match_operand:DI 1 "reg_or_0_operand" "rO"))] + "" + "st_add\t%0, %r1, %2" + [(set_attr "type" "X1")]) + +(define_expand "insn_st<n>" + [(set (mem:I124MODE (match_operand 0 "pointer_operand" "")) + (match_operand:DI 1 "reg_or_0_operand" ""))] + "" +{ + operands[1] = simplify_gen_subreg (<MODE>mode, operands[1], DImode, + BYTES_BIG_ENDIAN + ? UNITS_PER_WORD - <n> : 0); +}) + +(define_expand "insn_st<I124MODE:n>_add<I48MODE:bitsuffix>" + [(parallel + [(set (match_operand:I48MODE 0 "register_operand" "") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "") + (match_operand:I48MODE 2 "s8bit_cint_operand" ""))) + (set (mem:I124MODE (match_dup 3)) + (match_operand:DI 1 "reg_or_0_operand" ""))])] + "" +{ + operands[1] = simplify_gen_subreg (<I124MODE:MODE>mode, operands[1], + DImode, + BYTES_BIG_ENDIAN + ? UNITS_PER_WORD - <I124MODE:n> : 0); +}) + +(define_insn "*insn_st<I124MODE:n>_add<I48MODE:bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "0") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (mem:I124MODE (match_dup 3)) + (match_operand:I124MODE 1 "reg_or_0_operand" "rO"))] + "" + "st<I124MODE:n>_add\t%0, %r1, %2" + [(set_attr "type" "X1")]) + +;; non-temporal stores + +(define_insn "insn_stnt" + [(set (mem:DI (unspec [(match_operand 0 "pointer_operand" "rO")] + UNSPEC_NON_TEMPORAL)) + (match_operand:DI 1 "reg_or_0_operand" "rO"))] + "" + "stnt\t%0, %r1" + [(set_attr "type" "X1")]) + +(define_insn "insn_stnt_add<bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "0") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (mem:DI (unspec:I48MODE [(match_dup 3)] UNSPEC_NON_TEMPORAL)) + (match_operand:DI 1 "reg_or_0_operand" "rO"))] + "" + "stnt_add\t%0, %r1, %2" + [(set_attr "type" "X1")]) + +(define_expand "insn_stnt<n>" + [(set (mem:I124MODE (unspec [(match_operand 0 "pointer_operand" "")] + UNSPEC_NON_TEMPORAL)) + (match_operand:DI 1 "reg_or_0_operand" ""))] + "" +{ + operands[1] = simplify_gen_subreg (<MODE>mode, operands[1], DImode, + BYTES_BIG_ENDIAN + ? UNITS_PER_WORD - <n> : 0); +}) + +(define_insn "*insn_stnt<n>" + [(set (mem:I124MODE (unspec [(match_operand 0 "pointer_operand" "rO")] + UNSPEC_NON_TEMPORAL)) + (match_operand:I124MODE 1 "reg_or_0_operand" "rO"))] + "" + "stnt<n>\t%0, %r1" + [(set_attr "type" "X1")]) + +(define_expand "insn_stnt<I124MODE:n>_add<I48MODE:bitsuffix>" + [(parallel + [(set (match_operand:I48MODE 0 "register_operand" "") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "") + (match_operand:I48MODE 2 "s8bit_cint_operand" ""))) + (set (mem:I124MODE (unspec:I48MODE [(match_dup 3)] UNSPEC_NON_TEMPORAL)) + (match_operand:DI 1 "reg_or_0_operand" "rO"))])] + "" +{ + operands[1] = simplify_gen_subreg (<I124MODE:MODE>mode, operands[1], + DImode, + BYTES_BIG_ENDIAN + ? UNITS_PER_WORD - <n> : 0); +}) + +(define_insn "*insn_stnt<I124MODE:n>_add<I48MODE:bitsuffix>" + [(set (match_operand:I48MODE 0 "register_operand" "=r") + (plus:I48MODE (match_operand:I48MODE 3 "register_operand" "0") + (match_operand:I48MODE 2 "s8bit_cint_operand" "i"))) + (set (mem:I124MODE (unspec:I48MODE [(match_dup 3)] UNSPEC_NON_TEMPORAL)) + (match_operand:I124MODE 1 "reg_or_0_operand" "rO"))] + "" + "stnt<I124MODE:n>_add\t%0, %r1, %2" + [(set_attr "type" "X1")]) + +;; end stores + +(define_insn "insn_tblidxb0" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_TBLIDXB0))] + "" + "tblidxb0\t%0, %r2" + [(set_attr "type" "Y0")]) + +(define_insn "insn_tblidxb1" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_TBLIDXB1))] + "" + "tblidxb1\t%0, %r2" + [(set_attr "type" "Y0")]) + +(define_insn "insn_tblidxb2" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_TBLIDXB2))] + "" + "tblidxb2\t%0, %r2" + [(set_attr "type" "Y0")]) + +(define_insn "insn_tblidxb3" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_TBLIDXB3))] + "" + "tblidxb3\t%0, %r2" + [(set_attr "type" "Y0")]) + +;; insn_v1add +;; insn_v1addi +;; insn_v1cmpeq +;; insn_v1cmpeqi +;; insn_v1cmplts +;; insn_v1cmpltsi +;; insn_v1cmpltu +;; insn_v1cmpltui +;; insn_v1maxu +;; insn_v1maxui +;; insn_v1minu +;; insn_v1minui +(define_insn "<optab>v8qi3" + [(set (match_operand:V8QI 0 "register_operand" "=r,r") + (v1op_immed:V8QI + (match_operand:V8QI 1 "reg_or_0_operand" "<comm>rO,rO") + (match_operand:V8QI 2 "reg_or_v8s8bit_operand" "W,rO")))] + "" + "@ + v1<insn>i\t%0, %r1, %j2 + v1<insn>\t%0, %r1, %r2" + [(set_attr "type" "<pipe>,<pipe>")]) + +(define_expand "insn_v1<insn>" + [(set (match_operand:DI 0 "register_operand" "") + (v1op_immed:V8QI + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_operand" "")))] + "" +{ + tilegx_expand_builtin_vector_binop (gen_<optab>v8qi3, V8QImode, operands[0], + V8QImode, operands[1], operands[2], true); + DONE; +}) + +(define_expand "insn_v1<insn>i" + [(set (match_operand:DI 0 "register_operand" "") + (v1op_immed:V8QI + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "s8bit_cint_operand" "")))] + "" +{ + /* Tile out immediate and expand to general case. */ + rtx n = tilegx_simd_int (operands[2], QImode); + tilegx_expand_builtin_vector_binop (gen_<optab>v8qi3, V8QImode, operands[0], + V8QImode, operands[1], n, true); + DONE; +}) + +;; insn_v1shl +;; insn_v1shli +;; insn_v1shrs +;; insn_v1shrsi +;; insn_v1shru +;; insn_v1shrui +(define_insn "<optab>v8qi3" + [(set (match_operand:V8QI 0 "register_operand" "=r,r") + (any_shift:V8QI + (match_operand:V8QI 1 "reg_or_0_operand" "rO,rO") + (match_operand:DI 2 "reg_or_u5bit_operand" "I,rO")))] + "" + "@ + v1<insn>i\t%0, %r1, %2 + v1<insn>\t%0, %r1, %r2" + [(set_attr "type" "<pipe>,<pipe>")]) + +(define_expand "insn_v1<insn>" + [(set (match_operand:DI 0 "register_operand" "") + (any_shift:V8QI + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_u5bit_operand" "")))] + "" +{ + tilegx_expand_builtin_vector_binop (gen_<optab>v8qi3, V8QImode, operands[0], + V8QImode, operands[1], operands[2], false); + DONE; +}) + +;; insn_v2add +;; insn_v2addi +;; insn_v2maxs +;; insn_v2maxsi +;; insn_v2mins +;; insn_v2minsi +;; insn_v2cmpeq +;; insn_v2cmpeqi +;; insn_v2cmplts +;; insn_v2cmpltsi +;; insn_v2cmpltu +;; insn_v2cmpltui +(define_insn "<optab>v4hi3" + [(set (match_operand:V4HI 0 "register_operand" "=r,r") + (v2op_immed:V4HI + (match_operand:V4HI 1 "reg_or_0_operand" "<comm>rO,rO") + (match_operand:V4HI 2 "reg_or_v4s8bit_operand" "Y,rO")))] + "" + "@ + v2<insn>i\t%0, %r1, %j2 + v2<insn>\t%0, %r1, %r2" + [(set_attr "type" "<pipe>,<pipe>")]) + +(define_expand "insn_v2<insn>" + [(set (match_operand:DI 0 "register_operand" "") + (v2op_immed:V4HI + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_operand" "")))] + "" +{ + tilegx_expand_builtin_vector_binop (gen_<optab>v4hi3, V4HImode, operands[0], + V4HImode, operands[1], operands[2], true); + DONE; +}) + +(define_expand "insn_v2<insn>i" + [(set (match_operand:DI 0 "register_operand" "") + (v2op_immed:V4HI + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "s8bit_cint_operand" "")))] + "" +{ + /* Tile out immediate and expand to general case. */ + rtx n = tilegx_simd_int (operands[2], HImode); + tilegx_expand_builtin_vector_binop (gen_<optab>v4hi3, V4HImode, operands[0], + V4HImode, operands[1], n, true); + DONE; +}) + +;; insn_v2shl +;; insn_v2shli +;; insn_v2shrs +;; insn_v2shrsi +;; insn_v2shru +;; insn_v2shrui +(define_insn "<optab>v4hi3" + [(set (match_operand:V4HI 0 "register_operand" "=r,r") + (any_shift:V4HI + (match_operand:V4HI 1 "reg_or_0_operand" "rO,rO") + (match_operand:DI 2 "reg_or_u5bit_operand" "I,rO")))] + "" + "@ + v2<insn>i\t%0, %r1, %2 + v2<insn>\t%0, %r1, %r2" + [(set_attr "type" "<pipe>,<pipe>")]) + +(define_expand "insn_v2<insn>" + [(set (match_operand:DI 0 "register_operand" "") + (any_shift:V4HI + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_u5bit_operand" "")))] + "" +{ + tilegx_expand_builtin_vector_binop (gen_<optab>v4hi3, V4HImode, operands[0], + V4HImode, operands[1], operands[2], false); + DONE; +}) + +;; insn_v1adduc +;; insn_v1subuc +;; insn_v1sub +;; insn_v1cmpne +;; insn_v1cmples +;; insn_v1cmpleu +;; insn_v1multu +(define_insn "<optab>v8qi3" + [(set (match_operand:V8QI 0 "register_operand" "=r") + (v1op:V8QI + (match_operand:V8QI 1 "reg_or_0_operand" "<comm>rO") + (match_operand:V8QI 2 "reg_or_0_operand" "rO")))] + "" + "v1<insn>\t%0, %r1, %r2" + [(set_attr "type" "<pipe>")]) + +(define_expand "insn_v1<insn>" + [(set (match_operand:DI 0 "register_operand" "") + (v1op:V8QI + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_operand" "")))] + "" +{ + tilegx_expand_builtin_vector_binop (gen_<optab>v8qi3, V8QImode, operands[0], + V8QImode, operands[1], operands[2], true); + DONE; +}) + +;; insn_v2addsc +;; insn_v2subsc +;; insn_v2sub +;; insn_v2cmpne +;; insn_v2cmples +;; insn_v2cmpleu +(define_insn "<optab>v4hi3" + [(set (match_operand:V4HI 0 "register_operand" "=r") + (v2op:V4HI + (match_operand:V4HI 1 "reg_or_0_operand" "<comm>rO") + (match_operand:V4HI 2 "reg_or_0_operand" "rO")))] + "" + "v2<insn>\t%0, %r1, %r2" + [(set_attr "type" "<pipe>")]) + +(define_expand "insn_v2<insn>" + [(set (match_operand:DI 0 "register_operand" "") + (v2op:V4HI + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_operand" "")))] + "" +{ + tilegx_expand_builtin_vector_binop (gen_<optab>v4hi3, V4HImode, operands[0], + V4HImode, operands[1], operands[2], true); + DONE; +}) + +;; insn_v2mults +(define_insn "mulv4hi3" + [(set (match_operand:V4HI 0 "register_operand" "=r") + (mult:V4HI + (match_operand:V4HI 1 "reg_or_0_operand" "%rO") + (match_operand:V4HI 2 "reg_or_0_operand" "rO")))] + "" + "v2mults\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_expand "insn_v2mults" + [(set (match_operand:DI 0 "register_operand" "") + (mult:V4HI + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_operand" "")))] + "" +{ + tilegx_expand_builtin_vector_binop (gen_mulv4hi3, V4HImode, operands[0], + V4HImode, operands[1], operands[2], true); + DONE; +}) + +;; insn_v2shlsc +(define_insn "<optab>v4hi3" + [(set (match_operand:V4HI 0 "register_operand" "=r") + (v2shift:V4HI + (match_operand:V4HI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")))] + "" + "v2<insn>\t%0, %r1, %r2" + [(set_attr "type" "<pipe>")]) + +(define_expand "insn_v2<insn>" + [(set (match_operand:DI 0 "register_operand" "") + (v2shift:V4HI + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_operand" "")))] + "" +{ + tilegx_expand_builtin_vector_binop (gen_<optab>v4hi3, V4HImode, operands[0], + V4HImode, operands[1], operands[2], false); + DONE; +}) + +;; insn_v4addsc +;; insn_v4subsc +;; insn_v4add +;; insn_v4sub +(define_insn "<optab>v2si3" + [(set (match_operand:V2SI 0 "register_operand" "=r") + (v4op:V2SI + (match_operand:V2SI 1 "reg_or_0_operand" "<comm>rO") + (match_operand:V2SI 2 "reg_or_0_operand" "rO")))] + "" + "v4<insn>\t%0, %r1, %r2" + [(set_attr "type" "<pipe>")]) + +(define_expand "insn_v4<insn>" + [(set (match_operand:DI 0 "register_operand" "") + (v4op:V2SI + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_operand" "")))] + "" +{ + tilegx_expand_builtin_vector_binop (gen_<optab>v2si3, V2SImode, operands[0], + V2SImode, operands[1], operands[2], true); + DONE; +}) + +;; insn_v4shl +;; insn_v4shrs +;; insn_v4shru +;; insn_v4shlsc +(define_insn "<optab>v2si3" + [(set (match_operand:V2SI 0 "register_operand" "=r") + (v4shift:V2SI + (match_operand:V2SI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")))] + "" + "v4<insn>\t%0, %r1, %r2" + [(set_attr "type" "<pipe>")]) + +(define_expand "insn_v4<insn>" + [(set (match_operand:DI 0 "register_operand" "") + (v4shift:V2SI + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_operand" "")))] + "" +{ + tilegx_expand_builtin_vector_binop (gen_<optab>v2si3, V2SImode, operands[0], + V2SImode, operands[1], operands[2], false); + DONE; +}) + +;; Byte ordering of these vectors is endian dependent. gcc concats +;; right-to-left for little endian, and left-to-right for big endian. +;; So we need different patterns that depend on endianness. Our +;; instructions concat and interleave the way a big-endian target would +;; work in gcc, so for little endian, we need to reverse the source +;; operands. + +;; insn_v1int_h +;; {B7,B6,B5,B4,B3,B2,B1,B0} {A7,A6,A5,A4,A3,A2,A1,A0} +;; => {A7,A6,A5,A4,A3,A2,A1,A0,B7,B6,B5,B4,B3,B2,B1,B0} +;; => {A7,B7,A6,B6,A5,B5,A4,B4} +(define_expand "vec_interleave_highv8qi" + [(match_operand:V8QI 0 "register_operand" "") + (match_operand:V8QI 1 "reg_or_0_operand" "") + (match_operand:V8QI 2 "reg_or_0_operand" "")] + "" +{ + if (BYTES_BIG_ENDIAN) + emit_insn (gen_vec_interleave_highv8qi_be (operands[0], operands[1], + operands[2])); + else + emit_insn (gen_vec_interleave_highv8qi_le (operands[0], operands[1], + operands[2])); + DONE; +}) + +(define_insn "vec_interleave_highv8qi_be" + [(set (match_operand:V8QI 0 "register_operand" "=r") + (vec_select:V8QI + (vec_concat:V16QI (match_operand:V8QI 1 "reg_or_0_operand" "rO") + (match_operand:V8QI 2 "reg_or_0_operand" "rO")) + (parallel [(const_int 0) (const_int 8) + (const_int 1) (const_int 9) + (const_int 2) (const_int 10) + (const_int 3) (const_int 11)])))] + "BYTES_BIG_ENDIAN" + "v1int_h\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "vec_interleave_highv8qi_le" + [(set (match_operand:V8QI 0 "register_operand" "=r") + (vec_select:V8QI + (vec_concat:V16QI (match_operand:V8QI 1 "reg_or_0_operand" "rO") + (match_operand:V8QI 2 "reg_or_0_operand" "rO")) + (parallel [(const_int 4) (const_int 12) + (const_int 5) (const_int 13) + (const_int 6) (const_int 14) + (const_int 7) (const_int 15)])))] + "!BYTES_BIG_ENDIAN" + "v1int_h\t%0, %r2, %r1" + [(set_attr "type" "X01")]) + +(define_expand "insn_v1int_h" + [(match_operand:DI 0 "register_operand" "") + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_operand" "")] + "" +{ + /* For little endian, our instruction interleaves opposite of the + way vec_interleave works, so we need to reverse the source + operands. */ + rtx opnd1 = BYTES_BIG_ENDIAN ? operands[1] : operands[2]; + rtx opnd2 = BYTES_BIG_ENDIAN ? operands[2] : operands[1]; + tilegx_expand_builtin_vector_binop (gen_vec_interleave_highv8qi, V8QImode, + operands[0], V8QImode, opnd1, opnd2, + true); + DONE; +}) + +;; insn_v1int_l +;; {B7,B6,B5,B4,B3,B2,B1,B0} {A7,A6,A5,A4,A3,A2,A1,A0} +;; => {A7,A6,A5,A4,A3,A2,A1,A0,B7,B6,B5,B4,B3,B2,B1,B0} +;; => {A3,B3,A2,B2,A1,B1,A0,B0} +(define_expand "vec_interleave_lowv8qi" + [(match_operand:V8QI 0 "register_operand" "") + (match_operand:V8QI 1 "reg_or_0_operand" "") + (match_operand:V8QI 2 "reg_or_0_operand" "")] + "" +{ + if (BYTES_BIG_ENDIAN) + emit_insn (gen_vec_interleave_lowv8qi_be (operands[0], operands[1], + operands[2])); + else + emit_insn (gen_vec_interleave_lowv8qi_le (operands[0], operands[1], + operands[2])); + DONE; +}) + +(define_insn "vec_interleave_lowv8qi_be" + [(set (match_operand:V8QI 0 "register_operand" "=r") + (vec_select:V8QI + (vec_concat:V16QI (match_operand:V8QI 1 "reg_or_0_operand" "rO") + (match_operand:V8QI 2 "reg_or_0_operand" "rO")) + (parallel [(const_int 4) (const_int 12) + (const_int 5) (const_int 13) + (const_int 6) (const_int 14) + (const_int 7) (const_int 15)])))] + "BYTES_BIG_ENDIAN" + "v1int_l\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "vec_interleave_lowv8qi_le" + [(set (match_operand:V8QI 0 "register_operand" "=r") + (vec_select:V8QI + (vec_concat:V16QI (match_operand:V8QI 1 "reg_or_0_operand" "rO") + (match_operand:V8QI 2 "reg_or_0_operand" "rO")) + (parallel [(const_int 0) (const_int 8) + (const_int 1) (const_int 9) + (const_int 2) (const_int 10) + (const_int 3) (const_int 11)])))] + "!BYTES_BIG_ENDIAN" + "v1int_l\t%0, %r2, %r1" + [(set_attr "type" "X01")]) + +(define_expand "insn_v1int_l" + [(match_operand:DI 0 "register_operand" "") + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_operand" "")] + "" +{ + /* For little endian, our instruction interleaves opposite of the + way vec_interleave works, so we need to reverse the source + operands. */ + rtx opnd1 = BYTES_BIG_ENDIAN ? operands[1] : operands[2]; + rtx opnd2 = BYTES_BIG_ENDIAN ? operands[2] : operands[1]; + tilegx_expand_builtin_vector_binop (gen_vec_interleave_lowv8qi, V8QImode, + operands[0], V8QImode, opnd1, opnd2, + true); + DONE; +}) + +;; insn_v2int_h +;; {B3,B2,B1,B0} {A3,A2,A1,A0} +;; => {A3,A2,A1,A0,B3,B2,B1,B0} +;; => {A3,B3,A2,B2} +(define_expand "vec_interleave_highv4hi" + [(match_operand:V4HI 0 "register_operand" "") + (match_operand:V4HI 1 "reg_or_0_operand" "") + (match_operand:V4HI 2 "reg_or_0_operand" "")] + "" +{ + if (BYTES_BIG_ENDIAN) + emit_insn (gen_vec_interleave_highv4hi_be (operands[0], operands[1], + operands[2])); + else + emit_insn (gen_vec_interleave_highv4hi_le (operands[0], operands[1], + operands[2])); + DONE; +}) + +(define_insn "vec_interleave_highv4hi_be" + [(set (match_operand:V4HI 0 "register_operand" "=r") + (vec_select:V4HI + (vec_concat:V8HI (match_operand:V4HI 1 "reg_or_0_operand" "rO") + (match_operand:V4HI 2 "reg_or_0_operand" "rO")) + (parallel [(const_int 0) (const_int 4) + (const_int 1) (const_int 5)])))] + "BYTES_BIG_ENDIAN" + "v2int_h\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "vec_interleave_highv4hi_le" + [(set (match_operand:V4HI 0 "register_operand" "=r") + (vec_select:V4HI + (vec_concat:V8HI (match_operand:V4HI 1 "reg_or_0_operand" "rO") + (match_operand:V4HI 2 "reg_or_0_operand" "rO")) + (parallel [(const_int 2) (const_int 6) + (const_int 3) (const_int 7)])))] + "!BYTES_BIG_ENDIAN" + "v2int_h\t%0, %r2, %r1" + [(set_attr "type" "X01")]) + +(define_expand "insn_v2int_h" + [(match_operand:DI 0 "register_operand" "") + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_operand" "")] + "" +{ + /* For little endian, our instruction interleaves opposite of the + way vec_interleave works, so we need to reverse the source + operands. */ + rtx opnd1 = BYTES_BIG_ENDIAN ? operands[1] : operands[2]; + rtx opnd2 = BYTES_BIG_ENDIAN ? operands[2] : operands[1]; + tilegx_expand_builtin_vector_binop (gen_vec_interleave_highv4hi, V4HImode, + operands[0], V4HImode, opnd1, opnd2, + true); + DONE; +}) + +;; insn_v2int_l +;; {B3,B2,B1,B0} {A3,A2,A1,A0} +;; => {A3,A2,A1,A0,B3,B2,B1,B0} +;; => {A1,B1,A0,B0} +(define_expand "vec_interleave_lowv4hi" + [(match_operand:V4HI 0 "register_operand" "") + (match_operand:V4HI 1 "reg_or_0_operand" "") + (match_operand:V4HI 2 "reg_or_0_operand" "")] + "" +{ + if (BYTES_BIG_ENDIAN) + emit_insn (gen_vec_interleave_lowv4hi_be (operands[0], operands[1], + operands[2])); + else + emit_insn (gen_vec_interleave_lowv4hi_le (operands[0], operands[1], + operands[2])); + DONE; +}) + +(define_insn "vec_interleave_lowv4hi_be" + [(set (match_operand:V4HI 0 "register_operand" "=r") + (vec_select:V4HI + (vec_concat:V8HI (match_operand:V4HI 1 "reg_or_0_operand" "rO") + (match_operand:V4HI 2 "reg_or_0_operand" "rO")) + (parallel [(const_int 2) (const_int 6) + (const_int 3) (const_int 7)])))] + "BYTES_BIG_ENDIAN" + "v2int_l\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "vec_interleave_lowv4hi_le" + [(set (match_operand:V4HI 0 "register_operand" "=r") + (vec_select:V4HI + (vec_concat:V8HI (match_operand:V4HI 1 "reg_or_0_operand" "rO") + (match_operand:V4HI 2 "reg_or_0_operand" "rO")) + (parallel [(const_int 0) (const_int 4) + (const_int 1) (const_int 5)])))] + "!BYTES_BIG_ENDIAN" + "v2int_l\t%0, %r2, %r1" + [(set_attr "type" "X01")]) + +(define_expand "insn_v2int_l" + [(match_operand:DI 0 "register_operand" "") + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_operand" "")] + "" +{ + /* For little endian, our instruction interleaves opposite of the + way vec_interleave works, so we need to reverse the source + operands. */ + rtx opnd1 = BYTES_BIG_ENDIAN ? operands[1] : operands[2]; + rtx opnd2 = BYTES_BIG_ENDIAN ? operands[2] : operands[1]; + tilegx_expand_builtin_vector_binop (gen_vec_interleave_lowv4hi, V4HImode, + operands[0], V4HImode, opnd1, opnd2, + true); + DONE; +}) + +;; insn_v4int_h +;; {B1,B0} {A1,A0} +;; => {A1,A0,B1,B0} +;; => {A1,B1} +(define_expand "vec_interleave_highv2si" + [(match_operand:V2SI 0 "register_operand" "") + (match_operand:V2SI 1 "reg_or_0_operand" "") + (match_operand:V2SI 2 "reg_or_0_operand" "")] + "" +{ + if (BYTES_BIG_ENDIAN) + emit_insn (gen_vec_interleave_highv2si_be (operands[0], operands[1], + operands[2])); + else + emit_insn (gen_vec_interleave_highv2si_le (operands[0], operands[1], + operands[2])); + DONE; +}) + +(define_insn "vec_interleave_highv2si_be" + [(set (match_operand:V2SI 0 "register_operand" "=r") + (vec_select:V2SI + (vec_concat:V4SI (match_operand:V2SI 1 "reg_or_0_operand" "rO") + (match_operand:V2SI 2 "reg_or_0_operand" "rO")) + (parallel [(const_int 0) (const_int 2)])))] + "BYTES_BIG_ENDIAN" + "v4int_h\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "vec_interleave_highv2si_le" + [(set (match_operand:V2SI 0 "register_operand" "=r") + (vec_select:V2SI + (vec_concat:V4SI (match_operand:V2SI 1 "reg_or_0_operand" "rO") + (match_operand:V2SI 2 "reg_or_0_operand" "rO")) + (parallel [(const_int 1) (const_int 3)])))] + "!BYTES_BIG_ENDIAN" + "v4int_h\t%0, %r2, %r1" + [(set_attr "type" "X01")]) + +(define_expand "insn_v4int_h" + [(match_operand:DI 0 "register_operand" "") + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_operand" "")] + "" +{ + /* For little endian, our instruction interleaves opposite of the + way vec_interleave works, so we need to reverse the source + operands. */ + rtx opnd1 = BYTES_BIG_ENDIAN ? operands[1] : operands[2]; + rtx opnd2 = BYTES_BIG_ENDIAN ? operands[2] : operands[1]; + tilegx_expand_builtin_vector_binop (gen_vec_interleave_highv2si, V2SImode, + operands[0], V2SImode, opnd1, opnd2, + true); + DONE; +}) + +;; insn_v4int_l +;; {B1,B0} {A1,A0} +;; => {A1,A0,B1,B0} +;; => {A0,B0} +(define_expand "vec_interleave_lowv2si" + [(match_operand:V2SI 0 "register_operand" "") + (match_operand:V2SI 1 "reg_or_0_operand" "") + (match_operand:V2SI 2 "reg_or_0_operand" "")] + "" +{ + if (BYTES_BIG_ENDIAN) + emit_insn (gen_vec_interleave_lowv2si_be (operands[0], operands[1], + operands[2])); + else + emit_insn (gen_vec_interleave_lowv2si_le (operands[0], operands[1], + operands[2])); + DONE; +}) + +(define_insn "vec_interleave_lowv2si_be" + [(set (match_operand:V2SI 0 "register_operand" "=r") + (vec_select:V2SI + (vec_concat:V4SI (match_operand:V2SI 1 "reg_or_0_operand" "rO") + (match_operand:V2SI 2 "reg_or_0_operand" "rO")) + (parallel [(const_int 1) (const_int 3)])))] + "BYTES_BIG_ENDIAN" + "v4int_l\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "vec_interleave_lowv2si_le" + [(set (match_operand:V2SI 0 "register_operand" "=r") + (vec_select:V2SI + (vec_concat:V4SI (match_operand:V2SI 1 "reg_or_0_operand" "rO") + (match_operand:V2SI 2 "reg_or_0_operand" "rO")) + (parallel [(const_int 0) (const_int 2)])))] + "!BYTES_BIG_ENDIAN" + "v4int_l\t%0, %r2, %r1" + [(set_attr "type" "X01")]) + +(define_expand "insn_v4int_l" + [(match_operand:DI 0 "register_operand" "") + (match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_operand" "")] + "" +{ + /* For little endian, our instruction interleaves opposite of the + way vec_interleave works, so we need to reverse the source + operands. */ + rtx opnd1 = BYTES_BIG_ENDIAN ? operands[1] : operands[2]; + rtx opnd2 = BYTES_BIG_ENDIAN ? operands[2] : operands[1]; + tilegx_expand_builtin_vector_binop (gen_vec_interleave_lowv2si, V2SImode, + operands[0], V2SImode, opnd1, opnd2, + true); + DONE; +}) + +;; insn_v1mnz +;; insn_v1mz +;; insn_v2mnz +;; insn_v2mz +(define_insn "insn_mnz_v8qi" + [(set (match_operand:V8QI 0 "register_operand" "=r") + (if_then_else:V8QI + (ne:V8QI + (match_operand:V8QI 1 "reg_or_0_operand" "rO") + (const_vector:V8QI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0)])) + (match_operand:V8QI 2 "reg_or_0_operand" "rO") + (const_vector:V8QI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0)])))] + "" + "v1mnz\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_expand "insn_v1mnz" + [(set (match_operand:DI 0 "register_operand" "") + (if_then_else:V8QI + (ne:V8QI + (match_operand:DI 1 "reg_or_0_operand" "") + (const_vector:V8QI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0)]) + ) + (match_operand:DI 2 "reg_or_0_operand" "") + (const_vector:V8QI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0)])))] + "" +{ + tilegx_expand_builtin_vector_binop (gen_insn_mnz_v8qi, V8QImode, + operands[0], V8QImode, operands[1], + operands[2], true); + DONE; +}) + +(define_insn "insn_mz_v8qi" + [(set (match_operand:V8QI 0 "register_operand" "=r") + (if_then_else:V8QI + (ne:V8QI + (match_operand:V8QI 1 "reg_or_0_operand" "rO") + (const_vector:V8QI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0)])) + (const_vector:V8QI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0)]) + (match_operand:V8QI 2 "reg_or_0_operand" "rO")))] + "" + "v1mz\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_expand "insn_v1mz" + [(set (match_operand:DI 0 "register_operand" "") + (if_then_else:V8QI + (ne:V8QI + (match_operand:DI 1 "reg_or_0_operand" "") + (const_vector:V8QI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0)])) + (const_vector:V8QI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0) + (const_int 0) (const_int 0)]) + (match_operand:DI 2 "reg_or_0_operand" "")))] + "" +{ + tilegx_expand_builtin_vector_binop (gen_insn_mz_v8qi, V8QImode, + operands[0], V8QImode, operands[1], + operands[2], true); + DONE; +}) + +(define_insn "insn_mnz_v4hi" + [(set (match_operand:V4HI 0 "register_operand" "=r") + (if_then_else:V4HI + (ne:V4HI + (match_operand:V4HI 1 "reg_or_0_operand" "rO") + (const_vector:V4HI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0)])) + (match_operand:V4HI 2 "reg_or_0_operand" "rO") + (const_vector:V4HI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0)])))] + "" + "v2mnz\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_expand "insn_v2mnz" + [(set (match_operand:DI 0 "register_operand" "") + (if_then_else:V4HI + (ne:V4HI + (match_operand:DI 1 "reg_or_0_operand" "") + (const_vector:V4HI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0)])) + (match_operand:DI 2 "reg_or_0_operand" "") + (const_vector:V4HI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0)])))] + "" +{ + tilegx_expand_builtin_vector_binop (gen_insn_mnz_v4hi, V4HImode, + operands[0], V4HImode, operands[1], + operands[2], true); + DONE; +}) + +(define_insn "insn_mz_v4hi" + [(set (match_operand:V4HI 0 "register_operand" "=r") + (if_then_else:V4HI + (ne:V4HI + (match_operand:V4HI 1 "reg_or_0_operand" "rO") + (const_vector:V4HI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0)])) + (const_vector:V4HI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0)]) + (match_operand:V4HI 2 "reg_or_0_operand" "rO")))] + "" + "v2mz\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_expand "insn_v2mz" + [(set (match_operand:DI 0 "register_operand" "") + (if_then_else:V4HI + (ne:V4HI + (match_operand:DI 1 "reg_or_0_operand" "") + (const_vector:V4HI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0)])) + (const_vector:V4HI [(const_int 0) (const_int 0) + (const_int 0) (const_int 0)]) + (match_operand:DI 2 "reg_or_0_operand" "")))] + "" +{ + tilegx_expand_builtin_vector_binop (gen_insn_mz_v4hi, V4HImode, + operands[0], V4HImode, operands[1], + operands[2], true); + DONE; +}) + +;; insn_v1mulu +(define_insn "vec_widen_umult_lo_v8qi" + [(set (match_operand:V4HI 0 "register_operand" "=r") + (mult:V4HI + (zero_extend:V4HI + (vec_select:V4QI + (match_operand:V8QI 1 "register_operand" "r") + (parallel [(const_int 0) (const_int 1) + (const_int 2) (const_int 3)]))) + (zero_extend:V4HI + (vec_select:V4QI + (match_operand:V8QI 2 "register_operand" "r") + (parallel [(const_int 0) (const_int 1) + (const_int 2) (const_int 3)])))))] + "" + "v1mulu\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_expand "insn_v1mulu" + [(match_operand:DI 0 "register_operand" "") + (match_operand:DI 1 "register_operand" "") + (match_operand:DI 2 "register_operand" "")] + "" +{ + tilegx_expand_builtin_vector_binop (gen_vec_widen_umult_lo_v8qi, V4HImode, + operands[0], V8QImode, operands[1], + operands[2], true); + DONE; +}) + +;; insn_v1mulus +(define_insn "vec_widen_usmult_lo_v8qi" + [(set (match_operand:V4HI 0 "register_operand" "=r") + (mult:V4HI + (zero_extend:V4HI + (vec_select:V4QI + (match_operand:V8QI 1 "register_operand" "r") + (parallel [(const_int 0) (const_int 1) + (const_int 2) (const_int 3)]))) + (sign_extend:V4HI + (vec_select:V4QI + (match_operand:V8QI 2 "register_operand" "r") + (parallel [(const_int 0) (const_int 1) + (const_int 2) (const_int 3)])))))] + "" + "v1mulus\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_expand "insn_v1mulus" + [(match_operand:DI 0 "register_operand" "") + (match_operand:DI 1 "register_operand" "") + (match_operand:DI 2 "register_operand" "")] + "" +{ + tilegx_expand_builtin_vector_binop (gen_vec_widen_usmult_lo_v8qi, V4HImode, + operands[0], V8QImode, operands[1], + operands[2], true); + DONE; +}) + +;; insn_v2muls +(define_insn "vec_widen_smult_lo_v4qi" + [(set (match_operand:V2SI 0 "register_operand" "=r") + (mult:V2SI + (sign_extend:V2SI + (vec_select:V2HI + (match_operand:V4HI 1 "register_operand" "r") + (parallel [(const_int 0) (const_int 1)]))) + (sign_extend:V2SI + (vec_select:V2HI + (match_operand:V4HI 2 "register_operand" "r") + (parallel [(const_int 0) (const_int 1)])))))] + "" + "v2muls\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_expand "insn_v2muls" + [(match_operand:DI 0 "register_operand" "") + (match_operand:DI 1 "register_operand" "") + (match_operand:DI 2 "register_operand" "")] + "" +{ + tilegx_expand_builtin_vector_binop (gen_vec_widen_smult_lo_v4qi, V2SImode, + operands[0], V4HImode, operands[1], + operands[2], true); + DONE; +}) + +;; v2packl +;; v2packuc +;; {B3,B2,B1,B0} {A3,A2,A1,A0} +;; => {A3,A2,A1,A0,B3,B2,B1,B0} +(define_insn "vec_pack_<pack_optab>_v4hi" + [(set (match_operand:V8QI 0 "register_operand" "=r") + (vec_concat:V8QI + (v2pack:V4QI (match_operand:V4HI 1 "reg_or_0_operand" "rO")) + (v2pack:V4QI (match_operand:V4HI 2 "reg_or_0_operand" "rO"))))] + "" + "v2<pack_insn>\t%0, %r2, %r1" + [(set_attr "type" "X01")]) + +(define_expand "insn_v2<pack_insn>" + [(set (match_operand:DI 0 "register_operand" "") + (vec_concat:V8QI + (v2pack:V4QI (match_operand:DI 2 "reg_or_0_operand" "")) + (v2pack:V4QI (match_operand:DI 1 "reg_or_0_operand" ""))))] + "" +{ + /* Our instruction concats opposite of the way vec_pack works, so we + need to reverse the source operands. */ + tilegx_expand_builtin_vector_binop (gen_vec_pack_<pack_optab>_v4hi, + V8QImode, operands[0], V4HImode, + operands[2], operands[1], true); + DONE; +}) + +;; v2packh +;; {B3,B2,B1,B0} {A3,A2,A1,A0} +;; => {A3_hi,A2_hi,A1_hi,A0_hi,B3_hi,B2_hi,B1_hi,B0_hi} +(define_insn "vec_pack_hipart_v4hi" + [(set (match_operand:V8QI 0 "register_operand" "=r") + (vec_concat:V8QI + (truncate:V4QI + (ashiftrt:V4HI (match_operand:V4HI 1 "reg_or_0_operand" "rO") + (const_int 8))) + (truncate:V4QI + (ashiftrt:V4HI (match_operand:V4HI 2 "reg_or_0_operand" "rO") + (const_int 8)))))] + "" + "v2packh\t%0, %r2, %r1" + [(set_attr "type" "X01")]) + +(define_expand "insn_v2packh" + [(set (match_operand:DI 0 "register_operand" "") + (vec_concat:V8QI + (truncate:V4QI + (ashiftrt:V4HI (match_operand:DI 2 "reg_or_0_operand" "") + (const_int 8))) + (truncate:V4QI + (ashiftrt:V4HI (match_operand:DI 1 "reg_or_0_operand" "") + (const_int 8)))))] + "" +{ + /* Our instruction concats opposite of the way vec_pack works, so we + need to reverse the source operands. */ + tilegx_expand_builtin_vector_binop (gen_vec_pack_hipart_v4hi, V8QImode, + operands[0], V4HImode, operands[2], + operands[1], true); + DONE; +}) + +;; v4packsc +;; {B1,B0} {A1,A0} +;; => {A1,A0,B1,B0} +(define_insn "vec_pack_ssat_v2si" + [(set (match_operand:V4HI 0 "register_operand" "=r") + (vec_concat:V4HI + (us_truncate:V2HI (match_operand:V2SI 1 "reg_or_0_operand" "rO")) + (us_truncate:V2HI (match_operand:V2SI 2 "reg_or_0_operand" "rO"))))] + "" + "v4packsc\t%0, %r2, %r1" + [(set_attr "type" "X01")]) + +(define_expand "insn_v4packsc" + [(set (match_operand:DI 0 "register_operand" "") + (vec_concat:V4HI + (us_truncate:V2HI (match_operand:DI 2 "reg_or_0_operand" "")) + (us_truncate:V2HI (match_operand:DI 1 "reg_or_0_operand" ""))))] + "" +{ + /* Our instruction concats opposite of the way vec_pack works, so we + need to reverse the source operands. */ + tilegx_expand_builtin_vector_binop (gen_vec_pack_ssat_v2si, V4HImode, + operands[0], V2SImode, operands[2], + operands[1], true); + DONE; +}) + +;; Rest of the vector intrinsics +(define_insn "insn_v1adiffu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V1ADIFFU))] + "" + "v1adiffu\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v1avgu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V1AVGU))] + "" + "v1avgu\t%0, %r1, %r2" + [(set_attr "type" "X0")]) + +(define_insn "insn_v1ddotpu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V1DDOTPU))] + "" + "v1ddotpu\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v1ddotpua" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V1DDOTPUA))] + "" + "v1ddotpua\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v1ddotpus" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V1DDOTPUS))] + "" + "v1ddotpus\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v1ddotpusa" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V1DDOTPUSA))] + "" + "v1ddotpusa\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v1dotp" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V1DOTP))] + "" + "v1dotp\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v1dotpa" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V1DOTPA))] + "" + "v1dotpa\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v1dotpu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V1DOTPU))] + "" + "v1dotpu\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v1dotpua" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V1DOTPUA))] + "" + "v1dotpua\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v1dotpus" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V1DOTPUS))] + "" + "v1dotpus\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v1dotpusa" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V1DOTPUSA))] + "" + "v1dotpusa\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v1sadau" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V1SADAU))] + "" + "v1sadau\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v1sadu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V1SADU))] + "" + "v1sadu\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "*insn_v1sadu" + [(set (match_operand:SI 0 "register_operand" "=r") + (truncate:SI + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V1SADU)))] + "" + "v1sadu\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v2adiffs" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V2ADIFFS))] + "" + "v2adiffs\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v2avgs" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V2AVGS))] + "" + "v2avgs\t%0, %r1, %r2" + [(set_attr "type" "X0")]) + +(define_insn "insn_v2dotp" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V2DOTP))] + "" + "v2dotp\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v2dotpa" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V2DOTPA))] + "" + "v2dotpa\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v2mulfsc" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V2MULFSC))] + "" + "v2mulfsc\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v2sadas" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V2SADAS))] + "" + "v2sadas\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v2sadau" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "0") + (match_operand:DI 2 "reg_or_0_operand" "rO") + (match_operand:DI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V2SADAU))] + "" + "v2sadau\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v2sads" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V2SADS))] + "" + "v2sads\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "*insn_v2sads" + [(set (match_operand:SI 0 "register_operand" "=r") + (truncate:SI + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V2SADS)))] + "" + "v2sads\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_v2sadu" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V2SADU))] + "" + "v2sadu\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "*insn_v2sadu" + [(set (match_operand:SI 0 "register_operand" "=r") + (truncate:SI + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO") + (match_operand:DI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_V2SADU)))] + "" + "v2sadu\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_wh64" + [(unspec_volatile:VOID [(match_operand 0 "pointer_operand" "rO")] + UNSPEC_INSN_WH64) + (clobber (mem:BLK (const_int 0)))] + "" + "wh64\t%r0" + [(set_attr "type" "X1")]) + + +;; Network intrinsics + +;; Note the this barrier is of type "nothing," which is deleted after +;; the final scheduling pass so that nothing is emitted for it. +(define_insn "tilegx_network_barrier" + [(unspec_volatile:SI [(const_int 0)] UNSPEC_NETWORK_BARRIER)] + "" + "pseudo" + [(set_attr "type" "nothing") + (set_attr "length" "0")]) + +(define_insn "*netreg_receive" + [(set (match_operand:DI 0 "nonimmediate_operand" "=r,U,m") + (unspec_volatile:DI [(match_operand:DI 1 "netreg_operand" "i,i,i") + (reg:DI TILEGX_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)) + (clobber (reg:DI TILEGX_NETORDER_REG))] + + "" + "@ + move\t%0, %N1 + st\t%0, %N1 + st_add\t%I0, %N1, %i0" + [(set_attr "type" "*,Y2,X1")]) + +(define_insn "*netreg_send" + [(unspec_volatile:DI + [(match_operand:DI 0 "netreg_operand" "i,i,i,i,i,i") + (match_operand:DI 1 "reg_or_cint_operand" "r,I,J,K,N,P") + (reg:DI TILEGX_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:DI TILEGX_NETORDER_REG))] + "" + "@ + move\t%N0, %r1 + movei\t%N0, %1 + moveli\t%N0, %1 + shl16insli\t%N0, zero, %h1 + v1addi\t%N0, zero, %j1 + v2addi\t%N0, zero, %h1" + [(set_attr "type" "*,*,X01,X01,X01,X01")]) + +(define_expand "tilegx_idn0_receive" + [(parallel + [(set (match_operand:DI 0 "register_operand" "") + (unspec_volatile:DI [(const_int TILEGX_NETREG_IDN0) + (reg:DI TILEGX_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)) + (clobber (reg:DI TILEGX_NETORDER_REG))])] + "") + +(define_expand "tilegx_idn1_receive" + [(parallel + [(set (match_operand:DI 0 "register_operand" "") + (unspec_volatile:DI [(const_int TILEGX_NETREG_IDN1) + (reg:DI TILEGX_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)) + (clobber (reg:DI TILEGX_NETORDER_REG))])] + "") + +(define_expand "tilegx_idn_send" + [(parallel + [(unspec_volatile:DI [(const_int TILEGX_NETREG_IDN0) + (match_operand:DI 0 "reg_or_cint_operand" "") + (reg:DI TILEGX_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:DI TILEGX_NETORDER_REG))])] + "") + +(define_expand "tilegx_udn0_receive" + [(parallel + [(set (match_operand:DI 0 "register_operand" "") + (unspec_volatile:DI [(const_int TILEGX_NETREG_UDN0) + (reg:DI TILEGX_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)) + (clobber (reg:DI TILEGX_NETORDER_REG))])] + "") + +(define_expand "tilegx_udn1_receive" + [(parallel + [(set (match_operand:DI 0 "register_operand" "") + (unspec_volatile:DI [(const_int TILEGX_NETREG_UDN1) + (reg:DI TILEGX_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)) + (clobber (reg:DI TILEGX_NETORDER_REG))])] + "") + +(define_expand "tilegx_udn2_receive" + [(parallel + [(set (match_operand:DI 0 "register_operand" "") + (unspec_volatile:DI [(const_int TILEGX_NETREG_UDN2) + (reg:DI TILEGX_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)) + (clobber (reg:DI TILEGX_NETORDER_REG))])] + "") + +(define_expand "tilegx_udn3_receive" + [(parallel + [(set (match_operand:DI 0 "register_operand" "") + (unspec_volatile:DI [(const_int TILEGX_NETREG_UDN3) + (reg:DI TILEGX_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)) + (clobber (reg:DI TILEGX_NETORDER_REG))])] + "") + +(define_expand "tilegx_udn_send" + [(parallel + [(unspec_volatile:DI [(const_int TILEGX_NETREG_UDN0) + (match_operand:DI 0 "reg_or_cint_operand" "") + (reg:DI TILEGX_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:DI TILEGX_NETORDER_REG))])] + "") + +(define_insn "*netreg_adddi_to_network" + [(unspec_volatile:DI + [(match_operand:DI 0 "netreg_operand" "i,i,i") + (plus:DI (match_operand:DI 1 "reg_or_0_operand" "%rO,rO,rO") + (match_operand:DI 2 "add_operand" "r,I,JT")) + (reg:DI TILEGX_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:DI TILEGX_NETORDER_REG))] + "" + "@ + add\t%N0, %r1, %2 + addi\t%N0, %r1, %2 + addli\t%N0, %r1, %H2" + [(set_attr "type" "*,*,X01")]) + +(define_insn "*netreg_adddi_from_network" + [(set (match_operand:DI 0 "register_operand" "=r,r,r") + (plus:DI (unspec_volatile:DI + [(match_operand:DI 1 "netreg_operand" "%i,i,i") + (reg:DI TILEGX_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE) + (match_operand:DI 2 "add_operand" "rO,I,JT"))) + (clobber (reg:DI TILEGX_NETORDER_REG))] + "" + "@ + add\t%0, %N1, %r2 + addi\t%0, %N1, %2 + addli\t%0, %N1, %H2" + [(set_attr "type" "*,*,X01")]) + + +;; +;; Stack protector instructions. +;; + +(define_expand "stack_protect_set" + [(set (match_operand 0 "nonautoincmem_operand" "") + (match_operand 1 "nonautoincmem_operand" ""))] + "" +{ +#ifdef TARGET_THREAD_SSP_OFFSET + rtx tp = gen_rtx_REG (Pmode, THREAD_POINTER_REGNUM); + rtx ssp_addr = gen_rtx_PLUS (Pmode, tp, GEN_INT (TARGET_THREAD_SSP_OFFSET)); + rtx ssp = gen_reg_rtx (Pmode); + + emit_insn (gen_rtx_SET (VOIDmode, ssp, ssp_addr)); + + operands[1] = gen_rtx_MEM (Pmode, ssp); +#endif + + if (TARGET_32BIT) + emit_insn (gen_stack_protect_setsi (operands[0], operands[1])); + else + emit_insn (gen_stack_protect_setdi (operands[0], operands[1])); + + DONE; +}) + +(define_insn "stack_protect_setsi" + [(set (match_operand:SI 0 "nonautoincmem_operand" "=U") + (unspec:SI [(match_operand:SI 1 "nonautoincmem_operand" "U")] + UNSPEC_SP_SET)) + (set (match_scratch:SI 2 "=&r") (const_int 0))] + "" + "ld4s\t%2, %1; { st4\t%0, %2; move\t%2, zero }" + [(set_attr "length" "16") + (set_attr "type" "cannot_bundle_3cycle")]) + +(define_insn "stack_protect_setdi" + [(set (match_operand:DI 0 "nonautoincmem_operand" "=U") + (unspec:DI [(match_operand:DI 1 "nonautoincmem_operand" "U")] + UNSPEC_SP_SET)) + (set (match_scratch:DI 2 "=&r") (const_int 0))] + "" + "ld\t%2, %1; { st\t%0, %2; move\t%2, zero }" + [(set_attr "length" "16") + (set_attr "type" "cannot_bundle_3cycle")]) + +(define_expand "stack_protect_test" + [(match_operand 0 "nonautoincmem_operand" "") + (match_operand 1 "nonautoincmem_operand" "") + (match_operand 2 "" "")] + "" +{ + rtx compare_result; + rtx bcomp, loc_ref; + +#ifdef TARGET_THREAD_SSP_OFFSET + rtx tp = gen_rtx_REG (Pmode, THREAD_POINTER_REGNUM); + rtx ssp_addr = gen_rtx_PLUS (Pmode, tp, GEN_INT (TARGET_THREAD_SSP_OFFSET)); + rtx ssp = gen_reg_rtx (Pmode); + + emit_insn (gen_rtx_SET (VOIDmode, ssp, ssp_addr)); + + operands[1] = gen_rtx_MEM (Pmode, ssp); +#endif + + compare_result = gen_reg_rtx (Pmode); + + if (TARGET_32BIT) + emit_insn (gen_stack_protect_testsi (compare_result, operands[0], + operands[1])); + else + emit_insn (gen_stack_protect_testdi (compare_result, operands[0], + operands[1])); + + bcomp = gen_rtx_NE (SImode, compare_result, const0_rtx); + + loc_ref = gen_rtx_LABEL_REF (VOIDmode, operands[2]); + + emit_jump_insn (gen_rtx_SET (VOIDmode, pc_rtx, + gen_rtx_IF_THEN_ELSE (VOIDmode, bcomp, + loc_ref, pc_rtx))); + + DONE; +}) + +(define_insn "stack_protect_testsi" + [(set (match_operand:SI 0 "register_operand" "=&r") + (unspec:SI [(match_operand:SI 1 "nonautoincmem_operand" "U") + (match_operand:SI 2 "nonautoincmem_operand" "U")] + UNSPEC_SP_TEST)) + (set (match_scratch:SI 3 "=&r") (const_int 0))] + "" + "ld4s\t%0, %1; ld4s\t%3, %2; { cmpeq\t%0, %0, %3; move\t%3, zero }" + [(set_attr "length" "24") + (set_attr "type" "cannot_bundle_4cycle")]) + +(define_insn "stack_protect_testdi" + [(set (match_operand:DI 0 "register_operand" "=&r") + (unspec:DI [(match_operand:DI 1 "nonautoincmem_operand" "U") + (match_operand:DI 2 "nonautoincmem_operand" "U")] + UNSPEC_SP_TEST)) + (set (match_scratch:DI 3 "=&r") (const_int 0))] + "" + "ld\t%0, %1; ld\t%3, %2; { cmpeq\t%0, %0, %3; move\t%3, zero }" + [(set_attr "length" "24") + (set_attr "type" "cannot_bundle_4cycle")]) + +(include "sync.md") diff --git a/gcc-4.9/gcc/config/tilegx/tilegx.opt b/gcc-4.9/gcc/config/tilegx/tilegx.opt new file mode 100644 index 000000000..37c12fe1f --- /dev/null +++ b/gcc-4.9/gcc/config/tilegx/tilegx.opt @@ -0,0 +1,63 @@ +; Options for the TILE-Gx port of the compiler. +; Copyright (C) 2011-2014 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/>. + +HeaderInclude +config/tilegx/tilegx-opts.h + +mcpu= +Target RejectNegative Joined Enum(tilegx_cpu) Var(tilegx_cpu) Init(0) +-mcpu=CPU Use features of and schedule code for given CPU + +Enum +Name(tilegx_cpu) Type(int) +Known TILE-Gx CPUs (for use with the -mcpu= option): + +EnumValue +Enum(tilegx_cpu) String(tilegx) Value(0) + +m32 +Target Report RejectNegative Negative(m64) Mask(32BIT) +Compile with 32 bit longs and pointers. + +m64 +Target Report RejectNegative Negative(m32) InverseMask(32BIT, 64BIT) +Compile with 64 bit longs and pointers. + +mbig-endian +Target Report RejectNegative Mask(BIG_ENDIAN) +Use big-endian byte order. + +mlittle-endian +Target Report RejectNegative InverseMask(BIG_ENDIAN) +Use little-endian byte order. + +mcmodel= +Target RejectNegative Joined Enum(cmodel) Var(tilegx_cmodel) Init(CM_SMALL) +Use given TILE-Gx code model + +Enum +Name(cmodel) Type(enum cmodel) +Known code models (for use with the -mcmodel= option): + +EnumValue +Enum(cmodel) String(small) Value(CM_SMALL) + +EnumValue +Enum(cmodel) String(large) Value(CM_LARGE) |