diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-02-14 12:21:33 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-02-14 12:21:33 +0000 |
commit | ae1d0cccc1e85120593b6e0e2d104297a6ab44a0 (patch) | |
tree | 75baedbe3aa17902f83a98bd7fde364ba51238d1 | |
parent | 5e6ca8f01ffff075d1c82f7629125df9ef110fe8 (diff) | |
download | gcc-ae1d0cccc1e85120593b6e0e2d104297a6ab44a0.tar.gz |
2012-02-14 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 184203 using svnmerge
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@184207 138bc75d-0d04-0410-961f-82ee72b054a4
208 files changed, 75299 insertions, 1564 deletions
diff --git a/ChangeLog b/ChangeLog index 5beb6a9bd85..3a14fa7b6d5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2012-02-14 Walter Lee <walt@tilera.com> + + * MAINTAINERS (tilegx port): Add myself. + (tilepro port): Add myself. + (Write After Approval): Add myself. + +2012-02-12 Gerald Pfeifer <gerald@pfeifer.com> + + * MAINTAINERS (Various Maintainers): Add Diego Novillo, + Gerald Pfeifer and Joseph Myers as docstring relicensing + maintainers. + 2012-02-09 Bin Cheng <bin.cheng@arm.com> * MAINTAINERS (write-after-approval): Add myself. diff --git a/ChangeLog.MELT b/ChangeLog.MELT index 36e10569b1d..fbac293b9f1 100644 --- a/ChangeLog.MELT +++ b/ChangeLog.MELT @@ -1,4 +1,8 @@ +2012-02-14 Basile Starynkevitch <basile@starynkevitch.net> + + MELT branch merged with trunk rev 184203 using svnmerge + 2012-02-10 Basile Starynkevitch <basile@starynkevitch.net> MELT branch merged with trunk rev 184083 using svnmerge diff --git a/MAINTAINERS b/MAINTAINERS index 8b784b142bd..2c8f466bc6e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -104,6 +104,8 @@ sparc port Eric Botcazou ebotcazou@libertysurf.fr spu port Trevor Smigiel trevor_smigiel@playstation.sony.com spu port David Edelsohn dje.gcc@gmail.com spu port Ulrich Weigand uweigand@de.ibm.com +tilegx port Walter Lee walt@tilera.com +tilepro port Walter Lee walt@tilera.com v850 port Nick Clifton nickc@redhat.com vax port Matt Thomas matt@3am-software.com x86-64 port Jan Hubicka jh@suse.cz @@ -211,6 +213,9 @@ build machinery (*.in) Alexandre Oliva aoliva@redhat.com build machinery (*.in) Ralf Wildenhues Ralf.Wildenhues@gmx.de docs co-maintainer Gerald Pfeifer gerald@pfeifer.com docs co-maintainer Joseph Myers joseph@codesourcery.com +docstring relicensing Diego Novillo dnovillo@google.com +docstring relicensing Gerald Pfeifer gerald@pfeifer.com +docstring relicensing Joseph Myers joseph@codesourcery.com predict.def Jan Hubicka jh@suse.cz contrib/regression Geoff Keating geoffk@geoffk.org gcov Jan Hubicka jh@suse.cz @@ -425,6 +430,7 @@ Asher Langton langton2@llnl.gov Chris Lattner sabre@nondot.org Terry Laurenzo tlaurenzo@gmail.com Georg-Johann Lay avr@gjlay.de +Walter Lee walt@tilera.com Marc Lehmann pcg@goof.com James Lemke jwlemke@codesourcery.com Kriang Lerdsuwanakij lerdsuwa@users.sourceforge.net diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog index 22ea666ce5e..e9d1eb5a6e8 100644 --- a/boehm-gc/ChangeLog +++ b/boehm-gc/ChangeLog @@ -1,3 +1,10 @@ +2012-02-10 Kai Tietz <ktietz@redhat.com> + + PR boehm-gc/48514 + * include/gc_config_macros.h (GC_DLL): Define it for mingw-targets + only, if we are actual in boehm-gc's build and DLL_EXPORT + is defined. + 2011-11-21 Andreas Tobler <andreast@fgznet.ch> * configure: Regenerate. diff --git a/boehm-gc/include/gc_config_macros.h b/boehm-gc/include/gc_config_macros.h index 0964784332b..12e91e27f5e 100644 --- a/boehm-gc/include/gc_config_macros.h +++ b/boehm-gc/include/gc_config_macros.h @@ -81,7 +81,9 @@ typedef long ptrdiff_t; /* ptrdiff_t is not defined */ # endif -#if defined(_DLL) && !defined(GC_NOT_DLL) && !defined(GC_DLL) +#if ((defined(_DLL) && !defined (__MINGW32__)) \ + || (defined (DLL_EXPORT) && defined (GC_BUILD))) \ + && !defined(GC_DLL) # define GC_DLL #endif diff --git a/contrib/ChangeLog b/contrib/ChangeLog index a639b07405c..789f345e0f5 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,18 @@ +2012-02-14 Walter Lee <walt@tilera.com> + + * config-list.mk (LIST): Add tilegx-linux-gnu and + tilepro-linux-gnu. + * gcc_update (gcc/config/tilegx/mul-tables.c): New dependencies. + (gcc/config/tilepro/mul-tables.c): New dependencies. + +2012-02-11 Mike Stump <mikestump@comcast.net> + + * compare_tests (exit_status): Fix. + +2012-02-10 Diego Novillo <dnovillo@google.com> + + * repro_fail: Add --debug and --debug-tui flags. + 2012-02-02 Sumanth G <sumanth.gundapaneni@kpitcummins.com> Jayant R Sonar <jayant.sonar@kpitcummins.com> diff --git a/contrib/compare_tests b/contrib/compare_tests index a23fcf6ef3f..eb17b323fec 100755 --- a/contrib/compare_tests +++ b/contrib/compare_tests @@ -83,11 +83,14 @@ if [ -d "$1" -a -d "$2" ] ; then exit $exit_status fi cmnsums=`cat $lst5 | wc -l` + sum1="/tmp/$tool-sum-1" + sum2="/tmp/$tool-sum-2" echo "# Comparing $cmnsums common sum files" ( for fname in `cat $lst5`; do cat $1/$fname; done ) >$sum1 ( for fname in `cat $lst5`; do cat $2/$fname; done ) >$sum2 echo "## ${CONFIG_SHELL-/bin/sh} $0 $strict $sum1 $sum2" ${CONFIG_SHELL-/bin/sh} $0 $strict $sum1 $sum2 + rm -f $sum1 $sum2 ret=$? if [ $ret -ne 0 ]; then exit_status=`expr $exit_status + 1` diff --git a/contrib/config-list.mk b/contrib/config-list.mk index e0e8554351f..108f84d85cf 100644 --- a/contrib/config-list.mk +++ b/contrib/config-list.mk @@ -60,7 +60,8 @@ LIST = alpha-linux-gnu alpha-freebsd6 alpha-netbsd alpha-openbsd \ sparc-leon3-linux-gnuOPT-enable-target=all sparc-netbsdelf \ sparc64-sun-solaris2.10OPT-with-gnu-ldOPT-with-gnu-asOPT-enable-threads=posix \ sparc-wrs-vxworks sparc64-elf sparc64-rtems sparc64-linux sparc64-freebsd6 \ - sparc64-netbsd sparc64-openbsd spu-elf v850e-elf v850-elf vax-linux-gnu \ + sparc64-netbsd sparc64-openbsd spu-elf tilegx-linux-gnu tilepro-linux-gnu \ + v850e-elf v850-elf vax-linux-gnu \ vax-netbsdelf vax-openbsd x86_64-apple-darwin \ x86_64-pc-linux-gnuOPT-with-fpmath=avx \ x86_64-elfOPT-with-fpmath=sse x86_64-freebsd6 x86_64-netbsd \ diff --git a/contrib/gcc_update b/contrib/gcc_update index 364a1a24098..0289d9b2663 100755 --- a/contrib/gcc_update +++ b/contrib/gcc_update @@ -90,6 +90,8 @@ gcc/config/c6x/c6x-mult.md: gcc/config/c6x/c6x-mult.md.in gcc/config/c6x/genmult gcc/config/m68k/m68k-tables.opt: gcc/config/m68k/m68k-devices.def gcc/config/m68k/m68k-isas.def gcc/config/m68k/m68k-microarchs.def gcc/config/m68k/genopt.sh gcc/config/mips/mips-tables.opt: gcc/config/mips/mips-cpus.def gcc/config/mips/genopt.sh gcc/config/rs6000/rs6000-tables.opt: gcc/config/rs6000/rs6000-cpus.def gcc/config/rs6000/genopt.sh +gcc/config/tilegx/mul-tables.c: gcc/config/tilepro/gen-mul-tables.cc +gcc/config/tilepro/mul-tables.c: gcc/config/tilepro/gen-mul-tables.cc # And then, language-specific files gcc/cp/cfns.h: gcc/cp/cfns.gperf gcc/java/keyword.h: gcc/java/keyword.gperf diff --git a/contrib/repro_fail b/contrib/repro_fail index 8100456ac62..c55d080951f 100755 --- a/contrib/repro_fail +++ b/contrib/repro_fail @@ -31,14 +31,26 @@ # command, it asks which one you want. if [ $# -lt 2 ] ; then - echo "usage: $0 pattern file.log [additional-args]" + echo "usage: $0 [--debug|--debug-tui] pattern file.log [additional-args]" echo echo "Finds the 'spawn' line matching PATTERN in FILE.LOG and executes" echo "the command with any arguments in ADDITIONAL-ARGS." echo + echo "If --debug is used, the compiler is invoked with -wrapper gdb,--args" + echo "If --debug-tui is used, the compiler is invoked with -wrapper "\ + "gdb,--tui,--args" exit 1 fi +if [ "$1" == "--debug" ] ; then + debug_args="-wrapper gdb,--args" + shift +elif [ "$1" == "--debug-tui" ] ; then + debug_args="-wrapper gdb,--tui,--args" + shift +else + debug_args="" +fi pattern="$1" logf="$2" shift 2 @@ -77,6 +89,6 @@ IFS="$old_IFS" for cmd_num in $cmds_to_run ; do cmd=${commands[$cmd_num]} set -x +e - $cmd "$@" + $cmd $debug_args "$@" set +x -e done diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f3b735476f9..eca470c3cc8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,238 @@ +2012-02-14 Walter Lee <walt@tilera.com> + + * config.gcc: Handle tilegx and tilepro. + * configure.ac (gcc_cv_as_dwarf2_debug_line): Enable test for + tilegx and tilepro. + Add HAVE_AS_TLS check for tilegx and tilepro. + * configure: Regenerate. + * doc/contrib.texi: Add Mat Hostetter and self. + * doc/extend.texi (TILE-Gx Built-in Functions): New node. + Document instruction intrinsics and network accessing intrinsics. + (TILEPro Built-in Functions): New node. Document instruction + intrinsics and network accessing intrinsics. + * doc/install.texi (Specific, tilegx-*-linux*): Document it. + (Specific, tilepro-*-linux*): Likewise. + * doc/invoke.texi (TILE-Gx Options): New section. + (TILEPro Options): New section. + * doc/md.texi (TILE-Gx): New section. + (TILEPro): New section. + * common/config/tilegx/tilegx-common.c: New file. + * common/config/tilepro/tilepro-common.c: New file. + * config/tilegx/constraints.md: New file. + * config/tilegx/linux.h: New file. + * config/tilegx/mul-tables.c: New file. + * config/tilegx/predicates.md: New file. + * config/tilegx/sync.md: New file. + * config/tilegx/t-tilegx: New file. + * config/tilegx/tilegx-builtins.h: New file. + * config/tilegx/tilegx-c.c: New file. + * config/tilegx/tilegx-generic.md: New file. + * config/tilegx/tilegx-modes.def: New file. + * config/tilegx/tilegx-multiply.h: New file. + * config/tilegx/tilegx-protos.h: New file. + * config/tilegx/tilegx.c: New file. + * config/tilegx/tilegx.h: New file. + * config/tilegx/tilegx.md: New file. + * config/tilegx/tilegx.opt: New file. + * config/tilepro/constraints.md: New file. + * config/tilepro/gen-mul-tables.cc: New file. + * config/tilepro/linux.h: New file. + * config/tilepro/mul-tables.c: New file. + * config/tilepro/predicates.md: New file. + * config/tilepro/t-tilepro: New file. + * config/tilepro/tilepro-builtins.h: New file. + * config/tilepro/tilepro-c.c: New file. + * config/tilepro/tilepro-generic.md: New file. + * config/tilepro/tilepro-modes.def: New file. + * config/tilepro/tilepro-multiply.h: New file. + * config/tilepro/tilepro-protos.h: New file. + * config/tilepro/tilepro.c: New file. + * config/tilepro/tilepro.h: New file. + * config/tilepro/tilepro.md: New file. + * config/tilepro/tilepro.opt: New file. + +2012-02-14 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/52210 + * tree-vect-slp.c (vect_get_and_check_slp_defs): Call + vect_model_simple_cost with two entry vect_def_type array instead + of an address of dt. + +2012-02-14 Richard Guenther <rguenther@suse.de> + + PR lto/52178 + * tree-streamer-in.c (lto_input_ts_field_decl_tree_pointers): + Do not stream DECL_QUALIFIER. + * tree-streamer-out.c (write_ts_field_decl_tree_pointers): Likewise. + * tree.c (free_lang_data_in_decl): Free DECL_QUALIFIER. + (find_decls_types_r): Do not walk DECL_QUALIFIER. + +2012-02-14 Jakub Jelinek <jakub@redhat.com> + + PR c/52181 + * c-decl.c (merge_decls): Copy DECL_USER_ALIGN bit from olddecl to + newdecl. + +2012-02-13 Jakub Jelinek <jakub@redhat.com> + + PR bootstrap/52172 + * cselib.h (cselib_subst_to_values_from_insn): New prototype. + * cselib.c (cselib_subst_to_values_from_insn): New function. + * sched-deps.c (add_insn_mem_dependence, + sched_analyze_1, sched_analyze_2): Use it. + +2012-02-13 Jan Hubicka <jh@suse.cz> + + PR middle-end/52214 + * predict.c (predict_paths_for_bb): Fix thinko in prevoius patch. + +2012-02-13 Eric Botcazou <ebotcazou@adacore.com> + + * gcc.c (LINK_COMMAND_SPEC): Deal with -fgnu-tm. + (GTM_SELF_SPECS): Define if not already defined. + (driver_self_specs): Add GTM_SELF_SPECS. + * config/darwin.h (LINK_COMMAND_SPEC_A): Deal with -fgnu-tm. + (GTM_SELF_SPECS): Define. + * config/i386/cygwin.h (GTM_SELF_SPECS): Likewise. + * config/i386/mingw32.h (GTM_SELF_SPECS): Likewise. + +2012-02-13 Jakub Jelinek <jakub@redhat.com> + + * cselib.c (expand_loc): Return sp, fp, hfp or cfa base reg right + away if seen. + + * cselib.c (dump_cselib_val): Don't assume l->setting_insn is + non-NULL. + + PR middle-end/52230 + * omp-low.c (expand_omp_for): If a static schedule without + chunk size has NULL region->cont, force fd.chunk_size to be + integer_zero_node. + +2012-02-13 Andrew MacLeod <amacleod@redhat.com> + + PR c/52190 + * doc/extend.texi : Fix another __atomic_compare_exchange typo. + +2012-02-13 Richard Guenther <rguenther@suse.de> + + PR translation/52211 + * passes.c (enable_disable_pass): Fix typo. + +2012-02-13 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/52209 + * expr.c (expand_expr_real_2) <case BIT_NOT_EXPR>: Only expand using + XOR for reduce_bit_field if type is unsigned. + +2012-02-12 Eric Botcazou <ebotcazou@adacore.com> + + * config/sparc/sparc.h (CANNOT_CHANGE_MODE_CLASS): In 64-bit mode, + disallow changes from SFmode to mode with different size in FP regs. + +2012-02-12 Robert Millan <rmh@gnu.org> + Gerald Pfeifer <gerald@pfeifer.com> + + * ginclude/stddef.h [__FreeBSD_kernel__] (__size_t): Do not define. + Tweak comment. + +2012-02-11 Richard Sandiford <rdsandiford@googlemail.com> + + PR rtl-optimization/52175 + * reorg.c (fill_slots_from_thread): Don't apply add/sub optimization + to frame-related instructions. + +2012-02-10 Jason Merrill <jason@redhat.com> + + PR c++/51910 + * tlink.c (demangled_hash_entry): Change mangled to a VEC. + (demangle_new_symbols): Fill it. + (scan_linker_output): Walk it. + (start_tweaking): Split out from scan_linker_output. + (maybe_tweak): Update sym->chosen. + * Makefile.in (COLLECT2_OBJS): Add vec.o and gcc-none.o + +2012-02-11 Jakub Jelinek <jakub@redhat.com> + + PR debug/52132 + * reg-stack.c (subst_stack_regs_in_debug_insn): Don't use + get_true_reg. + +2012-02-11 Uros Bizjak <ubizjak@gmail.com> + + * compare-elim.c (find_comparisons_in_bb): Eliminate only compares + having the same mode as previous compare. + +2012-02-10 Eric Botcazou <ebotcazou@adacore.com> + + * config/sparc/sparc.c (sparc_flat_expand_prologue): Use emit_use. + * config/sparc/sparc.md (UNSPECV_GOTO): Delete. + (nonlocal_goto_internal): Likewise. + (nonlocal_goto): Emit a use and an indirect jump directly. + +2012-02-10 Andrew MacLeod <amacleod@redhat.com> + + PR c/52190 + * doc/extend.texi : Update comments for __atomic_compare_exchange and + __atomic_{is,always}_lock_free. + +2012-02-10 Uros Bizjak <ubizjak@gmail.com> + + PR target/52146 + * config/i386/i386.c (ix86_legitimate_address_p): Disallow + negative constant address for x32. + +2012-02-10 Richard Henderson <rth@redhat.com> + + * tree-ssa-dce.c (propagate_necessity): Handle GIMPLE_TRANSACTION. + * tree-ssa-operands.c (parse_ssa_operands): Add virtual operands + for GIMPLE_TRANSACTION. Tidy if's into a switch. + +2012-02-10 Bill Schmidt <wschmidt@linux.vnet.ibm.com> + Ira Rosen <irar@il.ibm.com> + + PR tree-optimization/50031 + * targhooks.c (default_builtin_vectorization_cost): Handle + vec_promote_demote. + * target.h (enum vect_cost_for_stmt): Add vec_promote_demote. + * tree-vect-loop.c (vect_get_single_scalar_iteraion_cost): Handle + all types of reduction and pattern statements. + (vect_estimate_min_profitable_iters): Likewise. + * tree-vect-stmts.c (vect_model_promotion_demotion_cost): New function. + (vect_get_load_cost): Use vec_perm for permutations; add dump logic + for explicit realigns. + (vectorizable_conversion): Call vect_model_promotion_demotion_cost. + * config/spu/spu.c (spu_builtin_vectorization_cost): Handle + vec_promote_demote. + * config/i386/i386.c (ix86_builtin_vectorization_cost): Likewise. + * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Update + vec_perm for VSX and handle vec_promote_demote. + +2012-02-10 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/52177 + * builtins.c (fold_builtin_atomic_always_lock_free, + expand_builtin_atomic_always_lock_free, + fold_builtin_atomic_is_lock_free, expand_builtin_atomic_is_lock_free): + Return and/or test boolean_true_node/boolean_false_node instead of + integer_one_node/integer_zero_node. + +2012-02-10 Jan Hubicka <jh@suse.cz> + + PR middle-end/48600 + * predict.c (predict_paths_for_bb): Prevent looping. + (predict_paths_leading_to_edge, predict_paths_leading_to): Update. + +2012-02-10 Roman Zhuykov <zhroma@ispras.ru> + + * config/arm/arm.c (output_move_double): In one case properly + count number of instructions that will be emitted. + +2012-02-10 Richard Guenther <rguenther@suse.de> + + PR translation/52193 + * cgraphunit.c (cgraph_mark_functions_to_output): Fix typo. + 2012-02-09 Peter Bergner <bergner@vnet.ibm.com> PR middle-end/52140 @@ -19,8 +254,8 @@ 2012-02-08 Magnus Granberg <zorry@gentoo.org> PR driver/48524 - * gcc.c (switch_matches) Support switches with separated form, -D - and -U. + * gcc.c (switch_matches) Support switches with separated form, + -D and -U. 2012-02-08 Georg-Johann Lay <avr@gjlay.de> @@ -42,8 +277,7 @@ PR tree-optimization/46886 * tree-flow.h (do_while_loop_p): Declare. * tree-ssa-loop-ch.c (do_while_loop_p): Export. - * tree-parloops.c (parallelize_loops): Only parallelize do-while - loops. + * tree-parloops.c (parallelize_loops): Only parallelize do-while loops. 2012-02-08 Andrew MacLeod <amacleod@redhat.com> @@ -112,7 +346,7 @@ newline in -alias dumps. 2012-02-07 Kai Tietz <ktietz@redhat.com> - Dave Korn <dave.korn.cygwin@gmail.com> + Dave Korn <dave.korn.cygwin@gmail.com> PR target/40068 * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): @@ -145,7 +379,8 @@ (epiphany_start_function): Handle multiple interrupt arguments and/or forwarder_section attribute. - * config/epiphany/epiphany.h (LIB_SPEC): Link libc again after libgloss. + * config/epiphany/epiphany.h (LIB_SPEC): Link libc again after + libgloss. 2012-02-07 Alan Modra <amodra@gmail.com> @@ -226,13 +461,11 @@ to vect_is_simple_use_1 and vect_is_simple_use. (vectorizable_live_operation): Likewise. * tree-vect-patterns.c (widened_name_p, - vect_recog_vector_vector_shift_pattern, check_bool_pattern): - Likewise. + vect_recog_vector_vector_shift_pattern, check_bool_pattern): Likewise. * tree-vect-stmts.c (process_use, vect_get_vec_def_for_operand, - vectorizable_call, vectorizable_conversion, - vectorizable_assignment, vectorizable_shift, - vectorizable_operation, vectorizable_store, vectorizable_load): - Likewise. + vectorizable_call, vectorizable_conversion, vectorizable_assignment, + vectorizable_shift,vectorizable_operation, vectorizable_store, + vectorizable_load): Likewise. (vect_is_simple_cond): Add an argument, pass it to vect_is_simple_use_1. (vectorizable_condition): Update calls to vect_is_simple_cond, @@ -365,8 +598,7 @@ 2012-01-31 Matthew Gretton-Dann <matthew.gretton-dann@arm.com> - config/arm/thumb2.md (thumb2_mov_notscc): Use MVN for true - condition. + * config/arm/thumb2.md (thumb2_mov_notscc): Use MVN for true condition. 2012-01-31 Jakub Jelinek <jakub@redhat.com> @@ -466,7 +698,7 @@ 2012-01-29 Uros Bizjak <ubizjak@gmail.com> - * config/alpha/alpha.c (alpha_option_overrride): Default to + * config/alpha/alpha.c (alpha_option_override): Default to full IEEE compliance mode for Go language. 2011-01-29 Tijl Coosemans <tijl@coosemans.org> diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index ef74a132b46..9584376876a 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20120210 +20120214 diff --git a/gcc/Makefile.in b/gcc/Makefile.in index e138ba70561..b902f93d3fa 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -1959,7 +1959,7 @@ gcc-ranlib.c: gcc-ar.c gcc-nm.c: gcc-ar.c cp $^ $@ -COLLECT2_OBJS = collect2.o collect2-aix.o tlink.o +COLLECT2_OBJS = collect2.o collect2-aix.o tlink.o vec.o ggc-none.o COLLECT2_LIBS = @COLLECT2_LIBS@ collect2$(exeext): $(COLLECT2_OBJS) $(LIBDEPS) # Don't try modifying collect2 (aka ld) in place--it might be linking this. diff --git a/gcc/builtins.c b/gcc/builtins.c index cf4956123c3..b937d3d0938 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -5639,15 +5639,15 @@ fold_builtin_atomic_always_lock_free (tree arg0, tree arg1) /* If the object has smaller alignment, the the lock free routines cannot be used. */ if (type_align < mode_align) - return integer_zero_node; + return boolean_false_node; /* Check if a compare_and_swap pattern exists for the mode which represents the required size. The pattern is not allowed to fail, so the existence of the pattern indicates support is present. */ if (can_compare_and_swap_p (mode, true)) - return integer_one_node; + return boolean_true_node; else - return integer_zero_node; + return boolean_false_node; } /* Return true if the parameters to call EXP represent an object which will @@ -5671,7 +5671,7 @@ expand_builtin_atomic_always_lock_free (tree exp) } size = fold_builtin_atomic_always_lock_free (arg0, arg1); - if (size == integer_one_node) + if (size == boolean_true_node) return const1_rtx; return const0_rtx; } @@ -5686,8 +5686,8 @@ fold_builtin_atomic_is_lock_free (tree arg0, tree arg1) return NULL_TREE; /* If it isn't always lock free, don't generate a result. */ - if (fold_builtin_atomic_always_lock_free (arg0, arg1) == integer_one_node) - return integer_one_node; + if (fold_builtin_atomic_always_lock_free (arg0, arg1) == boolean_true_node) + return boolean_true_node; return NULL_TREE; } @@ -5717,7 +5717,7 @@ expand_builtin_atomic_is_lock_free (tree exp) /* If the value is known at compile time, return the RTX for it. */ size = fold_builtin_atomic_is_lock_free (arg0, arg1); - if (size == integer_one_node) + if (size == boolean_true_node) return const1_rtx; return NULL_RTX; diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 4825c7e83d6..93fb16d71ff 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -1,6 +1,6 @@ /* Process declarations and variables for C compiler. Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This file is part of GCC. @@ -2449,6 +2449,7 @@ merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype) memcpy ((char *) olddecl + sizeof (struct tree_common), (char *) newdecl + sizeof (struct tree_common), sizeof (struct tree_decl_common) - sizeof (struct tree_common)); + DECL_USER_ALIGN (olddecl) = DECL_USER_ALIGN (newdecl); switch (TREE_CODE (olddecl)) { case FUNCTION_DECL: diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index b86ebe59f49..7b927b9e600 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,10 @@ +2012-02-13 Jakub Jelinek <jakub@redhat.com> + + PR c++/52215 + * c-common.c (sync_resolve_params): Don't decide whether to convert + or not based on TYPE_SIZE comparison, convert whenever arg_type + is unsigned INTEGER_TYPE. + 2012-02-06 Paolo Carlini <paolo.carlini@oracle.com> PR c/52118 diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index 8dbf6cc2d75..1d19251a65f 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -1,6 +1,6 @@ /* Subroutines shared by all languages that are variants of C. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This file is part of GCC. @@ -9336,10 +9336,12 @@ sync_resolve_params (location_t loc, tree orig_function, tree function, return false; } - /* Only convert parameters if the size is appropriate with new format - sync routines. */ - if (orig_format - || tree_int_cst_equal (TYPE_SIZE (ptype), TYPE_SIZE (arg_type))) + /* Only convert parameters if arg_type is unsigned integer type with + new format sync routines, i.e. don't attempt to convert pointer + arguments (e.g. EXPECTED argument of __atomic_compare_exchange_n), + bool arguments (e.g. WEAK argument) or signed int arguments (memmodel + kinds). */ + if (TREE_CODE (arg_type) == INTEGER_TYPE && TYPE_UNSIGNED (arg_type)) { /* Ideally for the first conversion we'd use convert_for_assignment so that we get warnings for anything that doesn't match the pointer diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index ddc026163ce..ae3090e2b13 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -1430,14 +1430,16 @@ cgraph_mark_functions_to_output (void) tree decl = node->decl; if (!node->global.inlined_to && gimple_has_body_p (decl) - /* FIXME: in ltrans unit when offline copy is outside partition but inline copies - are inside partition, we can end up not removing the body since we no longer - have analyzed node pointing to it. */ + /* FIXME: in an ltrans unit when the offline copy is outside a + partition but inline copies are inside a partition, we can + end up not removing the body since we no longer have an + analyzed node pointing to it. */ && !node->in_other_partition && !DECL_EXTERNAL (decl)) { dump_cgraph_node (stderr, node); - internal_error ("failed to reclaim unneeded functionin same comdat group"); + internal_error ("failed to reclaim unneeded function in same " + "comdat group"); } } #endif diff --git a/gcc/common/config/tilegx/tilegx-common.c b/gcc/common/config/tilegx/tilegx-common.c new file mode 100644 index 00000000000..7ee29b76bf7 --- /dev/null +++ b/gcc/common/config/tilegx/tilegx-common.c @@ -0,0 +1,55 @@ +/* Common hooks for TILE-Gx. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +#include "config.h" +#include "system.h" +#include "coretypes.h" +#include "diagnostic-core.h" +#include "tm.h" +#include "common/common-target.h" +#include "common/common-target-def.h" +#include "opts.h" +#include "flags.h" + +static const struct default_options tilegx_option_optimization_table[] = { + {OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1}, + /* Scheduling and bundling are super important for our architecture, so + enable them at -O1. */ + {OPT_LEVELS_1_PLUS, OPT_fschedule_insns, NULL, 1}, + {OPT_LEVELS_1_PLUS, OPT_fschedule_insns2, NULL, 1}, + {OPT_LEVELS_NONE, 0, NULL, 0} +}; + + +static void +tilegx_option_init_struct (struct gcc_options *opts) +{ + opts->x_flag_asynchronous_unwind_tables = 1; +} + + +#undef TARGET_OPTION_OPTIMIZATION_TABLE +#define TARGET_OPTION_OPTIMIZATION_TABLE tilegx_option_optimization_table + +#undef TARGET_OPTION_INIT_STRUCT +#define TARGET_OPTION_INIT_STRUCT tilegx_option_init_struct + +struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; diff --git a/gcc/common/config/tilepro/tilepro-common.c b/gcc/common/config/tilepro/tilepro-common.c new file mode 100644 index 00000000000..01ceb7f248c --- /dev/null +++ b/gcc/common/config/tilepro/tilepro-common.c @@ -0,0 +1,56 @@ +/* Common hooks for TILEPro. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +#include "config.h" +#include "system.h" +#include "coretypes.h" +#include "diagnostic-core.h" +#include "tm.h" +#include "common/common-target.h" +#include "common/common-target-def.h" +#include "opts.h" +#include "flags.h" + +static const struct default_options tilepro_option_optimization_table[] = { + {OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1}, + /* Scheduling and bundling are super important for our architecture, so + enable them at -O1. */ + {OPT_LEVELS_1_PLUS, OPT_fschedule_insns, NULL, 1}, + {OPT_LEVELS_1_PLUS, OPT_fschedule_insns2, NULL, 1}, + {OPT_LEVELS_NONE, 0, NULL, 0} +}; + + +static void +tilepro_option_init_struct (struct gcc_options *opts) +{ + opts->x_flag_asynchronous_unwind_tables = 1; +} + + + +#undef TARGET_OPTION_OPTIMIZATION_TABLE +#define TARGET_OPTION_OPTIMIZATION_TABLE tilepro_option_optimization_table + +#undef TARGET_OPTION_INIT_STRUCT +#define TARGET_OPTION_INIT_STRUCT tilepro_option_init_struct + +struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; diff --git a/gcc/compare-elim.c b/gcc/compare-elim.c index 8d7fd010b9d..15d8d622585 100644 --- a/gcc/compare-elim.c +++ b/gcc/compare-elim.c @@ -297,8 +297,11 @@ find_comparisons_in_bb (struct dom_walk_data *data ATTRIBUTE_UNUSED, src = conforming_compare (insn); if (src) { + enum machine_mode src_mode = GET_MODE (src); + /* Eliminate a compare that's redundant with the previous. */ if (last_cmp_valid + && src_mode == last_cmp->orig_mode && rtx_equal_p (last_cmp->in_a, XEXP (src, 0)) && rtx_equal_p (last_cmp->in_b, XEXP (src, 1))) { @@ -311,7 +314,7 @@ find_comparisons_in_bb (struct dom_walk_data *data ATTRIBUTE_UNUSED, last_cmp->prev_clobber = last_clobber; last_cmp->in_a = XEXP (src, 0); last_cmp->in_b = XEXP (src, 1); - last_cmp->orig_mode = GET_MODE (SET_DEST (single_set (insn))); + last_cmp->orig_mode = src_mode; VEC_safe_push (comparison_struct_p, heap, all_compares, last_cmp); /* It's unusual, but be prepared for comparison patterns that diff --git a/gcc/config.gcc b/gcc/config.gcc index 65a423a0f96..bdd5eb31890 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -448,6 +448,14 @@ tic6x-*-*) xtensa*-*-*) extra_options="${extra_options} fused-madd.opt" ;; +tilegx*-*-*) + cpu_type=tilegx + need_64bit_hwint=yes + ;; +tilepro-*-*) + cpu_type=tilepro + need_64bit_hwint=yes + ;; esac tm_file=${cpu_type}/${cpu_type}.h @@ -2468,6 +2476,20 @@ tic6x-*-uclinux) tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux" use_collect2=no ;; +tilegx-*-linux*) + tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h tilegx/linux.h ${tm_file}" + tmake_file="${tmake_file} tilegx/t-tilegx" + extra_objs="mul-tables.o" + c_target_objs="tilegx-c.o" + cxx_target_objs="tilegx-c.o" + ;; +tilepro-*-linux*) + tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h tilepro/linux.h ${tm_file}" + tmake_file="${tmake_file} tilepro/t-tilepro" + extra_objs="mul-tables.o" + c_target_objs="tilepro-c.o" + cxx_target_objs="tilepro-c.o" + ;; v850*-*-*) case ${target} in v850e2v3-*-*) diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index e2ab10229be..7f0dc6b4aa3 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -14205,6 +14205,9 @@ output_move_double (rtx *operands, bool emit, int *count) output_asm_insn ("sub%?\t%0, %1, %2", otherops); } + if (count) + *count = 2; + if (TARGET_LDRD) return "ldr%(d%)\t%0, [%1]"; diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h index 70ac80c19ac..24253320208 100644 --- a/gcc/config/darwin.h +++ b/gcc/config/darwin.h @@ -183,6 +183,8 @@ extern GTY(()) int darwin_ms_struct; %{L*} %(link_libgcc) %o %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} \ %{fopenmp|ftree-parallelize-loops=*: \ %{static|static-libgcc|static-libstdc++|static-libgfortran: libgomp.a%s; : -lgomp } } \ + %{fgnu-tm: \ + %{static|static-libgcc|static-libstdc++|static-libgfortran: libitm.a%s; : -litm } } \ %{!nostdlib:%{!nodefaultlibs:\ %(link_ssp) %(link_gcc_c_sequence)\ }}\ @@ -915,6 +917,8 @@ void add_framework_path (char *); #undef GOMP_SELF_SPECS #define GOMP_SELF_SPECS "" +#undef GTM_SELF_SPECS +#define GTM_SELF_SPECS "" /* Darwin disables section anchors by default. They should be enabled per arch where support exists in that arch. */ diff --git a/gcc/config/i386/cygwin.h b/gcc/config/i386/cygwin.h index d84c5c3aed8..5cf7f9cf51d 100644 --- a/gcc/config/i386/cygwin.h +++ b/gcc/config/i386/cygwin.h @@ -126,6 +126,8 @@ along with GCC; see the file COPYING3. If not see and the -pthread flag is not recognized. */ #undef GOMP_SELF_SPECS #define GOMP_SELF_SPECS "" +#undef GTM_SELF_SPECS +#define GTM_SELF_SPECS "" /* This matches SHLIB_SONAME and SHLIB_SOVERSION in t-cygwin. */ #if DWARF2_UNWIND_INFO diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 009dd530134..fad5e66d9c9 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -11932,6 +11932,13 @@ ix86_legitimate_address_p (enum machine_mode mode ATTRIBUTE_UNUSED, rtx base, index, disp; HOST_WIDE_INT scale; + /* Since constant address in x32 is signed extended to 64bit, + we have to prevent addresses from 0x80000000 to 0xffffffff. */ + if (TARGET_X32 + && CONST_INT_P (addr) + && INTVAL (addr) < 0) + return false; + if (ix86_decompose_address (addr, &parts) <= 0) /* Decomposition failed. */ return false; @@ -35336,6 +35343,7 @@ ix86_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost, return ix86_cost->cond_not_taken_branch_cost; case vec_perm: + case vec_promote_demote: return ix86_cost->vec_stmt_cost; default: diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h index 00dcca60bb0..4fdef2664bd 100644 --- a/gcc/config/i386/mingw32.h +++ b/gcc/config/i386/mingw32.h @@ -187,6 +187,8 @@ do { \ #undef GOMP_SELF_SPECS #define GOMP_SELF_SPECS "%{fopenmp|ftree-parallelize-loops=*: " \ "-mthreads -pthread}" +#undef GTM_SELF_SPECS +#define GTM_SELF_SPECS "%{fgnu-tm:-mthreads -pthread}" /* mingw32 atexit function is safe to use in shared libraries. Use it to register C++ static destructors. */ diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 90be03e1296..97a3b81b08d 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -3543,9 +3543,16 @@ rs6000_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost, return 1; case vec_perm: - if (!TARGET_VSX) + if (TARGET_VSX) + return 4; + else return 1; - return 2; + + case vec_promote_demote: + if (TARGET_VSX) + return 5; + else + return 1; case cond_branch_taken: return 3; diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index 40db03f1750..134843d98a3 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -5131,7 +5131,7 @@ sparc_flat_expand_prologue (void) /* Prevent this instruction from ever being considered dead, even if this function has no epilogue. */ - emit_insn (gen_rtx_USE (VOIDmode, i7)); + emit_use (i7); } } diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h index bb6b0794350..acc6be1fe1e 100644 --- a/gcc/config/sparc/sparc.h +++ b/gcc/config/sparc/sparc.h @@ -894,18 +894,21 @@ extern enum reg_class sparc_regno_reg_class[FIRST_PSEUDO_REGISTER]; #define REGNO_REG_CLASS(REGNO) sparc_regno_reg_class[(REGNO)] -/* Defines invalid mode changes. Borrowed from pa64-regs.h. +/* Defines invalid mode changes. Borrowed from the PA port. SImode loads to floating-point registers are not zero-extended. The definition for LOAD_EXTEND_OP specifies that integer loads narrower than BITS_PER_WORD will be zero-extended. As a result, we inhibit changes from SImode unless they are to a mode that is - identical in size. */ + identical in size. + + Likewise for SFmode, since word-mode paradoxical subregs are + problematic on big-endian architectures. */ #define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \ (TARGET_ARCH64 \ - && (FROM) == SImode \ - && GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO) \ + && GET_MODE_SIZE (FROM) == 4 \ + && GET_MODE_SIZE (TO) != 4 \ ? reg_classes_intersect_p (CLASS, FP_REGS) : 0) /* This is the order in which to allocate registers normally. diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md index f67ee83d048..f70acd37337 100644 --- a/gcc/config/sparc/sparc.md +++ b/gcc/config/sparc/sparc.md @@ -99,7 +99,6 @@ (define_constants [(UNSPECV_BLOCKAGE 0) (UNSPECV_FLUSHW 1) - (UNSPECV_GOTO 2) (UNSPECV_FLUSH 4) (UNSPECV_SAVEW 6) (UNSPECV_CAS 8) @@ -6524,6 +6523,7 @@ (match_operand 3 "memory_operand" "")] "" { + rtx i7 = gen_rtx_REG (Pmode, RETURN_ADDR_REGNUM); rtx r_label = copy_to_reg (operands[1]); rtx r_sp = adjust_address_nv (operands[2], Pmode, 0); rtx r_fp = operands[3]; @@ -6540,44 +6540,19 @@ /* Restore frame pointer for containing function. */ emit_move_insn (hard_frame_pointer_rtx, r_fp); emit_stack_restore (SAVE_NONLOCAL, r_sp); + emit_move_insn (i7, r_i7); /* USE of hard_frame_pointer_rtx added for consistency; not clear if really needed. */ emit_use (hard_frame_pointer_rtx); emit_use (stack_pointer_rtx); + emit_use (i7); - /* We need to smuggle the load of %i7 as it is a fixed register. */ - emit_jump_insn (gen_nonlocal_goto_internal (r_label, r_i7)); + emit_jump_insn (gen_indirect_jump (r_label)); emit_barrier (); DONE; }) -(define_insn "nonlocal_goto_internal" - [(unspec_volatile [(match_operand 0 "register_operand" "r") - (match_operand 1 "memory_operand" "m")] UNSPECV_GOTO)] - "GET_MODE (operands[0]) == Pmode && GET_MODE (operands[1]) == Pmode" -{ - if (flag_delayed_branch) - { - if (TARGET_ARCH64) - return "jmp\t%0\n\t ldx\t%1, %%i7"; - else - return "jmp\t%0\n\t ld\t%1, %%i7"; - } - else - { - if (TARGET_ARCH64) - return "ldx\t%1, %%i7\n\tjmp\t%0\n\t nop"; - else - return "ld\t%1, %%i7\n\tjmp\t%0\n\t nop"; - } -} - [(set (attr "type") (const_string "multi")) - (set (attr "length") - (if_then_else (eq_attr "delayed_branch" "true") - (const_int 2) - (const_int 3)))]) - (define_expand "builtin_setjmp_receiver" [(label_ref (match_operand 0 "" ""))] "flag_pic" diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c index 0bab5cfb692..c65d003c40e 100644 --- a/gcc/config/spu/spu.c +++ b/gcc/config/spu/spu.c @@ -6920,6 +6920,7 @@ spu_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost, case scalar_to_vec: case cond_branch_not_taken: case vec_perm: + case vec_promote_demote: return 1; case scalar_store: diff --git a/gcc/config/tilegx/constraints.md b/gcc/config/tilegx/constraints.md new file mode 100644 index 00000000000..fcbd2207068 --- /dev/null +++ b/gcc/config/tilegx/constraints.md @@ -0,0 +1,123 @@ +;; Constraint definitions for Tilera TILE-Gx. +;; Copyright (C) 2011, 2012 +;; Free Software Foundation, Inc. +;; Contributed by Walter Lee (walt@tilera.com) +;; +;; This file is part of GCC. +;; +;; GCC is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 3, or (at your +;; option) any later version. +;; +;; GCC is distributed in the hope that it will be useful, but WITHOUT +;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +;; License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; <http://www.gnu.org/licenses/>. + +(define_register_constraint "R00" "R0_REGS" "r0") +(define_register_constraint "R01" "R1_REGS" "r1") +(define_register_constraint "R02" "R2_REGS" "r2") +(define_register_constraint "R03" "R3_REGS" "r3") +(define_register_constraint "R04" "R4_REGS" "r4") +(define_register_constraint "R05" "R5_REGS" "r5") +(define_register_constraint "R06" "R6_REGS" "r6") +(define_register_constraint "R07" "R7_REGS" "r7") +(define_register_constraint "R08" "R8_REGS" "r8") +(define_register_constraint "R09" "R9_REGS" "r9") +(define_register_constraint "R10" "R10_REGS" "r10") + +(define_constraint "I" + "A signed 8 bit constant" + (and (match_code "const_int") + (match_test "ival >= -128 && ival <= 127"))) + +(define_constraint "J" + "Signed 16-bit integer constant" + (and (match_code "const_int") + (match_test "ival >= -32768 && ival <= 32767"))) + +(define_constraint "K" + "Unsigned 16-bit integer constant" + (and (match_code "const_int") + (match_test "(ival >= 0 && ival <= 65535)"))) + +(define_constraint "L" + "Integer constant that fits in one signed byte when incremented" + (and (match_code "const_int") + (match_test "ival >= -129 && ival <= 126"))) + +(define_constraint "M" + "A bit mask suitable for 'bfins'" + (and (match_code "const_int") + (match_test "tilegx_bitfield_operand_p (ival, NULL, NULL)"))) + +(define_constraint "N" + "Integer constant that is a byte tiled out eight times" + (and (match_code "const_int") + (match_test "(ival == (ival & 0xFF) * 0x0101010101010101LL)"))) + +(define_constraint "O" + "The integer zero constant" + (and (match_code "const_int") + (match_test "ival == 0"))) + +(define_constraint "P" + "Integer constant that is a sign-extended byte tiled out as four shorts" + (and (match_code "const_int") + (match_test "(ival + == ((trunc_int_for_mode (ival, QImode) & 0xFFFF) + * 0x0001000100010001LL))"))) + +(define_constraint "Q" + "Integer constant that fits in one signed byte when incremented, but not -1" + (and (match_code "const_int") + (match_test "ival >= -129 && ival <= 126 && ival != -1"))) + +(define_constraint "S" + "Integer constant that has all 1 bits consecutive and starting at bit 0" + (and (match_code "const_int") + (match_test "ival != 0 && (ival & (ival + 1)) == 0"))) + +(define_constraint "T" + "An unspec wrapper for a symbolc operand" + (ior (match_operand 0 "const_last_symbolic_operand") + (match_operand 0 "const_symbolic_operand"))) + +(define_memory_constraint "U" + "Non-auto-incrementing memory" + (and (match_code "mem") + (match_test "GET_RTX_CLASS (GET_CODE (XEXP (op, 0))) != RTX_AUTOINC"))) + +(define_constraint "W" + "An 8-element vector constant with identical elements" + (and (match_code "const_vector") + (match_test "CONST_VECTOR_NUNITS (op) == 8") + (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 1)") + (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 2)") + (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 3)") + (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 4)") + (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 5)") + (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 6)") + (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 7)"))) + +(define_constraint "Y" + "A 4-element vector constant with identical elements" + (and (match_code "const_vector") + (match_test "CONST_VECTOR_NUNITS (op) == 4") + (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 1)") + (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 2)") + (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 3)"))) +(define_constraint "Z0" + "The integer constant 0xffffffff" + (and (match_code "const_int") + (match_test "ival == 0xffffffff"))) + +(define_constraint "Z1" + "The integer constant 0xffffffff00000000" + (and (match_code "const_int") + (match_test "ival == (HOST_WIDE_INT)0xffffffff00000000LL"))) diff --git a/gcc/config/tilegx/linux.h b/gcc/config/tilegx/linux.h new file mode 100644 index 00000000000..b42e2bb0536 --- /dev/null +++ b/gcc/config/tilegx/linux.h @@ -0,0 +1,72 @@ +/* Definitions for TILE-Gx running Linux-based GNU systems with ELF. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +#undef CPP_SPEC +#define CPP_SPEC "%{pthread:-D_REENTRANT}" + +#undef ASM_SPEC +#define ASM_SPEC "%{m32:--32} %{m64:--64}" + +#undef LINK_SPEC +#define LINK_SPEC "%{m64:-m elf64tilegx} %{m32:-m elf32tilegx} \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker \ + %{ m32: /lib32/ld.so.1} \ + %{!m32: /lib/ld.so.1}} \ + %{static:-static}}" + +#define MULTILIB_DEFAULTS { "m64" } + +#define NO_PROFILE_COUNTERS 1 + +#undef MCOUNT_NAME +#define MCOUNT_NAME "__mcount" + +#undef NEED_INDICATE_EXEC_STACK +#define NEED_INDICATE_EXEC_STACK 1 + +#ifdef TARGET_LIBC_PROVIDES_SSP +/* TILE-Gx glibc provides __stack_chk_guard two pointer-size words before + tp. */ +#define TARGET_THREAD_SSP_OFFSET (-2 * GET_MODE_SIZE (ptr_mode)) +#endif + +/* For __clear_cache in libgcc2.c. */ +#ifdef IN_LIBGCC2 + +#include <arch/icache.h> + +/* Use the minimum page size of 4K. Alternatively we can call + getpagesize() but it introduces a libc dependence. */ +#undef CLEAR_INSN_CACHE +#define CLEAR_INSN_CACHE(beg, end) invalidate_icache (beg, end - beg, 4096) + +#else + +/* define CLEAR_INSN_CACHE so that gcc knows to expand __builtin__clear_cache + to the libraray call. */ +#undef CLEAR_INSN_CACHE +#define CLEAR_INSN_CACHE 1 + +#endif diff --git a/gcc/config/tilegx/mul-tables.c b/gcc/config/tilegx/mul-tables.c new file mode 100644 index 00000000000..b7d171f192e --- /dev/null +++ b/gcc/config/tilegx/mul-tables.c @@ -0,0 +1,27244 @@ +/* Constant multiply table for TILE-Gx. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +#include "config.h" +#include "system.h" +#include "coretypes.h" +#include "expr.h" +#include "optabs.h" +#include "tilegx-multiply.h" + +const enum insn_code tilegx_multiply_insn_seq_decode_opcode[] = { + CODE_FOR_nothing /* must be first */ , + CODE_FOR_adddi3, + CODE_FOR_subdi3, + CODE_FOR_insn_shl1add, + CODE_FOR_insn_shl2add, + CODE_FOR_insn_shl3add, + CODE_FOR_ashldi3 +}; + +const struct tilegx_multiply_insn_seq tilegx_multiply_insn_seq_table[] = { + {-9223372036854775807ll - 1 /* 0x8000000000000000 */ , + {{6, 1, 63}} /* shli r2, r1, 63 */ + }, + {-9223372036854775807ll /* 0x8000000000000001 */ , + {{6, 1, 63}, /* shli r2, r1, 63 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {-9223372036854775806ll /* 0x8000000000000002 */ , + {{6, 1, 63}, /* shli r2, r1, 63 */ + {3, 1, 2}} /* shl1add r3, r1, r2 */ + }, + {-9223372036854775805ll /* 0x8000000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854775804ll /* 0x8000000000000004 */ , + {{6, 1, 63}, /* shli r2, r1, 63 */ + {4, 1, 2}} /* shl2add r3, r1, r2 */ + }, + {-9223372036854775803ll /* 0x8000000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854775802ll /* 0x8000000000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-9223372036854775801ll /* 0x8000000000000007 */ , + {{6, 1, 63}, /* shli r2, r1, 63 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* shl3add r4, r1, r3 */ + }, + {-9223372036854775800ll /* 0x8000000000000008 */ , + {{6, 1, 63}, /* shli r2, r1, 63 */ + {5, 1, 2}} /* shl3add r3, r1, r2 */ + }, + {-9223372036854775799ll /* 0x8000000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854775798ll /* 0x800000000000000a */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-9223372036854775792ll /* 0x8000000000000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854775776ll /* 0x8000000000000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854775744ll /* 0x8000000000000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854775680ll /* 0x8000000000000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854775552ll /* 0x8000000000000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854775296ll /* 0x8000000000000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854774784ll /* 0x8000000000000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854773760ll /* 0x8000000000000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854771712ll /* 0x8000000000001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854767616ll /* 0x8000000000002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854759424ll /* 0x8000000000004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854743040ll /* 0x8000000000008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854710272ll /* 0x8000000000010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854644736ll /* 0x8000000000020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854513664ll /* 0x8000000000040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036854251520ll /* 0x8000000000080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036853727232ll /* 0x8000000000100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036852678656ll /* 0x8000000000200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036850581504ll /* 0x8000000000400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036846387200ll /* 0x8000000000800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036837998592ll /* 0x8000000001000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036821221376ll /* 0x8000000002000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036787666944ll /* 0x8000000004000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036720558080ll /* 0x8000000008000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036586340352ll /* 0x8000000010000000 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372036317904896ll /* 0x8000000020000000 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372035781033984ll /* 0x8000000040000000 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372034707292160ll /* 0x8000000080000000 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372032559808512ll /* 0x8000000100000000 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372028264841216ll /* 0x8000000200000000 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372019674906624ll /* 0x8000000400000000 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223372002495037440ll /* 0x8000000800000000 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223371968135299072ll /* 0x8000001000000000 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223371899415822336ll /* 0x8000002000000000 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223371761976868864ll /* 0x8000004000000000 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223371487098961920ll /* 0x8000008000000000 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223370937343148032ll /* 0x8000010000000000 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223369837831520256ll /* 0x8000020000000000 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223367638808264704ll /* 0x8000040000000000 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223363240761753600ll /* 0x8000080000000000 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223354444668731392ll /* 0x8000100000000000 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223336852482686976ll /* 0x8000200000000000 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223301668110598144ll /* 0x8000400000000000 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223231299366420480ll /* 0x8000800000000000 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9223090561878065152ll /* 0x8001000000000000 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9222809086901354496ll /* 0x8002000000000000 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9222246136947933184ll /* 0x8004000000000000 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9221120237041090560ll /* 0x8008000000000000 */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9218868437227405312ll /* 0x8010000000000000 */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9214364837600034816ll /* 0x8020000000000000 */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9205357638345293824ll /* 0x8040000000000000 */ , + {{6, 1, 54}, /* shli r2, r1, 54 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9187343239835811840ll /* 0x8080000000000000 */ , + {{6, 1, 55}, /* shli r2, r1, 55 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9151314442816847872ll /* 0x8100000000000000 */ , + {{6, 1, 56}, /* shli r2, r1, 56 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-9079256848778919936ll /* 0x8200000000000000 */ , + {{6, 1, 57}, /* shli r2, r1, 57 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-8935141660703064064ll /* 0x8400000000000000 */ , + {{6, 1, 58}, /* shli r2, r1, 58 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-8646911284551352320ll /* 0x8800000000000000 */ , + {{6, 1, 59}, /* shli r2, r1, 59 */ + {6, 1, 63}, /* shli r3, r1, 63 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-8070450532247928832ll /* 0x9000000000000000 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 60}} /* shli r3, r2, 60 */ + }, + {-6917529027641081857ll /* 0x9fffffffffffffff */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 61}, /* shli r3, r2, 61 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {-6917529027641081856ll /* 0xa000000000000000 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 61}} /* shli r3, r2, 61 */ + }, + {-4611686018427387912ll /* 0xbffffffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 62}, /* shli r3, r2, 62 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-4611686018427387911ll /* 0xbffffffffffffff9 */ , + {{6, 1, 62}, /* shli r2, r1, 62 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-4611686018427387908ll /* 0xbffffffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 62}, /* shli r3, r2, 62 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-4611686018427387907ll /* 0xbffffffffffffffd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 62}, /* shli r3, r2, 62 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {-4611686018427387906ll /* 0xbffffffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 62}, /* shli r3, r2, 62 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-4611686018427387905ll /* 0xbfffffffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4611686018427387904ll /* 0xc000000000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 62}} /* shli r3, r2, 62 */ + }, + {-4611686018427387903ll /* 0xc000000000000001 */ , + {{6, 1, 62}, /* shli r2, r1, 62 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-4611686018427387902ll /* 0xc000000000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4611686018427387901ll /* 0xc000000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4611686018427387900ll /* 0xc000000000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4611686018427387899ll /* 0xc000000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4611686018427387898ll /* 0xc000000000000006 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 62}, /* shli r3, r2, 62 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-4611686018427387896ll /* 0xc000000000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4611686018427387895ll /* 0xc000000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 62}, /* shli r3, r1, 62 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-3458764513820540929ll /* 0xcfffffffffffffff */ , + {{6, 1, 60}, /* shli r2, r1, 60 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2305843009213693960ll /* 0xdffffffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 61}, /* shli r3, r2, 61 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-2305843009213693959ll /* 0xdffffffffffffff9 */ , + {{6, 1, 61}, /* shli r2, r1, 61 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-2305843009213693956ll /* 0xdffffffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 61}, /* shli r3, r2, 61 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-2305843009213693955ll /* 0xdffffffffffffffd */ , + {{6, 1, 61}, /* shli r2, r1, 61 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-2305843009213693954ll /* 0xdffffffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 61}, /* shli r3, r2, 61 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-2305843009213693953ll /* 0xdfffffffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2305843009213693952ll /* 0xe000000000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 61}} /* shli r3, r2, 61 */ + }, + {-2305843009213693951ll /* 0xe000000000000001 */ , + {{6, 1, 61}, /* shli r2, r1, 61 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-2305843009213693950ll /* 0xe000000000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2305843009213693949ll /* 0xe000000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2305843009213693948ll /* 0xe000000000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2305843009213693947ll /* 0xe000000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2305843009213693944ll /* 0xe000000000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2305843009213693943ll /* 0xe000000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 61}, /* shli r3, r1, 61 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1729382256910270465ll /* 0xe7ffffffffffffff */ , + {{6, 1, 59}, /* shli r2, r1, 59 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1152921504606846984ll /* 0xeffffffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 60}, /* shli r3, r2, 60 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-1152921504606846983ll /* 0xeffffffffffffff9 */ , + {{6, 1, 60}, /* shli r2, r1, 60 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-1152921504606846980ll /* 0xeffffffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 60}, /* shli r3, r2, 60 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-1152921504606846979ll /* 0xeffffffffffffffd */ , + {{6, 1, 60}, /* shli r2, r1, 60 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-1152921504606846978ll /* 0xeffffffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 60}, /* shli r3, r2, 60 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-1152921504606846977ll /* 0xefffffffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1152921504606846976ll /* 0xf000000000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 60}} /* shli r3, r2, 60 */ + }, + {-1152921504606846975ll /* 0xf000000000000001 */ , + {{6, 1, 60}, /* shli r2, r1, 60 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-1152921504606846974ll /* 0xf000000000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1152921504606846973ll /* 0xf000000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1152921504606846972ll /* 0xf000000000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1152921504606846971ll /* 0xf000000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1152921504606846968ll /* 0xf000000000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1152921504606846967ll /* 0xf000000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 60}, /* shli r3, r1, 60 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-864691128455135233ll /* 0xf3ffffffffffffff */ , + {{6, 1, 58}, /* shli r2, r1, 58 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-576460752303423496ll /* 0xf7fffffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 59}, /* shli r3, r2, 59 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-576460752303423495ll /* 0xf7fffffffffffff9 */ , + {{6, 1, 59}, /* shli r2, r1, 59 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-576460752303423492ll /* 0xf7fffffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 59}, /* shli r3, r2, 59 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-576460752303423491ll /* 0xf7fffffffffffffd */ , + {{6, 1, 59}, /* shli r2, r1, 59 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-576460752303423490ll /* 0xf7fffffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 59}, /* shli r3, r2, 59 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-576460752303423489ll /* 0xf7ffffffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-576460752303423488ll /* 0xf800000000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 59}} /* shli r3, r2, 59 */ + }, + {-576460752303423487ll /* 0xf800000000000001 */ , + {{6, 1, 59}, /* shli r2, r1, 59 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-576460752303423486ll /* 0xf800000000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-576460752303423485ll /* 0xf800000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-576460752303423484ll /* 0xf800000000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-576460752303423483ll /* 0xf800000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-576460752303423480ll /* 0xf800000000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-576460752303423479ll /* 0xf800000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 59}, /* shli r3, r1, 59 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-432345564227567617ll /* 0xf9ffffffffffffff */ , + {{6, 1, 57}, /* shli r2, r1, 57 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-288230376151711752ll /* 0xfbfffffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 58}, /* shli r3, r2, 58 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-288230376151711751ll /* 0xfbfffffffffffff9 */ , + {{6, 1, 58}, /* shli r2, r1, 58 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-288230376151711748ll /* 0xfbfffffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 58}, /* shli r3, r2, 58 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-288230376151711747ll /* 0xfbfffffffffffffd */ , + {{6, 1, 58}, /* shli r2, r1, 58 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-288230376151711746ll /* 0xfbfffffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 58}, /* shli r3, r2, 58 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-288230376151711745ll /* 0xfbffffffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-288230376151711744ll /* 0xfc00000000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 58}} /* shli r3, r2, 58 */ + }, + {-288230376151711743ll /* 0xfc00000000000001 */ , + {{6, 1, 58}, /* shli r2, r1, 58 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-288230376151711742ll /* 0xfc00000000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-288230376151711741ll /* 0xfc00000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-288230376151711740ll /* 0xfc00000000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-288230376151711739ll /* 0xfc00000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-288230376151711736ll /* 0xfc00000000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-288230376151711735ll /* 0xfc00000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 58}, /* shli r3, r1, 58 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-216172782113783809ll /* 0xfcffffffffffffff */ , + {{6, 1, 56}, /* shli r2, r1, 56 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-144115188075855880ll /* 0xfdfffffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 57}, /* shli r3, r2, 57 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-144115188075855879ll /* 0xfdfffffffffffff9 */ , + {{6, 1, 57}, /* shli r2, r1, 57 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-144115188075855876ll /* 0xfdfffffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 57}, /* shli r3, r2, 57 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-144115188075855875ll /* 0xfdfffffffffffffd */ , + {{6, 1, 57}, /* shli r2, r1, 57 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-144115188075855874ll /* 0xfdfffffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 57}, /* shli r3, r2, 57 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-144115188075855873ll /* 0xfdffffffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-144115188075855872ll /* 0xfe00000000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 57}} /* shli r3, r2, 57 */ + }, + {-144115188075855871ll /* 0xfe00000000000001 */ , + {{6, 1, 57}, /* shli r2, r1, 57 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-144115188075855870ll /* 0xfe00000000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-144115188075855869ll /* 0xfe00000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-144115188075855868ll /* 0xfe00000000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-144115188075855867ll /* 0xfe00000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-144115188075855864ll /* 0xfe00000000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-144115188075855863ll /* 0xfe00000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 57}, /* shli r3, r1, 57 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-108086391056891905ll /* 0xfe7fffffffffffff */ , + {{6, 1, 55}, /* shli r2, r1, 55 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-72057594037927944ll /* 0xfefffffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 56}, /* shli r3, r2, 56 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-72057594037927943ll /* 0xfefffffffffffff9 */ , + {{6, 1, 56}, /* shli r2, r1, 56 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-72057594037927940ll /* 0xfefffffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 56}, /* shli r3, r2, 56 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-72057594037927939ll /* 0xfefffffffffffffd */ , + {{6, 1, 56}, /* shli r2, r1, 56 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-72057594037927938ll /* 0xfefffffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 56}, /* shli r3, r2, 56 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-72057594037927937ll /* 0xfeffffffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-72057594037927936ll /* 0xff00000000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 56}} /* shli r3, r2, 56 */ + }, + {-72057594037927935ll /* 0xff00000000000001 */ , + {{6, 1, 56}, /* shli r2, r1, 56 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-72057594037927934ll /* 0xff00000000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-72057594037927933ll /* 0xff00000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-72057594037927932ll /* 0xff00000000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-72057594037927931ll /* 0xff00000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-72057594037927928ll /* 0xff00000000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-72057594037927927ll /* 0xff00000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 56}, /* shli r3, r1, 56 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-54043195528445953ll /* 0xff3fffffffffffff */ , + {{6, 1, 54}, /* shli r2, r1, 54 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-36028797018963976ll /* 0xff7ffffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 55}, /* shli r3, r2, 55 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-36028797018963975ll /* 0xff7ffffffffffff9 */ , + {{6, 1, 55}, /* shli r2, r1, 55 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-36028797018963972ll /* 0xff7ffffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 55}, /* shli r3, r2, 55 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-36028797018963971ll /* 0xff7ffffffffffffd */ , + {{6, 1, 55}, /* shli r2, r1, 55 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-36028797018963970ll /* 0xff7ffffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 55}, /* shli r3, r2, 55 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-36028797018963969ll /* 0xff7fffffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-36028797018963968ll /* 0xff80000000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 55}} /* shli r3, r2, 55 */ + }, + {-36028797018963967ll /* 0xff80000000000001 */ , + {{6, 1, 55}, /* shli r2, r1, 55 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-36028797018963966ll /* 0xff80000000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-36028797018963965ll /* 0xff80000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-36028797018963964ll /* 0xff80000000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-36028797018963963ll /* 0xff80000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-36028797018963960ll /* 0xff80000000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-36028797018963959ll /* 0xff80000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 55}, /* shli r3, r1, 55 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-27021597764222977ll /* 0xff9fffffffffffff */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-18014398509481992ll /* 0xffbffffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 54}, /* shli r3, r2, 54 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-18014398509481991ll /* 0xffbffffffffffff9 */ , + {{6, 1, 54}, /* shli r2, r1, 54 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-18014398509481988ll /* 0xffbffffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 54}, /* shli r3, r2, 54 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-18014398509481987ll /* 0xffbffffffffffffd */ , + {{6, 1, 54}, /* shli r2, r1, 54 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-18014398509481986ll /* 0xffbffffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 54}, /* shli r3, r2, 54 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-18014398509481985ll /* 0xffbfffffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-18014398509481984ll /* 0xffc0000000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 54}} /* shli r3, r2, 54 */ + }, + {-18014398509481983ll /* 0xffc0000000000001 */ , + {{6, 1, 54}, /* shli r2, r1, 54 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-18014398509481982ll /* 0xffc0000000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-18014398509481981ll /* 0xffc0000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-18014398509481980ll /* 0xffc0000000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-18014398509481979ll /* 0xffc0000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-18014398509481976ll /* 0xffc0000000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-18014398509481975ll /* 0xffc0000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 54}, /* shli r3, r1, 54 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-13510798882111489ll /* 0xffcfffffffffffff */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-9007199254741000ll /* 0xffdffffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 53}, /* shli r3, r2, 53 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-9007199254740999ll /* 0xffdffffffffffff9 */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-9007199254740996ll /* 0xffdffffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 53}, /* shli r3, r2, 53 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-9007199254740995ll /* 0xffdffffffffffffd */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-9007199254740994ll /* 0xffdffffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 53}, /* shli r3, r2, 53 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-9007199254740993ll /* 0xffdfffffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-9007199254740992ll /* 0xffe0000000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 53}} /* shli r3, r2, 53 */ + }, + {-9007199254740991ll /* 0xffe0000000000001 */ , + {{6, 1, 53}, /* shli r2, r1, 53 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-9007199254740990ll /* 0xffe0000000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-9007199254740989ll /* 0xffe0000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-9007199254740988ll /* 0xffe0000000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-9007199254740987ll /* 0xffe0000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-9007199254740984ll /* 0xffe0000000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-9007199254740983ll /* 0xffe0000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 53}, /* shli r3, r1, 53 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-6755399441055745ll /* 0xffe7ffffffffffff */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4503599627370504ll /* 0xffeffffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 52}, /* shli r3, r2, 52 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-4503599627370503ll /* 0xffeffffffffffff9 */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-4503599627370500ll /* 0xffeffffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 52}, /* shli r3, r2, 52 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-4503599627370499ll /* 0xffeffffffffffffd */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-4503599627370498ll /* 0xffeffffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 52}, /* shli r3, r2, 52 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-4503599627370497ll /* 0xffefffffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4503599627370496ll /* 0xfff0000000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 52}} /* shli r3, r2, 52 */ + }, + {-4503599627370495ll /* 0xfff0000000000001 */ , + {{6, 1, 52}, /* shli r2, r1, 52 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-4503599627370494ll /* 0xfff0000000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4503599627370493ll /* 0xfff0000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4503599627370492ll /* 0xfff0000000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4503599627370491ll /* 0xfff0000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4503599627370488ll /* 0xfff0000000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4503599627370487ll /* 0xfff0000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 52}, /* shli r3, r1, 52 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-3377699720527873ll /* 0xfff3ffffffffffff */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2251799813685256ll /* 0xfff7fffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 51}, /* shli r3, r2, 51 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-2251799813685255ll /* 0xfff7fffffffffff9 */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-2251799813685252ll /* 0xfff7fffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 51}, /* shli r3, r2, 51 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-2251799813685251ll /* 0xfff7fffffffffffd */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-2251799813685250ll /* 0xfff7fffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 51}, /* shli r3, r2, 51 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-2251799813685249ll /* 0xfff7ffffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2251799813685248ll /* 0xfff8000000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 51}} /* shli r3, r2, 51 */ + }, + {-2251799813685247ll /* 0xfff8000000000001 */ , + {{6, 1, 51}, /* shli r2, r1, 51 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-2251799813685246ll /* 0xfff8000000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2251799813685245ll /* 0xfff8000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2251799813685244ll /* 0xfff8000000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2251799813685243ll /* 0xfff8000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2251799813685240ll /* 0xfff8000000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2251799813685239ll /* 0xfff8000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 51}, /* shli r3, r1, 51 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1688849860263937ll /* 0xfff9ffffffffffff */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1125899906842632ll /* 0xfffbfffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 50}, /* shli r3, r2, 50 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-1125899906842631ll /* 0xfffbfffffffffff9 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-1125899906842628ll /* 0xfffbfffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 50}, /* shli r3, r2, 50 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-1125899906842627ll /* 0xfffbfffffffffffd */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-1125899906842626ll /* 0xfffbfffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 50}, /* shli r3, r2, 50 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-1125899906842625ll /* 0xfffbffffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1125899906842624ll /* 0xfffc000000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 50}} /* shli r3, r2, 50 */ + }, + {-1125899906842623ll /* 0xfffc000000000001 */ , + {{6, 1, 50}, /* shli r2, r1, 50 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-1125899906842622ll /* 0xfffc000000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1125899906842621ll /* 0xfffc000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1125899906842620ll /* 0xfffc000000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1125899906842619ll /* 0xfffc000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1125899906842616ll /* 0xfffc000000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1125899906842615ll /* 0xfffc000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 50}, /* shli r3, r1, 50 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-844424930131969ll /* 0xfffcffffffffffff */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-562949953421320ll /* 0xfffdfffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 49}, /* shli r3, r2, 49 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-562949953421319ll /* 0xfffdfffffffffff9 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-562949953421316ll /* 0xfffdfffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 49}, /* shli r3, r2, 49 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-562949953421315ll /* 0xfffdfffffffffffd */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-562949953421314ll /* 0xfffdfffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 49}, /* shli r3, r2, 49 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-562949953421313ll /* 0xfffdffffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-562949953421312ll /* 0xfffe000000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 49}} /* shli r3, r2, 49 */ + }, + {-562949953421311ll /* 0xfffe000000000001 */ , + {{6, 1, 49}, /* shli r2, r1, 49 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-562949953421310ll /* 0xfffe000000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-562949953421309ll /* 0xfffe000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-562949953421308ll /* 0xfffe000000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-562949953421307ll /* 0xfffe000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-562949953421304ll /* 0xfffe000000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-562949953421303ll /* 0xfffe000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 49}, /* shli r3, r1, 49 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-422212465065985ll /* 0xfffe7fffffffffff */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-281474976710664ll /* 0xfffefffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 48}, /* shli r3, r2, 48 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-281474976710663ll /* 0xfffefffffffffff9 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-281474976710660ll /* 0xfffefffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 48}, /* shli r3, r2, 48 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-281474976710659ll /* 0xfffefffffffffffd */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-281474976710658ll /* 0xfffefffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 48}, /* shli r3, r2, 48 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-281474976710657ll /* 0xfffeffffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-281474976710656ll /* 0xffff000000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 48}} /* shli r3, r2, 48 */ + }, + {-281474976710655ll /* 0xffff000000000001 */ , + {{6, 1, 48}, /* shli r2, r1, 48 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-281474976710654ll /* 0xffff000000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-281474976710653ll /* 0xffff000000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-281474976710652ll /* 0xffff000000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-281474976710651ll /* 0xffff000000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-281474976710648ll /* 0xffff000000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-281474976710647ll /* 0xffff000000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 48}, /* shli r3, r1, 48 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-211106232532993ll /* 0xffff3fffffffffff */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-140737488355336ll /* 0xffff7ffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 47}, /* shli r3, r2, 47 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-140737488355335ll /* 0xffff7ffffffffff9 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-140737488355332ll /* 0xffff7ffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 47}, /* shli r3, r2, 47 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-140737488355331ll /* 0xffff7ffffffffffd */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-140737488355330ll /* 0xffff7ffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 47}, /* shli r3, r2, 47 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-140737488355329ll /* 0xffff7fffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-140737488355328ll /* 0xffff800000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 47}} /* shli r3, r2, 47 */ + }, + {-140737488355327ll /* 0xffff800000000001 */ , + {{6, 1, 47}, /* shli r2, r1, 47 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-140737488355326ll /* 0xffff800000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-140737488355325ll /* 0xffff800000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-140737488355324ll /* 0xffff800000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-140737488355323ll /* 0xffff800000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-140737488355320ll /* 0xffff800000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-140737488355319ll /* 0xffff800000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 47}, /* shli r3, r1, 47 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-105553116266497ll /* 0xffff9fffffffffff */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-70368744177672ll /* 0xffffbffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 46}, /* shli r3, r2, 46 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-70368744177671ll /* 0xffffbffffffffff9 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-70368744177668ll /* 0xffffbffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 46}, /* shli r3, r2, 46 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-70368744177667ll /* 0xffffbffffffffffd */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-70368744177666ll /* 0xffffbffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 46}, /* shli r3, r2, 46 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-70368744177665ll /* 0xffffbfffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-70368744177664ll /* 0xffffc00000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 46}} /* shli r3, r2, 46 */ + }, + {-70368744177663ll /* 0xffffc00000000001 */ , + {{6, 1, 46}, /* shli r2, r1, 46 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-70368744177662ll /* 0xffffc00000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-70368744177661ll /* 0xffffc00000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-70368744177660ll /* 0xffffc00000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-70368744177659ll /* 0xffffc00000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-70368744177656ll /* 0xffffc00000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-70368744177655ll /* 0xffffc00000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 46}, /* shli r3, r1, 46 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-52776558133249ll /* 0xffffcfffffffffff */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-35184372088840ll /* 0xffffdffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 45}, /* shli r3, r2, 45 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-35184372088839ll /* 0xffffdffffffffff9 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-35184372088836ll /* 0xffffdffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 45}, /* shli r3, r2, 45 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-35184372088835ll /* 0xffffdffffffffffd */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-35184372088834ll /* 0xffffdffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 45}, /* shli r3, r2, 45 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-35184372088833ll /* 0xffffdfffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-35184372088832ll /* 0xffffe00000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 45}} /* shli r3, r2, 45 */ + }, + {-35184372088831ll /* 0xffffe00000000001 */ , + {{6, 1, 45}, /* shli r2, r1, 45 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-35184372088830ll /* 0xffffe00000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-35184372088829ll /* 0xffffe00000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-35184372088828ll /* 0xffffe00000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-35184372088827ll /* 0xffffe00000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-35184372088824ll /* 0xffffe00000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-35184372088823ll /* 0xffffe00000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 45}, /* shli r3, r1, 45 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-26388279066625ll /* 0xffffe7ffffffffff */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-17592186044424ll /* 0xffffeffffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 44}, /* shli r3, r2, 44 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-17592186044423ll /* 0xffffeffffffffff9 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-17592186044420ll /* 0xffffeffffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 44}, /* shli r3, r2, 44 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-17592186044419ll /* 0xffffeffffffffffd */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-17592186044418ll /* 0xffffeffffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 44}, /* shli r3, r2, 44 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-17592186044417ll /* 0xffffefffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-17592186044416ll /* 0xfffff00000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 44}} /* shli r3, r2, 44 */ + }, + {-17592186044415ll /* 0xfffff00000000001 */ , + {{6, 1, 44}, /* shli r2, r1, 44 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-17592186044414ll /* 0xfffff00000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-17592186044413ll /* 0xfffff00000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-17592186044412ll /* 0xfffff00000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-17592186044411ll /* 0xfffff00000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-17592186044408ll /* 0xfffff00000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-17592186044407ll /* 0xfffff00000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 44}, /* shli r3, r1, 44 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-13194139533313ll /* 0xfffff3ffffffffff */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8796093022216ll /* 0xfffff7fffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 43}, /* shli r3, r2, 43 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-8796093022215ll /* 0xfffff7fffffffff9 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-8796093022212ll /* 0xfffff7fffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 43}, /* shli r3, r2, 43 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-8796093022211ll /* 0xfffff7fffffffffd */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-8796093022210ll /* 0xfffff7fffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 43}, /* shli r3, r2, 43 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-8796093022209ll /* 0xfffff7ffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8796093022208ll /* 0xfffff80000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 43}} /* shli r3, r2, 43 */ + }, + {-8796093022207ll /* 0xfffff80000000001 */ , + {{6, 1, 43}, /* shli r2, r1, 43 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-8796093022206ll /* 0xfffff80000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8796093022205ll /* 0xfffff80000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8796093022204ll /* 0xfffff80000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8796093022203ll /* 0xfffff80000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8796093022200ll /* 0xfffff80000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8796093022199ll /* 0xfffff80000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 43}, /* shli r3, r1, 43 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-6597069766657ll /* 0xfffff9ffffffffff */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4398046511112ll /* 0xfffffbfffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 42}, /* shli r3, r2, 42 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-4398046511111ll /* 0xfffffbfffffffff9 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-4398046511108ll /* 0xfffffbfffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 42}, /* shli r3, r2, 42 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-4398046511107ll /* 0xfffffbfffffffffd */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-4398046511106ll /* 0xfffffbfffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 42}, /* shli r3, r2, 42 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-4398046511105ll /* 0xfffffbffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4398046511104ll /* 0xfffffc0000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 42}} /* shli r3, r2, 42 */ + }, + {-4398046511103ll /* 0xfffffc0000000001 */ , + {{6, 1, 42}, /* shli r2, r1, 42 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-4398046511102ll /* 0xfffffc0000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4398046511101ll /* 0xfffffc0000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4398046511100ll /* 0xfffffc0000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4398046511099ll /* 0xfffffc0000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4398046511096ll /* 0xfffffc0000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4398046511095ll /* 0xfffffc0000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 42}, /* shli r3, r1, 42 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-3298534883329ll /* 0xfffffcffffffffff */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2199023255560ll /* 0xfffffdfffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 41}, /* shli r3, r2, 41 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-2199023255559ll /* 0xfffffdfffffffff9 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-2199023255556ll /* 0xfffffdfffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 41}, /* shli r3, r2, 41 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-2199023255555ll /* 0xfffffdfffffffffd */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-2199023255554ll /* 0xfffffdfffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 41}, /* shli r3, r2, 41 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-2199023255553ll /* 0xfffffdffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2199023255552ll /* 0xfffffe0000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 41}} /* shli r3, r2, 41 */ + }, + {-2199023255551ll /* 0xfffffe0000000001 */ , + {{6, 1, 41}, /* shli r2, r1, 41 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-2199023255550ll /* 0xfffffe0000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2199023255549ll /* 0xfffffe0000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2199023255548ll /* 0xfffffe0000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2199023255547ll /* 0xfffffe0000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2199023255544ll /* 0xfffffe0000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2199023255543ll /* 0xfffffe0000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 41}, /* shli r3, r1, 41 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1649267441665ll /* 0xfffffe7fffffffff */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1099511627784ll /* 0xfffffefffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 40}, /* shli r3, r2, 40 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-1099511627783ll /* 0xfffffefffffffff9 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-1099511627780ll /* 0xfffffefffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 40}, /* shli r3, r2, 40 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-1099511627779ll /* 0xfffffefffffffffd */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-1099511627778ll /* 0xfffffefffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 40}, /* shli r3, r2, 40 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-1099511627777ll /* 0xfffffeffffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1099511627776ll /* 0xffffff0000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 40}} /* shli r3, r2, 40 */ + }, + {-1099511627775ll /* 0xffffff0000000001 */ , + {{6, 1, 40}, /* shli r2, r1, 40 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-1099511627774ll /* 0xffffff0000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1099511627773ll /* 0xffffff0000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1099511627772ll /* 0xffffff0000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1099511627771ll /* 0xffffff0000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1099511627768ll /* 0xffffff0000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1099511627767ll /* 0xffffff0000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 40}, /* shli r3, r1, 40 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-824633720833ll /* 0xffffff3fffffffff */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-549755813896ll /* 0xffffff7ffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 39}, /* shli r3, r2, 39 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-549755813895ll /* 0xffffff7ffffffff9 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-549755813892ll /* 0xffffff7ffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 39}, /* shli r3, r2, 39 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-549755813891ll /* 0xffffff7ffffffffd */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-549755813890ll /* 0xffffff7ffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 39}, /* shli r3, r2, 39 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-549755813889ll /* 0xffffff7fffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-549755813888ll /* 0xffffff8000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 39}} /* shli r3, r2, 39 */ + }, + {-549755813887ll /* 0xffffff8000000001 */ , + {{6, 1, 39}, /* shli r2, r1, 39 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-549755813886ll /* 0xffffff8000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-549755813885ll /* 0xffffff8000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-549755813884ll /* 0xffffff8000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-549755813883ll /* 0xffffff8000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-549755813880ll /* 0xffffff8000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-549755813879ll /* 0xffffff8000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 39}, /* shli r3, r1, 39 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-412316860417ll /* 0xffffff9fffffffff */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-274877906952ll /* 0xffffffbffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 38}, /* shli r3, r2, 38 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-274877906951ll /* 0xffffffbffffffff9 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-274877906948ll /* 0xffffffbffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 38}, /* shli r3, r2, 38 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-274877906947ll /* 0xffffffbffffffffd */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-274877906946ll /* 0xffffffbffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 38}, /* shli r3, r2, 38 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-274877906945ll /* 0xffffffbfffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-274877906944ll /* 0xffffffc000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 38}} /* shli r3, r2, 38 */ + }, + {-274877906943ll /* 0xffffffc000000001 */ , + {{6, 1, 38}, /* shli r2, r1, 38 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-274877906942ll /* 0xffffffc000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-274877906941ll /* 0xffffffc000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-274877906940ll /* 0xffffffc000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-274877906939ll /* 0xffffffc000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-274877906936ll /* 0xffffffc000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-274877906935ll /* 0xffffffc000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 38}, /* shli r3, r1, 38 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-206158430209ll /* 0xffffffcfffffffff */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-137438953480ll /* 0xffffffdffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 37}, /* shli r3, r2, 37 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-137438953479ll /* 0xffffffdffffffff9 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-137438953476ll /* 0xffffffdffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 37}, /* shli r3, r2, 37 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-137438953475ll /* 0xffffffdffffffffd */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-137438953474ll /* 0xffffffdffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 37}, /* shli r3, r2, 37 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-137438953473ll /* 0xffffffdfffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-137438953472ll /* 0xffffffe000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 37}} /* shli r3, r2, 37 */ + }, + {-137438953471ll /* 0xffffffe000000001 */ , + {{6, 1, 37}, /* shli r2, r1, 37 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-137438953470ll /* 0xffffffe000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-137438953469ll /* 0xffffffe000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-137438953468ll /* 0xffffffe000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-137438953467ll /* 0xffffffe000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-137438953464ll /* 0xffffffe000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-137438953463ll /* 0xffffffe000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 37}, /* shli r3, r1, 37 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-103079215105ll /* 0xffffffe7ffffffff */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-68719476744ll /* 0xffffffeffffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 36}, /* shli r3, r2, 36 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-68719476743ll /* 0xffffffeffffffff9 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-68719476740ll /* 0xffffffeffffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 36}, /* shli r3, r2, 36 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-68719476739ll /* 0xffffffeffffffffd */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-68719476738ll /* 0xffffffeffffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 36}, /* shli r3, r2, 36 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-68719476737ll /* 0xffffffefffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-68719476736ll /* 0xfffffff000000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 36}} /* shli r3, r2, 36 */ + }, + {-68719476735ll /* 0xfffffff000000001 */ , + {{6, 1, 36}, /* shli r2, r1, 36 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-68719476734ll /* 0xfffffff000000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-68719476733ll /* 0xfffffff000000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-68719476732ll /* 0xfffffff000000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-68719476731ll /* 0xfffffff000000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-68719476728ll /* 0xfffffff000000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-68719476727ll /* 0xfffffff000000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 36}, /* shli r3, r1, 36 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-51539607553ll /* 0xfffffff3ffffffff */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-34359738376ll /* 0xfffffff7fffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 35}, /* shli r3, r2, 35 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-34359738375ll /* 0xfffffff7fffffff9 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-34359738372ll /* 0xfffffff7fffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 35}, /* shli r3, r2, 35 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-34359738371ll /* 0xfffffff7fffffffd */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-34359738370ll /* 0xfffffff7fffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 35}, /* shli r3, r2, 35 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-34359738369ll /* 0xfffffff7ffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-34359738368ll /* 0xfffffff800000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 35}} /* shli r3, r2, 35 */ + }, + {-34359738367ll /* 0xfffffff800000001 */ , + {{6, 1, 35}, /* shli r2, r1, 35 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-34359738366ll /* 0xfffffff800000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-34359738365ll /* 0xfffffff800000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-34359738364ll /* 0xfffffff800000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-34359738363ll /* 0xfffffff800000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-34359738360ll /* 0xfffffff800000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-34359738359ll /* 0xfffffff800000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 35}, /* shli r3, r1, 35 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-25769803777ll /* 0xfffffff9ffffffff */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-17179869192ll /* 0xfffffffbfffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 34}, /* shli r3, r2, 34 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-17179869191ll /* 0xfffffffbfffffff9 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-17179869188ll /* 0xfffffffbfffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 34}, /* shli r3, r2, 34 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-17179869187ll /* 0xfffffffbfffffffd */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-17179869186ll /* 0xfffffffbfffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 34}, /* shli r3, r2, 34 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-17179869185ll /* 0xfffffffbffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-17179869184ll /* 0xfffffffc00000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 34}} /* shli r3, r2, 34 */ + }, + {-17179869183ll /* 0xfffffffc00000001 */ , + {{6, 1, 34}, /* shli r2, r1, 34 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-17179869182ll /* 0xfffffffc00000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-17179869181ll /* 0xfffffffc00000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-17179869180ll /* 0xfffffffc00000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-17179869179ll /* 0xfffffffc00000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-17179869176ll /* 0xfffffffc00000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-17179869175ll /* 0xfffffffc00000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 34}, /* shli r3, r1, 34 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-12884901889ll /* 0xfffffffcffffffff */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8589934600ll /* 0xfffffffdfffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 33}, /* shli r3, r2, 33 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-8589934599ll /* 0xfffffffdfffffff9 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-8589934596ll /* 0xfffffffdfffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 33}, /* shli r3, r2, 33 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-8589934595ll /* 0xfffffffdfffffffd */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-8589934594ll /* 0xfffffffdfffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 33}, /* shli r3, r2, 33 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-8589934593ll /* 0xfffffffdffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8589934592ll /* 0xfffffffe00000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 33}} /* shli r3, r2, 33 */ + }, + {-8589934591ll /* 0xfffffffe00000001 */ , + {{6, 1, 33}, /* shli r2, r1, 33 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-8589934590ll /* 0xfffffffe00000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8589934589ll /* 0xfffffffe00000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8589934588ll /* 0xfffffffe00000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8589934587ll /* 0xfffffffe00000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8589934584ll /* 0xfffffffe00000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8589934583ll /* 0xfffffffe00000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 33}, /* shli r3, r1, 33 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-6442450945ll /* 0xfffffffe7fffffff */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4294967304ll /* 0xfffffffefffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 32}, /* shli r3, r2, 32 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-4294967303ll /* 0xfffffffefffffff9 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-4294967300ll /* 0xfffffffefffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 32}, /* shli r3, r2, 32 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-4294967299ll /* 0xfffffffefffffffd */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-4294967298ll /* 0xfffffffefffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 32}, /* shli r3, r2, 32 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-4294967297ll /* 0xfffffffeffffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4294967296ll /* 0xffffffff00000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 32}} /* shli r3, r2, 32 */ + }, + {-4294967295ll /* 0xffffffff00000001 */ , + {{6, 1, 32}, /* shli r2, r1, 32 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-4294967294ll /* 0xffffffff00000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4294967293ll /* 0xffffffff00000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4294967292ll /* 0xffffffff00000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4294967291ll /* 0xffffffff00000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4294967288ll /* 0xffffffff00000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4294967287ll /* 0xffffffff00000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 32}, /* shli r3, r1, 32 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-3221225473ll /* 0xffffffff3fffffff */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2147483656ll /* 0xffffffff7ffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 31}, /* shli r3, r2, 31 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-2147483655ll /* 0xffffffff7ffffff9 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-2147483652ll /* 0xffffffff7ffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 31}, /* shli r3, r2, 31 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-2147483651ll /* 0xffffffff7ffffffd */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-2147483650ll /* 0xffffffff7ffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 31}, /* shli r3, r2, 31 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-2147483649ll /* 0xffffffff7fffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2147483648ll /* 0xffffffff80000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 31}} /* shli r3, r2, 31 */ + }, + {-2147483647ll /* 0xffffffff80000001 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-2147483646ll /* 0xffffffff80000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2147483645ll /* 0xffffffff80000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2147483644ll /* 0xffffffff80000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2147483643ll /* 0xffffffff80000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2147483640ll /* 0xffffffff80000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2147483639ll /* 0xffffffff80000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1610612737ll /* 0xffffffff9fffffff */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1073741832ll /* 0xffffffffbffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 30}, /* shli r3, r2, 30 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-1073741831ll /* 0xffffffffbffffff9 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-1073741828ll /* 0xffffffffbffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 30}, /* shli r3, r2, 30 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-1073741827ll /* 0xffffffffbffffffd */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-1073741826ll /* 0xffffffffbffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 30}, /* shli r3, r2, 30 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-1073741825ll /* 0xffffffffbfffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1073741824ll /* 0xffffffffc0000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 30}} /* shli r3, r2, 30 */ + }, + {-1073741823ll /* 0xffffffffc0000001 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-1073741822ll /* 0xffffffffc0000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1073741821ll /* 0xffffffffc0000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1073741820ll /* 0xffffffffc0000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1073741819ll /* 0xffffffffc0000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1073741816ll /* 0xffffffffc0000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1073741815ll /* 0xffffffffc0000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-805306369ll /* 0xffffffffcfffffff */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-536870920ll /* 0xffffffffdffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 29}, /* shli r3, r2, 29 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-536870919ll /* 0xffffffffdffffff9 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-536870916ll /* 0xffffffffdffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 29}, /* shli r3, r2, 29 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-536870915ll /* 0xffffffffdffffffd */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-536870914ll /* 0xffffffffdffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 29}, /* shli r3, r2, 29 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-536870913ll /* 0xffffffffdfffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-536870912ll /* 0xffffffffe0000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 29}} /* shli r3, r2, 29 */ + }, + {-536870911ll /* 0xffffffffe0000001 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-536870910ll /* 0xffffffffe0000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-536870909ll /* 0xffffffffe0000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-536870908ll /* 0xffffffffe0000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-536870907ll /* 0xffffffffe0000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-536870904ll /* 0xffffffffe0000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-536870903ll /* 0xffffffffe0000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-402653185ll /* 0xffffffffe7ffffff */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-268435464ll /* 0xffffffffeffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 28}, /* shli r3, r2, 28 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-268435463ll /* 0xffffffffeffffff9 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-268435460ll /* 0xffffffffeffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 28}, /* shli r3, r2, 28 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-268435459ll /* 0xffffffffeffffffd */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-268435458ll /* 0xffffffffeffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 28}, /* shli r3, r2, 28 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-268435457ll /* 0xffffffffefffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-268435456ll /* 0xfffffffff0000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 28}} /* shli r3, r2, 28 */ + }, + {-268435455ll /* 0xfffffffff0000001 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-268435454ll /* 0xfffffffff0000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-268435453ll /* 0xfffffffff0000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-268435452ll /* 0xfffffffff0000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-268435451ll /* 0xfffffffff0000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-268435448ll /* 0xfffffffff0000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-268435447ll /* 0xfffffffff0000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-201326593ll /* 0xfffffffff3ffffff */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-134217736ll /* 0xfffffffff7fffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 27}, /* shli r3, r2, 27 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-134217735ll /* 0xfffffffff7fffff9 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-134217732ll /* 0xfffffffff7fffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 27}, /* shli r3, r2, 27 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-134217731ll /* 0xfffffffff7fffffd */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-134217730ll /* 0xfffffffff7fffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 27}, /* shli r3, r2, 27 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-134217729ll /* 0xfffffffff7ffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-134217728ll /* 0xfffffffff8000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 27}} /* shli r3, r2, 27 */ + }, + {-134217727ll /* 0xfffffffff8000001 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-134217726ll /* 0xfffffffff8000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-134217725ll /* 0xfffffffff8000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-134217724ll /* 0xfffffffff8000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-134217723ll /* 0xfffffffff8000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-134217720ll /* 0xfffffffff8000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-134217719ll /* 0xfffffffff8000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-100663297ll /* 0xfffffffff9ffffff */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-67108872ll /* 0xfffffffffbfffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 26}, /* shli r3, r2, 26 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-67108871ll /* 0xfffffffffbfffff9 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-67108868ll /* 0xfffffffffbfffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 26}, /* shli r3, r2, 26 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-67108867ll /* 0xfffffffffbfffffd */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-67108866ll /* 0xfffffffffbfffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 26}, /* shli r3, r2, 26 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-67108865ll /* 0xfffffffffbffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-67108864ll /* 0xfffffffffc000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 26}} /* shli r3, r2, 26 */ + }, + {-67108863ll /* 0xfffffffffc000001 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-67108862ll /* 0xfffffffffc000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-67108861ll /* 0xfffffffffc000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-67108860ll /* 0xfffffffffc000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-67108859ll /* 0xfffffffffc000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-67108856ll /* 0xfffffffffc000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-67108855ll /* 0xfffffffffc000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-50331649ll /* 0xfffffffffcffffff */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-33554440ll /* 0xfffffffffdfffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 25}, /* shli r3, r2, 25 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-33554439ll /* 0xfffffffffdfffff9 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-33554436ll /* 0xfffffffffdfffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 25}, /* shli r3, r2, 25 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-33554435ll /* 0xfffffffffdfffffd */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-33554434ll /* 0xfffffffffdfffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 25}, /* shli r3, r2, 25 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-33554433ll /* 0xfffffffffdffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-33554432ll /* 0xfffffffffe000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 25}} /* shli r3, r2, 25 */ + }, + {-33554431ll /* 0xfffffffffe000001 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-33554430ll /* 0xfffffffffe000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-33554429ll /* 0xfffffffffe000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-33554428ll /* 0xfffffffffe000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-33554427ll /* 0xfffffffffe000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-33554424ll /* 0xfffffffffe000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-33554423ll /* 0xfffffffffe000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-25165825ll /* 0xfffffffffe7fffff */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16777224ll /* 0xfffffffffefffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 24}, /* shli r3, r2, 24 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-16777223ll /* 0xfffffffffefffff9 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-16777220ll /* 0xfffffffffefffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 24}, /* shli r3, r2, 24 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-16777219ll /* 0xfffffffffefffffd */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-16777218ll /* 0xfffffffffefffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 24}, /* shli r3, r2, 24 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-16777217ll /* 0xfffffffffeffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16777216ll /* 0xffffffffff000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 24}} /* shli r3, r2, 24 */ + }, + {-16777215ll /* 0xffffffffff000001 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-16777214ll /* 0xffffffffff000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16777213ll /* 0xffffffffff000003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16777212ll /* 0xffffffffff000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16777211ll /* 0xffffffffff000005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16777208ll /* 0xffffffffff000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16777207ll /* 0xffffffffff000009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-12582913ll /* 0xffffffffff3fffff */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8388616ll /* 0xffffffffff7ffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 23}, /* shli r3, r2, 23 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-8388615ll /* 0xffffffffff7ffff9 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-8388612ll /* 0xffffffffff7ffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 23}, /* shli r3, r2, 23 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-8388611ll /* 0xffffffffff7ffffd */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-8388610ll /* 0xffffffffff7ffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 23}, /* shli r3, r2, 23 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-8388609ll /* 0xffffffffff7fffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8388608ll /* 0xffffffffff800000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 23}} /* shli r3, r2, 23 */ + }, + {-8388607ll /* 0xffffffffff800001 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-8388606ll /* 0xffffffffff800002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8388605ll /* 0xffffffffff800003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8388604ll /* 0xffffffffff800004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8388603ll /* 0xffffffffff800005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8388600ll /* 0xffffffffff800008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8388599ll /* 0xffffffffff800009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-6291457ll /* 0xffffffffff9fffff */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4194312ll /* 0xffffffffffbffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 22}, /* shli r3, r2, 22 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-4194311ll /* 0xffffffffffbffff9 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-4194308ll /* 0xffffffffffbffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 22}, /* shli r3, r2, 22 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-4194307ll /* 0xffffffffffbffffd */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-4194306ll /* 0xffffffffffbffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 22}, /* shli r3, r2, 22 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-4194305ll /* 0xffffffffffbfffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4194304ll /* 0xffffffffffc00000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 22}} /* shli r3, r2, 22 */ + }, + {-4194303ll /* 0xffffffffffc00001 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-4194302ll /* 0xffffffffffc00002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4194301ll /* 0xffffffffffc00003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4194300ll /* 0xffffffffffc00004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4194299ll /* 0xffffffffffc00005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4194296ll /* 0xffffffffffc00008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4194295ll /* 0xffffffffffc00009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-3145729ll /* 0xffffffffffcfffff */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2097160ll /* 0xffffffffffdffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 21}, /* shli r3, r2, 21 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-2097159ll /* 0xffffffffffdffff9 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-2097156ll /* 0xffffffffffdffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 21}, /* shli r3, r2, 21 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-2097155ll /* 0xffffffffffdffffd */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-2097154ll /* 0xffffffffffdffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 21}, /* shli r3, r2, 21 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-2097153ll /* 0xffffffffffdfffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2097152ll /* 0xffffffffffe00000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 21}} /* shli r3, r2, 21 */ + }, + {-2097151ll /* 0xffffffffffe00001 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-2097150ll /* 0xffffffffffe00002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2097149ll /* 0xffffffffffe00003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2097148ll /* 0xffffffffffe00004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2097147ll /* 0xffffffffffe00005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2097144ll /* 0xffffffffffe00008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2097143ll /* 0xffffffffffe00009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1572865ll /* 0xffffffffffe7ffff */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1048584ll /* 0xffffffffffeffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 20}, /* shli r3, r2, 20 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-1048583ll /* 0xffffffffffeffff9 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-1048580ll /* 0xffffffffffeffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 20}, /* shli r3, r2, 20 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-1048579ll /* 0xffffffffffeffffd */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-1048578ll /* 0xffffffffffeffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 20}, /* shli r3, r2, 20 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-1048577ll /* 0xffffffffffefffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1048576ll /* 0xfffffffffff00000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 20}} /* shli r3, r2, 20 */ + }, + {-1048575ll /* 0xfffffffffff00001 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-1048574ll /* 0xfffffffffff00002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1048573ll /* 0xfffffffffff00003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1048572ll /* 0xfffffffffff00004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1048571ll /* 0xfffffffffff00005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1048568ll /* 0xfffffffffff00008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1048567ll /* 0xfffffffffff00009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-786433ll /* 0xfffffffffff3ffff */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-524296ll /* 0xfffffffffff7fff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 19}, /* shli r3, r2, 19 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-524295ll /* 0xfffffffffff7fff9 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-524292ll /* 0xfffffffffff7fffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 19}, /* shli r3, r2, 19 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-524291ll /* 0xfffffffffff7fffd */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-524290ll /* 0xfffffffffff7fffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 19}, /* shli r3, r2, 19 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-524289ll /* 0xfffffffffff7ffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-524288ll /* 0xfffffffffff80000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 19}} /* shli r3, r2, 19 */ + }, + {-524287ll /* 0xfffffffffff80001 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-524286ll /* 0xfffffffffff80002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-524285ll /* 0xfffffffffff80003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-524284ll /* 0xfffffffffff80004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-524283ll /* 0xfffffffffff80005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-524280ll /* 0xfffffffffff80008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-524279ll /* 0xfffffffffff80009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-393217ll /* 0xfffffffffff9ffff */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-262152ll /* 0xfffffffffffbfff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 18}, /* shli r3, r2, 18 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-262151ll /* 0xfffffffffffbfff9 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-262148ll /* 0xfffffffffffbfffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 18}, /* shli r3, r2, 18 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-262147ll /* 0xfffffffffffbfffd */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-262146ll /* 0xfffffffffffbfffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 18}, /* shli r3, r2, 18 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-262145ll /* 0xfffffffffffbffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-262144ll /* 0xfffffffffffc0000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 18}} /* shli r3, r2, 18 */ + }, + {-262143ll /* 0xfffffffffffc0001 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-262142ll /* 0xfffffffffffc0002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-262141ll /* 0xfffffffffffc0003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-262140ll /* 0xfffffffffffc0004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-262139ll /* 0xfffffffffffc0005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-262136ll /* 0xfffffffffffc0008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-262135ll /* 0xfffffffffffc0009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-196609ll /* 0xfffffffffffcffff */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-131080ll /* 0xfffffffffffdfff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 17}, /* shli r3, r2, 17 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-131079ll /* 0xfffffffffffdfff9 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-131076ll /* 0xfffffffffffdfffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 17}, /* shli r3, r2, 17 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-131075ll /* 0xfffffffffffdfffd */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-131074ll /* 0xfffffffffffdfffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 17}, /* shli r3, r2, 17 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-131073ll /* 0xfffffffffffdffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-131072ll /* 0xfffffffffffe0000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 17}} /* shli r3, r2, 17 */ + }, + {-131071ll /* 0xfffffffffffe0001 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-131070ll /* 0xfffffffffffe0002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-131069ll /* 0xfffffffffffe0003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-131068ll /* 0xfffffffffffe0004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-131067ll /* 0xfffffffffffe0005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-131064ll /* 0xfffffffffffe0008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-131063ll /* 0xfffffffffffe0009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-98305ll /* 0xfffffffffffe7fff */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-65544ll /* 0xfffffffffffefff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 16}, /* shli r3, r2, 16 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-65543ll /* 0xfffffffffffefff9 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-65540ll /* 0xfffffffffffefffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 16}, /* shli r3, r2, 16 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-65539ll /* 0xfffffffffffefffd */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-65538ll /* 0xfffffffffffefffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 16}, /* shli r3, r2, 16 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-65537ll /* 0xfffffffffffeffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-65536ll /* 0xffffffffffff0000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 16}} /* shli r3, r2, 16 */ + }, + {-65535ll /* 0xffffffffffff0001 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-65534ll /* 0xffffffffffff0002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-65533ll /* 0xffffffffffff0003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-65532ll /* 0xffffffffffff0004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-65531ll /* 0xffffffffffff0005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-65528ll /* 0xffffffffffff0008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-65527ll /* 0xffffffffffff0009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-49153ll /* 0xffffffffffff3fff */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-32776ll /* 0xffffffffffff7ff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 15}, /* shli r3, r2, 15 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-32775ll /* 0xffffffffffff7ff9 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-32772ll /* 0xffffffffffff7ffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 15}, /* shli r3, r2, 15 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-32771ll /* 0xffffffffffff7ffd */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-32770ll /* 0xffffffffffff7ffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 15}, /* shli r3, r2, 15 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-32769ll /* 0xffffffffffff7fff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-32768ll /* 0xffffffffffff8000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 15}} /* shli r3, r2, 15 */ + }, + {-32767ll /* 0xffffffffffff8001 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-32766ll /* 0xffffffffffff8002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-32765ll /* 0xffffffffffff8003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-32764ll /* 0xffffffffffff8004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-32763ll /* 0xffffffffffff8005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-32760ll /* 0xffffffffffff8008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-32759ll /* 0xffffffffffff8009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-24577ll /* 0xffffffffffff9fff */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16392ll /* 0xffffffffffffbff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 14}, /* shli r3, r2, 14 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-16391ll /* 0xffffffffffffbff9 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-16388ll /* 0xffffffffffffbffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 14}, /* shli r3, r2, 14 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-16387ll /* 0xffffffffffffbffd */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-16386ll /* 0xffffffffffffbffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 14}, /* shli r3, r2, 14 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-16385ll /* 0xffffffffffffbfff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16384ll /* 0xffffffffffffc000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 14}} /* shli r3, r2, 14 */ + }, + {-16383ll /* 0xffffffffffffc001 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-16382ll /* 0xffffffffffffc002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16381ll /* 0xffffffffffffc003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16380ll /* 0xffffffffffffc004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16379ll /* 0xffffffffffffc005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16376ll /* 0xffffffffffffc008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16375ll /* 0xffffffffffffc009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-12289ll /* 0xffffffffffffcfff */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8200ll /* 0xffffffffffffdff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 13}, /* shli r3, r2, 13 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-8199ll /* 0xffffffffffffdff9 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-8196ll /* 0xffffffffffffdffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 13}, /* shli r3, r2, 13 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-8195ll /* 0xffffffffffffdffd */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-8194ll /* 0xffffffffffffdffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 13}, /* shli r3, r2, 13 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-8193ll /* 0xffffffffffffdfff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8192ll /* 0xffffffffffffe000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 13}} /* shli r3, r2, 13 */ + }, + {-8191ll /* 0xffffffffffffe001 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-8190ll /* 0xffffffffffffe002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8189ll /* 0xffffffffffffe003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8188ll /* 0xffffffffffffe004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8187ll /* 0xffffffffffffe005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8184ll /* 0xffffffffffffe008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8183ll /* 0xffffffffffffe009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-6145ll /* 0xffffffffffffe7ff */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4104ll /* 0xffffffffffffeff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 12}, /* shli r3, r2, 12 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-4103ll /* 0xffffffffffffeff9 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-4100ll /* 0xffffffffffffeffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 12}, /* shli r3, r2, 12 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-4099ll /* 0xffffffffffffeffd */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-4098ll /* 0xffffffffffffeffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 12}, /* shli r3, r2, 12 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-4097ll /* 0xffffffffffffefff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4096ll /* 0xfffffffffffff000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 12}} /* shli r3, r2, 12 */ + }, + {-4095ll /* 0xfffffffffffff001 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-4094ll /* 0xfffffffffffff002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4093ll /* 0xfffffffffffff003 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4092ll /* 0xfffffffffffff004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4091ll /* 0xfffffffffffff005 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4088ll /* 0xfffffffffffff008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4087ll /* 0xfffffffffffff009 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-3073ll /* 0xfffffffffffff3ff */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-3072ll /* 0xfffffffffffff400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2056ll /* 0xfffffffffffff7f8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 11}, /* shli r3, r2, 11 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-2055ll /* 0xfffffffffffff7f9 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-2052ll /* 0xfffffffffffff7fc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 11}, /* shli r3, r2, 11 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-2051ll /* 0xfffffffffffff7fd */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-2050ll /* 0xfffffffffffff7fe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 11}, /* shli r3, r2, 11 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-2049ll /* 0xfffffffffffff7ff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2048ll /* 0xfffffffffffff800 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 11}} /* shli r3, r2, 11 */ + }, + {-2047ll /* 0xfffffffffffff801 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-2046ll /* 0xfffffffffffff802 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2045ll /* 0xfffffffffffff803 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2044ll /* 0xfffffffffffff804 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2043ll /* 0xfffffffffffff805 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2040ll /* 0xfffffffffffff808 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2039ll /* 0xfffffffffffff809 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1537ll /* 0xfffffffffffff9ff */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1032ll /* 0xfffffffffffffbf8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 10}, /* shli r3, r2, 10 */ + {5, 2, 3}} /* shl3add r4, r2, r3 */ + }, + {-1031ll /* 0xfffffffffffffbf9 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-1028ll /* 0xfffffffffffffbfc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 10}, /* shli r3, r2, 10 */ + {4, 2, 3}} /* shl2add r4, r2, r3 */ + }, + {-1027ll /* 0xfffffffffffffbfd */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-1026ll /* 0xfffffffffffffbfe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 10}, /* shli r3, r2, 10 */ + {3, 2, 3}} /* shl1add r4, r2, r3 */ + }, + {-1025ll /* 0xfffffffffffffbff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1024ll /* 0xfffffffffffffc00 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 10}} /* shli r3, r2, 10 */ + }, + {-1023ll /* 0xfffffffffffffc01 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-1022ll /* 0xfffffffffffffc02 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1021ll /* 0xfffffffffffffc03 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1020ll /* 0xfffffffffffffc04 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1019ll /* 0xfffffffffffffc05 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1018ll /* 0xfffffffffffffc06 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-1017ll /* 0xfffffffffffffc07 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-1016ll /* 0xfffffffffffffc08 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1015ll /* 0xfffffffffffffc09 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1014ll /* 0xfffffffffffffc0a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-1013ll /* 0xfffffffffffffc0b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-1012ll /* 0xfffffffffffffc0c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-1011ll /* 0xfffffffffffffc0d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {-1010ll /* 0xfffffffffffffc0e */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {3, 1, 3}, /* shl1add r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-1009ll /* 0xfffffffffffffc0f */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-1008ll /* 0xfffffffffffffc10 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1007ll /* 0xfffffffffffffc11 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-1006ll /* 0xfffffffffffffc12 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-1005ll /* 0xfffffffffffffc13 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 1}} /* shl1add r5, r4, r1 */ + }, + {-1004ll /* 0xfffffffffffffc14 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-1003ll /* 0xfffffffffffffc15 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {-1001ll /* 0xfffffffffffffc17 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-1000ll /* 0xfffffffffffffc18 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {-999ll /* 0xfffffffffffffc19 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 1}} /* shl3add r5, r4, r1 */ + }, + {-997ll /* 0xfffffffffffffc1b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-996ll /* 0xfffffffffffffc1c */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {4, 1, 3}, /* shl2add r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-994ll /* 0xfffffffffffffc1e */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {3, 1, 3}, /* shl1add r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-993ll /* 0xfffffffffffffc1f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-992ll /* 0xfffffffffffffc20 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-991ll /* 0xfffffffffffffc21 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-990ll /* 0xfffffffffffffc22 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-988ll /* 0xfffffffffffffc24 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-987ll /* 0xfffffffffffffc25 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {-984ll /* 0xfffffffffffffc28 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {-983ll /* 0xfffffffffffffc29 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 1}} /* shl3add r5, r4, r1 */ + }, + {-979ll /* 0xfffffffffffffc2d */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-976ll /* 0xfffffffffffffc30 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {-975ll /* 0xfffffffffffffc31 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {-969ll /* 0xfffffffffffffc37 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-968ll /* 0xfffffffffffffc38 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {5, 1, 3}, /* shl3add r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-967ll /* 0xfffffffffffffc39 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-965ll /* 0xfffffffffffffc3b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-964ll /* 0xfffffffffffffc3c */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {4, 1, 3}, /* shl2add r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-963ll /* 0xfffffffffffffc3d */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {3, 3, 1}, /* shl1add r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-962ll /* 0xfffffffffffffc3e */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {3, 1, 3}, /* shl1add r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-961ll /* 0xfffffffffffffc3f */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-960ll /* 0xfffffffffffffc40 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-959ll /* 0xfffffffffffffc41 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-958ll /* 0xfffffffffffffc42 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-957ll /* 0xfffffffffffffc43 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-956ll /* 0xfffffffffffffc44 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-955ll /* 0xfffffffffffffc45 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 4}} /* shl2add r5, r4, r4 */ + }, + {-953ll /* 0xfffffffffffffc47 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-952ll /* 0xfffffffffffffc48 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {-951ll /* 0xfffffffffffffc49 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 1}} /* shl3add r5, r4, r1 */ + }, + {-945ll /* 0xfffffffffffffc4f */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {-944ll /* 0xfffffffffffffc50 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {-943ll /* 0xfffffffffffffc51 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-942ll /* 0xfffffffffffffc52 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {-940ll /* 0xfffffffffffffc54 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-936ll /* 0xfffffffffffffc58 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-935ll /* 0xfffffffffffffc59 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-929ll /* 0xfffffffffffffc5f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-928ll /* 0xfffffffffffffc60 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {-925ll /* 0xfffffffffffffc63 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-924ll /* 0xfffffffffffffc64 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {-920ll /* 0xfffffffffffffc68 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-919ll /* 0xfffffffffffffc69 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-916ll /* 0xfffffffffffffc6c */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-913ll /* 0xfffffffffffffc6f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-912ll /* 0xfffffffffffffc70 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-911ll /* 0xfffffffffffffc71 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-910ll /* 0xfffffffffffffc72 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {-905ll /* 0xfffffffffffffc77 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-904ll /* 0xfffffffffffffc78 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-903ll /* 0xfffffffffffffc79 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {-902ll /* 0xfffffffffffffc7a */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-901ll /* 0xfffffffffffffc7b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-900ll /* 0xfffffffffffffc7c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-899ll /* 0xfffffffffffffc7d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-898ll /* 0xfffffffffffffc7e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-897ll /* 0xfffffffffffffc7f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-896ll /* 0xfffffffffffffc80 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-895ll /* 0xfffffffffffffc81 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-894ll /* 0xfffffffffffffc82 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-893ll /* 0xfffffffffffffc83 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {5, 2, 1}, /* shl3add r4, r2, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-892ll /* 0xfffffffffffffc84 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-891ll /* 0xfffffffffffffc85 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-890ll /* 0xfffffffffffffc86 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-889ll /* 0xfffffffffffffc87 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {-888ll /* 0xfffffffffffffc88 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 2}} /* shl3add r4, r3, r2 */ + }, + {-887ll /* 0xfffffffffffffc89 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-886ll /* 0xfffffffffffffc8a */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 1, 2}, /* shl1add r4, r1, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {-884ll /* 0xfffffffffffffc8c */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 1, 2}, /* shl2add r4, r1, r2 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {-881ll /* 0xfffffffffffffc8f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-880ll /* 0xfffffffffffffc90 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-879ll /* 0xfffffffffffffc91 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {3, 4, 1}} /* shl1add r5, r4, r1 */ + }, + {-873ll /* 0xfffffffffffffc97 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-872ll /* 0xfffffffffffffc98 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-868ll /* 0xfffffffffffffc9c */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {-865ll /* 0xfffffffffffffc9f */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-864ll /* 0xfffffffffffffca0 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {-863ll /* 0xfffffffffffffca1 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-861ll /* 0xfffffffffffffca3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-860ll /* 0xfffffffffffffca4 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-856ll /* 0xfffffffffffffca8 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-855ll /* 0xfffffffffffffca9 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {-847ll /* 0xfffffffffffffcb1 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-837ll /* 0xfffffffffffffcbb */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-835ll /* 0xfffffffffffffcbd */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-834ll /* 0xfffffffffffffcbe */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 2}} /* shl1add r5, r4, r2 */ + }, + {-832ll /* 0xfffffffffffffcc0 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 6}} /* shli r5, r4, 6 */ + }, + {-831ll /* 0xfffffffffffffcc1 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-829ll /* 0xfffffffffffffcc3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-828ll /* 0xfffffffffffffcc4 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-827ll /* 0xfffffffffffffcc5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-824ll /* 0xfffffffffffffcc8 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 3}} /* shl3add r5, r4, r3 */ + }, + {-823ll /* 0xfffffffffffffcc9 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-819ll /* 0xfffffffffffffccd */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-816ll /* 0xfffffffffffffcd0 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-815ll /* 0xfffffffffffffcd1 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-803ll /* 0xfffffffffffffcdd */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-801ll /* 0xfffffffffffffcdf */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-800ll /* 0xfffffffffffffce0 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-799ll /* 0xfffffffffffffce1 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-797ll /* 0xfffffffffffffce3 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-796ll /* 0xfffffffffffffce4 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {-795ll /* 0xfffffffffffffce5 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-793ll /* 0xfffffffffffffce7 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-792ll /* 0xfffffffffffffce8 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 8}, /* shli r4, r3, 8 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {-791ll /* 0xfffffffffffffce9 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-789ll /* 0xfffffffffffffceb */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-788ll /* 0xfffffffffffffcec */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-785ll /* 0xfffffffffffffcef */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-784ll /* 0xfffffffffffffcf0 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-783ll /* 0xfffffffffffffcf1 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {3, 3, 2}, /* shl1add r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-781ll /* 0xfffffffffffffcf3 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {4, 1, 2}, /* shl2add r3, r1, r2 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-780ll /* 0xfffffffffffffcf4 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 8}, /* shli r4, r3, 8 */ + {4, 3, 4}} /* shl2add r5, r3, r4 */ + }, + {-779ll /* 0xfffffffffffffcf5 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {4, 2, 3}, /* shl2add r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-777ll /* 0xfffffffffffffcf7 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-776ll /* 0xfffffffffffffcf8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-775ll /* 0xfffffffffffffcf9 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-774ll /* 0xfffffffffffffcfa */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 8}, /* shli r4, r3, 8 */ + {3, 3, 4}} /* shl1add r5, r3, r4 */ + }, + {-773ll /* 0xfffffffffffffcfb */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-772ll /* 0xfffffffffffffcfc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-771ll /* 0xfffffffffffffcfd */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 4}} /* shl1add r5, r4, r4 */ + }, + {-770ll /* 0xfffffffffffffcfe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-769ll /* 0xfffffffffffffcff */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-768ll /* 0xfffffffffffffd00 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-767ll /* 0xfffffffffffffd01 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-766ll /* 0xfffffffffffffd02 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-765ll /* 0xfffffffffffffd03 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-764ll /* 0xfffffffffffffd04 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}} /* shl2add r4, r3, r2 */ + }, + {-763ll /* 0xfffffffffffffd05 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-762ll /* 0xfffffffffffffd06 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-761ll /* 0xfffffffffffffd07 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-760ll /* 0xfffffffffffffd08 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-759ll /* 0xfffffffffffffd09 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-757ll /* 0xfffffffffffffd0b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-756ll /* 0xfffffffffffffd0c */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-755ll /* 0xfffffffffffffd0d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-753ll /* 0xfffffffffffffd0f */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-752ll /* 0xfffffffffffffd10 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-751ll /* 0xfffffffffffffd11 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {4, 4, 1}} /* shl2add r5, r4, r1 */ + }, + {-749ll /* 0xfffffffffffffd13 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 1, 3}, /* shl3add r4, r1, r3 */ + {3, 4, 3}} /* shl1add r5, r4, r3 */ + }, + {-748ll /* 0xfffffffffffffd14 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-744ll /* 0xfffffffffffffd18 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-743ll /* 0xfffffffffffffd19 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-741ll /* 0xfffffffffffffd1b */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-739ll /* 0xfffffffffffffd1d */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* shl3add r3, r2, r1 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-737ll /* 0xfffffffffffffd1f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-736ll /* 0xfffffffffffffd20 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {-735ll /* 0xfffffffffffffd21 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {5, 4, 1}} /* shl3add r5, r4, r1 */ + }, + {-732ll /* 0xfffffffffffffd24 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* shl2add r5, r4, r3 */ + }, + {-729ll /* 0xfffffffffffffd27 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {5, 3, 3}, /* shl3add r4, r3, r3 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {-728ll /* 0xfffffffffffffd28 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-720ll /* 0xfffffffffffffd30 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-719ll /* 0xfffffffffffffd31 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-715ll /* 0xfffffffffffffd35 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {5, 2, 2}, /* shl3add r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-712ll /* 0xfffffffffffffd38 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {5, 4, 2}} /* shl3add r5, r4, r2 */ + }, + {-711ll /* 0xfffffffffffffd39 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 4}} /* shl3add r5, r4, r4 */ + }, + {-708ll /* 0xfffffffffffffd3c */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {-707ll /* 0xfffffffffffffd3d */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 2, 1}, /* shl2add r3, r2, r1 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-705ll /* 0xfffffffffffffd3f */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {4, 3, 1}, /* shl2add r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-704ll /* 0xfffffffffffffd40 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 6}} /* shli r5, r4, 6 */ + }, + {-703ll /* 0xfffffffffffffd41 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-701ll /* 0xfffffffffffffd43 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {5, 1, 2}, /* shl3add r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-700ll /* 0xfffffffffffffd44 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 2}, /* shl1add r3, r2, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {-699ll /* 0xfffffffffffffd45 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-695ll /* 0xfffffffffffffd49 */ , + {{5, 1, 1}, /* shl3add r2, r1, r1 */ + {3, 1, 2}, /* shl1add r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-693ll /* 0xfffffffffffffd4b */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {3, 2, 1}, /* shl1add r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-692ll /* 0xfffffffffffffd4c */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 3, 3}, /* shl1add r4, r3, r3 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {-688ll /* 0xfffffffffffffd50 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}, /* shl2add r4, r3, r2 */ + {4, 4, 2}} /* shl2add r5, r4, r2 */ + }, + {-680ll /* 0xfffffffffffffd58 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* shl2add r3, r2, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {5, 3, 4}} /* shl3add r5, r3, r4 */ + }, + {-679ll /* 0xfffffffffffffd59 */ , + {{4, 1, 1}, /* shl2add r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {5, 2, 3}, /* shl3add r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-675ll /* 0xfffffffffffffd5d */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {5, 3, 2}, /* shl3add r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-673ll /* 0xfffffffffffffd5f */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {5, 3, 1}, /* shl3add r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-672ll /* 0xfffffffffffffd60 */ , + {{3, 1, 1}, /* shl1add r2, r1, r1 */ + {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/config/tilegx/predicates.md b/gcc/config/tilegx/predicates.md new file mode 100644 index 00000000000..5a493ff6df0 --- /dev/null +++ b/gcc/config/tilegx/predicates.md @@ -0,0 +1,293 @@ +;; Predicate definitions for Tilera TILE-Gx. +;; Copyright (C) 2011, 2012 +;; Free Software Foundation, Inc. +;; Contributed by Walter Lee (walt@tilera.com) +;; +;; This file is part of GCC. +;; +;; GCC is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 3, or (at your +;; option) any later version. +;; +;; GCC is distributed in the hope that it will be useful, but WITHOUT +;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +;; License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; <http://www.gnu.org/licenses/>. + +;; 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_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")))) + +;; 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_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")))) + +;; 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/config/tilegx/sync.md b/gcc/config/tilegx/sync.md new file mode 100644 index 00000000000..8be762af004 --- /dev/null +++ b/gcc/config/tilegx/sync.md @@ -0,0 +1,165 @@ +;; GCC machine description for Tilera TILE-Gx synchronization +;; instructions. +;; Copyright (C) 2011, 2012 +;; Free Software Foundation, Inc. +;; Contributed by Walter Lee (walt@tilera.com) +;; +;; This file is part of GCC. +;; +;; GCC is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 3, or (at your +;; option) any later version. +;; +;; GCC is distributed in the hope that it will be useful, but WITHOUT +;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +;; License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; <http://www.gnu.org/licenses/>. + +(define_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_L2")]) + + +(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_2cycle")]) + + +(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_pre_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_2cycle")]) + + +(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 + "" +{ + enum memmodel model = (enum memmodel) INTVAL (operands[3]); + + if (operands[2] != const0_rtx) + emit_move_insn (operands[2], gen_rtx_NEG (<MODE>mode, operands[2])); + + tilegx_pre_atomic_barrier (model); + emit_insn (gen_atomic_fetch_add_bare<mode> (operands[0], + operands[1], + operands[2])); + tilegx_pre_atomic_barrier (model); + DONE; +}) diff --git a/gcc/config/tilegx/t-tilegx b/gcc/config/tilegx/t-tilegx new file mode 100644 index 00000000000..4e3203cd1b7 --- /dev/null +++ b/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/config/tilegx/tilegx-builtins.h b/gcc/config/tilegx/tilegx-builtins.h new file mode 100644 index 00000000000..49067ae0b26 --- /dev/null +++ b/gcc/config/tilegx/tilegx-builtins.h @@ -0,0 +1,325 @@ +/* Enum for builtin intrinsics for TILE-Gx. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +#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_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/config/tilegx/tilegx-c.c b/gcc/config/tilegx/tilegx-c.c new file mode 100644 index 00000000000..9cb8f7af171 --- /dev/null +++ b/gcc/config/tilegx/tilegx-c.c @@ -0,0 +1,55 @@ +/* Definitions of C specific functions for TILE-Gx. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +#include "config.h" +#include "system.h" +#include "coretypes.h" +#include "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__"); + + TILEGX_CPU_CPP_ENDIAN_BUILTINS (); + GNU_USER_TARGET_OS_CPP_BUILTINS (); +} + + diff --git a/gcc/config/tilegx/tilegx-generic.md b/gcc/config/tilegx/tilegx-generic.md new file mode 100644 index 00000000000..970344aacf4 --- /dev/null +++ b/gcc/config/tilegx/tilegx-generic.md @@ -0,0 +1,112 @@ +;; Scheduling description for Tilera TILE-Gx chip. +;; Copyright (C) 2011, 2012 +;; Free Software Foundation, Inc. +;; Contributed by Walter Lee (walt@tilera.com) +;; +;; This file is part of GCC. +;; +;; GCC is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 3, or (at your +;; option) any later version. +;; +;; GCC is distributed in the hope that it will be useful, but WITHOUT +;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +;; License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; <http://www.gnu.org/licenses/>. + +(define_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_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/config/tilegx/tilegx-modes.def b/gcc/config/tilegx/tilegx-modes.def new file mode 100644 index 00000000000..47c959f7ba9 --- /dev/null +++ b/gcc/config/tilegx/tilegx-modes.def @@ -0,0 +1,38 @@ +/* TILE-Gx extra machine modes. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +/* 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/config/tilegx/tilegx-multiply.h b/gcc/config/tilegx/tilegx-multiply.h new file mode 100644 index 00000000000..7acba069736 --- /dev/null +++ b/gcc/config/tilegx/tilegx-multiply.h @@ -0,0 +1,79 @@ +/* Header for constant multiple table for TILE-Gx. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +#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/config/tilegx/tilegx-protos.h b/gcc/config/tilegx/tilegx-protos.h new file mode 100644 index 00000000000..56ce617e1f6 --- /dev/null +++ b/gcc/config/tilegx/tilegx-protos.h @@ -0,0 +1,74 @@ +/* Prototypes of target machine for TILE-Gx. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +#ifndef GCC_TILEGX_PROTOS_H +#define GCC_TILEGX_PROTOS_H + +extern void tilegx_init_expanders (void); +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/config/tilegx/tilegx.c b/gcc/config/tilegx/tilegx.c new file mode 100644 index 00000000000..276b5d21672 --- /dev/null +++ b/gcc/config/tilegx/tilegx.c @@ -0,0 +1,5501 @@ +/* Subroutines used for code generation on the Tilera TILE-Gx. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +#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 "integrate.h" +#include "dwarf2.h" +#include "timevar.h" +#include "gimple.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) +{ + /* 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 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_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); +} + + +/* 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)); + + if (cum >= TILEGX_NUM_ARG_REGS) + return NULL_RTX; + + /* 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; + + /* 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 (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) + 3) & -4; + if ( (VALIST.__args + paddedsize > VALIST.__skip) + & (VALIST.__args <= VALIST.__skip)) + addr = VALIST.__skip + STACK_POINTER_OFFSET; + else + addr = VALIST.__args; + VALIST.__args = addr + paddedsize; + 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; + + /* Assert alignment assumption. */ + gcc_assert (STACK_BOUNDARY == PARM_BOUNDARY); + + /* 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)); + + gimplify_assign (addr, tmp, pre_p); + + /* Update VALIST.__args. */ + 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_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. */ +static void +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; + + 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 + { + 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)); + } +} + + +/* 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); + 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); + 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_LAST_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)); + } + + 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) + { + rtx imm_op = GEN_INT (val); + + if (satisfies_constraint_J (imm_op) + || satisfies_constraint_K (imm_op) + || satisfies_constraint_N (imm_op) + || satisfies_constraint_P (imm_op)) + { + emit_move_insn (dest_reg, imm_op); + 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); + + hi = gen_reg_rtx (mode); + + if (bitsize == 2 * BITS_PER_UNIT && (bit_offset % BITS_PER_UNIT) == 0) + { + /* 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 (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_lo)); + emit_insn (gen_extendqidi2 (gen_lowpart (DImode, hi), mem_hi)); + emit_insn (gen_insv (gen_lowpart (DImode, dest_reg), + GEN_INT (64 - 8), GEN_INT (8), + gen_lowpart (DImode, hi))); + } + else + { + /* Do two unsigned loads and use v1int_l to interleave + them. */ + rtx lo = gen_reg_rtx (mode); + emit_insn (gen_zero_extendqidi2 (gen_lowpart (DImode, lo), + mem_lo)); + emit_insn (gen_zero_extendqidi2 (gen_lowpart (DImode, hi), + mem_hi)); + emit_insn (gen_insn_v1int_l (gen_lowpart (DImode, dest_reg), + gen_lowpart (DImode, hi), + gen_lowpart (DImode, lo))); + } + + 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 (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 (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. */ + 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, false, 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_amt; + HOST_WIDE_INT i; + rtx mem_addr; + rtx store_val; + + for (i = 0, shift_amt = 0; i < bytesize; i++, shift_amt += BITS_PER_UNIT) + { + 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 = INTVAL (XEXP (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); + + 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) +{ + switch (model) + { + case MEMMODEL_RELAXED: + case MEMMODEL_CONSUME: + case MEMMODEL_ACQUIRE: + break; + case MEMMODEL_RELEASE: + case MEMMODEL_ACQ_REL: + case MEMMODEL_SEQ_CST: + emit_insn (gen_memory_barrier ()); + break; + default: + gcc_unreachable (); + } +} + + +/* Emit barrier after an atomic, as needed for the memory MODEL. */ +void +tilegx_post_atomic_barrier (enum memmodel model) +{ + switch (model) + { + case MEMMODEL_RELAXED: + case MEMMODEL_CONSUME: + case MEMMODEL_RELEASE: + break; + case MEMMODEL_ACQUIRE: + case MEMMODEL_ACQ_REL: + case MEMMODEL_SEQ_CST: + emit_insn (gen_memory_barrier ()); + break; + default: + gcc_unreachable (); + } +} + + + +/* 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_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_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; + 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 current_function_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--; + insn = FRP (emit_move_insn (gen_rtx_REG (Pmode, sp_copy_regno), + stack_pointer_rtx)); + add_reg_note (insn, REG_CFA_REGISTER, NULL_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)); + int cfa_offset = + frame_pointer_needed ? UNITS_PER_WORD - 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. */ + FRP (frame_emit_store (sp_copy_regno, STACK_POINTER_REGNUM, + chain_addr, cfa, cfa_offset)); + } + + /* 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) + { + rtx p = compute_frame_addr (offset, &next_scratch_regno); + r = gen_rtx_REG (Pmode, next_scratch_regno--); + reg_save_addr[which_scratch] = r; + + emit_insn (gen_rtx_SET (VOIDmode, r, p)); + } + 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 (crtl->calls_eh_return) + { + rtx r = compute_frame_addr (-total_size + UNITS_PER_WORD, + &next_scratch_regno); + insn = emit_move_insn (gen_lowpart (DImode, stack_pointer_rtx), + gen_frame_mem (DImode, r)); + RTX_FRAME_RELATED_P (insn) = 1; + REG_NOTES (insn) = cfa_restores; + } + else 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); + } + + /* 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 (bb) + { + rtx insn, next; + rtx end = NEXT_INSN (BB_END (bb)); + + for (insn = next_insn_to_bundle (BB_HEAD (bb), end); 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); + } + } + } + } +} + + +/* 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 src; + 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; + } + + src = SET_SRC (PATTERN (insn)); + + return (GET_CODE (src) == CONST + && GET_CODE (XEXP (src, 0)) == UNSPEC + && XINT (XEXP (src, 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 opnds[3]; + rtx new_insns; + rtx got_rtx = tilegx_got_rtx (); + + gcc_assert (GET_CODE (pattern) == SET); + opnds[0] = SET_DEST (pattern); + + unspec = XEXP (SET_SRC (pattern), 0); + gcc_assert (GET_CODE (unspec) == UNSPEC); + gcc_assert (XINT (unspec, 1) == UNSPEC_HW0_PCREL); + opnds[1] = XEXP (XEXP (SET_SRC (pattern), 0), 0); + 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 (bb) + { + 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) +{ + if (flag_pic) + { + int type = TARGET_32BIT ? DW_EH_PE_sdata4 : DW_EH_PE_sdata8; + return (global ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | type; + } + else + return DW_EH_PE_absptr; +} + + +/* 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 (); + insn_locators_alloc (); + 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 (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: + 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: + 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; + 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_LAST_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\t%s@plt\n" + "\t}\n", MCOUNT_NAME); + } + else + { + fprintf (file, + "\t{\n" + "\tmove\tr10, lr\n" + "\tjal\t%s\n" + "\t}\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_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_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" + + +struct gcc_target targetm = TARGET_INITIALIZER; + +#include "gt-tilegx.h" diff --git a/gcc/config/tilegx/tilegx.h b/gcc/config/tilegx/tilegx.h new file mode 100644 index 00000000000..081ecc1756a --- /dev/null +++ b/gcc/config/tilegx/tilegx.h @@ -0,0 +1,505 @@ +/* Definitions of target machine for GNU compiler for TILE-Gx. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +/* 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) + + +/* 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 TARGET_BIG_ENDIAN 0 +#define BITS_BIG_ENDIAN 0 +#define BYTES_BIG_ENDIAN TARGET_BIG_ENDIAN +#define WORDS_BIG_ENDIAN TARGET_BIG_ENDIAN + +#define UNITS_PER_WORD 8 +#define PARM_BOUNDARY BITS_PER_WORD +#define STACK_BOUNDARY 64 +#define FUNCTION_BOUNDARY 64 +#define BIGGEST_ALIGNMENT 64 +#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 64 +#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 ((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 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, "\t%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, "\t%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 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 diff --git a/gcc/config/tilegx/tilegx.md b/gcc/config/tilegx/tilegx.md new file mode 100644 index 00000000000..033d125a99b --- /dev/null +++ b/gcc/config/tilegx/tilegx.md @@ -0,0 +1,5121 @@ +;; Machine description for Tilera TILE-Gx chip for GCC. +;; Copyright (C) 2011, 2012 +;; Free Software Foundation, Inc. +;; Contributed by Walter Lee (walt@tilera.com) +;; +;; This file is part of GCC. +;; +;; GCC is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 3, or (at your +;; option) any later version. +;; +;; GCC is distributed in the hope that it will be useful, but WITHOUT +;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +;; License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; <http://www.gnu.org/licenses/>. + +(define_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) + + ;; Latency specifying loads. + (UNSPEC_LATENCY_L2 205) + (UNSPEC_LATENCY_MISS 206) + + ;; A pseudo-op that prevents network operations from being ordered. + (UNSPEC_NETWORK_BARRIER 207) + + ;; Operations that access network registers. + (UNSPEC_NETWORK_RECEIVE 208) + (UNSPEC_NETWORK_SEND 209) + + ;; Stack protector operations + (UNSPEC_SP_SET 210) + (UNSPEC_SP_TEST 211) + + ;; This is used to move a value to a SPR. + (UNSPEC_SPR_MOVE 212) + + ;; A call to __tls_get_addr + (UNSPEC_TLS_GD_CALL 213) + + ;; An opaque TLS "add" operation for TLS general dynamic model + ;; access. + (UNSPEC_TLS_GD_ADD 214) + + ;; An opaque TLS "load" operation for TLS initial exec model access. + (UNSPEC_TLS_IE_LOAD 215) + + ;; An opaque TLS "add" operation for TLS access. + (UNSPEC_TLS_ADD 216) + + ;; Atomics + (UNSPEC_ATOMIC 217) + (UNSPEC_CMPXCHG 218) + (UNSPEC_XCHG 219) + + ;; + ;; 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_LAST_PCREL 308) + + (UNSPEC_HW0_GOT 309) + (UNSPEC_HW0_LAST_GOT 310) + (UNSPEC_HW1_LAST_GOT 311) + + (UNSPEC_HW0_TLS_GD 312) + (UNSPEC_HW1_LAST_TLS_GD 313) + + (UNSPEC_HW0_TLS_IE 314) + (UNSPEC_HW1_LAST_TLS_IE 315) + + (UNSPEC_HW0_TLS_LE 316) + (UNSPEC_HW1_LAST_TLS_LE 317) + + ;; This is used to wrap around the addresses of non-temporal load/store + ;; intrinsics. + (UNSPEC_NON_TEMPORAL 318) +]) + +;; 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_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]); + + /* 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; + + /* 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 +;; + +;; First step of the 3-insn sequence to materialize a symbolic +;; address. +(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)))]) + +;; Second step of the 3-insn sequence to materialize a symbolic +;; address. +(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))]) + +;; Third step of the 3-insn sequence to materialize a symbolic +;; address. +(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")]) + +;; First step of the 3-insn sequence 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") + +;; Second step of the 3-insn sequence 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_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") + +;; Third step of the 3-insn sequence 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_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") + +(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" "0"))))] + "" + "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") + + +;; +;; 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 "" "")) ;; iterations; zero if unknown + (use (match_operand 2 "" "")) ;; max iterations + (use (match_operand 3 "" "")) ;; loop level + (use (match_operand 4 "" ""))] ;; label + "" +{ + if (optimize > 0 && flag_modulo_sched) + { + rtx s0; + rtx bcomp; + rtx loc_ref; + enum machine_mode mode = GET_MODE (operands[0]); + + /* only do inner loop */ + if (INTVAL (operands[3]) > 1) + FAIL; + /* 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 [4]); + 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))])] + "" + "") + +(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))])] + "") + +(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" "X1,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" "X1,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 "*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_expand "insn_bfins" + [(set (match_operand:DI 0 "register_operand" "") + (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_operand" "") + (match_operand:DI 3 "u6bit_cint_operand" "") + (match_operand:DI 4 "u6bit_cint_operand" "")] + UNSPEC_INSN_BFINS))] + "INTVAL (operands[3]) != 64" +{ + HOST_WIDE_INT first = INTVAL (operands[3]); + HOST_WIDE_INT last = INTVAL (operands[4]); + + if (last >= first) + { + /* This is not a wacky wraparound case, so we can express this + as a standard insv. */ + if (operands[0] != operands[1]) + { + operands[2] = make_safe_from (operands[2], operands[0]); + emit_move_insn (operands[0], operands[1]); + } + + emit_insn (gen_insv (operands[0], + GEN_INT (last - first + 1), operands[3], + operands[2])); + + DONE; + } +}) + +(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_L2")]) + +(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_2cycle")]) + +(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_2cycle")]) + +(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_2cycle")]) + +(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_2cycle")]) + +(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_2cycle")]) + +(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 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "1") + (match_operand 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 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "1") + (match_operand 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 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "1") + (match_operand 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 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "1") + (match_operand 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 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "1") + (match_operand 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 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "1") + (match_operand 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 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "1") + (match_operand 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 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "1") + (match_operand 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 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "1") + (match_operand 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 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "1") + (match_operand 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 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "1") + (match_operand 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 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "1") + (match_operand 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 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "1") + (match_operand 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 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "1") + (match_operand 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 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "1") + (match_operand 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")]) + +;; 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 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "0") + (match_operand 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, 0); +}) + +(define_expand "insn_st<I124MODE:n>_add<I48MODE:bitsuffix>" + [(parallel + [(set (match_operand:I48MODE 0 "pointer_operand" "") + (plus:I48MODE (match_operand 3 "pointer_operand" "") + (match_operand 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, 0); +}) + +(define_insn "*insn_st<I124MODE:n>_add<I48MODE:bitsuffix>" + [(set (match_operand:I48MODE 0 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "0") + (match_operand 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 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "0") + (match_operand 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, 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 "pointer_operand" "") + (plus:I48MODE (match_operand 3 "pointer_operand" "") + (match_operand 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, 0); +}) + +(define_insn "*insn_stnt<I124MODE:n>_add<I48MODE:bitsuffix>" + [(set (match_operand:I48MODE 0 "pointer_operand" "=r") + (plus:I48MODE (match_operand 3 "pointer_operand" "0") + (match_operand 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; +}) + +;; 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_insn "vec_interleave_highv8qi" + [(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)])))] + "" + "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" "")] + "" +{ + /* Our instruction interleaves opposite of the way vec_interleave + works, so we need to reverse the source operands. */ + tilegx_expand_builtin_vector_binop (gen_vec_interleave_highv8qi, V8QImode, + operands[0], V8QImode, operands[2], + operands[1], 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_insn "vec_interleave_lowv8qi" + [(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)])))] + "" + "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" "")] + "" +{ + /* Our instruction interleaves opposite of the way vec_interleave + works, so we need to reverse the source operands. */ + tilegx_expand_builtin_vector_binop (gen_vec_interleave_lowv8qi, V8QImode, + operands[0], V8QImode, operands[2], + operands[1], 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_insn "vec_interleave_highv4hi" + [(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)])))] + "" + "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" "")] + "" +{ + /* Our instruction interleaves opposite of the way vec_interleave + works, so we need to reverse the source operands. */ + tilegx_expand_builtin_vector_binop (gen_vec_interleave_highv4hi, V4HImode, + operands[0], V4HImode, operands[2], + operands[1], 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_insn "vec_interleave_lowv4hi" + [(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)])))] + "" + "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" "")] + "" +{ + tilegx_expand_builtin_vector_binop (gen_vec_interleave_lowv4hi, V4HImode, + operands[0], V4HImode, operands[2], + operands[1], true); + DONE; +}) + +;; insn_v4int_h +;; {B1,B0} {A1,A0} +;; => {A1,A0,B1,B0} +;; => {A1,B1} +(define_insn "vec_interleave_highv2si" + [(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)])))] + "" + "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" "")] + "" +{ + /* Our instruction interleaves opposite of the way vec_interleave + works, so we need to reverse the source operands. */ + tilegx_expand_builtin_vector_binop (gen_vec_interleave_highv2si, V2SImode, + operands[0], V2SImode, operands[2], + operands[1], true); + DONE; +}) + +;; insn_v4int_l +;; {B1,B0} {A1,A0} +;; => {A1,A0,B1,B0} +;; => {A0,B0} +(define_insn "vec_interleave_lowv2si" + [(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)])))] + "" + "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" "")] + "" +{ + /* Our instruction interleaves opposite of the way vec_interleave + works, so we need to reverse the source operands. */ + tilegx_expand_builtin_vector_binop (gen_vec_interleave_lowv2si, V2SImode, + operands[0], V2SImode, operands[2], + operands[1], true); + DONE; +}) + +;; insn_v1mnz +;; insn_v1mz +;; insn_v2mnz +;; insn_v2mz +(define_insn "insn_mnz_<mode>" + [(set (match_operand:VEC48MODE 0 "register_operand" "=r") + (if_then_else:VEC48MODE + (ne:VEC48MODE + (match_operand:VEC48MODE 1 "reg_or_0_operand" "rO") + (const_int 0)) + (match_operand:VEC48MODE 2 "reg_or_0_operand" "rO") + (const_int 0)))] + "" + "v<n>mnz\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_expand "insn_v<n>mnz" + [(set (match_operand:DI 0 "register_operand" "") + (if_then_else:VEC48MODE + (ne:VEC48MODE + (match_operand:DI 1 "reg_or_0_operand" "") + (const_int 0)) + (match_operand:DI 2 "reg_or_0_operand" "") + (const_int 0)))] + "" +{ + tilegx_expand_builtin_vector_binop (gen_insn_mnz_<mode>, <MODE>mode, + operands[0], <MODE>mode, operands[1], + operands[2], true); + DONE; +}) + +(define_insn "insn_mz_<mode>" + [(set (match_operand:VEC48MODE 0 "register_operand" "=r") + (if_then_else:VEC48MODE + (ne:VEC48MODE + (match_operand:VEC48MODE 1 "reg_or_0_operand" "rO") + (const_int 0)) + (const_int 0) + (match_operand:VEC48MODE 2 "reg_or_0_operand" "rO")))] + "" + "v<n>mz\t%0, %r1, %r2" + [(set_attr "type" "X01")]) +(define_expand "insn_v<n>mz" + [(set (match_operand:DI 0 "register_operand" "") + (if_then_else:VEC48MODE + (ne:VEC48MODE + (match_operand:DI 1 "reg_or_0_operand" "") + (const_int 0)) + (const_int 0) + (match_operand:DI 2 "reg_or_0_operand" "")))] + "" +{ + tilegx_expand_builtin_vector_binop (gen_insn_mz_<mode>, <MODE>mode, + operands[0], <MODE>mode, 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 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_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 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_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 "reg_or_0_operand" "") + (match_operand:DI 2 "reg_or_0_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 "reg_or_0_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 "reg_or_0_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 "reg_or_0_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 "reg_or_0_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 "reg_or_0_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 "reg_or_0_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 "pseudo" text is handled specially by the +;; asm_output_opcode routine. If the output is an empty string, the +;; instruction would bypass the asm_output_opcode routine, bypassing +;; the bundle handling code. +(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/config/tilegx/tilegx.opt b/gcc/config/tilegx/tilegx.opt new file mode 100644 index 00000000000..5a65eaec380 --- /dev/null +++ b/gcc/config/tilegx/tilegx.opt @@ -0,0 +1,40 @@ +; Options for the TILE-Gx port of the compiler. +; Copyright (C) 2011, 2012 +; Free Software Foundation, Inc. +; Contributed by Walter Lee (walt@tilera.com) +; +; This file is part of GCC. +; +; GCC is free software; you can redistribute it and/or modify it under +; the terms of the GNU General Public License as published by the Free +; Software Foundation; either version 3, or (at your option) any later +; version. +; +; GCC is distributed in the hope that it will be useful, but WITHOUT ANY +; WARRANTY; without even the implied warranty of MERCHANTABILITY or +; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +; for more details. +; +; You should have received a copy of the GNU General Public License +; along with GCC; see the file COPYING3. If not see +; <http://www.gnu.org/licenses/>. + +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. + diff --git a/gcc/config/tilepro/constraints.md b/gcc/config/tilepro/constraints.md new file mode 100644 index 00000000000..868c9cafb7f --- /dev/null +++ b/gcc/config/tilepro/constraints.md @@ -0,0 +1,102 @@ +;; Constraint definitions for Tilera TILEPro chip. +;; Copyright (C) 2011, 2012 +;; Free Software Foundation, Inc. +;; Contributed by Walter Lee (walt@tilera.com) +;; +;; This file is part of GCC. +;; +;; GCC is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 3, or (at your +;; option) any later version. +;; +;; GCC is distributed in the hope that it will be useful, but WITHOUT +;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +;; License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; <http://www.gnu.org/licenses/>. + +(define_register_constraint "R00" "R0_REGS" "r0") +(define_register_constraint "R01" "R1_REGS" "r1") +(define_register_constraint "R02" "R2_REGS" "r2") +(define_register_constraint "R03" "R3_REGS" "r3") +(define_register_constraint "R04" "R4_REGS" "r4") +(define_register_constraint "R05" "R5_REGS" "r5") +(define_register_constraint "R06" "R6_REGS" "r6") +(define_register_constraint "R07" "R7_REGS" "r7") +(define_register_constraint "R08" "R8_REGS" "r8") +(define_register_constraint "R09" "R9_REGS" "r9") +(define_register_constraint "R10" "R10_REGS" "r10") + +(define_constraint "I" + "A signed 8 bit constant" + (and (match_code "const_int") + (match_test "ival >= -128 && ival <= 127"))) + +(define_constraint "J" + "Signed 16-bit integer constant" + (and (match_code "const_int") + (match_test "ival >= -32768 && ival <= 32767"))) + +(define_constraint "K" + "Nonzero integer constant with low 16 bits zero" + (and (match_code "const_int") + (match_test "ival && (ival & 0xFFFF) == 0"))) + +(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 'mm'" + (and (match_code "const_int") + (match_test "tilepro_bitfield_operand_p (ival, NULL, NULL)"))) + +(define_constraint "N" + "Integer constant that is a byte tiled out four times" + (and (match_code "const_int") + (match_test "(ival & 0xFFFFFFFF) == (ival & 0xFF) * 0x01010101"))) + +(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 two shorts" + (and (match_code "const_int") + (match_test "((ival & 0xFFFFFFFF) + == ((trunc_int_for_mode (ival, QImode) & 0xFFFF) + * 0x00010001))"))) + +(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 "T" + "A const symbolc 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" + "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 "Y" + "A 2-element vector constant with identical elements" + (and (match_code "const_vector") + (match_test "CONST_VECTOR_NUNITS (op) == 2") + (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 1)"))) diff --git a/gcc/config/tilepro/gen-mul-tables.cc b/gcc/config/tilepro/gen-mul-tables.cc new file mode 100644 index 00000000000..5f4551b356f --- /dev/null +++ b/gcc/config/tilepro/gen-mul-tables.cc @@ -0,0 +1,1363 @@ +/* Multiply table generator for tile. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +/* This program creates a table used to compile multiply by constant + efficiently. + + This program should be compiled by a c++ compiler. If it's + compiled with with -DTILEPRO, it generates the multiply table for + TILEPro; otherwise it generates the multiply table for TILE-Gx. + Running the program produces the table in stdout. + + The program works by generating every possible combination of up to + MAX_INSTRUCTIONS linear operators (such as add, sub, s2a, left + shift) and computing the multiplier computed by those instructions. + For example, + + s2a r2,r1,r1 + s2a r3,r2,r2 + + multiplies r1 by 25. + + There are usually multiple instruction sequences to multiply by a + given constant. This program keeps only the cheapest one. + "Cheapest" is defined first by the minimum theoretical schedule + length, and if those are equal then by the number of instructions, + and if those are equal then by which instructions we "prefer" + (e.g. because we think one might take infinitesimally less power + than another, or simply because we arbitrarily pick one to be more + canonical). + + Once this program has determined the best instruction sequence for + each multiplier, it emits them in a table sorted by the multiplier + so the user can binary-search it to look for a match. The table is + pruned based on various criteria to keep its sizes reasonable. */ + +#include <stdio.h> +#include <stdlib.h> +#include <assert.h> +#include <string.h> +#define __STDC_LIMIT_MACROS +#include <stdint.h> + +#include <map> + +#ifdef TILEPRO + +/* The string representing the architecture. */ +#define ARCH "tilepro" + +/* The type for the multiplication. */ +typedef int MUL_TYPE; + +#else + +/* The string representing the architecture. */ +#define ARCH "tilegx" + +/* The type for the multiplication. */ +typedef long long MUL_TYPE; + +#endif + +/* Longest instruction sequence this will produce. With the current + stupid algorithm runtime grows very quickly with this number. */ +#define MAX_INSTRUCTIONS 4 + +/* Maximum number of subexpressions in the expression DAG being + generated. This is the same as the number of instructions, except + that zero and the original register we'd like to multiply by a + constant are also thrown into the mix. */ +#define MAX_SUBEXPRS (2 + MAX_INSTRUCTIONS) + +#define MIN(x, y) ((x) <= (y) ? (x) : (y)) +#define MAX(x, y) ((x) >= (y) ? (x) : (y)) + +/* For this program a unary op is one which has only one nonconstant + operand. So shift left by 5 is considered unary. */ +typedef MUL_TYPE (*unary_op_func) (MUL_TYPE); +typedef MUL_TYPE (*binary_op_func) (MUL_TYPE, MUL_TYPE); + +/* This describes an operation like 'add two registers' or 'left-shift + by 7'. + + We call something a 'unary' operator if it only takes in one + register as input, even though it might have an implicit second + constant operand. Currently this is used for left-shift by + constant. */ +class Operator +{ +public: + /* Construct for a binary operator. */ + Operator (const char *pattern, const char *name, binary_op_func func, + int cost) + : m_pattern (pattern), m_name (name), m_top_index (-1), + m_unary_func (0), m_binary_func (func), m_cost (cost), + m_rhs_if_unary (0) + { + } + + /* Construct for a unary operator. */ + Operator (const char *pattern, const char *name, unary_op_func func, + int rhs_if_unary, int cost) + : m_pattern (pattern), m_name (name), m_top_index (-1), + m_unary_func (func), m_binary_func (0), m_cost (cost), + m_rhs_if_unary (rhs_if_unary) + { + } + + bool is_unary () const + { + return m_binary_func == NULL; + } + + /* Name of the pattern for this operation, e.g. CODE_FOR_addsi3. */ + const char *m_pattern; + + /* Name of the opcode for this operation, e.g. add. */ + const char *m_name; + + /* We don't have enough bits in our output representation to store + the original insn_code value, so we store a compressed form + instead. These values are decoded back into insn_code via the + machine-generated multiply_insn_seq_decode_opcode lookup + table. */ + int m_top_index; + + /* Unary operator to apply, or NULL if this is a binary operator. */ + unary_op_func m_unary_func; + + /* Binary operator to apply, or NULL if this is a unary operator. */ + binary_op_func m_binary_func; + + /* Function of how expensive we consider this operator. Higher is + worse. */ + int m_cost; + + /* the RHS value to write into the C file if unary; used for shift + count. */ + int m_rhs_if_unary; +}; + + +/* An entry in an expression DAG. */ +class Expr +{ +public: + Expr () : m_op (NULL), m_lhs (0), m_rhs (0), m_produced_val (0), + m_critical_path_length (0) + { + } + + /* The operator being applied to the operands. */ + const Operator *m_op; + + /* The index of the left-hand operand in the array of subexpressions + already computed. */ + int m_lhs; + + /* For binary ops ,this is the index of the left-hand operand in the + array of subexpressions already computed. For unary ops, it is + specific to the op (e.g. it might hold a constant shift + count). */ + int m_rhs; + + /* The multiplier produced by this expression tree. For example, for + the tree ((x << 5) + x), the value would be 33. */ + MUL_TYPE m_produced_val; + + /* How far is this expression from the root, i.e. how many cycles + minimum will it take to compute this? */ + int m_critical_path_length; +}; + + +/* Make function pointers for the various linear operators we can + apply to compute a multiplicative value. */ + +static MUL_TYPE +add (MUL_TYPE n1, MUL_TYPE n2) +{ + return n1 + n2; +} + +static MUL_TYPE +sub (MUL_TYPE n1, MUL_TYPE n2) +{ + return n1 - n2; +} + +static MUL_TYPE +s1a (MUL_TYPE n1, MUL_TYPE n2) +{ + return n1 * 2 + n2; +} + +static MUL_TYPE +s2a (MUL_TYPE n1, MUL_TYPE n2) +{ + return n1 * 4 + n2; +} + +static MUL_TYPE +s3a (MUL_TYPE n1, MUL_TYPE n2) +{ + return n1 * 8 + n2; +} + +#define SHIFT(count) \ +static MUL_TYPE \ +shift##count(MUL_TYPE n) \ +{ \ + return n << (count); \ +} + +SHIFT (1); +SHIFT (2); +SHIFT (3); +SHIFT (4); +SHIFT (5); +SHIFT (6); +SHIFT (7); +SHIFT (8); +SHIFT (9); +SHIFT (10); +SHIFT (11); +SHIFT (12); +SHIFT (13); +SHIFT (14); +SHIFT (15); +SHIFT (16); +SHIFT (17); +SHIFT (18); +SHIFT (19); +SHIFT (20); +SHIFT (21); +SHIFT (22); +SHIFT (23); +SHIFT (24); +SHIFT (25); +SHIFT (26); +SHIFT (27); +SHIFT (28); +SHIFT (29); +SHIFT (30); +SHIFT (31); +#ifndef TILEPRO +SHIFT (32); +SHIFT (33); +SHIFT (34); +SHIFT (35); +SHIFT (36); +SHIFT (37); +SHIFT (38); +SHIFT (39); +SHIFT (40); +SHIFT (41); +SHIFT (42); +SHIFT (43); +SHIFT (44); +SHIFT (45); +SHIFT (46); +SHIFT (47); +SHIFT (48); +SHIFT (49); +SHIFT (50); +SHIFT (51); +SHIFT (52); +SHIFT (53); +SHIFT (54); +SHIFT (55); +SHIFT (56); +SHIFT (57); +SHIFT (58); +SHIFT (59); +SHIFT (60); +SHIFT (61); +SHIFT (62); +SHIFT (63); +#endif + +#ifdef TILEPRO +static Operator ops[] = { + Operator ("CODE_FOR_addsi3", "add", add, 1040), + Operator ("CODE_FOR_subsi3", "sub", sub, 1041), + Operator ("CODE_FOR_insn_s1a", "s1a", s1a, 1042), + Operator ("CODE_FOR_insn_s2a", "s2a", s2a, 1043), + Operator ("CODE_FOR_insn_s3a", "s3a", s3a, 1044), + /* Note: shl by 1 is not necessary, since adding a value to itself + produces the same result. But the architecture team thinks + left-shift may use slightly less power, so we might as well + prefer it. */ + Operator ("CODE_FOR_ashlsi3", "shli", shift1, 1, 1001), + Operator ("CODE_FOR_ashlsi3", "shli", shift2, 2, 1002), + Operator ("CODE_FOR_ashlsi3", "shli", shift3, 3, 1003), + Operator ("CODE_FOR_ashlsi3", "shli", shift4, 4, 1004), + Operator ("CODE_FOR_ashlsi3", "shli", shift5, 5, 1005), + Operator ("CODE_FOR_ashlsi3", "shli", shift6, 6, 1006), + Operator ("CODE_FOR_ashlsi3", "shli", shift7, 7, 1007), + Operator ("CODE_FOR_ashlsi3", "shli", shift8, 8, 1008), + Operator ("CODE_FOR_ashlsi3", "shli", shift9, 9, 1009), + Operator ("CODE_FOR_ashlsi3", "shli", shift10, 10, 1010), + Operator ("CODE_FOR_ashlsi3", "shli", shift11, 11, 1011), + Operator ("CODE_FOR_ashlsi3", "shli", shift12, 12, 1012), + Operator ("CODE_FOR_ashlsi3", "shli", shift13, 13, 1013), + Operator ("CODE_FOR_ashlsi3", "shli", shift14, 14, 1014), + Operator ("CODE_FOR_ashlsi3", "shli", shift15, 15, 1015), + Operator ("CODE_FOR_ashlsi3", "shli", shift16, 16, 1016), + Operator ("CODE_FOR_ashlsi3", "shli", shift17, 17, 1017), + Operator ("CODE_FOR_ashlsi3", "shli", shift18, 18, 1018), + Operator ("CODE_FOR_ashlsi3", "shli", shift19, 19, 1019), + Operator ("CODE_FOR_ashlsi3", "shli", shift20, 20, 1020), + Operator ("CODE_FOR_ashlsi3", "shli", shift21, 21, 1021), + Operator ("CODE_FOR_ashlsi3", "shli", shift22, 22, 1022), + Operator ("CODE_FOR_ashlsi3", "shli", shift23, 23, 1023), + Operator ("CODE_FOR_ashlsi3", "shli", shift24, 24, 1024), + Operator ("CODE_FOR_ashlsi3", "shli", shift25, 25, 1025), + Operator ("CODE_FOR_ashlsi3", "shli", shift26, 26, 1026), + Operator ("CODE_FOR_ashlsi3", "shli", shift27, 27, 1027), + Operator ("CODE_FOR_ashlsi3", "shli", shift28, 28, 1028), + Operator ("CODE_FOR_ashlsi3", "shli", shift29, 29, 1029), + Operator ("CODE_FOR_ashlsi3", "shli", shift30, 30, 1030), + Operator ("CODE_FOR_ashlsi3", "shli", shift31, 31, 1031) +}; +#else +static Operator ops[] = { + Operator ("CODE_FOR_adddi3", "add", add, 1070), + Operator ("CODE_FOR_subdi3", "sub", sub, 1071), + Operator ("CODE_FOR_insn_shl1add", "shl1add", s1a, 1072), + Operator ("CODE_FOR_insn_shl2add", "shl2add", s2a, 1073), + Operator ("CODE_FOR_insn_shl3add", "shl3add", s3a, 1074), + // Note: shl by 1 is not necessary, since adding a value to itself + // produces the same result. But the architecture team thinks left-shift + // may use slightly less power, so we might as well prefer it. + Operator ("CODE_FOR_ashldi3", "shli", shift1, 1, 1001), + Operator ("CODE_FOR_ashldi3", "shli", shift2, 2, 1002), + Operator ("CODE_FOR_ashldi3", "shli", shift3, 3, 1003), + Operator ("CODE_FOR_ashldi3", "shli", shift4, 4, 1004), + Operator ("CODE_FOR_ashldi3", "shli", shift5, 5, 1005), + Operator ("CODE_FOR_ashldi3", "shli", shift6, 6, 1006), + Operator ("CODE_FOR_ashldi3", "shli", shift7, 7, 1007), + Operator ("CODE_FOR_ashldi3", "shli", shift8, 8, 1008), + Operator ("CODE_FOR_ashldi3", "shli", shift9, 9, 1009), + Operator ("CODE_FOR_ashldi3", "shli", shift10, 10, 1010), + Operator ("CODE_FOR_ashldi3", "shli", shift11, 11, 1011), + Operator ("CODE_FOR_ashldi3", "shli", shift12, 12, 1012), + Operator ("CODE_FOR_ashldi3", "shli", shift13, 13, 1013), + Operator ("CODE_FOR_ashldi3", "shli", shift14, 14, 1014), + Operator ("CODE_FOR_ashldi3", "shli", shift15, 15, 1015), + Operator ("CODE_FOR_ashldi3", "shli", shift16, 16, 1016), + Operator ("CODE_FOR_ashldi3", "shli", shift17, 17, 1017), + Operator ("CODE_FOR_ashldi3", "shli", shift18, 18, 1018), + Operator ("CODE_FOR_ashldi3", "shli", shift19, 19, 1019), + Operator ("CODE_FOR_ashldi3", "shli", shift20, 20, 1020), + Operator ("CODE_FOR_ashldi3", "shli", shift21, 21, 1021), + Operator ("CODE_FOR_ashldi3", "shli", shift22, 22, 1022), + Operator ("CODE_FOR_ashldi3", "shli", shift23, 23, 1023), + Operator ("CODE_FOR_ashldi3", "shli", shift24, 24, 1024), + Operator ("CODE_FOR_ashldi3", "shli", shift25, 25, 1025), + Operator ("CODE_FOR_ashldi3", "shli", shift26, 26, 1026), + Operator ("CODE_FOR_ashldi3", "shli", shift27, 27, 1027), + Operator ("CODE_FOR_ashldi3", "shli", shift28, 28, 1028), + Operator ("CODE_FOR_ashldi3", "shli", shift29, 29, 1029), + Operator ("CODE_FOR_ashldi3", "shli", shift30, 30, 1030), + Operator ("CODE_FOR_ashldi3", "shli", shift31, 31, 1031), + Operator ("CODE_FOR_ashldi3", "shli", shift32, 32, 1032), + Operator ("CODE_FOR_ashldi3", "shli", shift33, 33, 1033), + Operator ("CODE_FOR_ashldi3", "shli", shift34, 34, 1034), + Operator ("CODE_FOR_ashldi3", "shli", shift35, 35, 1035), + Operator ("CODE_FOR_ashldi3", "shli", shift36, 36, 1036), + Operator ("CODE_FOR_ashldi3", "shli", shift37, 37, 1037), + Operator ("CODE_FOR_ashldi3", "shli", shift38, 38, 1038), + Operator ("CODE_FOR_ashldi3", "shli", shift39, 39, 1039), + Operator ("CODE_FOR_ashldi3", "shli", shift40, 40, 1040), + Operator ("CODE_FOR_ashldi3", "shli", shift41, 41, 1041), + Operator ("CODE_FOR_ashldi3", "shli", shift42, 42, 1042), + Operator ("CODE_FOR_ashldi3", "shli", shift43, 43, 1043), + Operator ("CODE_FOR_ashldi3", "shli", shift44, 44, 1044), + Operator ("CODE_FOR_ashldi3", "shli", shift45, 45, 1045), + Operator ("CODE_FOR_ashldi3", "shli", shift46, 46, 1046), + Operator ("CODE_FOR_ashldi3", "shli", shift47, 47, 1047), + Operator ("CODE_FOR_ashldi3", "shli", shift48, 48, 1048), + Operator ("CODE_FOR_ashldi3", "shli", shift49, 49, 1049), + Operator ("CODE_FOR_ashldi3", "shli", shift50, 50, 1050), + Operator ("CODE_FOR_ashldi3", "shli", shift51, 51, 1051), + Operator ("CODE_FOR_ashldi3", "shli", shift52, 52, 1052), + Operator ("CODE_FOR_ashldi3", "shli", shift53, 53, 1053), + Operator ("CODE_FOR_ashldi3", "shli", shift54, 54, 1054), + Operator ("CODE_FOR_ashldi3", "shli", shift55, 55, 1055), + Operator ("CODE_FOR_ashldi3", "shli", shift56, 56, 1056), + Operator ("CODE_FOR_ashldi3", "shli", shift57, 57, 1057), + Operator ("CODE_FOR_ashldi3", "shli", shift58, 58, 1058), + Operator ("CODE_FOR_ashldi3", "shli", shift59, 59, 1059), + Operator ("CODE_FOR_ashldi3", "shli", shift60, 60, 1060), + Operator ("CODE_FOR_ashldi3", "shli", shift61, 61, 1061), + Operator ("CODE_FOR_ashldi3", "shli", shift62, 62, 1062), + Operator ("CODE_FOR_ashldi3", "shli", shift63, 63, 1063) +}; +#endif + +/* An ExpressionTree is an expression DAG. */ +class ExpressionTree +{ +public: + ExpressionTree () : m_num_vals (2) + { + m_exprs[0].m_produced_val = 0; + m_exprs[1].m_produced_val = 1; + } + + void copy_technique_from (ExpressionTree * other) + { + /* TODO: write this; other can compute the same products with less + cost. We update this ExpressionTree object because some int is + already mapped to it. */ + } + + int m_num_vals; + Expr m_exprs[MAX_SUBEXPRS]; + + int cost () const + { + int cost = 0; + for (int j = 2; j < m_num_vals; j++) + cost += m_exprs[j].m_op->m_cost; + return cost + m_exprs[m_num_vals - 1].m_critical_path_length * 1000000; + } +}; + + +typedef std::map<MUL_TYPE, ExpressionTree *> ExpressionTreeMap; + + +static void +find_sequences (ExpressionTree &s, ExpressionTreeMap &best_solution) +{ + /* Don't look more if we can't add any new values to the expression + tree. */ + const int num_vals = s.m_num_vals; + if (num_vals == MAX_SUBEXPRS) + return; + + /* Grow array to make room for new values added as we loop. */ + s.m_num_vals = num_vals + 1; + + const Operator *const prev_op = s.m_exprs[num_vals - 1].m_op; + const int prev_top_index = (prev_op != NULL) ? prev_op->m_top_index : -1; + + for (size_t f = 0; f < sizeof ops / sizeof ops[0]; f++) + { + const Operator *const op = &ops[f]; + + for (int i = 0; i < num_vals; i++) + { + /* Only allow zero as the first operand to sub, otherwise + it is useless. */ + if (i == 0 && op->m_binary_func != sub) + continue; + + /* Unary ops don't actually use the second operand, so as a + big hack we trick it into only looping once in the inner + loop. */ + const int j_end = op->is_unary () ? 2 : num_vals; + + /* We never allow zero as the second operand, as it is + always useless. */ + for (int j = 1; j < j_end; j++) + { + /* Does this expression use the immediately previous + expression? */ + const bool uses_prev_value = + (i == num_vals - 1 + || (!op->is_unary () && j == num_vals - 1)); + + if (!uses_prev_value) + { + /* For search efficiency, prune redundant + instruction orderings. + + This op does not take the immediately preceding + value as input, which means we could have done it + in the previous slot. If its opcode is less than + the previous instruction's, we'll declare this + instruction order non-canonical and not pursue + this branch of the search. */ + if (op->m_top_index < prev_top_index) + continue; + } + + MUL_TYPE n; + if (op->is_unary ()) + { + n = op->m_unary_func (s.m_exprs[i].m_produced_val); + } + else + { + n = op->m_binary_func (s.m_exprs[i].m_produced_val, + s.m_exprs[j].m_produced_val); + } + + bool duplicate = false; + for (int k = 0; k < num_vals; k++) + if (n == s.m_exprs[j].m_produced_val) + { + duplicate = true; + break; + } + + if (duplicate) + continue; + + /* See if we found the best solution for n. */ + Expr *e = &s.m_exprs[num_vals]; + e->m_op = op; + e->m_lhs = i; + e->m_rhs = op->is_unary () ? op->m_rhs_if_unary : j; + e->m_produced_val = n; + e->m_critical_path_length = + 1 + MAX (s.m_exprs[i].m_critical_path_length, + s.m_exprs[j].m_critical_path_length); + + ExpressionTreeMap::iterator best (best_solution.find (n)); + if (best == best_solution.end () + || (*best).second->cost () > s.cost ()) + best_solution[n] = new ExpressionTree (s); + + /* Recurse and find more. */ + find_sequences (s, best_solution); + } + } + } + + /* Restore old size. */ + s.m_num_vals = num_vals; +} + + +/* For each insn_code used by an operator, choose a compact number so + it takes less space in the output data structure. This prints out a + lookup table used to map the compactified number back to an + insn_code. */ +static void +create_insn_code_compression_table () +{ + int next_index = 1; + + /* Entry 0 must hold CODE_FOR_nothing to mean "end of array". */ + printf ("const enum insn_code %s_multiply_insn_seq_decode_opcode[] = {\n" + " CODE_FOR_nothing /* must be first */ ", ARCH); + + for (size_t i = 0; i < sizeof ops / sizeof ops[0]; i++) + { + Operator *op = &ops[i]; + int index = -1; + + /* See if some previous Operator was using the same insn_code. + If so, reuse its table entry. */ + for (size_t j = 0; j < i; j++) + { + Operator *old = &ops[j]; + if (strcmp (old->m_pattern, op->m_pattern) == 0) + { + index = old->m_top_index; + break; + } + } + + if (index == -1) + { + /* We need to make a new entry in the table. */ + printf (",\n %s", op->m_pattern); + index = next_index++; + } + + op->m_top_index = index; + } + + printf ("\n};\n\n"); +} + + +/* These are constants we've seen in code, that we want to keep table + entries for. */ +static int multiply_constants_used[] = { + -11796480, + -27439, + -25148, + -22820, + -21709, + -20995, + -20284, + -20239, + -19595, + -19447, + -19183, + -19165, + -18730, + -17828, + -17799, + -17237, + -17036, + -16549, + -16423, + -16294, + -16244, + -16069, + -15137, + -15083, + -15038, + -14924, + -14905, + -14752, + -14731, + -14529, + -14273, + -14090, + -14084, + -14043, + -13850, + -13802, + -13631, + -13455, + -13275, + -12879, + -12700, + -12534, + -12399, + -12131, + -12112, + -12054, + -12019, + -11759, + -11585, + -11467, + -11395, + -11295, + -11248, + -11148, + -11116, + -11086, + -11059, + -11018, + -10811, + -10538, + -10258, + -10217, + -10033, + -9766, + -9754, + -9534, + -9527, + -9467, + -9262, + -9232, + -9222, + -9198, + -9191, + -9113, + -8825, + -8756, + -8697, + -8693, + -8565, + -8342, + -8208, + -8200, + -8170, + -8102, + -7770, + -7678, + -7562, + -7376, + -7373, + -7221, + -7121, + -6835, + -6810, + -6626, + -6581, + -6461, + -6278, + -6263, + -6163, + -6029, + -5816, + -5540, + -5461, + -5384, + -5329, + -4985, + -4926, + -4815, + -4788, + -4758, + -4433, + -4229, + -4209, + -4176, + -4104, + -4095, + -4078, + -3941, + -3818, + -3600, + -3474, + -3314, + -3264, + -3196, + -3072, + -2912, + -2836, + -2773, + -2269, + -2184, + -2100, + -1730, + -1512, + -1500, + -1396, + -1344, + -1312, + -1297, + -1059, + -1058, + 1027, + 1049, + 1059, + 1100, + 1104, + 1108, + 1136, + 1200, + 1204, + 1242, + 1292, + 1304, + 1312, + 1320, + 1336, + 1344, + 1348, + 1360, + 1364, + 1395, + 1448, + 1460, + 1461, + 1472, + 1488, + 1500, + 1512, + 1568, + 1576, + 1649, + 1664, + 1684, + 1696, + 1744, + 1812, + 1822, + 1884, + 1963, + 1978, + 2000, + 2012, + 2014, + 2037, + 2039, + 2100, + 2139, + 2144, + 2184, + 2237, + 2260, + 2320, + 2408, + 2446, + 2447, + 2499, + 2531, + 2578, + 2592, + 2611, + 2633, + 2704, + 2730, + 2773, + 2880, + 2896, + 2998, + 3000, + 3001, + 3021, + 3079, + 3112, + 3150, + 3179, + 3192, + 3240, + 3264, + 3271, + 3283, + 3328, + 3363, + 3367, + 3453, + 3529, + 3570, + 3580, + 3600, + 3624, + 3707, + 3783, + 3826, + 3897, + 3941, + 3962, + 3989, + 4000, + 4025, + 4073, + 4093, + 4099, + 4108, + 4184, + 4209, + 4369, + 4376, + 4416, + 4433, + 4434, + 4482, + 4582, + 4712, + 4717, + 4813, + 4815, + 4864, + 5000, + 5027, + 5040, + 5091, + 5195, + 5243, + 5260, + 5285, + 5329, + 5331, + 5350, + 5361, + 5387, + 5461, + 5492, + 5529, + 5573, + 5793, + 5819, + 5915, + 5946, + 5992, + 6000, + 6164, + 6205, + 6262, + 6263, + 6269, + 6270, + 6387, + 6400, + 6406, + 6476, + 6541, + 6565, + 6568, + 6626, + 6656, + 6732, + 6810, + 6817, + 6859, + 7040, + 7053, + 7141, + 7169, + 7221, + 7223, + 7274, + 7282, + 7350, + 7369, + 7373, + 7442, + 7447, + 7471, + 7518, + 7542, + 7566, + 7587, + 7663, + 7678, + 7682, + 7748, + 7752, + 7791, + 8000, + 8026, + 8048, + 8170, + 8203, + 8204, + 8290, + 8368, + 8520, + 8640, + 8666, + 8672, + 8697, + 8716, + 8728, + 8756, + 8820, + 8875, + 8918, + 8956, + 9058, + 9154, + 9175, + 9191, + 9217, + 9262, + 9321, + 9373, + 9434, + 9465, + 9514, + 9534, + 9633, + 9746, + 9810, + 9850, + 9947, + 9973, + 10000, + 10009, + 10033, + 10055, + 10217, + 10248, + 10298, + 10310, + 10323, + 10368, + 10438, + 10456, + 10486, + 10538, + 10664, + 10695, + 10700, + 10703, + 10832, + 10887, + 10935, + 10958, + 11018, + 11059, + 11061, + 11086, + 11116, + 11148, + 11190, + 11249, + 11314, + 11332, + 11363, + 11409, + 11415, + 11443, + 11467, + 11512, + 11522, + 11529, + 11585, + 11759, + 11768, + 11795, + 11893, + 11997, + 12131, + 12299, + 12536, + 12543, + 12893, + 12945, + 12998, + 13109, + 13213, + 13685, + 13930, + 14023, + 14024, + 14271, + 14564, + 14647, + 15326, + 15850, + 15855, + 15929, + 16000, + 16154, + 16496, + 16807, + 16819, + 16984, + 17203, + 17223, + 17333, + 17760, + 17799, + 17837, + 18029, + 18068, + 18336, + 18515, + 19595, + 20017, + 20131, + 20862, + 20995, + 21709, + 22554, + 25000, + 25172, + 25600, + 25733, + 27439, + 38470, + 46802, + 50000, + 11796480, + 16843009, + 23592960, +}; + + +const int num_mult_constants_used = + (int)(sizeof multiply_constants_used + / sizeof multiply_constants_used[0]); + + +#define XSIZE (sizeof multiply_constants_used / \ + sizeof multiply_constants_used[0] + 32) / 32 +unsigned multiply_constants_avail[XSIZE]; +#undef XSIZE + + +/* bsearch helper function. */ +static int +compare_constants (const void *key, const void *t) +{ + return (*(int*)key) - *((int*)t); +} + + +static int * +find_mult_constants_used (int multiplier) +{ + return (int *) bsearch (&multiplier, multiply_constants_used, + num_mult_constants_used, + sizeof multiply_constants_used[0], + compare_constants); +} + + +int num_ops (ExpressionTree *s) +{ + int n = 0; + for (int i = 0; i < s->m_num_vals; i++) + { + Expr *e = &s->m_exprs[i]; + if (e->m_op != NULL) + n++; + } + return n; +} + + +#ifdef TILEPRO +bool +tilepro_emit (int multiplier, int num_ops) +{ + int abs_multiplier = (multiplier >= 0) ? multiplier : -multiplier; + + /* Keep constants in range [-1024, 1024]. */ + if (abs_multiplier <= 1024) + return true; + + /* Keep constants near powers of two. */ + int prev_pow2 = 1 << (31 - __builtin_clz (abs_multiplier)); + int next_pow2 = prev_pow2 << 1; + + if ((abs_multiplier - prev_pow2 <= 10) + || (next_pow2 - abs_multiplier <= 10)) + return true; + + /* Keep constants near powers of ten. */ + { + long long j = 1; + long long prev_pow10; + long long next_pow10; + + while (((j * 10) < abs_multiplier) + && (j < (j * 10))) + j = j * 10; + + prev_pow10 = j; + next_pow10 = j * 10; + + if ((abs_multiplier - prev_pow10 <= 10) + || (next_pow10 - abs_multiplier <= 10)) + return true; + } + + /* Keep short sequences that have two or fewer ops. */ + if (num_ops <= 2) + return true; + + /* Keep constants that are mostly 0's or mostly 1's. */ + if (__builtin_popcount (multiplier) <= 2 || + __builtin_popcount (multiplier) >= 30) + return true; + + /* Keep constants seen in actual code. */ + if ((find_mult_constants_used (multiplier))) + return true; + + return false; +} +#else +bool +tilegx_emit (long long multiplier, int num_ops) +{ + long long abs_multiplier = (multiplier >= 0) ? multiplier : - multiplier; + + /* Keep constants in range [-1024, 1024]. */ + if (abs_multiplier <= 1024) + return true; + + /* Otherwise exclude sequences with four ops. */ + if (num_ops > 3) + return false; + + /* Keep constants near powers of two. */ + { + unsigned long long prev_pow2 = + 1LL << (63 - __builtin_clzll (abs_multiplier)); + unsigned long long next_pow2 = prev_pow2 << 1; + + /* handle overflow case. */ + if (next_pow2 == 0) + { + if (prev_pow2 - abs_multiplier <= 10) + return true; + } + else if ((abs_multiplier - prev_pow2 <= 10) + || (next_pow2 - abs_multiplier <= 10)) + return true; + } + + /* Keep constants near powers of ten. */ + { + long long j = 1; + long long prev_pow10; + long long next_pow10; + + while (((j * 10) < abs_multiplier) + && (j < (INTMAX_MAX / 10))) + j = j * 10; + + prev_pow10 = j; + next_pow10 = (j > (INTMAX_MAX / 10)) ? 0 : j * 10; + + if ((abs_multiplier - prev_pow10 <= 100) + || (next_pow10 + && (next_pow10 - abs_multiplier <= 100))) + return true; + } + + if (num_ops <= 2) + return true; + + /* Keep constants that are mostly 0's or mostly 1's. */ + if (__builtin_popcountll (multiplier) <= 2 || + __builtin_popcountll (multiplier) >= 62) + return true; + + /* Keep constants seen in actual code. */ + if (find_mult_constants_used (multiplier)) + return true; + + return false; +} +#endif + + +int +main () +{ + ExpressionTreeMap best_solution; + ExpressionTree s; + +#ifdef TILEPRO + printf ("/* Constant multiply table for TILEPro.\n"); +#else + printf ("/* Constant multiply table for TILE-Gx.\n"); +#endif + printf (" Copyright (C) 2011, 2012\n"); + printf (" Free Software Foundation, Inc.\n"); + printf (" Contributed by Walter Lee (walt@tilera.com)\n"); + printf ("\n"); + printf (" This file is part of GCC.\n"); + printf ("\n"); + printf (" GCC is free software; you can redistribute it and/or modify it\n"); + printf (" under the terms of the GNU General Public License as published\n"); + printf (" by the Free Software Foundation; either version 3, or (at your\n"); + printf (" option) any later version.\n"); + printf ("\n"); + printf (" GCC is distributed in the hope that it will be useful, but WITHOUT\n"); + printf (" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n"); + printf (" or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public\n"); + printf (" License for more details.\n"); + printf ("\n"); + printf (" You should have received a copy of the GNU General Public License\n"); + printf (" along with GCC; see the file COPYING3. If not see\n"); + printf (" <http://www.gnu.org/licenses/>. */\n"); + printf ("\n"); + printf ("#include \"config.h\"\n"); + printf ("#include \"system.h\"\n"); + printf ("#include \"coretypes.h\"\n"); + printf ("#include \"expr.h\"\n"); + printf ("#include \"optabs.h\"\n"); + printf ("#include \"%s-multiply.h\"\n\n", ARCH); + create_insn_code_compression_table (); + + /* Try all combinations of operators and see what constants we + produce. For each possible constant, record the most efficient + way to generate it. */ + find_sequences (s, best_solution); + + printf ("const struct %s_multiply_insn_seq " + "%s_multiply_insn_seq_table[] = {\n", + ARCH, ARCH); + + const char *comma_separator = ""; + + ExpressionTreeMap::iterator i (best_solution.begin ()); + for (; i != best_solution.end (); ++i) + { + ExpressionTree *s = (*i).second; + const MUL_TYPE n = (*i).first; + + if (n == 0 || n == 1) + { + /* Both of these require zero operations, so these entries + are bogus and should never be used. */ + continue; + } + + /* Prune the list of entries to keep the table to a reasonable + size. */ +#ifdef TILEPRO + if (!tilepro_emit (n, num_ops (s))) + continue; +#else + if (!tilegx_emit (n, num_ops (s))) + continue; +#endif + + printf ("%s", comma_separator); + +#ifdef TILEPRO + const MUL_TYPE int_min = INT32_MIN; +#else + const MUL_TYPE int_min = INT64_MIN; +#endif + if (n == int_min) + { + /* Handle C's woeful lack of unary negation. Without this, + printing out INT_MIN in decimal will yield an unsigned + int which could generate a compiler warning. */ +#ifdef TILEPRO + printf (" {%d - 1 /* 0x%x */ ,\n {", n + 1, + (unsigned) n); +#else + printf (" {%lldll - 1 /* 0x%llx */ ,\n {", n + 1, + (unsigned MUL_TYPE) n); +#endif + } + else + { +#ifdef TILEPRO + printf (" {%d /* 0x%x */ ,\n {", n, (unsigned) n); +#else + printf (" {%lldll /* 0x%llx */ ,\n {", n, (unsigned MUL_TYPE) n); +#endif + } + + bool first = true; + for (int j = 0; j < s->m_num_vals; j++) + { + Expr *e = &s->m_exprs[j]; + + const Operator *op = e->m_op; + if (op == NULL) + continue; + + char buf[1024]; + snprintf (buf, sizeof buf, "%s{%d, %d, %d}%s", + first ? "" : " ", + op->m_top_index, + e->m_lhs, e->m_rhs, (j + 1) == s->m_num_vals ? "}" : ","); + + char opnd0[10]; + if (e->m_lhs) + snprintf (opnd0, sizeof opnd0, "r%d", e->m_lhs); + else + snprintf (opnd0, sizeof opnd0, "zero"); + + printf ("%s\t\t\t/* %s r%d, %s, %s%d */\n", + buf, op->m_name, j, opnd0, + op->is_unary () ? "" : "r", e->m_rhs); + + first = false; + } + printf (" }"); + comma_separator = ",\n"; + } + + printf ("\n};\n\n"); + printf ("const int %s_multiply_insn_seq_table_size =\n" + " (int) (sizeof %s_multiply_insn_seq_table\n" + " / sizeof %s_multiply_insn_seq_table[0]);\n", + ARCH, ARCH, ARCH); + + return EXIT_SUCCESS; +} diff --git a/gcc/config/tilepro/linux.h b/gcc/config/tilepro/linux.h new file mode 100644 index 00000000000..c96399fdadd --- /dev/null +++ b/gcc/config/tilepro/linux.h @@ -0,0 +1,65 @@ +/* Definitions for TILEPro running Linux-based GNU systems with ELF. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +#undef CPP_SPEC +#define CPP_SPEC "%{pthread:-D_REENTRANT}" + +#undef LINK_SPEC +#define LINK_SPEC "\ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker /lib/ld.so.1} \ + %{static:-static}}" + +#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 +/* TILEPro glibc provides __stack_chk_guard two pointer-size words before + tp. */ +#define TARGET_THREAD_SSP_OFFSET (-2 * GET_MODE_SIZE (ptr_mode)) +#endif + +/* For __clear_cache in libgcc2.c. */ +#ifdef IN_LIBGCC2 + +#include <arch/icache.h> + +/* Use the minimum page size of 4K. Alternatively we can call getpagesize() + but it introduces a libc dependence. */ +#undef CLEAR_INSN_CACHE +#define CLEAR_INSN_CACHE(beg, end) invalidate_icache (beg, end - beg, 4096) + +#else + +/* define CLEAR_INSN_CACHE so that gcc knows to expand __builtin__clear_cache + to the libraray call. */ +#undef CLEAR_INSN_CACHE +#define CLEAR_INSN_CACHE 1 + +#endif diff --git a/gcc/config/tilepro/mul-tables.c b/gcc/config/tilepro/mul-tables.c new file mode 100644 index 00000000000..742e061bfe9 --- /dev/null +++ b/gcc/config/tilepro/mul-tables.c @@ -0,0 +1,17832 @@ +/* Constant multiply table for TILEPro. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +#include "config.h" +#include "system.h" +#include "coretypes.h" +#include "expr.h" +#include "optabs.h" +#include "tilepro-multiply.h" + +const enum insn_code tilepro_multiply_insn_seq_decode_opcode[] = { + CODE_FOR_nothing /* must be first */ , + CODE_FOR_addsi3, + CODE_FOR_subsi3, + CODE_FOR_insn_s1a, + CODE_FOR_insn_s2a, + CODE_FOR_insn_s3a, + CODE_FOR_ashlsi3 +}; + +const struct tilepro_multiply_insn_seq tilepro_multiply_insn_seq_table[] = { + {-2147483647 - 1 /* 0x80000000 */ , + {{6, 1, 31}} /* shli r2, r1, 31 */ + }, + {-2147483647 /* 0x80000001 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {-2147483646 /* 0x80000002 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {-2147483645 /* 0x80000003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2147483644 /* 0x80000004 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {-2147483643 /* 0x80000005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2147483642 /* 0x80000006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-2147483641 /* 0x80000007 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {-2147483640 /* 0x80000008 */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {-2147483639 /* 0x80000009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2147483638 /* 0x8000000a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-2147483632 /* 0x80000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2147483616 /* 0x80000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2147483584 /* 0x80000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2147483520 /* 0x80000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2147483392 /* 0x80000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2147483136 /* 0x80000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2147482624 /* 0x80000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2147481600 /* 0x80000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2147479552 /* 0x80001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2147475456 /* 0x80002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2147467264 /* 0x80004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2147450880 /* 0x80008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2147418112 /* 0x80010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2147352576 /* 0x80020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2147221504 /* 0x80040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2146959360 /* 0x80080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2146435072 /* 0x80100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2145386496 /* 0x80200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2143289344 /* 0x80400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2139095040 /* 0x80800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2130706432 /* 0x81000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2113929216 /* 0x82000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2080374784 /* 0x84000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-2013265920 /* 0x88000000 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {-1879048192 /* 0x90000000 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 28}} /* shli r3, r2, 28 */ + }, + {-1610612737 /* 0x9fffffff */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 29}, /* shli r3, r2, 29 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {-1610612736 /* 0xa0000000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 29}} /* shli r3, r2, 29 */ + }, + {-1342177281 /* 0xafffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 28}, /* shli r4, r3, 28 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-1207959553 /* 0xb7ffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 27}, /* shli r4, r3, 27 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-1140850689 /* 0xbbffffff */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-1073741889 /* 0xbfffffbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 27}, /* shli r3, r2, 27 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-1073741857 /* 0xbfffffdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 27}, /* shli r3, r2, 27 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-1073741841 /* 0xbfffffef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-1073741834 /* 0xbffffff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 30}, /* shli r4, r2, 30 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-1073741833 /* 0xbffffff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-1073741832 /* 0xbffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 30}, /* shli r3, r2, 30 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-1073741831 /* 0xbffffff9 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-1073741830 /* 0xbffffffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 30}, /* shli r4, r2, 30 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {-1073741829 /* 0xbffffffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-1073741828 /* 0xbffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 30}, /* shli r3, r2, 30 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-1073741827 /* 0xbffffffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 30}, /* shli r3, r2, 30 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {-1073741826 /* 0xbffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 30}, /* shli r3, r2, 30 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-1073741825 /* 0xbfffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1073741824 /* 0xc0000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 30}} /* shli r3, r2, 30 */ + }, + {-1073741823 /* 0xc0000001 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-1073741822 /* 0xc0000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1073741821 /* 0xc0000003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1073741820 /* 0xc0000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1073741819 /* 0xc0000005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1073741818 /* 0xc0000006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 30}, /* shli r3, r2, 30 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-1073741817 /* 0xc0000007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 27}, /* shli r4, r2, 27 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-1073741816 /* 0xc0000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1073741815 /* 0xc0000009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1073741814 /* 0xc000000a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-805306369 /* 0xcfffffff */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-671088641 /* 0xd7ffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 27}, /* shli r4, r3, 27 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-603979777 /* 0xdbffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 26}, /* shli r4, r3, 26 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-570425345 /* 0xddffffff */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-536870977 /* 0xdfffffbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 26}, /* shli r3, r2, 26 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-536870945 /* 0xdfffffdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 26}, /* shli r3, r2, 26 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-536870929 /* 0xdfffffef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-536870922 /* 0xdffffff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 29}, /* shli r4, r2, 29 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-536870921 /* 0xdffffff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-536870920 /* 0xdffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 29}, /* shli r3, r2, 29 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-536870919 /* 0xdffffff9 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-536870918 /* 0xdffffffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-536870917 /* 0xdffffffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-536870916 /* 0xdffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 29}, /* shli r3, r2, 29 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-536870915 /* 0xdffffffd */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-536870914 /* 0xdffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 29}, /* shli r3, r2, 29 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-536870913 /* 0xdfffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-536870912 /* 0xe0000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 29}} /* shli r3, r2, 29 */ + }, + {-536870911 /* 0xe0000001 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-536870910 /* 0xe0000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-536870909 /* 0xe0000003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-536870908 /* 0xe0000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-536870907 /* 0xe0000005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-536870906 /* 0xe0000006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-536870905 /* 0xe0000007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 26}, /* shli r4, r2, 26 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-536870904 /* 0xe0000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-536870903 /* 0xe0000009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-536870902 /* 0xe000000a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-402653185 /* 0xe7ffffff */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-335544321 /* 0xebffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 26}, /* shli r4, r3, 26 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-301989889 /* 0xedffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 25}, /* shli r4, r3, 25 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-285212673 /* 0xeeffffff */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-268435521 /* 0xefffffbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 25}, /* shli r3, r2, 25 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-268435489 /* 0xefffffdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 25}, /* shli r3, r2, 25 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-268435473 /* 0xefffffef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-268435466 /* 0xeffffff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 28}, /* shli r4, r2, 28 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-268435465 /* 0xeffffff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-268435464 /* 0xeffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 28}, /* shli r3, r2, 28 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-268435463 /* 0xeffffff9 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-268435462 /* 0xeffffffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-268435461 /* 0xeffffffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-268435460 /* 0xeffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 28}, /* shli r3, r2, 28 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-268435459 /* 0xeffffffd */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-268435458 /* 0xeffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 28}, /* shli r3, r2, 28 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-268435457 /* 0xefffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-268435456 /* 0xf0000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 28}} /* shli r3, r2, 28 */ + }, + {-268435455 /* 0xf0000001 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-268435454 /* 0xf0000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-268435453 /* 0xf0000003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-268435452 /* 0xf0000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-268435451 /* 0xf0000005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-268435450 /* 0xf0000006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-268435449 /* 0xf0000007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 25}, /* shli r4, r2, 25 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-268435448 /* 0xf0000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-268435447 /* 0xf0000009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-268435446 /* 0xf000000a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-201326593 /* 0xf3ffffff */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-167772161 /* 0xf5ffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 25}, /* shli r4, r3, 25 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-150994945 /* 0xf6ffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 24}, /* shli r4, r3, 24 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-142606337 /* 0xf77fffff */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-134217793 /* 0xf7ffffbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 24}, /* shli r3, r2, 24 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-134217761 /* 0xf7ffffdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 24}, /* shli r3, r2, 24 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-134217745 /* 0xf7ffffef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-134217738 /* 0xf7fffff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 27}, /* shli r4, r2, 27 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-134217737 /* 0xf7fffff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-134217736 /* 0xf7fffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 27}, /* shli r3, r2, 27 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-134217735 /* 0xf7fffff9 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-134217734 /* 0xf7fffffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-134217733 /* 0xf7fffffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-134217732 /* 0xf7fffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 27}, /* shli r3, r2, 27 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-134217731 /* 0xf7fffffd */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-134217730 /* 0xf7fffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 27}, /* shli r3, r2, 27 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-134217729 /* 0xf7ffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-134217728 /* 0xf8000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 27}} /* shli r3, r2, 27 */ + }, + {-134217727 /* 0xf8000001 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-134217726 /* 0xf8000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-134217725 /* 0xf8000003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-134217724 /* 0xf8000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-134217723 /* 0xf8000005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-134217722 /* 0xf8000006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-134217721 /* 0xf8000007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 24}, /* shli r4, r2, 24 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-134217720 /* 0xf8000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-134217719 /* 0xf8000009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-134217718 /* 0xf800000a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-100663297 /* 0xf9ffffff */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-83886081 /* 0xfaffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 24}, /* shli r4, r3, 24 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-75497473 /* 0xfb7fffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 23}, /* shli r4, r3, 23 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-71303169 /* 0xfbbfffff */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-67108929 /* 0xfbffffbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 23}, /* shli r3, r2, 23 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-67108897 /* 0xfbffffdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 23}, /* shli r3, r2, 23 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-67108881 /* 0xfbffffef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-67108874 /* 0xfbfffff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 26}, /* shli r4, r2, 26 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-67108873 /* 0xfbfffff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-67108872 /* 0xfbfffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 26}, /* shli r3, r2, 26 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-67108871 /* 0xfbfffff9 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-67108870 /* 0xfbfffffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-67108869 /* 0xfbfffffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-67108868 /* 0xfbfffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 26}, /* shli r3, r2, 26 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-67108867 /* 0xfbfffffd */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-67108866 /* 0xfbfffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 26}, /* shli r3, r2, 26 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-67108865 /* 0xfbffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-67108864 /* 0xfc000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 26}} /* shli r3, r2, 26 */ + }, + {-67108863 /* 0xfc000001 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-67108862 /* 0xfc000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-67108861 /* 0xfc000003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-67108860 /* 0xfc000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-67108859 /* 0xfc000005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-67108858 /* 0xfc000006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-67108857 /* 0xfc000007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 23}, /* shli r4, r2, 23 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-67108856 /* 0xfc000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-67108855 /* 0xfc000009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-67108854 /* 0xfc00000a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-50331649 /* 0xfcffffff */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-41943041 /* 0xfd7fffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 23}, /* shli r4, r3, 23 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-37748737 /* 0xfdbfffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 22}, /* shli r4, r3, 22 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-35651585 /* 0xfddfffff */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-33554497 /* 0xfdffffbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 22}, /* shli r3, r2, 22 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-33554465 /* 0xfdffffdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 22}, /* shli r3, r2, 22 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-33554449 /* 0xfdffffef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-33554442 /* 0xfdfffff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 25}, /* shli r4, r2, 25 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-33554441 /* 0xfdfffff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-33554440 /* 0xfdfffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 25}, /* shli r3, r2, 25 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-33554439 /* 0xfdfffff9 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-33554438 /* 0xfdfffffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-33554437 /* 0xfdfffffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-33554436 /* 0xfdfffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 25}, /* shli r3, r2, 25 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-33554435 /* 0xfdfffffd */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-33554434 /* 0xfdfffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 25}, /* shli r3, r2, 25 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-33554433 /* 0xfdffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-33554432 /* 0xfe000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 25}} /* shli r3, r2, 25 */ + }, + {-33554431 /* 0xfe000001 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-33554430 /* 0xfe000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-33554429 /* 0xfe000003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-33554428 /* 0xfe000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-33554427 /* 0xfe000005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-33554426 /* 0xfe000006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-33554425 /* 0xfe000007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 22}, /* shli r4, r2, 22 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-33554424 /* 0xfe000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-33554423 /* 0xfe000009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-33554422 /* 0xfe00000a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-25165825 /* 0xfe7fffff */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-20971521 /* 0xfebfffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 22}, /* shli r4, r3, 22 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-18874369 /* 0xfedfffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 21}, /* shli r4, r3, 21 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-17825793 /* 0xfeefffff */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-16777281 /* 0xfeffffbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 21}, /* shli r3, r2, 21 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-16777249 /* 0xfeffffdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 21}, /* shli r3, r2, 21 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-16777233 /* 0xfeffffef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-16777226 /* 0xfefffff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 24}, /* shli r4, r2, 24 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-16777225 /* 0xfefffff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-16777224 /* 0xfefffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 24}, /* shli r3, r2, 24 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-16777223 /* 0xfefffff9 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-16777222 /* 0xfefffffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-16777221 /* 0xfefffffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-16777220 /* 0xfefffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 24}, /* shli r3, r2, 24 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-16777219 /* 0xfefffffd */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-16777218 /* 0xfefffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 24}, /* shli r3, r2, 24 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-16777217 /* 0xfeffffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16777216 /* 0xff000000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 24}} /* shli r3, r2, 24 */ + }, + {-16777215 /* 0xff000001 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-16777214 /* 0xff000002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16777213 /* 0xff000003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16777212 /* 0xff000004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16777211 /* 0xff000005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16777210 /* 0xff000006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-16777209 /* 0xff000007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 21}, /* shli r4, r2, 21 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-16777208 /* 0xff000008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16777207 /* 0xff000009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16777206 /* 0xff00000a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-12582913 /* 0xff3fffff */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-11796480 /* 0xff4c0000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 18}, /* shli r3, r2, 18 */ + {6, 2, 22}, /* shli r4, r2, 22 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-10485761 /* 0xff5fffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 21}, /* shli r4, r3, 21 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-9437185 /* 0xff6fffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 20}, /* shli r4, r3, 20 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-8912897 /* 0xff77ffff */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-8388673 /* 0xff7fffbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 20}, /* shli r3, r2, 20 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-8388641 /* 0xff7fffdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 20}, /* shli r3, r2, 20 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-8388625 /* 0xff7fffef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-8388618 /* 0xff7ffff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 23}, /* shli r4, r2, 23 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-8388617 /* 0xff7ffff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-8388616 /* 0xff7ffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 23}, /* shli r3, r2, 23 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-8388615 /* 0xff7ffff9 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-8388614 /* 0xff7ffffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-8388613 /* 0xff7ffffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-8388612 /* 0xff7ffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 23}, /* shli r3, r2, 23 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-8388611 /* 0xff7ffffd */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-8388610 /* 0xff7ffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 23}, /* shli r3, r2, 23 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-8388609 /* 0xff7fffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8388608 /* 0xff800000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 23}} /* shli r3, r2, 23 */ + }, + {-8388607 /* 0xff800001 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-8388606 /* 0xff800002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8388605 /* 0xff800003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8388604 /* 0xff800004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8388603 /* 0xff800005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8388602 /* 0xff800006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-8388601 /* 0xff800007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 20}, /* shli r4, r2, 20 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-8388600 /* 0xff800008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8388599 /* 0xff800009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8388598 /* 0xff80000a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-6291457 /* 0xff9fffff */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-5242881 /* 0xffafffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 20}, /* shli r4, r3, 20 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-4718593 /* 0xffb7ffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 19}, /* shli r4, r3, 19 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-4456449 /* 0xffbbffff */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-4194369 /* 0xffbfffbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 19}, /* shli r3, r2, 19 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-4194337 /* 0xffbfffdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 19}, /* shli r3, r2, 19 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-4194321 /* 0xffbfffef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-4194314 /* 0xffbffff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 22}, /* shli r4, r2, 22 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-4194313 /* 0xffbffff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-4194312 /* 0xffbffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 22}, /* shli r3, r2, 22 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-4194311 /* 0xffbffff9 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-4194310 /* 0xffbffffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-4194309 /* 0xffbffffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-4194308 /* 0xffbffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 22}, /* shli r3, r2, 22 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-4194307 /* 0xffbffffd */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-4194306 /* 0xffbffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 22}, /* shli r3, r2, 22 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-4194305 /* 0xffbfffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4194304 /* 0xffc00000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 22}} /* shli r3, r2, 22 */ + }, + {-4194303 /* 0xffc00001 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-4194302 /* 0xffc00002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4194301 /* 0xffc00003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4194300 /* 0xffc00004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4194299 /* 0xffc00005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4194298 /* 0xffc00006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-4194297 /* 0xffc00007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 19}, /* shli r4, r2, 19 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-4194296 /* 0xffc00008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4194295 /* 0xffc00009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4194294 /* 0xffc0000a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-3145729 /* 0xffcfffff */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2621441 /* 0xffd7ffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 19}, /* shli r4, r3, 19 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-2359297 /* 0xffdbffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 18}, /* shli r4, r3, 18 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-2228225 /* 0xffddffff */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-2097217 /* 0xffdfffbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 18}, /* shli r3, r2, 18 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-2097185 /* 0xffdfffdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 18}, /* shli r3, r2, 18 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-2097169 /* 0xffdfffef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-2097162 /* 0xffdffff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 21}, /* shli r4, r2, 21 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-2097161 /* 0xffdffff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-2097160 /* 0xffdffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 21}, /* shli r3, r2, 21 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-2097159 /* 0xffdffff9 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-2097158 /* 0xffdffffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-2097157 /* 0xffdffffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-2097156 /* 0xffdffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 21}, /* shli r3, r2, 21 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-2097155 /* 0xffdffffd */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-2097154 /* 0xffdffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 21}, /* shli r3, r2, 21 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-2097153 /* 0xffdfffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2097152 /* 0xffe00000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 21}} /* shli r3, r2, 21 */ + }, + {-2097151 /* 0xffe00001 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-2097150 /* 0xffe00002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2097149 /* 0xffe00003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2097148 /* 0xffe00004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2097147 /* 0xffe00005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2097146 /* 0xffe00006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-2097145 /* 0xffe00007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 18}, /* shli r4, r2, 18 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-2097144 /* 0xffe00008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2097143 /* 0xffe00009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2097142 /* 0xffe0000a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-1572865 /* 0xffe7ffff */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1310721 /* 0xffebffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 18}, /* shli r4, r3, 18 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-1179649 /* 0xffedffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 17}, /* shli r4, r3, 17 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-1114113 /* 0xffeeffff */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-1048641 /* 0xffefffbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 17}, /* shli r3, r2, 17 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-1048609 /* 0xffefffdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 17}, /* shli r3, r2, 17 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-1048593 /* 0xffefffef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-1048586 /* 0xffeffff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 20}, /* shli r4, r2, 20 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-1048585 /* 0xffeffff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-1048584 /* 0xffeffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 20}, /* shli r3, r2, 20 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-1048583 /* 0xffeffff9 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-1048582 /* 0xffeffffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-1048581 /* 0xffeffffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-1048580 /* 0xffeffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 20}, /* shli r3, r2, 20 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-1048579 /* 0xffeffffd */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-1048578 /* 0xffeffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 20}, /* shli r3, r2, 20 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-1048577 /* 0xffefffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1048576 /* 0xfff00000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 20}} /* shli r3, r2, 20 */ + }, + {-1048575 /* 0xfff00001 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-1048574 /* 0xfff00002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1048573 /* 0xfff00003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1048572 /* 0xfff00004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1048571 /* 0xfff00005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1048570 /* 0xfff00006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-1048569 /* 0xfff00007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 17}, /* shli r4, r2, 17 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-1048568 /* 0xfff00008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1048567 /* 0xfff00009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1048566 /* 0xfff0000a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-786433 /* 0xfff3ffff */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-655361 /* 0xfff5ffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 17}, /* shli r4, r3, 17 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-589825 /* 0xfff6ffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 16}, /* shli r4, r3, 16 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-557057 /* 0xfff77fff */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-524353 /* 0xfff7ffbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 16}, /* shli r3, r2, 16 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-524321 /* 0xfff7ffdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 16}, /* shli r3, r2, 16 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-524305 /* 0xfff7ffef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-524298 /* 0xfff7fff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 19}, /* shli r4, r2, 19 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-524297 /* 0xfff7fff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-524296 /* 0xfff7fff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 19}, /* shli r3, r2, 19 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-524295 /* 0xfff7fff9 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-524294 /* 0xfff7fffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-524293 /* 0xfff7fffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-524292 /* 0xfff7fffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 19}, /* shli r3, r2, 19 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-524291 /* 0xfff7fffd */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-524290 /* 0xfff7fffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 19}, /* shli r3, r2, 19 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-524289 /* 0xfff7ffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-524288 /* 0xfff80000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 19}} /* shli r3, r2, 19 */ + }, + {-524287 /* 0xfff80001 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-524286 /* 0xfff80002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-524285 /* 0xfff80003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-524284 /* 0xfff80004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-524283 /* 0xfff80005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-524282 /* 0xfff80006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-524281 /* 0xfff80007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 16}, /* shli r4, r2, 16 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-524280 /* 0xfff80008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-524279 /* 0xfff80009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-524278 /* 0xfff8000a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-393217 /* 0xfff9ffff */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-327681 /* 0xfffaffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 16}, /* shli r4, r3, 16 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-294913 /* 0xfffb7fff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 15}, /* shli r4, r3, 15 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-278529 /* 0xfffbbfff */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-262209 /* 0xfffbffbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 15}, /* shli r3, r2, 15 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-262177 /* 0xfffbffdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 15}, /* shli r3, r2, 15 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-262161 /* 0xfffbffef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-262154 /* 0xfffbfff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 18}, /* shli r4, r2, 18 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-262153 /* 0xfffbfff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-262152 /* 0xfffbfff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 18}, /* shli r3, r2, 18 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-262151 /* 0xfffbfff9 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-262150 /* 0xfffbfffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-262149 /* 0xfffbfffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-262148 /* 0xfffbfffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 18}, /* shli r3, r2, 18 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-262147 /* 0xfffbfffd */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-262146 /* 0xfffbfffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 18}, /* shli r3, r2, 18 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-262145 /* 0xfffbffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-262144 /* 0xfffc0000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 18}} /* shli r3, r2, 18 */ + }, + {-262143 /* 0xfffc0001 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-262142 /* 0xfffc0002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-262141 /* 0xfffc0003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-262140 /* 0xfffc0004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-262139 /* 0xfffc0005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-262138 /* 0xfffc0006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-262137 /* 0xfffc0007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 15}, /* shli r4, r2, 15 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-262136 /* 0xfffc0008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-262135 /* 0xfffc0009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-262134 /* 0xfffc000a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-196609 /* 0xfffcffff */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-163841 /* 0xfffd7fff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 15}, /* shli r4, r3, 15 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-147457 /* 0xfffdbfff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 14}, /* shli r4, r3, 14 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-139265 /* 0xfffddfff */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-131137 /* 0xfffdffbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 14}, /* shli r3, r2, 14 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-131105 /* 0xfffdffdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 14}, /* shli r3, r2, 14 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-131089 /* 0xfffdffef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-131082 /* 0xfffdfff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 17}, /* shli r4, r2, 17 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-131081 /* 0xfffdfff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-131080 /* 0xfffdfff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 17}, /* shli r3, r2, 17 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-131079 /* 0xfffdfff9 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-131078 /* 0xfffdfffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-131077 /* 0xfffdfffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-131076 /* 0xfffdfffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 17}, /* shli r3, r2, 17 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-131075 /* 0xfffdfffd */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-131074 /* 0xfffdfffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 17}, /* shli r3, r2, 17 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-131073 /* 0xfffdffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-131072 /* 0xfffe0000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 17}} /* shli r3, r2, 17 */ + }, + {-131071 /* 0xfffe0001 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-131070 /* 0xfffe0002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-131069 /* 0xfffe0003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-131068 /* 0xfffe0004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-131067 /* 0xfffe0005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-131066 /* 0xfffe0006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-131065 /* 0xfffe0007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 14}, /* shli r4, r2, 14 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-131064 /* 0xfffe0008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-131063 /* 0xfffe0009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-131062 /* 0xfffe000a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-98305 /* 0xfffe7fff */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-81921 /* 0xfffebfff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 14}, /* shli r4, r3, 14 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-73729 /* 0xfffedfff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 13}, /* shli r4, r3, 13 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-69633 /* 0xfffeefff */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-65601 /* 0xfffeffbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 13}, /* shli r3, r2, 13 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-65569 /* 0xfffeffdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 13}, /* shli r3, r2, 13 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-65553 /* 0xfffeffef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-65546 /* 0xfffefff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 16}, /* shli r4, r2, 16 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-65545 /* 0xfffefff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-65544 /* 0xfffefff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 16}, /* shli r3, r2, 16 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-65543 /* 0xfffefff9 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-65542 /* 0xfffefffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-65541 /* 0xfffefffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-65540 /* 0xfffefffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 16}, /* shli r3, r2, 16 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-65539 /* 0xfffefffd */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-65538 /* 0xfffefffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 16}, /* shli r3, r2, 16 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-65537 /* 0xfffeffff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-65536 /* 0xffff0000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 16}} /* shli r3, r2, 16 */ + }, + {-65535 /* 0xffff0001 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-65534 /* 0xffff0002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-65533 /* 0xffff0003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-65532 /* 0xffff0004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-65531 /* 0xffff0005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-65530 /* 0xffff0006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-65529 /* 0xffff0007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 13}, /* shli r4, r2, 13 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-65528 /* 0xffff0008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-65527 /* 0xffff0009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-65526 /* 0xffff000a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-49153 /* 0xffff3fff */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-40961 /* 0xffff5fff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 13}, /* shli r4, r3, 13 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-36865 /* 0xffff6fff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 12}, /* shli r4, r3, 12 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-34817 /* 0xffff77ff */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-32833 /* 0xffff7fbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 12}, /* shli r3, r2, 12 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-32801 /* 0xffff7fdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 12}, /* shli r3, r2, 12 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-32785 /* 0xffff7fef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-32778 /* 0xffff7ff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 15}, /* shli r4, r2, 15 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-32777 /* 0xffff7ff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-32776 /* 0xffff7ff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 15}, /* shli r3, r2, 15 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-32775 /* 0xffff7ff9 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-32774 /* 0xffff7ffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-32773 /* 0xffff7ffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-32772 /* 0xffff7ffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 15}, /* shli r3, r2, 15 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-32771 /* 0xffff7ffd */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-32770 /* 0xffff7ffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 15}, /* shli r3, r2, 15 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-32769 /* 0xffff7fff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-32768 /* 0xffff8000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 15}} /* shli r3, r2, 15 */ + }, + {-32767 /* 0xffff8001 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-32766 /* 0xffff8002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-32765 /* 0xffff8003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-32764 /* 0xffff8004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-32763 /* 0xffff8005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-32762 /* 0xffff8006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-32761 /* 0xffff8007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 12}, /* shli r4, r2, 12 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-32760 /* 0xffff8008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-32759 /* 0xffff8009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-32758 /* 0xffff800a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-24577 /* 0xffff9fff */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-20481 /* 0xffffafff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 12}, /* shli r4, r3, 12 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-19447 /* 0xffffb409 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 10}, /* shli r4, r3, 10 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-18433 /* 0xffffb7ff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 11}, /* shli r4, r3, 11 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-17409 /* 0xffffbbff */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-16449 /* 0xffffbfbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 11}, /* shli r3, r2, 11 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-16423 /* 0xffffbfd9 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-16417 /* 0xffffbfdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 11}, /* shli r3, r2, 11 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-16401 /* 0xffffbfef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-16394 /* 0xffffbff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 14}, /* shli r4, r2, 14 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-16393 /* 0xffffbff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-16392 /* 0xffffbff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 14}, /* shli r3, r2, 14 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-16391 /* 0xffffbff9 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-16390 /* 0xffffbffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-16389 /* 0xffffbffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-16388 /* 0xffffbffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 14}, /* shli r3, r2, 14 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-16387 /* 0xffffbffd */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-16386 /* 0xffffbffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 14}, /* shli r3, r2, 14 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-16385 /* 0xffffbfff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16384 /* 0xffffc000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 14}} /* shli r3, r2, 14 */ + }, + {-16383 /* 0xffffc001 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-16382 /* 0xffffc002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16381 /* 0xffffc003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16380 /* 0xffffc004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16379 /* 0xffffc005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16378 /* 0xffffc006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-16377 /* 0xffffc007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 11}, /* shli r4, r2, 11 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-16376 /* 0xffffc008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16375 /* 0xffffc009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16374 /* 0xffffc00a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-12289 /* 0xffffcfff */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-11248 /* 0xffffd410 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-10241 /* 0xffffd7ff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 11}, /* shli r4, r3, 11 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-9232 /* 0xffffdbf0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 10}, /* shli r3, r2, 10 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-9217 /* 0xffffdbff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 10}, /* shli r4, r3, 10 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-9198 /* 0xffffdc12 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 10}, /* shli r4, r2, 10 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-9191 /* 0xffffdc19 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 1, 3}, /* s1a r4, r1, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-8705 /* 0xffffddff */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-8257 /* 0xffffdfbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 10}, /* shli r3, r2, 10 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-8225 /* 0xffffdfdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 10}, /* shli r3, r2, 10 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-8209 /* 0xffffdfef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-8208 /* 0xffffdff0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {-8202 /* 0xffffdff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 13}, /* shli r4, r2, 13 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-8201 /* 0xffffdff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-8200 /* 0xffffdff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 13}, /* shli r3, r2, 13 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-8199 /* 0xffffdff9 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-8198 /* 0xffffdffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-8197 /* 0xffffdffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-8196 /* 0xffffdffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 13}, /* shli r3, r2, 13 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-8195 /* 0xffffdffd */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-8194 /* 0xffffdffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 13}, /* shli r3, r2, 13 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-8193 /* 0xffffdfff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8192 /* 0xffffe000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 13}} /* shli r3, r2, 13 */ + }, + {-8191 /* 0xffffe001 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-8190 /* 0xffffe002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8189 /* 0xffffe003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8188 /* 0xffffe004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8187 /* 0xffffe005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8186 /* 0xffffe006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-8185 /* 0xffffe007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 10}, /* shli r4, r2, 10 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-8184 /* 0xffffe008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8183 /* 0xffffe009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-8182 /* 0xffffe00a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-7678 /* 0xffffe202 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-6145 /* 0xffffe7ff */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-5121 /* 0xffffebff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 10}, /* shli r4, r3, 10 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-4609 /* 0xffffedff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 9}, /* shli r4, r3, 9 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-4353 /* 0xffffeeff */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-4161 /* 0xffffefbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 9}, /* shli r3, r2, 9 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-4129 /* 0xffffefdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 9}, /* shli r3, r2, 9 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-4113 /* 0xffffefef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-4106 /* 0xffffeff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 12}, /* shli r4, r2, 12 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-4105 /* 0xffffeff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-4104 /* 0xffffeff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 12}, /* shli r3, r2, 12 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-4103 /* 0xffffeff9 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-4102 /* 0xffffeffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-4101 /* 0xffffeffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-4100 /* 0xffffeffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 12}, /* shli r3, r2, 12 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-4099 /* 0xffffeffd */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-4098 /* 0xffffeffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 12}, /* shli r3, r2, 12 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-4097 /* 0xffffefff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4096 /* 0xfffff000 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 12}} /* shli r3, r2, 12 */ + }, + {-4095 /* 0xfffff001 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-4094 /* 0xfffff002 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4093 /* 0xfffff003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4092 /* 0xfffff004 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4091 /* 0xfffff005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4090 /* 0xfffff006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-4089 /* 0xfffff007 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-4088 /* 0xfffff008 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4087 /* 0xfffff009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-4086 /* 0xfffff00a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-4078 /* 0xfffff012 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-3600 /* 0xfffff1f0 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-3073 /* 0xfffff3ff */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-3072 /* 0xfffff400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2912 /* 0xfffff4a0 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-2561 /* 0xfffff5ff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 9}, /* shli r4, r3, 9 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-2305 /* 0xfffff6ff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 8}, /* shli r4, r3, 8 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-2184 /* 0xfffff778 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-2177 /* 0xfffff77f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-2113 /* 0xfffff7bf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-2081 /* 0xfffff7df */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-2065 /* 0xfffff7ef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-2058 /* 0xfffff7f6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 11}, /* shli r4, r2, 11 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-2057 /* 0xfffff7f7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-2056 /* 0xfffff7f8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 11}, /* shli r3, r2, 11 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-2055 /* 0xfffff7f9 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-2054 /* 0xfffff7fa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-2053 /* 0xfffff7fb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-2052 /* 0xfffff7fc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 11}, /* shli r3, r2, 11 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-2051 /* 0xfffff7fd */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-2050 /* 0xfffff7fe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 11}, /* shli r3, r2, 11 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-2049 /* 0xfffff7ff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2048 /* 0xfffff800 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 11}} /* shli r3, r2, 11 */ + }, + {-2047 /* 0xfffff801 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-2046 /* 0xfffff802 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2045 /* 0xfffff803 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2044 /* 0xfffff804 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2043 /* 0xfffff805 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2042 /* 0xfffff806 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-2041 /* 0xfffff807 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-2040 /* 0xfffff808 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2039 /* 0xfffff809 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-2038 /* 0xfffff80a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-1537 /* 0xfffff9ff */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1512 /* 0xfffffa18 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-1500 /* 0xfffffa24 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-1396 /* 0xfffffa8c */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-1344 /* 0xfffffac0 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-1312 /* 0xfffffae0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {-1281 /* 0xfffffaff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 8}, /* shli r4, r3, 8 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-1153 /* 0xfffffb7f */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-1089 /* 0xfffffbbf */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-1059 /* 0xfffffbdd */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-1057 /* 0xfffffbdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-1041 /* 0xfffffbef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-1034 /* 0xfffffbf6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 10}, /* shli r4, r2, 10 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-1033 /* 0xfffffbf7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-1032 /* 0xfffffbf8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 10}, /* shli r3, r2, 10 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-1031 /* 0xfffffbf9 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-1030 /* 0xfffffbfa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-1029 /* 0xfffffbfb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-1028 /* 0xfffffbfc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 10}, /* shli r3, r2, 10 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-1027 /* 0xfffffbfd */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-1026 /* 0xfffffbfe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 10}, /* shli r3, r2, 10 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-1025 /* 0xfffffbff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1024 /* 0xfffffc00 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 10}} /* shli r3, r2, 10 */ + }, + {-1023 /* 0xfffffc01 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-1022 /* 0xfffffc02 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1021 /* 0xfffffc03 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1020 /* 0xfffffc04 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1019 /* 0xfffffc05 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1018 /* 0xfffffc06 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-1017 /* 0xfffffc07 */ , + {{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 */ + }, + {-1016 /* 0xfffffc08 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1015 /* 0xfffffc09 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1014 /* 0xfffffc0a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-1013 /* 0xfffffc0b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-1012 /* 0xfffffc0c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-1011 /* 0xfffffc0d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {-1010 /* 0xfffffc0e */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {3, 1, 3}, /* s1a r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-1009 /* 0xfffffc0f */ , + {{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 */ + }, + {-1008 /* 0xfffffc10 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-1007 /* 0xfffffc11 */ , + {{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 */ + }, + {-1006 /* 0xfffffc12 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-1005 /* 0xfffffc13 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 1}} /* s1a r5, r4, r1 */ + }, + {-1004 /* 0xfffffc14 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-1003 /* 0xfffffc15 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {-1001 /* 0xfffffc17 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-1000 /* 0xfffffc18 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {-999 /* 0xfffffc19 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 1}} /* s3a r5, r4, r1 */ + }, + {-997 /* 0xfffffc1b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-996 /* 0xfffffc1c */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {4, 1, 3}, /* s2a r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-994 /* 0xfffffc1e */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {3, 1, 3}, /* s1a r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-993 /* 0xfffffc1f */ , + {{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 */ + }, + {-992 /* 0xfffffc20 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-991 /* 0xfffffc21 */ , + {{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 */ + }, + {-990 /* 0xfffffc22 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-988 /* 0xfffffc24 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-987 /* 0xfffffc25 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {-984 /* 0xfffffc28 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {-983 /* 0xfffffc29 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 1}} /* s3a r5, r4, r1 */ + }, + {-979 /* 0xfffffc2d */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-976 /* 0xfffffc30 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {-975 /* 0xfffffc31 */ , + {{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 */ + }, + {-969 /* 0xfffffc37 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-968 /* 0xfffffc38 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {5, 1, 3}, /* s3a r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-967 /* 0xfffffc39 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-965 /* 0xfffffc3b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-964 /* 0xfffffc3c */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {4, 1, 3}, /* s2a r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-963 /* 0xfffffc3d */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 1}, /* s1a r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-962 /* 0xfffffc3e */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {3, 1, 3}, /* s1a r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-961 /* 0xfffffc3f */ , + {{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 */ + }, + {-960 /* 0xfffffc40 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-959 /* 0xfffffc41 */ , + {{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 */ + }, + {-958 /* 0xfffffc42 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-957 /* 0xfffffc43 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-956 /* 0xfffffc44 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-955 /* 0xfffffc45 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 4}} /* s2a r5, r4, r4 */ + }, + {-953 /* 0xfffffc47 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-952 /* 0xfffffc48 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {-951 /* 0xfffffc49 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 1}} /* s3a r5, r4, r1 */ + }, + {-945 /* 0xfffffc4f */ , + {{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 */ + }, + {-944 /* 0xfffffc50 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {-943 /* 0xfffffc51 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-942 /* 0xfffffc52 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {-940 /* 0xfffffc54 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-936 /* 0xfffffc58 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-935 /* 0xfffffc59 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-929 /* 0xfffffc5f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-928 /* 0xfffffc60 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {-925 /* 0xfffffc63 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-924 /* 0xfffffc64 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {-920 /* 0xfffffc68 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-919 /* 0xfffffc69 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-916 /* 0xfffffc6c */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-913 /* 0xfffffc6f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-912 /* 0xfffffc70 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-911 /* 0xfffffc71 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-910 /* 0xfffffc72 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-905 /* 0xfffffc77 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-904 /* 0xfffffc78 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-903 /* 0xfffffc79 */ , + {{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 */ + }, + {-902 /* 0xfffffc7a */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-901 /* 0xfffffc7b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-900 /* 0xfffffc7c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-899 /* 0xfffffc7d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-898 /* 0xfffffc7e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-897 /* 0xfffffc7f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-896 /* 0xfffffc80 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-895 /* 0xfffffc81 */ , + {{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 */ + }, + {-894 /* 0xfffffc82 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-893 /* 0xfffffc83 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-892 /* 0xfffffc84 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-891 /* 0xfffffc85 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-890 /* 0xfffffc86 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-889 /* 0xfffffc87 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {-888 /* 0xfffffc88 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {-887 /* 0xfffffc89 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-886 /* 0xfffffc8a */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 1, 2}, /* s1a r4, r1, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {-884 /* 0xfffffc8c */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 1, 2}, /* s2a r4, r1, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {-881 /* 0xfffffc8f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-880 /* 0xfffffc90 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-879 /* 0xfffffc91 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {3, 4, 1}} /* s1a r5, r4, r1 */ + }, + {-873 /* 0xfffffc97 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-872 /* 0xfffffc98 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-868 /* 0xfffffc9c */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-865 /* 0xfffffc9f */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-864 /* 0xfffffca0 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {-863 /* 0xfffffca1 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-861 /* 0xfffffca3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-860 /* 0xfffffca4 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-856 /* 0xfffffca8 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-855 /* 0xfffffca9 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {-847 /* 0xfffffcb1 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-837 /* 0xfffffcbb */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-835 /* 0xfffffcbd */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-834 /* 0xfffffcbe */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {-832 /* 0xfffffcc0 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 6}} /* shli r5, r4, 6 */ + }, + {-831 /* 0xfffffcc1 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-829 /* 0xfffffcc3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-828 /* 0xfffffcc4 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-827 /* 0xfffffcc5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-824 /* 0xfffffcc8 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-823 /* 0xfffffcc9 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-819 /* 0xfffffccd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-816 /* 0xfffffcd0 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-815 /* 0xfffffcd1 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-803 /* 0xfffffcdd */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-801 /* 0xfffffcdf */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-800 /* 0xfffffce0 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-799 /* 0xfffffce1 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-797 /* 0xfffffce3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-796 /* 0xfffffce4 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-795 /* 0xfffffce5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-793 /* 0xfffffce7 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-792 /* 0xfffffce8 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 8}, /* shli r4, r3, 8 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {-791 /* 0xfffffce9 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-789 /* 0xfffffceb */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-788 /* 0xfffffcec */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-785 /* 0xfffffcef */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-784 /* 0xfffffcf0 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-783 /* 0xfffffcf1 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-781 /* 0xfffffcf3 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-780 /* 0xfffffcf4 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 8}, /* shli r4, r3, 8 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {-779 /* 0xfffffcf5 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-777 /* 0xfffffcf7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-776 /* 0xfffffcf8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-775 /* 0xfffffcf9 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-774 /* 0xfffffcfa */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 8}, /* shli r4, r3, 8 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-773 /* 0xfffffcfb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-772 /* 0xfffffcfc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-771 /* 0xfffffcfd */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 4}} /* s1a r5, r4, r4 */ + }, + {-770 /* 0xfffffcfe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-769 /* 0xfffffcff */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-768 /* 0xfffffd00 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-767 /* 0xfffffd01 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-766 /* 0xfffffd02 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-765 /* 0xfffffd03 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-764 /* 0xfffffd04 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {-763 /* 0xfffffd05 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-762 /* 0xfffffd06 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-761 /* 0xfffffd07 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-760 /* 0xfffffd08 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-759 /* 0xfffffd09 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-757 /* 0xfffffd0b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-756 /* 0xfffffd0c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-755 /* 0xfffffd0d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-753 /* 0xfffffd0f */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-752 /* 0xfffffd10 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-751 /* 0xfffffd11 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {-749 /* 0xfffffd13 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 1, 3}, /* s3a r4, r1, r3 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {-748 /* 0xfffffd14 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-744 /* 0xfffffd18 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-743 /* 0xfffffd19 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-741 /* 0xfffffd1b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-739 /* 0xfffffd1d */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-737 /* 0xfffffd1f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-736 /* 0xfffffd20 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {-735 /* 0xfffffd21 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {5, 4, 1}} /* s3a r5, r4, r1 */ + }, + {-732 /* 0xfffffd24 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-729 /* 0xfffffd27 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {-728 /* 0xfffffd28 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-720 /* 0xfffffd30 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-719 /* 0xfffffd31 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-715 /* 0xfffffd35 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-712 /* 0xfffffd38 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-711 /* 0xfffffd39 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {-708 /* 0xfffffd3c */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-707 /* 0xfffffd3d */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-705 /* 0xfffffd3f */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-704 /* 0xfffffd40 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 6}} /* shli r5, r4, 6 */ + }, + {-703 /* 0xfffffd41 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-701 /* 0xfffffd43 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-700 /* 0xfffffd44 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-699 /* 0xfffffd45 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-695 /* 0xfffffd49 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-693 /* 0xfffffd4b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-692 /* 0xfffffd4c */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-688 /* 0xfffffd50 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-680 /* 0xfffffd58 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {-679 /* 0xfffffd59 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-675 /* 0xfffffd5d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-673 /* 0xfffffd5f */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-672 /* 0xfffffd60 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-671 /* 0xfffffd61 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-667 /* 0xfffffd65 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-664 /* 0xfffffd68 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-660 /* 0xfffffd6c */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {-659 /* 0xfffffd6d */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-657 /* 0xfffffd6f */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {-656 /* 0xfffffd70 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {-655 /* 0xfffffd71 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-651 /* 0xfffffd75 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-650 /* 0xfffffd76 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-649 /* 0xfffffd77 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-648 /* 0xfffffd78 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {-647 /* 0xfffffd79 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 3}, /* shli r4, r3, 3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-645 /* 0xfffffd7b */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 4}} /* s2a r5, r4, r4 */ + }, + {-644 /* 0xfffffd7c */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-643 /* 0xfffffd7d */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-642 /* 0xfffffd7e */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {-641 /* 0xfffffd7f */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-640 /* 0xfffffd80 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 3, 7}} /* shli r4, r3, 7 */ + }, + {-639 /* 0xfffffd81 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-638 /* 0xfffffd82 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-637 /* 0xfffffd83 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-636 /* 0xfffffd84 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-635 /* 0xfffffd85 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-634 /* 0xfffffd86 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-633 /* 0xfffffd87 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-632 /* 0xfffffd88 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 3}, /* shli r3, r1, 3 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-631 /* 0xfffffd89 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-630 /* 0xfffffd8a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-629 /* 0xfffffd8b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-627 /* 0xfffffd8d */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-625 /* 0xfffffd8f */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 4}} /* s2a r5, r4, r4 */ + }, + {-624 /* 0xfffffd90 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-620 /* 0xfffffd94 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-619 /* 0xfffffd95 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-616 /* 0xfffffd98 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-615 /* 0xfffffd99 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-613 /* 0xfffffd9b */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {4, 3, 3}, /* s2a r4, r3, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-612 /* 0xfffffd9c */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {-611 /* 0xfffffd9d */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-609 /* 0xfffffd9f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-608 /* 0xfffffda0 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-607 /* 0xfffffda1 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-604 /* 0xfffffda4 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-603 /* 0xfffffda5 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-600 /* 0xfffffda8 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-599 /* 0xfffffda9 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-595 /* 0xfffffdad */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-594 /* 0xfffffdae */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-593 /* 0xfffffdaf */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-592 /* 0xfffffdb0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {-591 /* 0xfffffdb1 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-589 /* 0xfffffdb3 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-588 /* 0xfffffdb4 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 3}, /* s2a r4, r3, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-585 /* 0xfffffdb7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {-584 /* 0xfffffdb8 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-583 /* 0xfffffdb9 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-581 /* 0xfffffdbb */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {4, 3, 3}, /* s2a r4, r3, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-580 /* 0xfffffdbc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-579 /* 0xfffffdbd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-578 /* 0xfffffdbe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {-577 /* 0xfffffdbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-576 /* 0xfffffdc0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 6}} /* shli r4, r3, 6 */ + }, + {-575 /* 0xfffffdc1 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-574 /* 0xfffffdc2 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-573 /* 0xfffffdc3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-572 /* 0xfffffdc4 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-571 /* 0xfffffdc5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-569 /* 0xfffffdc7 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-568 /* 0xfffffdc8 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 3}, /* shli r3, r1, 3 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-567 /* 0xfffffdc9 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-566 /* 0xfffffdca */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-565 /* 0xfffffdcb */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-564 /* 0xfffffdcc */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-563 /* 0xfffffdcd */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-561 /* 0xfffffdcf */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-560 /* 0xfffffdd0 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-559 /* 0xfffffdd1 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-558 /* 0xfffffdd2 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-557 /* 0xfffffdd3 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-556 /* 0xfffffdd4 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-555 /* 0xfffffdd5 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-553 /* 0xfffffdd7 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-552 /* 0xfffffdd8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {-551 /* 0xfffffdd9 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-549 /* 0xfffffddb */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {-548 /* 0xfffffddc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {-547 /* 0xfffffddd */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-546 /* 0xfffffdde */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {-545 /* 0xfffffddf */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-544 /* 0xfffffde0 */ , + {{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 */ + }, + {-543 /* 0xfffffde1 */ , + {{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 */ + }, + {-542 /* 0xfffffde2 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-540 /* 0xfffffde4 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-539 /* 0xfffffde5 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-536 /* 0xfffffde8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-535 /* 0xfffffde9 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-533 /* 0xfffffdeb */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-532 /* 0xfffffdec */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {-531 /* 0xfffffded */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {-530 /* 0xfffffdee */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-529 /* 0xfffffdef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-528 /* 0xfffffdf0 */ , + {{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 */ + }, + {-527 /* 0xfffffdf1 */ , + {{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 */ + }, + {-526 /* 0xfffffdf2 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-525 /* 0xfffffdf3 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {-524 /* 0xfffffdf4 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-523 /* 0xfffffdf5 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-522 /* 0xfffffdf6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-521 /* 0xfffffdf7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-520 /* 0xfffffdf8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 9}, /* shli r3, r2, 9 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-519 /* 0xfffffdf9 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-518 /* 0xfffffdfa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-517 /* 0xfffffdfb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-516 /* 0xfffffdfc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 9}, /* shli r3, r2, 9 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-515 /* 0xfffffdfd */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-514 /* 0xfffffdfe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 9}, /* shli r3, r2, 9 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-513 /* 0xfffffdff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-512 /* 0xfffffe00 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 9}} /* shli r3, r2, 9 */ + }, + {-511 /* 0xfffffe01 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-510 /* 0xfffffe02 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-509 /* 0xfffffe03 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-508 /* 0xfffffe04 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-507 /* 0xfffffe05 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-506 /* 0xfffffe06 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-505 /* 0xfffffe07 */ , + {{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 */ + }, + {-504 /* 0xfffffe08 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-503 /* 0xfffffe09 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-502 /* 0xfffffe0a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-501 /* 0xfffffe0b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-500 /* 0xfffffe0c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-499 /* 0xfffffe0d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {-498 /* 0xfffffe0e */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {3, 1, 3}, /* s1a r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-497 /* 0xfffffe0f */ , + {{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 */ + }, + {-496 /* 0xfffffe10 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-495 /* 0xfffffe11 */ , + {{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 */ + }, + {-494 /* 0xfffffe12 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-493 /* 0xfffffe13 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 1}} /* s1a r5, r4, r1 */ + }, + {-492 /* 0xfffffe14 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-491 /* 0xfffffe15 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {-489 /* 0xfffffe17 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-488 /* 0xfffffe18 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {-487 /* 0xfffffe19 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 1}} /* s3a r5, r4, r1 */ + }, + {-485 /* 0xfffffe1b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-484 /* 0xfffffe1c */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 1, 3}, /* s2a r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-483 /* 0xfffffe1d */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 1}, /* s1a r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-482 /* 0xfffffe1e */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {3, 1, 3}, /* s1a r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-481 /* 0xfffffe1f */ , + {{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 */ + }, + {-480 /* 0xfffffe20 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-479 /* 0xfffffe21 */ , + {{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 */ + }, + {-478 /* 0xfffffe22 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-477 /* 0xfffffe23 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-476 /* 0xfffffe24 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-475 /* 0xfffffe25 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {-472 /* 0xfffffe28 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {-471 /* 0xfffffe29 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 1}} /* s3a r5, r4, r1 */ + }, + {-468 /* 0xfffffe2c */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-467 /* 0xfffffe2d */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-465 /* 0xfffffe2f */ , + {{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 */ + }, + {-464 /* 0xfffffe30 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {-463 /* 0xfffffe31 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-462 /* 0xfffffe32 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-460 /* 0xfffffe34 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-457 /* 0xfffffe37 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-456 /* 0xfffffe38 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-455 /* 0xfffffe39 */ , + {{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 */ + }, + {-454 /* 0xfffffe3a */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-453 /* 0xfffffe3b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-452 /* 0xfffffe3c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-451 /* 0xfffffe3d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-450 /* 0xfffffe3e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-449 /* 0xfffffe3f */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-448 /* 0xfffffe40 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-447 /* 0xfffffe41 */ , + {{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 */ + }, + {-446 /* 0xfffffe42 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-445 /* 0xfffffe43 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-444 /* 0xfffffe44 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-443 /* 0xfffffe45 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-442 /* 0xfffffe46 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-441 /* 0xfffffe47 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {-440 /* 0xfffffe48 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {-439 /* 0xfffffe49 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-438 /* 0xfffffe4a */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 1, 2}, /* s1a r4, r1, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {-436 /* 0xfffffe4c */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 1, 2}, /* s2a r4, r1, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {-433 /* 0xfffffe4f */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-432 /* 0xfffffe50 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-431 /* 0xfffffe51 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-429 /* 0xfffffe53 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-428 /* 0xfffffe54 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-424 /* 0xfffffe58 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-423 /* 0xfffffe59 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {-419 /* 0xfffffe5d */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-418 /* 0xfffffe5e */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {-417 /* 0xfffffe5f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-416 /* 0xfffffe60 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {-415 /* 0xfffffe61 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-413 /* 0xfffffe63 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-412 /* 0xfffffe64 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-411 /* 0xfffffe65 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-409 /* 0xfffffe67 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-408 /* 0xfffffe68 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-407 /* 0xfffffe69 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-405 /* 0xfffffe6b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-404 /* 0xfffffe6c */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-403 /* 0xfffffe6d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-401 /* 0xfffffe6f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-400 /* 0xfffffe70 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-399 /* 0xfffffe71 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-397 /* 0xfffffe73 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-396 /* 0xfffffe74 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {-395 /* 0xfffffe75 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-393 /* 0xfffffe77 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-392 /* 0xfffffe78 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-391 /* 0xfffffe79 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-390 /* 0xfffffe7a */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-389 /* 0xfffffe7b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-388 /* 0xfffffe7c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-387 /* 0xfffffe7d */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 4}} /* s1a r5, r4, r4 */ + }, + {-386 /* 0xfffffe7e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-385 /* 0xfffffe7f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-384 /* 0xfffffe80 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-383 /* 0xfffffe81 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-382 /* 0xfffffe82 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-381 /* 0xfffffe83 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-380 /* 0xfffffe84 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {-379 /* 0xfffffe85 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-378 /* 0xfffffe86 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-377 /* 0xfffffe87 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-376 /* 0xfffffe88 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-375 /* 0xfffffe89 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-373 /* 0xfffffe8b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-372 /* 0xfffffe8c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-371 /* 0xfffffe8d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-369 /* 0xfffffe8f */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-368 /* 0xfffffe90 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-367 /* 0xfffffe91 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-365 /* 0xfffffe93 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 1, 3}, /* s3a r4, r1, r3 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {-364 /* 0xfffffe94 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-361 /* 0xfffffe97 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-360 /* 0xfffffe98 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-359 /* 0xfffffe99 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-357 /* 0xfffffe9b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-356 /* 0xfffffe9c */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-355 /* 0xfffffe9d */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 3}, /* shli r4, r3, 3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-353 /* 0xfffffe9f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-352 /* 0xfffffea0 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {-351 /* 0xfffffea1 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-349 /* 0xfffffea3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-348 /* 0xfffffea4 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-347 /* 0xfffffea5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-344 /* 0xfffffea8 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-343 /* 0xfffffea9 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-341 /* 0xfffffeab */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-340 /* 0xfffffeac */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-339 /* 0xfffffead */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-337 /* 0xfffffeaf */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-336 /* 0xfffffeb0 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-335 /* 0xfffffeb1 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-333 /* 0xfffffeb3 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-332 /* 0xfffffeb4 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-331 /* 0xfffffeb5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-330 /* 0xfffffeb6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-329 /* 0xfffffeb7 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-328 /* 0xfffffeb8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {-327 /* 0xfffffeb9 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-325 /* 0xfffffebb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 4}} /* s2a r5, r4, r4 */ + }, + {-324 /* 0xfffffebc */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-323 /* 0xfffffebd */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-322 /* 0xfffffebe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {-321 /* 0xfffffebf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-320 /* 0xfffffec0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 3, 6}} /* shli r4, r3, 6 */ + }, + {-319 /* 0xfffffec1 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-318 /* 0xfffffec2 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-317 /* 0xfffffec3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-316 /* 0xfffffec4 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-315 /* 0xfffffec5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-314 /* 0xfffffec6 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-313 /* 0xfffffec7 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-312 /* 0xfffffec8 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 3}, /* shli r3, r1, 3 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-311 /* 0xfffffec9 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-310 /* 0xfffffeca */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-309 /* 0xfffffecb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-307 /* 0xfffffecd */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-306 /* 0xfffffece */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-305 /* 0xfffffecf */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 4}} /* s2a r5, r4, r4 */ + }, + {-304 /* 0xfffffed0 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-303 /* 0xfffffed1 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-301 /* 0xfffffed3 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-300 /* 0xfffffed4 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-299 /* 0xfffffed5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-297 /* 0xfffffed7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {-296 /* 0xfffffed8 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-295 /* 0xfffffed9 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-293 /* 0xfffffedb */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-292 /* 0xfffffedc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {-291 /* 0xfffffedd */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-290 /* 0xfffffede */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {-289 /* 0xfffffedf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-288 /* 0xfffffee0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {-287 /* 0xfffffee1 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-286 /* 0xfffffee2 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-285 /* 0xfffffee3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-284 /* 0xfffffee4 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-283 /* 0xfffffee5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-281 /* 0xfffffee7 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-280 /* 0xfffffee8 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-279 /* 0xfffffee9 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-278 /* 0xfffffeea */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-277 /* 0xfffffeeb */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-276 /* 0xfffffeec */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {-275 /* 0xfffffeed */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-274 /* 0xfffffeee */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-273 /* 0xfffffeef */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-272 /* 0xfffffef0 */ , + {{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 */ + }, + {-271 /* 0xfffffef1 */ , + {{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 */ + }, + {-270 /* 0xfffffef2 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-269 /* 0xfffffef3 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-268 /* 0xfffffef4 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-267 /* 0xfffffef5 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-266 /* 0xfffffef6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-265 /* 0xfffffef7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-264 /* 0xfffffef8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-263 /* 0xfffffef9 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-262 /* 0xfffffefa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-261 /* 0xfffffefb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-260 /* 0xfffffefc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-259 /* 0xfffffefd */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-258 /* 0xfffffefe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-257 /* 0xfffffeff */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-256 /* 0xffffff00 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 8}} /* shli r3, r2, 8 */ + }, + {-255 /* 0xffffff01 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-254 /* 0xffffff02 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-253 /* 0xffffff03 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-252 /* 0xffffff04 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-251 /* 0xffffff05 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-250 /* 0xffffff06 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-249 /* 0xffffff07 */ , + {{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 */ + }, + {-248 /* 0xffffff08 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-247 /* 0xffffff09 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-246 /* 0xffffff0a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-245 /* 0xffffff0b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-244 /* 0xffffff0c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-243 /* 0xffffff0d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {-242 /* 0xffffff0e */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {3, 1, 3}, /* s1a r4, r1, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-241 /* 0xffffff0f */ , + {{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 */ + }, + {-240 /* 0xffffff10 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-239 /* 0xffffff11 */ , + {{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 */ + }, + {-238 /* 0xffffff12 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-237 /* 0xffffff13 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 1}} /* s1a r5, r4, r1 */ + }, + {-236 /* 0xffffff14 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-235 /* 0xffffff15 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {-234 /* 0xffffff16 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {-233 /* 0xffffff17 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-232 /* 0xffffff18 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {-231 /* 0xffffff19 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 1}} /* s3a r5, r4, r1 */ + }, + {-230 /* 0xffffff1a */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-229 /* 0xffffff1b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-228 /* 0xffffff1c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-227 /* 0xffffff1d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-226 /* 0xffffff1e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-225 /* 0xffffff1f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-224 /* 0xffffff20 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-223 /* 0xffffff21 */ , + {{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 */ + }, + {-222 /* 0xffffff22 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-221 /* 0xffffff23 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-220 /* 0xffffff24 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-219 /* 0xffffff25 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {-218 /* 0xffffff26 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-217 /* 0xffffff27 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {-216 /* 0xffffff28 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {-215 /* 0xffffff29 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-214 /* 0xffffff2a */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 1, 2}, /* s1a r4, r1, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {-213 /* 0xffffff2b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 3}, /* shli r4, r3, 3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-212 /* 0xffffff2c */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 1, 2}, /* s2a r4, r1, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {-211 /* 0xffffff2d */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-210 /* 0xffffff2e */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {-209 /* 0xffffff2f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-208 /* 0xffffff30 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {-207 /* 0xffffff31 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-205 /* 0xffffff33 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-204 /* 0xffffff34 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {-203 /* 0xffffff35 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-202 /* 0xffffff36 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-201 /* 0xffffff37 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-200 /* 0xffffff38 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-199 /* 0xffffff39 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-198 /* 0xffffff3a */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-197 /* 0xffffff3b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-196 /* 0xffffff3c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-195 /* 0xffffff3d */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 4}} /* s1a r5, r4, r4 */ + }, + {-194 /* 0xffffff3e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-193 /* 0xffffff3f */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-192 /* 0xffffff40 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-191 /* 0xffffff41 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-190 /* 0xffffff42 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-189 /* 0xffffff43 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-188 /* 0xffffff44 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {-187 /* 0xffffff45 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-186 /* 0xffffff46 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-185 /* 0xffffff47 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-184 /* 0xffffff48 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-183 /* 0xffffff49 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-181 /* 0xffffff4b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-180 /* 0xffffff4c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-179 /* 0xffffff4d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-178 /* 0xffffff4e */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-177 /* 0xffffff4f */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-176 /* 0xffffff50 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {-175 /* 0xffffff51 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-173 /* 0xffffff53 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-172 /* 0xffffff54 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-171 /* 0xffffff55 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-170 /* 0xffffff56 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-169 /* 0xffffff57 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-168 /* 0xffffff58 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-167 /* 0xffffff59 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-165 /* 0xffffff5b */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 4}} /* s2a r5, r4, r4 */ + }, + {-164 /* 0xffffff5c */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-163 /* 0xffffff5d */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-162 /* 0xffffff5e */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-161 /* 0xffffff5f */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-160 /* 0xffffff60 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {-159 /* 0xffffff61 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-158 /* 0xffffff62 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-157 /* 0xffffff63 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-156 /* 0xffffff64 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-155 /* 0xffffff65 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-154 /* 0xffffff66 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-153 /* 0xffffff67 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {-152 /* 0xffffff68 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 3}, /* shli r3, r1, 3 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-151 /* 0xffffff69 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-150 /* 0xffffff6a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-149 /* 0xffffff6b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-148 /* 0xffffff6c */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {-147 /* 0xffffff6d */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-146 /* 0xffffff6e */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-145 /* 0xffffff6f */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-144 /* 0xffffff70 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {-143 /* 0xffffff71 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-142 /* 0xffffff72 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-141 /* 0xffffff73 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-140 /* 0xffffff74 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-139 /* 0xffffff75 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-138 /* 0xffffff76 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-137 /* 0xffffff77 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-136 /* 0xffffff78 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {-135 /* 0xffffff79 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-134 /* 0xffffff7a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-133 /* 0xffffff7b */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-132 /* 0xffffff7c */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-131 /* 0xffffff7d */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-130 /* 0xffffff7e */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-129 /* 0xffffff7f */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-128 /* 0xffffff80 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 7}} /* shli r3, r2, 7 */ + }, + {-127 /* 0xffffff81 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-126 /* 0xffffff82 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-125 /* 0xffffff83 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-124 /* 0xffffff84 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-123 /* 0xffffff85 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-122 /* 0xffffff86 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-121 /* 0xffffff87 */ , + {{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 */ + }, + {-120 /* 0xffffff88 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-119 /* 0xffffff89 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-118 /* 0xffffff8a */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-117 /* 0xffffff8b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-116 /* 0xffffff8c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-115 /* 0xffffff8d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-114 /* 0xffffff8e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-113 /* 0xffffff8f */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-112 /* 0xffffff90 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-111 /* 0xffffff91 */ , + {{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 */ + }, + {-110 /* 0xffffff92 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-109 /* 0xffffff93 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-108 /* 0xffffff94 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-107 /* 0xffffff95 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {-106 /* 0xffffff96 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {-105 /* 0xffffff97 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {2, 2, 1}, /* sub r4, r2, r1 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {-104 /* 0xffffff98 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {-103 /* 0xffffff99 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {-102 /* 0xffffff9a */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 1, 2}, /* s1a r4, r1, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {-101 /* 0xffffff9b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-100 /* 0xffffff9c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-99 /* 0xffffff9d */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 4}} /* s1a r5, r4, r4 */ + }, + {-98 /* 0xffffff9e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-97 /* 0xffffff9f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-96 /* 0xffffffa0 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-95 /* 0xffffffa1 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-94 /* 0xffffffa2 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-93 /* 0xffffffa3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-92 /* 0xffffffa4 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {-91 /* 0xffffffa5 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-90 /* 0xffffffa6 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-89 /* 0xffffffa7 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-88 /* 0xffffffa8 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-87 /* 0xffffffa9 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-86 /* 0xffffffaa */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {2, 1, 4}} /* sub r5, r1, r4 */ + }, + {-85 /* 0xffffffab */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 4}} /* s2a r5, r4, r4 */ + }, + {-84 /* 0xffffffac */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-83 /* 0xffffffad */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-82 /* 0xffffffae */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {-81 /* 0xffffffaf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 3}} /* s3a r4, r3, r3 */ + }, + {-80 /* 0xffffffb0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {-79 /* 0xffffffb1 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-78 /* 0xffffffb2 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-77 /* 0xffffffb3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 2, 4}} /* sub r5, r2, r4 */ + }, + {-76 /* 0xffffffb4 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-75 /* 0xffffffb5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-74 /* 0xffffffb6 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-73 /* 0xffffffb7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {-72 /* 0xffffffb8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 3}} /* shli r4, r3, 3 */ + }, + {-71 /* 0xffffffb9 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-70 /* 0xffffffba */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-69 /* 0xffffffbb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {-68 /* 0xffffffbc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {-67 /* 0xffffffbd */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-66 /* 0xffffffbe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-65 /* 0xffffffbf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-64 /* 0xffffffc0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 6}} /* shli r3, r2, 6 */ + }, + {-63 /* 0xffffffc1 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-62 /* 0xffffffc2 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-61 /* 0xffffffc3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-60 /* 0xffffffc4 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-59 /* 0xffffffc5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-58 /* 0xffffffc6 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {-57 /* 0xffffffc7 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-56 /* 0xffffffc8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-55 /* 0xffffffc9 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-54 /* 0xffffffca */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-53 /* 0xffffffcb */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 3}, /* shli r3, r1, 3 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {-52 /* 0xffffffcc */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {-51 /* 0xffffffcd */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {3, 4, 4}} /* s1a r5, r4, r4 */ + }, + {-50 /* 0xffffffce */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-49 /* 0xffffffcf */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-48 /* 0xffffffd0 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-47 /* 0xffffffd1 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-46 /* 0xffffffd2 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-45 /* 0xffffffd3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-44 /* 0xffffffd4 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {-43 /* 0xffffffd5 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {2, 1, 2}, /* sub r4, r1, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {-42 /* 0xffffffd6 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-41 /* 0xffffffd7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {-40 /* 0xffffffd8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 3, 3}} /* shli r4, r3, 3 */ + }, + {-39 /* 0xffffffd9 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-38 /* 0xffffffda */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 3, 4}} /* sub r5, r3, r4 */ + }, + {-37 /* 0xffffffdb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {-36 /* 0xffffffdc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 2}} /* shli r4, r3, 2 */ + }, + {-35 /* 0xffffffdd */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-34 /* 0xffffffde */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {-33 /* 0xffffffdf */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-32 /* 0xffffffe0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 5}} /* shli r3, r2, 5 */ + }, + {-31 /* 0xffffffe1 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-30 /* 0xffffffe2 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-29 /* 0xffffffe3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-28 /* 0xffffffe4 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-27 /* 0xffffffe5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-26 /* 0xffffffe6 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-25 /* 0xffffffe7 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-24 /* 0xffffffe8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-23 /* 0xffffffe9 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-22 /* 0xffffffea */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-21 /* 0xffffffeb */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-20 /* 0xffffffec */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 3, 2}} /* shli r4, r3, 2 */ + }, + {-19 /* 0xffffffed */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {2, 1, 3}} /* sub r4, r1, r3 */ + }, + {-18 /* 0xffffffee */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 1}} /* shli r4, r3, 1 */ + }, + {-17 /* 0xffffffef */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-16 /* 0xfffffff0 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 4}} /* shli r3, r2, 4 */ + }, + {-15 /* 0xfffffff1 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-14 /* 0xfffffff2 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-13 /* 0xfffffff3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-12 /* 0xfffffff4 */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-11 /* 0xfffffff5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-10 /* 0xfffffff6 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-9 /* 0xfffffff7 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 2, 2}} /* s3a r3, r2, r2 */ + }, + {-8 /* 0xfffffff8 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 3}} /* shli r3, r2, 3 */ + }, + {-7 /* 0xfffffff9 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-6 /* 0xfffffffa */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 3}, /* shli r3, r1, 3 */ + {2, 2, 3}} /* sub r4, r2, r3 */ + }, + {-5 /* 0xfffffffb */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 2, 2}} /* s2a r3, r2, r2 */ + }, + {-4 /* 0xfffffffc */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 2}} /* shli r3, r2, 2 */ + }, + {-3 /* 0xfffffffd */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}} /* sub r3, r1, r2 */ + }, + {-2 /* 0xfffffffe */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {6, 2, 1}} /* shli r3, r2, 1 */ + }, + {-1 /* 0xffffffff */ , + {{2, 0, 1}} /* sub r2, zero, r1 */ + }, + {2 /* 0x2 */ , + {{6, 1, 1}} /* shli r2, r1, 1 */ + }, + {3 /* 0x3 */ , + {{3, 1, 1}} /* s1a r2, r1, r1 */ + }, + {4 /* 0x4 */ , + {{6, 1, 2}} /* shli r2, r1, 2 */ + }, + {5 /* 0x5 */ , + {{4, 1, 1}} /* s2a r2, r1, r1 */ + }, + {6 /* 0x6 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 1}} /* shli r3, r2, 1 */ + }, + {7 /* 0x7 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {8 /* 0x8 */ , + {{6, 1, 3}} /* shli r2, r1, 3 */ + }, + {9 /* 0x9 */ , + {{5, 1, 1}} /* s3a r2, r1, r1 */ + }, + {10 /* 0xa */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 1}} /* shli r3, r2, 1 */ + }, + {11 /* 0xb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}} /* s1a r3, r2, r1 */ + }, + {12 /* 0xc */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 2}} /* shli r3, r2, 2 */ + }, + {13 /* 0xd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}} /* s2a r3, r2, r1 */ + }, + {14 /* 0xe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {15 /* 0xf */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {16 /* 0x10 */ , + {{6, 1, 4}} /* shli r2, r1, 4 */ + }, + {17 /* 0x11 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {18 /* 0x12 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 1}} /* shli r3, r2, 1 */ + }, + {19 /* 0x13 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 2, 1}} /* s1a r3, r2, r1 */ + }, + {20 /* 0x14 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 2}} /* shli r3, r2, 2 */ + }, + {21 /* 0x15 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}} /* s2a r3, r2, r1 */ + }, + {22 /* 0x16 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {23 /* 0x17 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {24 /* 0x18 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 3}} /* shli r3, r2, 3 */ + }, + {25 /* 0x19 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}} /* s3a r3, r2, r1 */ + }, + {26 /* 0x1a */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {27 /* 0x1b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}} /* s3a r3, r2, r2 */ + }, + {28 /* 0x1c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {29 /* 0x1d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {30 /* 0x1e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {31 /* 0x1f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {32 /* 0x20 */ , + {{6, 1, 5}} /* shli r2, r1, 5 */ + }, + {33 /* 0x21 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {34 /* 0x22 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {35 /* 0x23 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36 /* 0x24 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 2}} /* shli r3, r2, 2 */ + }, + {37 /* 0x25 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 2, 1}} /* s2a r3, r2, r1 */ + }, + {38 /* 0x26 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {39 /* 0x27 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {40 /* 0x28 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 3}} /* shli r3, r2, 3 */ + }, + {41 /* 0x29 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}} /* s3a r3, r2, r1 */ + }, + {42 /* 0x2a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {43 /* 0x2b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {44 /* 0x2c */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {45 /* 0x2d */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}} /* s3a r3, r2, r2 */ + }, + {46 /* 0x2e */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {47 /* 0x2f */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {48 /* 0x30 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 4}} /* shli r3, r2, 4 */ + }, + {49 /* 0x31 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {50 /* 0x32 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {51 /* 0x33 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {52 /* 0x34 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {53 /* 0x35 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {54 /* 0x36 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 1}} /* shli r4, r3, 1 */ + }, + {55 /* 0x37 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {56 /* 0x38 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {57 /* 0x39 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {58 /* 0x3a */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {59 /* 0x3b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {60 /* 0x3c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {61 /* 0x3d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {62 /* 0x3e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {63 /* 0x3f */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {64 /* 0x40 */ , + {{6, 1, 6}} /* shli r2, r1, 6 */ + }, + {65 /* 0x41 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {66 /* 0x42 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {67 /* 0x43 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68 /* 0x44 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {69 /* 0x45 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {70 /* 0x46 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {71 /* 0x47 */ , + {{2, 0, 1}, /* sub r2, zero, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {72 /* 0x48 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 3}} /* shli r3, r2, 3 */ + }, + {73 /* 0x49 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 1}} /* s3a r3, r2, r1 */ + }, + {74 /* 0x4a */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {75 /* 0x4b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {76 /* 0x4c */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {77 /* 0x4d */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {78 /* 0x4e */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {79 /* 0x4f */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {80 /* 0x50 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 4}} /* shli r3, r2, 4 */ + }, + {81 /* 0x51 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 2}} /* s3a r3, r2, r2 */ + }, + {82 /* 0x52 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {83 /* 0x53 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 1}} /* s1a r4, r3, r1 */ + }, + {84 /* 0x54 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {85 /* 0x55 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {86 /* 0x56 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {87 /* 0x57 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {88 /* 0x58 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {89 /* 0x59 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {90 /* 0x5a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 1}} /* shli r4, r3, 1 */ + }, + {91 /* 0x5b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {3, 3, 1}} /* s1a r4, r3, r1 */ + }, + {92 /* 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}} /* s1a r5, r4, r3 */ + }, + {93 /* 0x5d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {94 /* 0x5e */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {95 /* 0x5f */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {96 /* 0x60 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}} /* shli r3, r2, 5 */ + }, + {97 /* 0x61 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {98 /* 0x62 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {99 /* 0x63 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {100 /* 0x64 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {101 /* 0x65 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {4, 3, 1}} /* s2a r4, r3, r1 */ + }, + {102 /* 0x66 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {103 /* 0x67 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {104 /* 0x68 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {105 /* 0x69 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {106 /* 0x6a */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 1, 1}, /* shli r4, r1, 1 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {107 /* 0x6b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {108 /* 0x6c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 2}} /* shli r4, r3, 2 */ + }, + {109 /* 0x6d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {4, 3, 1}} /* s2a r4, r3, r1 */ + }, + {110 /* 0x6e */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {111 /* 0x6f */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {112 /* 0x70 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {113 /* 0x71 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {114 /* 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}} /* s3a r5, r3, r4 */ + }, + {115 /* 0x73 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {116 /* 0x74 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {117 /* 0x75 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {5, 3, 3}} /* s3a r4, r3, r3 */ + }, + {118 /* 0x76 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {119 /* 0x77 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {120 /* 0x78 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {121 /* 0x79 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {122 /* 0x7a */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {123 /* 0x7b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {124 /* 0x7c */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {125 /* 0x7d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {126 /* 0x7e */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {127 /* 0x7f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {128 /* 0x80 */ , + {{6, 1, 7}} /* shli r2, r1, 7 */ + }, + {129 /* 0x81 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {130 /* 0x82 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {131 /* 0x83 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {132 /* 0x84 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {133 /* 0x85 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134 /* 0x86 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {135 /* 0x87 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {136 /* 0x88 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {137 /* 0x89 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {138 /* 0x8a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {139 /* 0x8b */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {140 /* 0x8c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {141 /* 0x8d */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 1}, /* s2a r4, r2, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {142 /* 0x8e */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {143 /* 0x8f */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {144 /* 0x90 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 4}} /* shli r3, r2, 4 */ + }, + {145 /* 0x91 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {146 /* 0x92 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {147 /* 0x93 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 1}} /* s1a r4, r3, r1 */ + }, + {148 /* 0x94 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {149 /* 0x95 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {4, 3, 1}} /* s2a r4, r3, r1 */ + }, + {150 /* 0x96 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {151 /* 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}} /* s3a r5, r3, r4 */ + }, + {152 /* 0x98 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {153 /* 0x99 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {154 /* 0x9a */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {155 /* 0x9b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {156 /* 0x9c */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {157 /* 0x9d */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {158 /* 0x9e */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {159 /* 0x9f */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {160 /* 0xa0 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 5}} /* shli r3, r2, 5 */ + }, + {161 /* 0xa1 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {162 /* 0xa2 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 1}} /* shli r4, r3, 1 */ + }, + {163 /* 0xa3 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {3, 3, 1}} /* s1a r4, r3, r1 */ + }, + {164 /* 0xa4 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {165 /* 0xa5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {166 /* 0xa6 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {167 /* 0xa7 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {168 /* 0xa8 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {169 /* 0xa9 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {170 /* 0xaa */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {171 /* 0xab */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {5, 3, 3}} /* s3a r4, r3, r3 */ + }, + {172 /* 0xac */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {173 /* 0xad */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {174 /* 0xae */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 1}, /* shli r4, r2, 1 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {175 /* 0xaf */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 4}} /* s2a r5, r4, r4 */ + }, + {176 /* 0xb0 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {177 /* 0xb1 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {178 /* 0xb2 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {179 /* 0xb3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {180 /* 0xb4 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 2}} /* shli r4, r3, 2 */ + }, + {181 /* 0xb5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {4, 3, 1}} /* s2a r4, r3, r1 */ + }, + {182 /* 0xb6 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 1, 1}, /* shli r4, r1, 1 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {183 /* 0xb7 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {184 /* 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}} /* s1a r5, r4, r3 */ + }, + {185 /* 0xb9 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {186 /* 0xba */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {187 /* 0xbb */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {188 /* 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}} /* s1a r5, r4, r3 */ + }, + {189 /* 0xbd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {190 /* 0xbe */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {191 /* 0xbf */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {192 /* 0xc0 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}} /* shli r3, r2, 6 */ + }, + {193 /* 0xc1 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {194 /* 0xc2 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {195 /* 0xc3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {196 /* 0xc4 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {197 /* 0xc5 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {198 /* 0xc6 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {199 /* 0xc7 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {200 /* 0xc8 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {201 /* 0xc9 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {202 /* 0xca */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 1, 1}, /* shli r4, r1, 1 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {203 /* 0xcb */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {204 /* 0xcc */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {205 /* 0xcd */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {206 /* 0xce */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 1}, /* shli r4, r2, 1 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {207 /* 0xcf */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {208 /* 0xd0 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {209 /* 0xd1 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {210 /* 0xd2 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {211 /* 0xd3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {212 /* 0xd4 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {213 /* 0xd5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {214 /* 0xd6 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {215 /* 0xd7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {216 /* 0xd8 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 3}} /* shli r4, r3, 3 */ + }, + {217 /* 0xd9 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {218 /* 0xda */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 1, 1}, /* shli r4, r1, 1 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {219 /* 0xdb */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {220 /* 0xdc */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {221 /* 0xdd */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {222 /* 0xde */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {223 /* 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 */ + }, + {224 /* 0xe0 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {225 /* 0xe1 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {226 /* 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}} /* s3a r5, r3, r4 */ + }, + {227 /* 0xe3 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 1}, /* s2a r4, r2, r1 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {228 /* 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}} /* s3a r5, r3, r4 */ + }, + {229 /* 0xe5 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 2, 1}, /* s1a r4, r2, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {230 /* 0xe6 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {231 /* 0xe7 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 1, 8}, /* shli r4, r1, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {232 /* 0xe8 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {233 /* 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}} /* s3a r5, r3, r4 */ + }, + {234 /* 0xea */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {235 /* 0xeb */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {236 /* 0xec */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {237 /* 0xed */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {238 /* 0xee */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {239 /* 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 */ + }, + {240 /* 0xf0 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {241 /* 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 */ + }, + {242 /* 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}} /* s3a r5, r4, r2 */ + }, + {243 /* 0xf3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 3}} /* s3a r4, r3, r3 */ + }, + {244 /* 0xf4 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {245 /* 0xf5 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 1}, /* s2a r4, r2, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {246 /* 0xf6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {247 /* 0xf7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {248 /* 0xf8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {249 /* 0xf9 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {250 /* 0xfa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {251 /* 0xfb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {252 /* 0xfc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {253 /* 0xfd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {254 /* 0xfe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {255 /* 0xff */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {256 /* 0x100 */ , + {{6, 1, 8}} /* shli r2, r1, 8 */ + }, + {257 /* 0x101 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {258 /* 0x102 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {259 /* 0x103 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {260 /* 0x104 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {261 /* 0x105 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262 /* 0x106 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {263 /* 0x107 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {264 /* 0x108 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {265 /* 0x109 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {266 /* 0x10a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {267 /* 0x10b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {1, 1, 3}, /* add r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {268 /* 0x10c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {269 /* 0x10d */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {270 /* 0x10e */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {271 /* 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 */ + }, + {272 /* 0x110 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {273 /* 0x111 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {274 /* 0x112 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {275 /* 0x113 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {276 /* 0x114 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {277 /* 0x115 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 1}, /* s2a r4, r2, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {278 /* 0x116 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {279 /* 0x117 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {280 /* 0x118 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {281 /* 0x119 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 1}, /* s1a r4, r2, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {282 /* 0x11a */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {3, 2, 1}, /* s1a r4, r2, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {283 /* 0x11b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {284 /* 0x11c */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {285 /* 0x11d */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {286 /* 0x11e */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {287 /* 0x11f */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {288 /* 0x120 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 5}} /* shli r3, r2, 5 */ + }, + {289 /* 0x121 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {290 /* 0x122 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {291 /* 0x123 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 1}, /* s2a r4, r2, r1 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {292 /* 0x124 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {293 /* 0x125 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {4, 3, 1}} /* s2a r4, r3, r1 */ + }, + {294 /* 0x126 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {295 /* 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}} /* s3a r5, r3, r4 */ + }, + {296 /* 0x128 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {297 /* 0x129 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {298 /* 0x12a */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {299 /* 0x12b */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {300 /* 0x12c */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {301 /* 0x12d */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {302 /* 0x12e */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {303 /* 0x12f */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {304 /* 0x130 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {305 /* 0x131 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {306 /* 0x132 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {307 /* 0x133 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {308 /* 0x134 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {309 /* 0x135 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {310 /* 0x136 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {311 /* 0x137 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {312 /* 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}} /* s2a r5, r4, r3 */ + }, + {313 /* 0x139 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {314 /* 0x13a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {315 /* 0x13b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {316 /* 0x13c */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {317 /* 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}} /* s2a r5, r4, r3 */ + }, + {318 /* 0x13e */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {319 /* 0x13f */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {320 /* 0x140 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 6}} /* shli r3, r2, 6 */ + }, + {321 /* 0x141 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {322 /* 0x142 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {323 /* 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}} /* s2a r5, r3, r4 */ + }, + {324 /* 0x144 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {325 /* 0x145 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {326 /* 0x146 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {327 /* 0x147 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {328 /* 0x148 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {329 /* 0x149 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {330 /* 0x14a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {331 /* 0x14b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {332 /* 0x14c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {333 /* 0x14d */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {334 /* 0x14e */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {335 /* 0x14f */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 4}} /* s2a r5, r4, r4 */ + }, + {336 /* 0x150 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {337 /* 0x151 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {338 /* 0x152 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 1}, /* shli r4, r2, 1 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {339 /* 0x153 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {340 /* 0x154 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {341 /* 0x155 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {342 /* 0x156 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 1}, /* shli r4, r2, 1 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {343 /* 0x157 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {344 /* 0x158 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {345 /* 0x159 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {346 /* 0x15a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {347 /* 0x15b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {348 /* 0x15c */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 2}, /* shli r4, r2, 2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {349 /* 0x15d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {350 /* 0x15e */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {351 /* 0x15f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {352 /* 0x160 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {353 /* 0x161 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {354 /* 0x162 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {355 /* 0x163 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {356 /* 0x164 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {357 /* 0x165 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {358 /* 0x166 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {359 /* 0x167 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {360 /* 0x168 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 3}} /* shli r4, r3, 3 */ + }, + {361 /* 0x169 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {362 /* 0x16a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 1, 1}, /* shli r4, r1, 1 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {363 /* 0x16b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {364 /* 0x16c */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 1, 2}, /* shli r4, r1, 2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {365 /* 0x16d */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {366 /* 0x16e */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {367 /* 0x16f */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {368 /* 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}} /* s1a r5, r4, r3 */ + }, + {369 /* 0x171 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 3}} /* s3a r4, r3, r3 */ + }, + {370 /* 0x172 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 1}, /* shli r4, r2, 1 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {371 /* 0x173 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {372 /* 0x174 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {373 /* 0x175 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {374 /* 0x176 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {375 /* 0x177 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {376 /* 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}} /* s1a r5, r4, r3 */ + }, + {377 /* 0x179 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {378 /* 0x17a */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {379 /* 0x17b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {380 /* 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}} /* s1a r5, r4, r3 */ + }, + {381 /* 0x17d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {382 /* 0x17e */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {383 /* 0x17f */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {384 /* 0x180 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 7}} /* shli r3, r2, 7 */ + }, + {385 /* 0x181 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {386 /* 0x182 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {387 /* 0x183 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {388 /* 0x184 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {389 /* 0x185 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {390 /* 0x186 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {391 /* 0x187 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {392 /* 0x188 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {393 /* 0x189 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {394 /* 0x18a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {395 /* 0x18b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {396 /* 0x18c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {397 /* 0x18d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {398 /* 0x18e */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {399 /* 0x18f */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {400 /* 0x190 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {401 /* 0x191 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {402 /* 0x192 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {403 /* 0x193 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {404 /* 0x194 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {4, 1, 2}, /* s2a r4, r1, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {405 /* 0x195 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 3}} /* s3a r4, r3, r3 */ + }, + {406 /* 0x196 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {407 /* 0x197 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {408 /* 0x198 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {409 /* 0x199 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {410 /* 0x19a */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {411 /* 0x19b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {412 /* 0x19c */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {413 /* 0x19d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {414 /* 0x19e */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {415 /* 0x19f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {416 /* 0x1a0 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {417 /* 0x1a1 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {418 /* 0x1a2 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {419 /* 0x1a3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {420 /* 0x1a4 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {421 /* 0x1a5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {422 /* 0x1a6 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {423 /* 0x1a7 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 1}, /* sub r4, r3, r1 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {424 /* 0x1a8 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {425 /* 0x1a9 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {426 /* 0x1aa */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {427 /* 0x1ab */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {428 /* 0x1ac */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {429 /* 0x1ad */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {430 /* 0x1ae */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 1}, /* sub r4, r3, r1 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {431 /* 0x1af */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 1, 9}, /* shli r4, r1, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {432 /* 0x1b0 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {433 /* 0x1b1 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {434 /* 0x1b2 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {435 /* 0x1b3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {436 /* 0x1b4 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {437 /* 0x1b5 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {438 /* 0x1b6 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {439 /* 0x1b7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 1, 9}, /* shli r4, r1, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {440 /* 0x1b8 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {441 /* 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}} /* s3a r5, r4, r3 */ + }, + {442 /* 0x1ba */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {443 /* 0x1bb */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {444 /* 0x1bc */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {445 /* 0x1bd */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {446 /* 0x1be */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {447 /* 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 */ + }, + {448 /* 0x1c0 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {449 /* 0x1c1 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {450 /* 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}} /* s3a r5, r3, r4 */ + }, + {451 /* 0x1c3 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 1}, /* s2a r4, r2, r1 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {452 /* 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}} /* s3a r5, r3, r4 */ + }, + {453 /* 0x1c5 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 2, 1}, /* s1a r4, r2, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {454 /* 0x1c6 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {455 /* 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 */ + }, + {456 /* 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}} /* s3a r5, r3, r4 */ + }, + {457 /* 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}} /* s3a r5, r3, r4 */ + }, + {458 /* 0x1ca */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {459 /* 0x1cb */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {460 /* 0x1cc */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {461 /* 0x1cd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {462 /* 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}} /* s1a r5, r3, r4 */ + }, + {463 /* 0x1cf */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {464 /* 0x1d0 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {465 /* 0x1d1 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 1, 2}, /* s1a r4, r1, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {467 /* 0x1d3 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 1, 9}, /* shli r4, r1, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {468 /* 0x1d4 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {469 /* 0x1d5 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {470 /* 0x1d6 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {471 /* 0x1d7 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 1, 9}, /* shli r4, r1, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {472 /* 0x1d8 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {473 /* 0x1d9 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 1}} /* s3a r5, r4, r1 */ + }, + {475 /* 0x1db */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 1, 9}, /* shli r4, r1, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {476 /* 0x1dc */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {477 /* 0x1dd */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {478 /* 0x1de */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {479 /* 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 */ + }, + {480 /* 0x1e0 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {481 /* 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 */ + }, + {482 /* 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}} /* s1a r5, r3, r4 */ + }, + {483 /* 0x1e3 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {484 /* 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}} /* s3a r5, r4, r2 */ + }, + {485 /* 0x1e5 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 1}, /* s2a r4, r2, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {486 /* 0x1e6 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {487 /* 0x1e7 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 1, 9}, /* shli r4, r1, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {488 /* 0x1e8 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {489 /* 0x1e9 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 2, 1}, /* s1a r4, r2, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {490 /* 0x1ea */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {491 /* 0x1eb */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {492 /* 0x1ec */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {493 /* 0x1ed */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {494 /* 0x1ee */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {495 /* 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 */ + }, + {496 /* 0x1f0 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {497 /* 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 */ + }, + {498 /* 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}} /* s3a r5, r4, r2 */ + }, + {499 /* 0x1f3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 1, 9}, /* shli r4, r1, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {500 /* 0x1f4 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {501 /* 0x1f5 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {502 /* 0x1f6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {503 /* 0x1f7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {504 /* 0x1f8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {505 /* 0x1f9 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {506 /* 0x1fa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {507 /* 0x1fb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {508 /* 0x1fc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {509 /* 0x1fd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {510 /* 0x1fe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {511 /* 0x1ff */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {512 /* 0x200 */ , + {{6, 1, 9}} /* shli r2, r1, 9 */ + }, + {513 /* 0x201 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {514 /* 0x202 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {515 /* 0x203 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {516 /* 0x204 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {517 /* 0x205 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {518 /* 0x206 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {519 /* 0x207 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {520 /* 0x208 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {521 /* 0x209 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {522 /* 0x20a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {523 /* 0x20b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 1, 3}, /* add r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {524 /* 0x20c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {525 /* 0x20d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {526 /* 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}} /* s1a r5, r3, r4 */ + }, + {527 /* 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 */ + }, + {528 /* 0x210 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {529 /* 0x211 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {530 /* 0x212 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {531 /* 0x213 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {532 /* 0x214 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {533 /* 0x215 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {534 /* 0x216 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {535 /* 0x217 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 2, 1}, /* s2a r4, r2, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {536 /* 0x218 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {537 /* 0x219 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 1}, /* s2a r4, r2, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {538 /* 0x21a */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {4, 2, 1}, /* s2a r4, r2, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {539 /* 0x21b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {540 /* 0x21c */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {541 /* 0x21d */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {542 /* 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}} /* s1a r5, r3, r4 */ + }, + {543 /* 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 */ + }, + {544 /* 0x220 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {545 /* 0x221 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {546 /* 0x222 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {547 /* 0x223 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {548 /* 0x224 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {549 /* 0x225 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 1}, /* s2a r4, r2, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {550 /* 0x226 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {551 /* 0x227 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 1}, /* s1a r4, r2, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {552 /* 0x228 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {553 /* 0x229 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 1}, /* s1a r4, r2, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {554 /* 0x22a */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {3, 2, 1}, /* s1a r4, r2, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {555 /* 0x22b */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {556 /* 0x22c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {557 /* 0x22d */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {558 /* 0x22e */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {559 /* 0x22f */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {560 /* 0x230 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {561 /* 0x231 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {562 /* 0x232 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {563 /* 0x233 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {564 /* 0x234 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {565 /* 0x235 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {566 /* 0x236 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {567 /* 0x237 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {568 /* 0x238 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {569 /* 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}} /* s3a r5, r4, r3 */ + }, + {570 /* 0x23a */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 1, 2}, /* s1a r4, r1, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {571 /* 0x23b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {572 /* 0x23c */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {573 /* 0x23d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {574 /* 0x23e */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {575 /* 0x23f */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {576 /* 0x240 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 6}} /* shli r3, r2, 6 */ + }, + {577 /* 0x241 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {578 /* 0x242 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {579 /* 0x243 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 1}, /* s2a r4, r2, r1 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {580 /* 0x244 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {581 /* 0x245 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 1}, /* s1a r4, r2, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {582 /* 0x246 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {583 /* 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}} /* s3a r5, r3, r4 */ + }, + {584 /* 0x248 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {585 /* 0x249 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {586 /* 0x24a */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {587 /* 0x24b */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {588 /* 0x24c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {589 /* 0x24d */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {590 /* 0x24e */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {591 /* 0x24f */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {592 /* 0x250 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {593 /* 0x251 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {594 /* 0x252 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {595 /* 0x253 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {596 /* 0x254 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {597 /* 0x255 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {598 /* 0x256 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {599 /* 0x257 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {600 /* 0x258 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {601 /* 0x259 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {602 /* 0x25a */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 1}, /* shli r4, r2, 1 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {603 /* 0x25b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {604 /* 0x25c */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {605 /* 0x25d */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {606 /* 0x25e */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {607 /* 0x25f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {608 /* 0x260 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {609 /* 0x261 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {610 /* 0x262 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {611 /* 0x263 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {612 /* 0x264 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {613 /* 0x265 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {614 /* 0x266 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {615 /* 0x267 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {616 /* 0x268 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {617 /* 0x269 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 2}, /* shli r3, r1, 2 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {619 /* 0x26b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {620 /* 0x26c */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {621 /* 0x26d */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {623 /* 0x26f */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {624 /* 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}} /* s2a r5, r4, r3 */ + }, + {625 /* 0x271 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {626 /* 0x272 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {627 /* 0x273 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {628 /* 0x274 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {629 /* 0x275 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {630 /* 0x276 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {631 /* 0x277 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {632 /* 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}} /* s2a r5, r4, r3 */ + }, + {633 /* 0x279 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {634 /* 0x27a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {635 /* 0x27b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {636 /* 0x27c */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {637 /* 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}} /* s2a r5, r4, r3 */ + }, + {638 /* 0x27e */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 1}, /* shli r3, r1, 1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {639 /* 0x27f */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {640 /* 0x280 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 7}} /* shli r3, r2, 7 */ + }, + {641 /* 0x281 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {642 /* 0x282 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {643 /* 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}} /* s2a r5, r3, r4 */ + }, + {644 /* 0x284 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {645 /* 0x285 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {646 /* 0x286 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {647 /* 0x287 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {648 /* 0x288 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 3}} /* shli r4, r3, 3 */ + }, + {649 /* 0x289 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {650 /* 0x28a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {651 /* 0x28b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {652 /* 0x28c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {653 /* 0x28d */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {654 /* 0x28e */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {655 /* 0x28f */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 4}} /* s2a r5, r4, r4 */ + }, + {656 /* 0x290 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {657 /* 0x291 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 3}} /* s3a r4, r3, r3 */ + }, + {658 /* 0x292 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {659 /* 0x293 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {660 /* 0x294 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {661 /* 0x295 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {662 /* 0x296 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {663 /* 0x297 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {664 /* 0x298 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {665 /* 0x299 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {666 /* 0x29a */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 1}, /* shli r4, r2, 1 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {667 /* 0x29b */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {668 /* 0x29c */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {669 /* 0x29d */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 1}, /* s1a r4, r3, r1 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {670 /* 0x29e */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {4, 4, 4}} /* s2a r5, r4, r4 */ + }, + {671 /* 0x29f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {672 /* 0x2a0 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {673 /* 0x2a1 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {674 /* 0x2a2 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {675 /* 0x2a3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {676 /* 0x2a4 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {677 /* 0x2a5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {679 /* 0x2a7 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {2, 3, 1}, /* sub r4, r3, r1 */ + {5, 2, 4}} /* s3a r5, r2, r4 */ + }, + {680 /* 0x2a8 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {681 /* 0x2a9 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {682 /* 0x2aa */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {684 /* 0x2ac */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 2}, /* shli r4, r2, 2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {685 /* 0x2ad */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {688 /* 0x2b0 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 1, 1}, /* s2a r3, r1, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {689 /* 0x2b1 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {690 /* 0x2b2 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {692 /* 0x2b4 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {693 /* 0x2b5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 1, 1}, /* s3a r3, r1, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {694 /* 0x2b6 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 3, 3}, /* s2a r4, r3, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {695 /* 0x2b7 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {696 /* 0x2b8 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {697 /* 0x2b9 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {699 /* 0x2bb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {700 /* 0x2bc */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {4, 4, 4}} /* s2a r5, r4, r4 */ + }, + {701 /* 0x2bd */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {702 /* 0x2be */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {703 /* 0x2bf */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {704 /* 0x2c0 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 6}} /* shli r4, r3, 6 */ + }, + {705 /* 0x2c1 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {706 /* 0x2c2 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {707 /* 0x2c3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {708 /* 0x2c4 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {709 /* 0x2c5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {710 /* 0x2c6 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {711 /* 0x2c7 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 1}, /* sub r4, r3, r1 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {712 /* 0x2c8 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {713 /* 0x2c9 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 4}, /* shli r3, r1, 4 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {714 /* 0x2ca */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 3, 3}, /* s2a r4, r3, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {715 /* 0x2cb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {716 /* 0x2cc */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {2, 3, 1}, /* sub r4, r3, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {717 /* 0x2cd */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {719 /* 0x2cf */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {2, 4, 1}} /* sub r5, r4, r1 */ + }, + {720 /* 0x2d0 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 4}} /* shli r4, r3, 4 */ + }, + {721 /* 0x2d1 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {722 /* 0x2d2 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {723 /* 0x2d3 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {724 /* 0x2d4 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {725 /* 0x2d5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 4}, /* shli r4, r3, 4 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {726 /* 0x2d6 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {727 /* 0x2d7 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {728 /* 0x2d8 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {729 /* 0x2d9 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 3}} /* s3a r4, r3, r3 */ + }, + {730 /* 0x2da */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {731 /* 0x2db */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {3, 4, 1}} /* s1a r5, r4, r1 */ + }, + {733 /* 0x2dd */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {735 /* 0x2df */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {736 /* 0x2e0 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {737 /* 0x2e1 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {738 /* 0x2e2 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {739 /* 0x2e3 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {740 /* 0x2e4 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {741 /* 0x2e5 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {743 /* 0x2e7 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {744 /* 0x2e8 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {745 /* 0x2e9 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 1}} /* s3a r5, r4, r1 */ + }, + {747 /* 0x2eb */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {748 /* 0x2ec */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {749 /* 0x2ed */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {750 /* 0x2ee */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {752 /* 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}} /* s1a r5, r4, r3 */ + }, + {753 /* 0x2f1 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {755 /* 0x2f3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {756 /* 0x2f4 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 2}, /* shli r3, r2, 2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {757 /* 0x2f5 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {758 /* 0x2f6 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {759 /* 0x2f7 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {760 /* 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}} /* s1a r5, r4, r3 */ + }, + {761 /* 0x2f9 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {762 /* 0x2fa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 1}, /* shli r3, r2, 1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {763 /* 0x2fb */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {764 /* 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}} /* s1a r5, r4, r3 */ + }, + {765 /* 0x2fd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {766 /* 0x2fe */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {767 /* 0x2ff */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {768 /* 0x300 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 8}} /* shli r3, r2, 8 */ + }, + {769 /* 0x301 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {770 /* 0x302 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {771 /* 0x303 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {772 /* 0x304 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {773 /* 0x305 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {774 /* 0x306 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {775 /* 0x307 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {776 /* 0x308 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {777 /* 0x309 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {778 /* 0x30a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {779 /* 0x30b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {780 /* 0x30c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {781 /* 0x30d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {782 /* 0x30e */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {783 /* 0x30f */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {784 /* 0x310 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {3, 3, 2}} /* s1a r4, r3, r2 */ + }, + {785 /* 0x311 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 1, 2}, /* s3a r4, r1, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {786 /* 0x312 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {787 /* 0x313 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {3, 1, 3}, /* s1a r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {788 /* 0x314 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {789 /* 0x315 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 2, 4}} /* s3a r5, r2, r4 */ + }, + {790 /* 0x316 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {791 /* 0x317 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {792 /* 0x318 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {793 /* 0x319 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {794 /* 0x31a */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {795 /* 0x31b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {796 /* 0x31c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {797 /* 0x31d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {798 /* 0x31e */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {799 /* 0x31f */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {800 /* 0x320 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {801 /* 0x321 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {802 /* 0x322 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {803 /* 0x323 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {804 /* 0x324 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {4, 1, 2}, /* s2a r4, r1, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {805 /* 0x325 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {806 /* 0x326 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {807 /* 0x327 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {808 /* 0x328 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {809 /* 0x329 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {810 /* 0x32a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {811 /* 0x32b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {812 /* 0x32c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {813 /* 0x32d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {815 /* 0x32f */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {816 /* 0x330 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {817 /* 0x331 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {818 /* 0x332 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {819 /* 0x333 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {820 /* 0x334 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {821 /* 0x335 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {822 /* 0x336 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {823 /* 0x337 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {824 /* 0x338 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {825 /* 0x339 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {827 /* 0x33b */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {828 /* 0x33c */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {829 /* 0x33d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {831 /* 0x33f */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {832 /* 0x340 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 6}} /* shli r4, r3, 6 */ + }, + {833 /* 0x341 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {834 /* 0x342 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {3, 2, 2}, /* s1a r4, r2, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {835 /* 0x343 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {836 /* 0x344 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 2}, /* s3a r4, r2, r2 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {837 /* 0x345 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {838 /* 0x346 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {840 /* 0x348 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {841 /* 0x349 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {842 /* 0x34a */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {843 /* 0x34b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {844 /* 0x34c */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {845 /* 0x34d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {846 /* 0x34e */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {848 /* 0x350 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {849 /* 0x351 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {850 /* 0x352 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {852 /* 0x354 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {853 /* 0x355 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {855 /* 0x357 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 1}, /* sub r4, r3, r1 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {856 /* 0x358 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {857 /* 0x359 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {5, 4, 1}} /* s3a r5, r4, r1 */ + }, + {858 /* 0x35a */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {859 /* 0x35b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {861 /* 0x35d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {862 /* 0x35e */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {2, 3, 1}, /* sub r4, r3, r1 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {863 /* 0x35f */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 4, 1}} /* sub r5, r4, r1 */ + }, + {864 /* 0x360 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {865 /* 0x361 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {1, 1, 4}} /* add r5, r1, r4 */ + }, + {866 /* 0x362 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 1, 3}, /* add r4, r1, r3 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {867 /* 0x363 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {1, 2, 4}} /* add r5, r2, r4 */ + }, + {868 /* 0x364 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {869 /* 0x365 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {870 /* 0x366 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {871 /* 0x367 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {872 /* 0x368 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {873 /* 0x369 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 1, 3}, /* add r4, r1, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {875 /* 0x36b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {876 /* 0x36c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {877 /* 0x36d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {879 /* 0x36f */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {880 /* 0x370 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {881 /* 0x371 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 2, 2}, /* s1a r3, r2, r2 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {882 /* 0x372 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {884 /* 0x374 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {885 /* 0x375 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {888 /* 0x378 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {889 /* 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}} /* s3a r5, r4, r3 */ + }, + {890 /* 0x37a */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {891 /* 0x37b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {892 /* 0x37c */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {893 /* 0x37d */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {894 /* 0x37e */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {895 /* 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 */ + }, + {896 /* 0x380 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {897 /* 0x381 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {898 /* 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}} /* s3a r5, r3, r4 */ + }, + {899 /* 0x383 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 1}, /* s2a r4, r2, r1 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {900 /* 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}} /* s3a r5, r3, r4 */ + }, + {901 /* 0x385 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 2, 1}, /* s1a r4, r2, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {902 /* 0x386 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {903 /* 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 */ + }, + {904 /* 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}} /* s3a r5, r3, r4 */ + }, + {905 /* 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}} /* s3a r5, r3, r4 */ + }, + {906 /* 0x38a */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {908 /* 0x38c */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {909 /* 0x38d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {910 /* 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}} /* s1a r5, r3, r4 */ + }, + {911 /* 0x38f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {912 /* 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}} /* s3a r5, r3, r4 */ + }, + {913 /* 0x391 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 1, 2}, /* s1a r4, r1, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {915 /* 0x393 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {916 /* 0x394 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {917 /* 0x395 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {918 /* 0x396 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {919 /* 0x397 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {920 /* 0x398 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {924 /* 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}} /* s2a r5, r3, r4 */ + }, + {925 /* 0x39d */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {2, 1, 3}, /* sub r4, r1, r3 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {927 /* 0x39f */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {928 /* 0x3a0 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {929 /* 0x3a1 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 1, 2}, /* s2a r4, r1, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {932 /* 0x3a4 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {935 /* 0x3a7 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {936 /* 0x3a8 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {937 /* 0x3a9 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {5, 4, 1}} /* s3a r5, r4, r1 */ + }, + {939 /* 0x3ab */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {941 /* 0x3ad */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {943 /* 0x3af */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 1, 10}, /* shli r4, r1, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {944 /* 0x3b0 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {945 /* 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 */ + }, + {948 /* 0x3b4 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {949 /* 0x3b5 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {950 /* 0x3b6 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {951 /* 0x3b7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 1, 10}, /* shli r4, r1, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {952 /* 0x3b8 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {953 /* 0x3b9 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 1}} /* s3a r5, r4, r1 */ + }, + {955 /* 0x3bb */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {2, 3, 1}, /* sub r4, r3, r1 */ + {4, 4, 4}} /* s2a r5, r4, r4 */ + }, + {956 /* 0x3bc */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {957 /* 0x3bd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 3, 6}, /* shli r4, r3, 6 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {958 /* 0x3be */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {959 /* 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 */ + }, + {960 /* 0x3c0 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {961 /* 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 */ + }, + {962 /* 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}} /* s1a r5, r3, r4 */ + }, + {963 /* 0x3c3 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {964 /* 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}} /* s2a r5, r3, r4 */ + }, + {965 /* 0x3c5 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 1}, /* s2a r4, r2, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {966 /* 0x3c6 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {967 /* 0x3c7 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {968 /* 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}} /* s3a r5, r3, r4 */ + }, + {969 /* 0x3c9 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {3, 2, 1}, /* s1a r4, r2, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {970 /* 0x3ca */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {971 /* 0x3cb */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {972 /* 0x3cc */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {973 /* 0x3cd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {975 /* 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 */ + }, + {976 /* 0x3d0 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {979 /* 0x3d3 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 1, 10}, /* shli r4, r1, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {980 /* 0x3d4 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {981 /* 0x3d5 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {983 /* 0x3d7 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 1, 10}, /* shli r4, r1, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {984 /* 0x3d8 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {985 /* 0x3d9 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 1}} /* s3a r5, r4, r1 */ + }, + {987 /* 0x3db */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 1, 10}, /* shli r4, r1, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {988 /* 0x3dc */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {989 /* 0x3dd */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {990 /* 0x3de */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {991 /* 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 */ + }, + {992 /* 0x3e0 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {993 /* 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 */ + }, + {994 /* 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}} /* s1a r5, r3, r4 */ + }, + {996 /* 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}} /* s3a r5, r4, r2 */ + }, + {997 /* 0x3e5 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {999 /* 0x3e7 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 1, 10}, /* shli r4, r1, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {1000 /* 0x3e8 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {1001 /* 0x3e9 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {4, 2, 1}, /* s2a r4, r2, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {1003 /* 0x3eb */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {1004 /* 0x3ec */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {1005 /* 0x3ed */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {1006 /* 0x3ee */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {1007 /* 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 */ + }, + {1008 /* 0x3f0 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1009 /* 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 */ + }, + {1010 /* 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}} /* s3a r5, r4, r2 */ + }, + {1011 /* 0x3f3 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 1, 10}, /* shli r4, r1, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {1012 /* 0x3f4 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 2}} /* shli r5, r4, 2 */ + }, + {1013 /* 0x3f5 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {1014 /* 0x3f6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {1015 /* 0x3f7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1016 /* 0x3f8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1017 /* 0x3f9 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {1018 /* 0x3fa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {1019 /* 0x3fb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1020 /* 0x3fc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1021 /* 0x3fd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1022 /* 0x3fe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1023 /* 0x3ff */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {1024 /* 0x400 */ , + {{6, 1, 10}} /* shli r2, r1, 10 */ + }, + {1025 /* 0x401 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {1026 /* 0x402 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {1027 /* 0x403 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1028 /* 0x404 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {1029 /* 0x405 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1030 /* 0x406 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {1031 /* 0x407 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {1032 /* 0x408 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {1033 /* 0x409 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1034 /* 0x40a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {1040 /* 0x410 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1049 /* 0x419 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {1056 /* 0x420 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1059 /* 0x423 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 2, 1}, /* s3a r4, r2, r1 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {1088 /* 0x440 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1100 /* 0x44c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {1104 /* 0x450 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {1108 /* 0x454 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {1136 /* 0x470 */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {1152 /* 0x480 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 7}} /* shli r3, r2, 7 */ + }, + {1200 /* 0x4b0 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {1204 /* 0x4b4 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {1242 /* 0x4da */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {1280 /* 0x500 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 8}} /* shli r3, r2, 8 */ + }, + {1292 /* 0x50c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {1304 /* 0x518 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {1312 /* 0x520 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {1320 /* 0x528 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {1336 /* 0x538 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {1344 /* 0x540 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 6}} /* shli r4, r3, 6 */ + }, + {1348 /* 0x544 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {1360 /* 0x550 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {1364 /* 0x554 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {1395 /* 0x573 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 5}, /* shli r4, r3, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {1448 /* 0x5a8 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {1460 /* 0x5b4 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {1461 /* 0x5b5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {1472 /* 0x5c0 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 5}, /* shli r3, r1, 5 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 6}} /* shli r5, r4, 6 */ + }, + {1488 /* 0x5d0 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {1512 /* 0x5e8 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 3}, /* shli r3, r2, 3 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {1536 /* 0x600 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 9}} /* shli r3, r2, 9 */ + }, + {1568 /* 0x620 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {1576 /* 0x628 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {1649 /* 0x671 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {1664 /* 0x680 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 7}} /* shli r4, r3, 7 */ + }, + {1684 /* 0x694 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {3, 2, 3}, /* s1a r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {1696 /* 0x6a0 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {4, 2, 2}, /* s2a r4, r2, r2 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {1744 /* 0x6d0 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {1812 /* 0x714 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {2000 /* 0x7d0 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {2012 /* 0x7dc */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2014 /* 0x7de */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2037 /* 0x7f5 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {4, 4, 1}} /* s2a r5, r4, r1 */ + }, + {2038 /* 0x7f6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2039 /* 0x7f7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2040 /* 0x7f8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2041 /* 0x7f9 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {2042 /* 0x7fa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {2043 /* 0x7fb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2044 /* 0x7fc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2045 /* 0x7fd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2046 /* 0x7fe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2047 /* 0x7ff */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {2048 /* 0x800 */ , + {{6, 1, 11}} /* shli r2, r1, 11 */ + }, + {2049 /* 0x801 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {2050 /* 0x802 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {2051 /* 0x803 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2052 /* 0x804 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {2053 /* 0x805 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2054 /* 0x806 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {2055 /* 0x807 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {2056 /* 0x808 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {2057 /* 0x809 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2058 /* 0x80a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {2064 /* 0x810 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2080 /* 0x820 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2100 /* 0x834 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 1, 11}, /* shli r4, r1, 11 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {2112 /* 0x840 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2144 /* 0x860 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {2176 /* 0x880 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2184 /* 0x888 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {2304 /* 0x900 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 8}} /* shli r3, r2, 8 */ + }, + {2320 /* 0x910 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {5, 3, 2}} /* s3a r4, r3, r2 */ + }, + {2408 /* 0x968 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {2560 /* 0xa00 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 9}} /* shli r3, r2, 9 */ + }, + {2578 /* 0xa12 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {2592 /* 0xa20 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 5}} /* shli r4, r3, 5 */ + }, + {2633 /* 0xa49 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {2704 /* 0xa90 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {2730 /* 0xaaa */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 5}, /* shli r3, r2, 5 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {2880 /* 0xb40 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 6}} /* shli r4, r3, 6 */ + }, + {2896 /* 0xb50 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {3072 /* 0xc00 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 10}} /* shli r3, r2, 10 */ + }, + {3079 /* 0xc07 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 2, 10}, /* shli r4, r2, 10 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {3112 /* 0xc28 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 10}, /* shli r4, r2, 10 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {3192 /* 0xc78 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 2}, /* s2a r3, r2, r2 */ + {6, 2, 10}, /* shli r4, r2, 10 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {3240 /* 0xca8 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {6, 4, 3}} /* shli r5, r4, 3 */ + }, + {3264 /* 0xcc0 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {6, 2, 10}, /* shli r4, r2, 10 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {3328 /* 0xd00 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 8}} /* shli r4, r3, 8 */ + }, + {3453 /* 0xd7d */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {3529 /* 0xdc9 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}, /* s3a r4, r2, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {3580 /* 0xdfc */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {3600 /* 0xe10 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 2, 3}, /* sub r4, r2, r3 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {3624 /* 0xe28 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {4000 /* 0xfa0 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 5}} /* shli r5, r4, 5 */ + }, + {4025 /* 0xfb9 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 1}} /* s3a r5, r4, r1 */ + }, + {4073 /* 0xfe9 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 4, 1}} /* s3a r5, r4, r1 */ + }, + {4086 /* 0xff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {4087 /* 0xff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4088 /* 0xff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4089 /* 0xff9 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {4090 /* 0xffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 11}, /* shli r3, r1, 11 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {4091 /* 0xffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4092 /* 0xffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4093 /* 0xffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4094 /* 0xffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4095 /* 0xfff */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {4096 /* 0x1000 */ , + {{6, 1, 12}} /* shli r2, r1, 12 */ + }, + {4097 /* 0x1001 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {4098 /* 0x1002 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {4099 /* 0x1003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4100 /* 0x1004 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {4101 /* 0x1005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4102 /* 0x1006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {4103 /* 0x1007 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {4104 /* 0x1008 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {4105 /* 0x1009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4106 /* 0x100a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {4108 /* 0x100c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {4112 /* 0x1010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4128 /* 0x1020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4160 /* 0x1040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4184 /* 0x1058 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {4224 /* 0x1080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4352 /* 0x1100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4369 /* 0x1111 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 3, 8}, /* shli r4, r3, 8 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {4376 /* 0x1118 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {4416 /* 0x1140 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {1, 2, 3}, /* add r4, r2, r3 */ + {6, 4, 6}} /* shli r5, r4, 6 */ + }, + {4433 /* 0x1151 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {4482 /* 0x1182 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {5, 3, 1}, /* s3a r4, r3, r1 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {4608 /* 0x1200 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 9}} /* shli r3, r2, 9 */ + }, + {4712 /* 0x1268 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {5, 3, 4}} /* s3a r5, r3, r4 */ + }, + {4864 /* 0x1300 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {3, 2, 1}, /* s1a r3, r2, r1 */ + {6, 3, 8}} /* shli r4, r3, 8 */ + }, + {5000 /* 0x1388 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {5040 /* 0x13b0 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 4}, /* shli r3, r2, 4 */ + {6, 2, 10}, /* shli r4, r2, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {5120 /* 0x1400 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 10}} /* shli r3, r2, 10 */ + }, + {5243 /* 0x147b */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 7}, /* shli r4, r3, 7 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {5285 /* 0x14a5 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 7}, /* shli r3, r2, 7 */ + {4, 2, 3}, /* s2a r4, r2, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {5329 /* 0x14d1 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {6144 /* 0x1800 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 11}} /* shli r3, r2, 11 */ + }, + {6164 /* 0x1814 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 11}, /* shli r4, r2, 11 */ + {4, 3, 4}} /* s2a r5, r3, r4 */ + }, + {6400 /* 0x1900 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 8}} /* shli r4, r3, 8 */ + }, + {6406 /* 0x1906 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {3, 3, 3}, /* s1a r4, r3, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {6656 /* 0x1a00 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {4, 2, 1}, /* s2a r3, r2, r1 */ + {6, 3, 9}} /* shli r4, r3, 9 */ + }, + {7040 /* 0x1b80 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 6}, /* shli r3, r1, 6 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 7}} /* shli r5, r4, 7 */ + }, + {7169 /* 0x1c01 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {5, 2, 3}} /* s3a r4, r2, r3 */ + }, + {7678 /* 0x1dfe */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {7682 /* 0x1e02 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {2, 1, 2}, /* sub r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {3, 3, 4}} /* s1a r5, r3, r4 */ + }, + {8000 /* 0x1f40 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 6}} /* shli r5, r4, 6 */ + }, + {8048 /* 0x1f70 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 4}} /* shli r5, r4, 4 */ + }, + {8182 /* 0x1ff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 10}, /* shli r4, r2, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {8183 /* 0x1ff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8184 /* 0x1ff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8185 /* 0x1ff9 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {8186 /* 0x1ffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 12}, /* shli r3, r1, 12 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {8187 /* 0x1ffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8188 /* 0x1ffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8189 /* 0x1ffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8190 /* 0x1ffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8191 /* 0x1fff */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {8192 /* 0x2000 */ , + {{6, 1, 13}} /* shli r2, r1, 13 */ + }, + {8193 /* 0x2001 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {8194 /* 0x2002 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {8195 /* 0x2003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8196 /* 0x2004 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {8197 /* 0x2005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8198 /* 0x2006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {8199 /* 0x2007 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {8200 /* 0x2008 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {8201 /* 0x2009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8202 /* 0x200a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {8203 /* 0x200b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 10}, /* shli r3, r1, 10 */ + {1, 1, 3}, /* add r4, r1, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {8204 /* 0x200c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {4, 2, 3}} /* s2a r4, r2, r3 */ + }, + {8208 /* 0x2010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8224 /* 0x2020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8256 /* 0x2040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8320 /* 0x2080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8448 /* 0x2100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8520 /* 0x2148 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 8}, /* shli r3, r1, 8 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {8640 /* 0x21c0 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {6, 2, 10}, /* shli r4, r2, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {8672 /* 0x21e0 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 3, 8}, /* shli r4, r3, 8 */ + {2, 4, 2}} /* sub r5, r4, r2 */ + }, + {8704 /* 0x2200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8716 /* 0x220c */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {4, 3, 2}, /* s2a r4, r3, r2 */ + {4, 4, 3}} /* s2a r5, r4, r3 */ + }, + {8728 /* 0x2218 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 9}, /* shli r3, r1, 9 */ + {3, 3, 2}, /* s1a r4, r3, r2 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {9216 /* 0x2400 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 10}} /* shli r3, r2, 10 */ + }, + {9217 /* 0x2401 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 10}, /* shli r3, r2, 10 */ + {1, 1, 3}} /* add r4, r1, r3 */ + }, + {9746 /* 0x2612 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {5, 3, 3}, /* s3a r4, r3, r3 */ + {3, 4, 2}} /* s1a r5, r4, r2 */ + }, + {9810 /* 0x2652 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 6}, /* shli r3, r2, 6 */ + {5, 3, 2}, /* s3a r4, r3, r2 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {10240 /* 0x2800 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 11}} /* shli r3, r2, 11 */ + }, + {10248 /* 0x2808 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {4, 3, 2}} /* s2a r4, r3, r2 */ + }, + {10368 /* 0x2880 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 7}} /* shli r4, r3, 7 */ + }, + {10456 /* 0x28d8 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {4, 3, 3}, /* s2a r4, r3, r3 */ + {5, 4, 2}} /* s3a r5, r4, r2 */ + }, + {10832 /* 0x2a50 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {4, 1, 2}, /* s2a r3, r1, r2 */ + {4, 3, 3}, /* s2a r4, r3, r3 */ + {4, 4, 2}} /* s2a r5, r4, r2 */ + }, + {11512 /* 0x2cf8 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {2, 3, 1}, /* sub r4, r3, r1 */ + {5, 4, 3}} /* s3a r5, r4, r3 */ + }, + {11522 /* 0x2d02 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {4, 3, 1}, /* s2a r4, r3, r1 */ + {3, 4, 3}} /* s1a r5, r4, r3 */ + }, + {11529 /* 0x2d09 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 8}, /* shli r3, r2, 8 */ + {1, 1, 3}, /* add r4, r1, r3 */ + {5, 4, 4}} /* s3a r5, r4, r4 */ + }, + {12288 /* 0x3000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 12}} /* shli r3, r2, 12 */ + }, + {12299 /* 0x300b */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 1, 2}, /* s3a r3, r1, r2 */ + {6, 2, 12}, /* shli r4, r2, 12 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {16000 /* 0x3e80 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 7}, /* shli r3, r1, 7 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 7}} /* shli r5, r4, 7 */ + }, + {16374 /* 0x3ff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 11}, /* shli r4, r2, 11 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {16375 /* 0x3ff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16376 /* 0x3ff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16377 /* 0x3ff9 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {16378 /* 0x3ffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 13}, /* shli r3, r1, 13 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {16379 /* 0x3ffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16380 /* 0x3ffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16381 /* 0x3ffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16382 /* 0x3ffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16383 /* 0x3fff */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {16384 /* 0x4000 */ , + {{6, 1, 14}} /* shli r2, r1, 14 */ + }, + {16385 /* 0x4001 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {16386 /* 0x4002 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {16387 /* 0x4003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16388 /* 0x4004 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {16389 /* 0x4005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16390 /* 0x4006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {16391 /* 0x4007 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {16392 /* 0x4008 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {16393 /* 0x4009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16394 /* 0x400a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {16400 /* 0x4010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16416 /* 0x4020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16448 /* 0x4040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16496 /* 0x4070 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {5, 2, 4}} /* s3a r5, r2, r4 */ + }, + {16512 /* 0x4080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16640 /* 0x4100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16896 /* 0x4200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17408 /* 0x4400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18432 /* 0x4800 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 11}} /* shli r3, r2, 11 */ + }, + {20480 /* 0x5000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 12}} /* shli r3, r2, 12 */ + }, + {24576 /* 0x6000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 13}} /* shli r3, r2, 13 */ + }, + {25600 /* 0x6400 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {5, 2, 1}, /* s3a r3, r2, r1 */ + {6, 3, 10}} /* shli r4, r3, 10 */ + }, + {32758 /* 0x7ff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 12}, /* shli r4, r2, 12 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {32759 /* 0x7ff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {32760 /* 0x7ff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {32761 /* 0x7ff9 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {32762 /* 0x7ffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 14}, /* shli r3, r1, 14 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {32763 /* 0x7ffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {32764 /* 0x7ffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {32765 /* 0x7ffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {32766 /* 0x7ffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {32767 /* 0x7fff */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {32768 /* 0x8000 */ , + {{6, 1, 15}} /* shli r2, r1, 15 */ + }, + {32769 /* 0x8001 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {32770 /* 0x8002 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {32771 /* 0x8003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {32772 /* 0x8004 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {32773 /* 0x8005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {32774 /* 0x8006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {32775 /* 0x8007 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {32776 /* 0x8008 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {32777 /* 0x8009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {32778 /* 0x800a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {32784 /* 0x8010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {32800 /* 0x8020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {32832 /* 0x8040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {32896 /* 0x8080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33024 /* 0x8100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33280 /* 0x8200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33792 /* 0x8400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34816 /* 0x8800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {36864 /* 0x9000 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 12}} /* shli r3, r2, 12 */ + }, + {40960 /* 0xa000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 13}} /* shli r3, r2, 13 */ + }, + {49152 /* 0xc000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 14}} /* shli r3, r2, 14 */ + }, + {65526 /* 0xfff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 13}, /* shli r4, r2, 13 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {65527 /* 0xfff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {65528 /* 0xfff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {65529 /* 0xfff9 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {65530 /* 0xfffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 15}, /* shli r3, r1, 15 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {65531 /* 0xfffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {65532 /* 0xfffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {65533 /* 0xfffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {65534 /* 0xfffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {65535 /* 0xffff */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {65536 /* 0x10000 */ , + {{6, 1, 16}} /* shli r2, r1, 16 */ + }, + {65537 /* 0x10001 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {65538 /* 0x10002 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {65539 /* 0x10003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {65540 /* 0x10004 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {65541 /* 0x10005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {65542 /* 0x10006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {65543 /* 0x10007 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {65544 /* 0x10008 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {65545 /* 0x10009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {65546 /* 0x1000a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {65552 /* 0x10010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {65568 /* 0x10020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {65600 /* 0x10040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {65664 /* 0x10080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {65792 /* 0x10100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {66048 /* 0x10200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {66560 /* 0x10400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67584 /* 0x10800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {69632 /* 0x11000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {73728 /* 0x12000 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 13}} /* shli r3, r2, 13 */ + }, + {81920 /* 0x14000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 14}} /* shli r3, r2, 14 */ + }, + {98304 /* 0x18000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 15}} /* shli r3, r2, 15 */ + }, + {131062 /* 0x1fff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 14}, /* shli r4, r2, 14 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {131063 /* 0x1fff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {131064 /* 0x1fff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {131065 /* 0x1fff9 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {131066 /* 0x1fffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 16}, /* shli r3, r1, 16 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {131067 /* 0x1fffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {131068 /* 0x1fffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {131069 /* 0x1fffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {131070 /* 0x1fffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {131071 /* 0x1ffff */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {131072 /* 0x20000 */ , + {{6, 1, 17}} /* shli r2, r1, 17 */ + }, + {131073 /* 0x20001 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {131074 /* 0x20002 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {131075 /* 0x20003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {131076 /* 0x20004 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {131077 /* 0x20005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {131078 /* 0x20006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {131079 /* 0x20007 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {131080 /* 0x20008 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {131081 /* 0x20009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {131082 /* 0x2000a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {131088 /* 0x20010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {131104 /* 0x20020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {131136 /* 0x20040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {131200 /* 0x20080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {131328 /* 0x20100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {131584 /* 0x20200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {132096 /* 0x20400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {133120 /* 0x20800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {135168 /* 0x21000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {139264 /* 0x22000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {147456 /* 0x24000 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 14}} /* shli r3, r2, 14 */ + }, + {163840 /* 0x28000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 15}} /* shli r3, r2, 15 */ + }, + {196608 /* 0x30000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 16}} /* shli r3, r2, 16 */ + }, + {262134 /* 0x3fff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 15}, /* shli r4, r2, 15 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {262135 /* 0x3fff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {262136 /* 0x3fff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {262137 /* 0x3fff9 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {262138 /* 0x3fffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 17}, /* shli r3, r1, 17 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {262139 /* 0x3fffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {262140 /* 0x3fffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {262141 /* 0x3fffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {262142 /* 0x3fffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {262143 /* 0x3ffff */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {262144 /* 0x40000 */ , + {{6, 1, 18}} /* shli r2, r1, 18 */ + }, + {262145 /* 0x40001 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {262146 /* 0x40002 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {262147 /* 0x40003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262148 /* 0x40004 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {262149 /* 0x40005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262150 /* 0x40006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {262151 /* 0x40007 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {262152 /* 0x40008 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {262153 /* 0x40009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262154 /* 0x4000a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {262160 /* 0x40010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262176 /* 0x40020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262208 /* 0x40040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262272 /* 0x40080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262400 /* 0x40100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {262656 /* 0x40200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {263168 /* 0x40400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {264192 /* 0x40800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {266240 /* 0x41000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {270336 /* 0x42000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {278528 /* 0x44000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {294912 /* 0x48000 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 15}} /* shli r3, r2, 15 */ + }, + {327680 /* 0x50000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 16}} /* shli r3, r2, 16 */ + }, + {393216 /* 0x60000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 17}} /* shli r3, r2, 17 */ + }, + {524278 /* 0x7fff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 16}, /* shli r4, r2, 16 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {524279 /* 0x7fff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {524280 /* 0x7fff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {524281 /* 0x7fff9 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {524282 /* 0x7fffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 18}, /* shli r3, r1, 18 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {524283 /* 0x7fffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {524284 /* 0x7fffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {524285 /* 0x7fffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {524286 /* 0x7fffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {524287 /* 0x7ffff */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {524288 /* 0x80000 */ , + {{6, 1, 19}} /* shli r2, r1, 19 */ + }, + {524289 /* 0x80001 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {524290 /* 0x80002 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {524291 /* 0x80003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {524292 /* 0x80004 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {524293 /* 0x80005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {524294 /* 0x80006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {524295 /* 0x80007 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {524296 /* 0x80008 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {524297 /* 0x80009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {524298 /* 0x8000a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {524304 /* 0x80010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {524320 /* 0x80020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {524352 /* 0x80040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {524416 /* 0x80080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {524544 /* 0x80100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {524800 /* 0x80200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {525312 /* 0x80400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {526336 /* 0x80800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {528384 /* 0x81000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {532480 /* 0x82000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {540672 /* 0x84000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {557056 /* 0x88000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {589824 /* 0x90000 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 16}} /* shli r3, r2, 16 */ + }, + {655360 /* 0xa0000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 17}} /* shli r3, r2, 17 */ + }, + {786432 /* 0xc0000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 18}} /* shli r3, r2, 18 */ + }, + {1048566 /* 0xffff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 17}, /* shli r4, r2, 17 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {1048567 /* 0xffff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1048568 /* 0xffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1048569 /* 0xffff9 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {1048570 /* 0xffffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 19}, /* shli r3, r1, 19 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {1048571 /* 0xffffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1048572 /* 0xffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1048573 /* 0xffffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1048574 /* 0xffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1048575 /* 0xfffff */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {1048576 /* 0x100000 */ , + {{6, 1, 20}} /* shli r2, r1, 20 */ + }, + {1048577 /* 0x100001 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {1048578 /* 0x100002 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {1048579 /* 0x100003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1048580 /* 0x100004 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {1048581 /* 0x100005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1048582 /* 0x100006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {1048583 /* 0x100007 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {1048584 /* 0x100008 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {1048585 /* 0x100009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1048586 /* 0x10000a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {1048592 /* 0x100010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1048608 /* 0x100020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1048640 /* 0x100040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1048704 /* 0x100080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1048832 /* 0x100100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1049088 /* 0x100200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1049600 /* 0x100400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1050624 /* 0x100800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1052672 /* 0x101000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1056768 /* 0x102000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1064960 /* 0x104000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1081344 /* 0x108000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1114112 /* 0x110000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1179648 /* 0x120000 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 17}} /* shli r3, r2, 17 */ + }, + {1310720 /* 0x140000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 18}} /* shli r3, r2, 18 */ + }, + {1572864 /* 0x180000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 19}} /* shli r3, r2, 19 */ + }, + {2097142 /* 0x1ffff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 18}, /* shli r4, r2, 18 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2097143 /* 0x1ffff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2097144 /* 0x1ffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2097145 /* 0x1ffff9 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {2097146 /* 0x1ffffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 20}, /* shli r3, r1, 20 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {2097147 /* 0x1ffffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2097148 /* 0x1ffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2097149 /* 0x1ffffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2097150 /* 0x1ffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2097151 /* 0x1fffff */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {2097152 /* 0x200000 */ , + {{6, 1, 21}} /* shli r2, r1, 21 */ + }, + {2097153 /* 0x200001 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {2097154 /* 0x200002 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {2097155 /* 0x200003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2097156 /* 0x200004 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {2097157 /* 0x200005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2097158 /* 0x200006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {2097159 /* 0x200007 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {2097160 /* 0x200008 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {2097161 /* 0x200009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2097162 /* 0x20000a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {2097168 /* 0x200010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2097184 /* 0x200020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2097216 /* 0x200040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2097280 /* 0x200080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2097408 /* 0x200100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2097664 /* 0x200200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2098176 /* 0x200400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2099200 /* 0x200800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2101248 /* 0x201000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2105344 /* 0x202000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2113536 /* 0x204000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2129920 /* 0x208000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2162688 /* 0x210000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2228224 /* 0x220000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {2359296 /* 0x240000 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 18}} /* shli r3, r2, 18 */ + }, + {2621440 /* 0x280000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 19}} /* shli r3, r2, 19 */ + }, + {3145728 /* 0x300000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 20}} /* shli r3, r2, 20 */ + }, + {4194294 /* 0x3ffff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 19}, /* shli r4, r2, 19 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {4194295 /* 0x3ffff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4194296 /* 0x3ffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4194297 /* 0x3ffff9 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {4194298 /* 0x3ffffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 21}, /* shli r3, r1, 21 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {4194299 /* 0x3ffffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4194300 /* 0x3ffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4194301 /* 0x3ffffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4194302 /* 0x3ffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {4194303 /* 0x3fffff */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {4194304 /* 0x400000 */ , + {{6, 1, 22}} /* shli r2, r1, 22 */ + }, + {4194305 /* 0x400001 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {4194306 /* 0x400002 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {4194307 /* 0x400003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4194308 /* 0x400004 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {4194309 /* 0x400005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4194310 /* 0x400006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {4194311 /* 0x400007 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {4194312 /* 0x400008 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {4194313 /* 0x400009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4194314 /* 0x40000a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {4194320 /* 0x400010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4194336 /* 0x400020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4194368 /* 0x400040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4194432 /* 0x400080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4194560 /* 0x400100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4194816 /* 0x400200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4195328 /* 0x400400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4196352 /* 0x400800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4198400 /* 0x401000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4202496 /* 0x402000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4210688 /* 0x404000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4227072 /* 0x408000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4259840 /* 0x410000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4325376 /* 0x420000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4456448 /* 0x440000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {4718592 /* 0x480000 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 19}} /* shli r3, r2, 19 */ + }, + {5242880 /* 0x500000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 20}} /* shli r3, r2, 20 */ + }, + {6291456 /* 0x600000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 21}} /* shli r3, r2, 21 */ + }, + {8388598 /* 0x7ffff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 20}, /* shli r4, r2, 20 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {8388599 /* 0x7ffff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8388600 /* 0x7ffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8388601 /* 0x7ffff9 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {8388602 /* 0x7ffffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 22}, /* shli r3, r1, 22 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {8388603 /* 0x7ffffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8388604 /* 0x7ffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8388605 /* 0x7ffffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8388606 /* 0x7ffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {8388607 /* 0x7fffff */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {8388608 /* 0x800000 */ , + {{6, 1, 23}} /* shli r2, r1, 23 */ + }, + {8388609 /* 0x800001 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {8388610 /* 0x800002 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {8388611 /* 0x800003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8388612 /* 0x800004 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {8388613 /* 0x800005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8388614 /* 0x800006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {8388615 /* 0x800007 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {8388616 /* 0x800008 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {8388617 /* 0x800009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8388618 /* 0x80000a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {8388624 /* 0x800010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8388640 /* 0x800020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8388672 /* 0x800040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8388736 /* 0x800080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8388864 /* 0x800100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8389120 /* 0x800200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8389632 /* 0x800400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8390656 /* 0x800800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8392704 /* 0x801000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8396800 /* 0x802000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8404992 /* 0x804000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8421376 /* 0x808000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8454144 /* 0x810000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8519680 /* 0x820000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8650752 /* 0x840000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {8912896 /* 0x880000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {9437184 /* 0x900000 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 20}} /* shli r3, r2, 20 */ + }, + {10485760 /* 0xa00000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 21}} /* shli r3, r2, 21 */ + }, + {11796480 /* 0xb40000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 18}} /* shli r4, r3, 18 */ + }, + {12582912 /* 0xc00000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 22}} /* shli r3, r2, 22 */ + }, + {16777206 /* 0xfffff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 21}, /* shli r4, r2, 21 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {16777207 /* 0xfffff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16777208 /* 0xfffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16777209 /* 0xfffff9 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {16777210 /* 0xfffffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 23}, /* shli r3, r1, 23 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {16777211 /* 0xfffffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16777212 /* 0xfffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16777213 /* 0xfffffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16777214 /* 0xfffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {16777215 /* 0xffffff */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {16777216 /* 0x1000000 */ , + {{6, 1, 24}} /* shli r2, r1, 24 */ + }, + {16777217 /* 0x1000001 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {16777218 /* 0x1000002 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {16777219 /* 0x1000003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16777220 /* 0x1000004 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {16777221 /* 0x1000005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16777222 /* 0x1000006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {16777223 /* 0x1000007 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {16777224 /* 0x1000008 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {16777225 /* 0x1000009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16777226 /* 0x100000a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {16777232 /* 0x1000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16777248 /* 0x1000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16777280 /* 0x1000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16777344 /* 0x1000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16777472 /* 0x1000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16777728 /* 0x1000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16778240 /* 0x1000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16779264 /* 0x1000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16781312 /* 0x1001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16785408 /* 0x1002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16793600 /* 0x1004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16809984 /* 0x1008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16842752 /* 0x1010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {16843009 /* 0x1010101 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 3, 16}, /* shli r4, r3, 16 */ + {1, 3, 4}} /* add r5, r3, r4 */ + }, + {16908288 /* 0x1020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17039360 /* 0x1040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17301504 /* 0x1080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {17825792 /* 0x1100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {18874368 /* 0x1200000 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 21}} /* shli r3, r2, 21 */ + }, + {20971520 /* 0x1400000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 22}} /* shli r3, r2, 22 */ + }, + {23592960 /* 0x1680000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {5, 2, 2}, /* s3a r3, r2, r2 */ + {6, 3, 19}} /* shli r4, r3, 19 */ + }, + {25165824 /* 0x1800000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 23}} /* shli r3, r2, 23 */ + }, + {33554422 /* 0x1fffff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 22}, /* shli r4, r2, 22 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {33554423 /* 0x1fffff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {33554424 /* 0x1fffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {33554425 /* 0x1fffff9 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {33554426 /* 0x1fffffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 24}, /* shli r3, r1, 24 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {33554427 /* 0x1fffffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {33554428 /* 0x1fffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {33554429 /* 0x1fffffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {33554430 /* 0x1fffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {33554431 /* 0x1ffffff */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {33554432 /* 0x2000000 */ , + {{6, 1, 25}} /* shli r2, r1, 25 */ + }, + {33554433 /* 0x2000001 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {33554434 /* 0x2000002 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {33554435 /* 0x2000003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33554436 /* 0x2000004 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {33554437 /* 0x2000005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33554438 /* 0x2000006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {33554439 /* 0x2000007 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {33554440 /* 0x2000008 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {33554441 /* 0x2000009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33554442 /* 0x200000a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {33554448 /* 0x2000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33554464 /* 0x2000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33554496 /* 0x2000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33554560 /* 0x2000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33554688 /* 0x2000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33554944 /* 0x2000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33555456 /* 0x2000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33556480 /* 0x2000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33558528 /* 0x2001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33562624 /* 0x2002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33570816 /* 0x2004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33587200 /* 0x2008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33619968 /* 0x2010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33685504 /* 0x2020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {33816576 /* 0x2040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34078720 /* 0x2080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {34603008 /* 0x2100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {35651584 /* 0x2200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {37748736 /* 0x2400000 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 22}} /* shli r3, r2, 22 */ + }, + {41943040 /* 0x2800000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 23}} /* shli r3, r2, 23 */ + }, + {50331648 /* 0x3000000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 24}} /* shli r3, r2, 24 */ + }, + {67108854 /* 0x3fffff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 23}, /* shli r4, r2, 23 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {67108855 /* 0x3fffff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {67108856 /* 0x3fffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {67108857 /* 0x3fffff9 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {67108858 /* 0x3fffffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 25}, /* shli r3, r1, 25 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {67108859 /* 0x3fffffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {67108860 /* 0x3fffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {67108861 /* 0x3fffffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {67108862 /* 0x3fffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {67108863 /* 0x3ffffff */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {67108864 /* 0x4000000 */ , + {{6, 1, 26}} /* shli r2, r1, 26 */ + }, + {67108865 /* 0x4000001 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {67108866 /* 0x4000002 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {67108867 /* 0x4000003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67108868 /* 0x4000004 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {67108869 /* 0x4000005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67108870 /* 0x4000006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {67108871 /* 0x4000007 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {67108872 /* 0x4000008 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {67108873 /* 0x4000009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67108874 /* 0x400000a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {67108880 /* 0x4000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67108896 /* 0x4000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67108928 /* 0x4000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67108992 /* 0x4000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67109120 /* 0x4000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67109376 /* 0x4000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67109888 /* 0x4000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67110912 /* 0x4000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67112960 /* 0x4001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67117056 /* 0x4002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67125248 /* 0x4004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67141632 /* 0x4008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67174400 /* 0x4010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67239936 /* 0x4020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67371008 /* 0x4040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {67633152 /* 0x4080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {68157440 /* 0x4100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {69206016 /* 0x4200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {71303168 /* 0x4400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {75497472 /* 0x4800000 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 23}} /* shli r3, r2, 23 */ + }, + {83886080 /* 0x5000000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 24}} /* shli r3, r2, 24 */ + }, + {100663296 /* 0x6000000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 25}} /* shli r3, r2, 25 */ + }, + {134217718 /* 0x7fffff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 24}, /* shli r4, r2, 24 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {134217719 /* 0x7fffff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {134217720 /* 0x7fffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {134217721 /* 0x7fffff9 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {134217722 /* 0x7fffffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 26}, /* shli r3, r1, 26 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {134217723 /* 0x7fffffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {134217724 /* 0x7fffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {134217725 /* 0x7fffffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {134217726 /* 0x7fffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {134217727 /* 0x7ffffff */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {134217728 /* 0x8000000 */ , + {{6, 1, 27}} /* shli r2, r1, 27 */ + }, + {134217729 /* 0x8000001 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {134217730 /* 0x8000002 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {134217731 /* 0x8000003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134217732 /* 0x8000004 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {134217733 /* 0x8000005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134217734 /* 0x8000006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {134217735 /* 0x8000007 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {134217736 /* 0x8000008 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {134217737 /* 0x8000009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134217738 /* 0x800000a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {134217744 /* 0x8000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134217760 /* 0x8000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134217792 /* 0x8000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134217856 /* 0x8000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134217984 /* 0x8000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134218240 /* 0x8000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134218752 /* 0x8000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134219776 /* 0x8000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134221824 /* 0x8001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134225920 /* 0x8002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134234112 /* 0x8004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134250496 /* 0x8008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134283264 /* 0x8010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134348800 /* 0x8020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134479872 /* 0x8040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {134742016 /* 0x8080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {135266304 /* 0x8100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {136314880 /* 0x8200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {138412032 /* 0x8400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {142606336 /* 0x8800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {150994944 /* 0x9000000 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 24}} /* shli r3, r2, 24 */ + }, + {167772160 /* 0xa000000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 25}} /* shli r3, r2, 25 */ + }, + {201326592 /* 0xc000000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 26}} /* shli r3, r2, 26 */ + }, + {268435446 /* 0xffffff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 25}, /* shli r4, r2, 25 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {268435447 /* 0xffffff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {268435448 /* 0xffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {268435449 /* 0xffffff9 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {268435450 /* 0xffffffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 27}, /* shli r3, r1, 27 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {268435451 /* 0xffffffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {268435452 /* 0xffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {268435453 /* 0xffffffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {268435454 /* 0xffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {268435455 /* 0xfffffff */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {268435456 /* 0x10000000 */ , + {{6, 1, 28}} /* shli r2, r1, 28 */ + }, + {268435457 /* 0x10000001 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {268435458 /* 0x10000002 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {268435459 /* 0x10000003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268435460 /* 0x10000004 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {268435461 /* 0x10000005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268435462 /* 0x10000006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {268435463 /* 0x10000007 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {268435464 /* 0x10000008 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {268435465 /* 0x10000009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268435466 /* 0x1000000a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {268435472 /* 0x10000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268435488 /* 0x10000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268435520 /* 0x10000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268435584 /* 0x10000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268435712 /* 0x10000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268435968 /* 0x10000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268436480 /* 0x10000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268437504 /* 0x10000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268439552 /* 0x10001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268443648 /* 0x10002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268451840 /* 0x10004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268468224 /* 0x10008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268500992 /* 0x10010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268566528 /* 0x10020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268697600 /* 0x10040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {268959744 /* 0x10080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {269484032 /* 0x10100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {270532608 /* 0x10200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {272629760 /* 0x10400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {276824064 /* 0x10800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {285212672 /* 0x11000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {301989888 /* 0x12000000 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 25}} /* shli r3, r2, 25 */ + }, + {335544320 /* 0x14000000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 26}} /* shli r3, r2, 26 */ + }, + {402653184 /* 0x18000000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 27}} /* shli r3, r2, 27 */ + }, + {536870902 /* 0x1ffffff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 26}, /* shli r4, r2, 26 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {536870903 /* 0x1ffffff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {536870904 /* 0x1ffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {536870905 /* 0x1ffffff9 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {536870906 /* 0x1ffffffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 28}, /* shli r3, r1, 28 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {536870907 /* 0x1ffffffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {536870908 /* 0x1ffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {536870909 /* 0x1ffffffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {536870910 /* 0x1ffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {536870911 /* 0x1fffffff */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {536870912 /* 0x20000000 */ , + {{6, 1, 29}} /* shli r2, r1, 29 */ + }, + {536870913 /* 0x20000001 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {536870914 /* 0x20000002 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {536870915 /* 0x20000003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536870916 /* 0x20000004 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {536870917 /* 0x20000005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536870918 /* 0x20000006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {536870919 /* 0x20000007 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {536870920 /* 0x20000008 */ , + {{6, 1, 29}, /* shli r2, r1, 29 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {536870921 /* 0x20000009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536870922 /* 0x2000000a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {536870928 /* 0x20000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536870944 /* 0x20000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536870976 /* 0x20000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536871040 /* 0x20000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536871168 /* 0x20000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536871424 /* 0x20000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536871936 /* 0x20000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536872960 /* 0x20000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536875008 /* 0x20001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536879104 /* 0x20002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536887296 /* 0x20004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536903680 /* 0x20008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {536936448 /* 0x20010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {537001984 /* 0x20020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {537133056 /* 0x20040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {537395200 /* 0x20080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {537919488 /* 0x20100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {538968064 /* 0x20200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {541065216 /* 0x20400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {545259520 /* 0x20800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {553648128 /* 0x21000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {570425344 /* 0x22000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {603979776 /* 0x24000000 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 26}} /* shli r3, r2, 26 */ + }, + {671088640 /* 0x28000000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 27}} /* shli r3, r2, 27 */ + }, + {805306368 /* 0x30000000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 28}} /* shli r3, r2, 28 */ + }, + {1073741814 /* 0x3ffffff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 27}, /* shli r4, r2, 27 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {1073741815 /* 0x3ffffff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1073741816 /* 0x3ffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1073741817 /* 0x3ffffff9 */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {1073741818 /* 0x3ffffffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 29}, /* shli r3, r1, 29 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {1073741819 /* 0x3ffffffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1073741820 /* 0x3ffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1073741821 /* 0x3ffffffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1073741822 /* 0x3ffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {1073741823 /* 0x3fffffff */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + }, + {1073741824 /* 0x40000000 */ , + {{6, 1, 30}} /* shli r2, r1, 30 */ + }, + {1073741825 /* 0x40000001 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {1, 1, 2}} /* add r3, r1, r2 */ + }, + {1073741826 /* 0x40000002 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {3, 1, 2}} /* s1a r3, r1, r2 */ + }, + {1073741827 /* 0x40000003 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073741828 /* 0x40000004 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {4, 1, 2}} /* s2a r3, r1, r2 */ + }, + {1073741829 /* 0x40000005 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073741830 /* 0x40000006 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {1073741831 /* 0x40000007 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 1, 3}} /* s3a r4, r1, r3 */ + }, + {1073741832 /* 0x40000008 */ , + {{6, 1, 30}, /* shli r2, r1, 30 */ + {5, 1, 2}} /* s3a r3, r1, r2 */ + }, + {1073741833 /* 0x40000009 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073741834 /* 0x4000000a */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {3, 2, 3}} /* s1a r4, r2, r3 */ + }, + {1073741840 /* 0x40000010 */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073741856 /* 0x40000020 */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073741888 /* 0x40000040 */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073741952 /* 0x40000080 */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073742080 /* 0x40000100 */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073742336 /* 0x40000200 */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073742848 /* 0x40000400 */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073743872 /* 0x40000800 */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073745920 /* 0x40001000 */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073750016 /* 0x40002000 */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073758208 /* 0x40004000 */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073774592 /* 0x40008000 */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073807360 /* 0x40010000 */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1073872896 /* 0x40020000 */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1074003968 /* 0x40040000 */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1074266112 /* 0x40080000 */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1074790400 /* 0x40100000 */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1075838976 /* 0x40200000 */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1077936128 /* 0x40400000 */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1082130432 /* 0x40800000 */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1090519040 /* 0x41000000 */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1107296256 /* 0x42000000 */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1140850688 /* 0x44000000 */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {1, 2, 3}} /* add r4, r2, r3 */ + }, + {1207959552 /* 0x48000000 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 2, 27}} /* shli r3, r2, 27 */ + }, + {1342177280 /* 0x50000000 */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 2, 28}} /* shli r3, r2, 28 */ + }, + {1610612735 /* 0x5fffffff */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 29}, /* shli r3, r2, 29 */ + {2, 3, 1}} /* sub r4, r3, r1 */ + }, + {1610612736 /* 0x60000000 */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 2, 29}} /* shli r3, r2, 29 */ + }, + {1879048191 /* 0x6fffffff */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 3}, /* shli r4, r2, 3 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2013265919 /* 0x77ffffff */ , + {{6, 1, 27}, /* shli r2, r1, 27 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 4}, /* shli r4, r2, 4 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2080374783 /* 0x7bffffff */ , + {{6, 1, 26}, /* shli r2, r1, 26 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 5}, /* shli r4, r2, 5 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2113929215 /* 0x7dffffff */ , + {{6, 1, 25}, /* shli r2, r1, 25 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 6}, /* shli r4, r2, 6 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2130706431 /* 0x7effffff */ , + {{6, 1, 24}, /* shli r2, r1, 24 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 7}, /* shli r4, r2, 7 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2139095039 /* 0x7f7fffff */ , + {{6, 1, 23}, /* shli r2, r1, 23 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 8}, /* shli r4, r2, 8 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2143289343 /* 0x7fbfffff */ , + {{6, 1, 22}, /* shli r2, r1, 22 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 9}, /* shli r4, r2, 9 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2145386495 /* 0x7fdfffff */ , + {{6, 1, 21}, /* shli r2, r1, 21 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 10}, /* shli r4, r2, 10 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2146435071 /* 0x7fefffff */ , + {{6, 1, 20}, /* shli r2, r1, 20 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 11}, /* shli r4, r2, 11 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2146959359 /* 0x7ff7ffff */ , + {{6, 1, 19}, /* shli r2, r1, 19 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 12}, /* shli r4, r2, 12 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2147221503 /* 0x7ffbffff */ , + {{6, 1, 18}, /* shli r2, r1, 18 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 13}, /* shli r4, r2, 13 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2147352575 /* 0x7ffdffff */ , + {{6, 1, 17}, /* shli r2, r1, 17 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 14}, /* shli r4, r2, 14 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2147418111 /* 0x7ffeffff */ , + {{6, 1, 16}, /* shli r2, r1, 16 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 15}, /* shli r4, r2, 15 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2147450879 /* 0x7fff7fff */ , + {{6, 1, 15}, /* shli r2, r1, 15 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 16}, /* shli r4, r2, 16 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2147467263 /* 0x7fffbfff */ , + {{6, 1, 14}, /* shli r2, r1, 14 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 17}, /* shli r4, r2, 17 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2147475455 /* 0x7fffdfff */ , + {{6, 1, 13}, /* shli r2, r1, 13 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 18}, /* shli r4, r2, 18 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2147479551 /* 0x7fffefff */ , + {{6, 1, 12}, /* shli r2, r1, 12 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 19}, /* shli r4, r2, 19 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2147481599 /* 0x7ffff7ff */ , + {{6, 1, 11}, /* shli r2, r1, 11 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 20}, /* shli r4, r2, 20 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2147482623 /* 0x7ffffbff */ , + {{6, 1, 10}, /* shli r2, r1, 10 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 21}, /* shli r4, r2, 21 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2147483135 /* 0x7ffffdff */ , + {{6, 1, 9}, /* shli r2, r1, 9 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 22}, /* shli r4, r2, 22 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2147483391 /* 0x7ffffeff */ , + {{6, 1, 8}, /* shli r2, r1, 8 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 23}, /* shli r4, r2, 23 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2147483519 /* 0x7fffff7f */ , + {{6, 1, 7}, /* shli r2, r1, 7 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 24}, /* shli r4, r2, 24 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2147483583 /* 0x7fffffbf */ , + {{6, 1, 6}, /* shli r2, r1, 6 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 25}, /* shli r4, r2, 25 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2147483615 /* 0x7fffffdf */ , + {{6, 1, 5}, /* shli r2, r1, 5 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 26}, /* shli r4, r2, 26 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2147483631 /* 0x7fffffef */ , + {{6, 1, 4}, /* shli r2, r1, 4 */ + {1, 1, 2}, /* add r3, r1, r2 */ + {6, 2, 27}, /* shli r4, r2, 27 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2147483638 /* 0x7ffffff6 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {3, 1, 2}, /* s1a r3, r1, r2 */ + {6, 2, 28}, /* shli r4, r2, 28 */ + {2, 4, 3}} /* sub r5, r4, r3 */ + }, + {2147483639 /* 0x7ffffff7 */ , + {{5, 1, 1}, /* s3a r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2147483640 /* 0x7ffffff8 */ , + {{6, 1, 3}, /* shli r2, r1, 3 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2147483641 /* 0x7ffffff9 */ , + {{6, 1, 28}, /* shli r2, r1, 28 */ + {2, 2, 1}, /* sub r3, r2, r1 */ + {5, 3, 1}} /* s3a r4, r3, r1 */ + }, + {2147483642 /* 0x7ffffffa */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 30}, /* shli r3, r1, 30 */ + {2, 3, 2}, /* sub r4, r3, r2 */ + {6, 4, 1}} /* shli r5, r4, 1 */ + }, + {2147483643 /* 0x7ffffffb */ , + {{4, 1, 1}, /* s2a r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2147483644 /* 0x7ffffffc */ , + {{6, 1, 2}, /* shli r2, r1, 2 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2147483645 /* 0x7ffffffd */ , + {{3, 1, 1}, /* s1a r2, r1, r1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2147483646 /* 0x7ffffffe */ , + {{6, 1, 1}, /* shli r2, r1, 1 */ + {6, 1, 31}, /* shli r3, r1, 31 */ + {2, 3, 2}} /* sub r4, r3, r2 */ + }, + {2147483647 /* 0x7fffffff */ , + {{6, 1, 31}, /* shli r2, r1, 31 */ + {2, 2, 1}} /* sub r3, r2, r1 */ + } +}; + +const int tilepro_multiply_insn_seq_table_size = + (int) (sizeof tilepro_multiply_insn_seq_table + / sizeof tilepro_multiply_insn_seq_table[0]); diff --git a/gcc/config/tilepro/predicates.md b/gcc/config/tilepro/predicates.md new file mode 100644 index 00000000000..6c4ffbe4a20 --- /dev/null +++ b/gcc/config/tilepro/predicates.md @@ -0,0 +1,261 @@ +;; Predicate definitions for Tilera TILEPro chip. +;; Copyright (C) 2011, 2012 +;; Free Software Foundation, Inc. +;; Contributed by Walter Lee (walt@tilera.com) +;; +;; This file is part of GCC. +;; +;; GCC is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 3, or (at your +;; option) any later version. +;; +;; GCC is distributed in the hope that it will be useful, but WITHOUT +;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +;; License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; <http://www.gnu.org/licenses/>. + +;; 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 network register identifier. +(define_predicate "netreg_operand" + (and (match_code "const_int") + (match_test "IN_RANGE (INTVAL (op), 0, 6)"))) + +; Return 1 if OP is an unsigned 5-bit constant. +(define_predicate "u5bit_cint_operand" + (and (match_code "const_int") + (match_test "INTVAL (op) == (INTVAL (op) & 0x1F)"))) + +;; 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 a nonzero integer constant whose low 16 bits are zero. +(define_predicate "auli_cint_operand" + (and (match_code "const_int") + (match_test "satisfies_constraint_K (op)"))) + +;; Return 1 if OP is an unsigned 15-bit constant. +(define_predicate "u15bit_cint_operand" + (and (match_code "const_int") + (match_test "(unsigned HOST_WIDE_INT)INTVAL (op) < (1U << 15)"))) + +;; 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"))) + +;; 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 OP is a 2-element vector constant with identical signed +;; 8-bit elements or any register. +(define_predicate "reg_or_v2s8bit_operand" + (ior (match_operand 0 "register_operand") + (and (match_code "const_vector") + (match_test "CONST_VECTOR_NUNITS (op) == 2 + && satisfies_constraint_I (CONST_VECTOR_ELT (op, 0)) + && CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 1)")))) + +;; 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) || satisfies_constraint_K (op)") + (match_operand 0 "register_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 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 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 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; + + if (GET_MODE_SIZE (mode) > 4) + return false; + + switch (GET_CODE (op)) + { + case CONST_INT: + return (satisfies_constraint_J (op) + || satisfies_constraint_K (op) + || satisfies_constraint_N (op) + || satisfies_constraint_P (op)); + + case HIGH: + return true; + + case MEM: + return memory_address_p (mode, XEXP (op, 0)); + + 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))")))) + +;; Returns 1 if OP is a symbolic operand, or a const unspec wrapper +;; representing a got reference, a tls reference, or pc-relative +;; reference. +(define_predicate "const_symbolic_operand" + (ior (match_operand 0 "symbolic_operand") + (and (match_code "const") + (match_test "GET_CODE (XEXP (op,0)) == UNSPEC") + (ior (match_test "XINT (XEXP (op,0), 1) == UNSPEC_GOT16_SYM") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_GOT32_SYM") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_PCREL_SYM") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_TLS_GD") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_TLS_IE") + (match_test "XINT (XEXP (op,0), 1) == UNSPEC_TLS_LE"))))) + +;; 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/config/tilepro/t-tilepro b/gcc/config/tilepro/t-tilepro new file mode 100644 index 00000000000..bc2a5aa5b66 --- /dev/null +++ b/gcc/config/tilepro/t-tilepro @@ -0,0 +1,15 @@ +tilepro-c.o: $(srcdir)/config/tilepro/tilepro-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/tilepro/mul-tables.c: \ + $(srcdir)/config/tilepro/gen-mul-tables.cc + $(CC_FOR_BUILD) $(BUILD_CPPFLAGS) -O2 -DTILEPRO \ + -o gen-mul-tables -lstdc++ $<; + ./gen-mul-tables > $@ + +mul-tables.o: $(srcdir)/config/tilepro/mul-tables.c \ + $(CONFIG_H) $(SYSTEM_H) coretypes.h $(EXPR_H) $(OPTABS_H) \ + $(srcdir)/config/tilepro/tilepro-multiply.h + $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< diff --git a/gcc/config/tilepro/tilepro-builtins.h b/gcc/config/tilepro/tilepro-builtins.h new file mode 100644 index 00000000000..807401fcdb1 --- /dev/null +++ b/gcc/config/tilepro/tilepro-builtins.h @@ -0,0 +1,217 @@ +/* Enum for builtin intrinsics for TILEPro. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +#ifndef GCC_TILEPRO_BUILTINS_H +#define GCC_TILEPRO_BUILTINS_H + +enum tilepro_builtin +{ + TILEPRO_INSN_ADD, + TILEPRO_INSN_ADDB, + TILEPRO_INSN_ADDBS_U, + TILEPRO_INSN_ADDH, + TILEPRO_INSN_ADDHS, + TILEPRO_INSN_ADDIB, + TILEPRO_INSN_ADDIH, + TILEPRO_INSN_ADDLIS, + TILEPRO_INSN_ADDS, + TILEPRO_INSN_ADIFFB_U, + TILEPRO_INSN_ADIFFH, + TILEPRO_INSN_AND, + TILEPRO_INSN_AULI, + TILEPRO_INSN_AVGB_U, + TILEPRO_INSN_AVGH, + TILEPRO_INSN_BITX, + TILEPRO_INSN_BYTEX, + TILEPRO_INSN_CLZ, + TILEPRO_INSN_CRC32_32, + TILEPRO_INSN_CRC32_8, + TILEPRO_INSN_CTZ, + TILEPRO_INSN_DRAIN, + TILEPRO_INSN_DTLBPR, + TILEPRO_INSN_DWORD_ALIGN, + TILEPRO_INSN_FINV, + TILEPRO_INSN_FLUSH, + TILEPRO_INSN_FNOP, + TILEPRO_INSN_ICOH, + TILEPRO_INSN_ILL, + TILEPRO_INSN_INFO, + TILEPRO_INSN_INFOL, + TILEPRO_INSN_INTHB, + TILEPRO_INSN_INTHH, + TILEPRO_INSN_INTLB, + TILEPRO_INSN_INTLH, + TILEPRO_INSN_INV, + TILEPRO_INSN_LB, + TILEPRO_INSN_LB_U, + TILEPRO_INSN_LH, + TILEPRO_INSN_LH_U, + TILEPRO_INSN_LNK, + TILEPRO_INSN_LW, + TILEPRO_INSN_LW_NA, + TILEPRO_INSN_LB_L2, + TILEPRO_INSN_LB_U_L2, + TILEPRO_INSN_LH_L2, + TILEPRO_INSN_LH_U_L2, + TILEPRO_INSN_LW_L2, + TILEPRO_INSN_LW_NA_L2, + TILEPRO_INSN_LB_MISS, + TILEPRO_INSN_LB_U_MISS, + TILEPRO_INSN_LH_MISS, + TILEPRO_INSN_LH_U_MISS, + TILEPRO_INSN_LW_MISS, + TILEPRO_INSN_LW_NA_MISS, + TILEPRO_INSN_MAXB_U, + TILEPRO_INSN_MAXH, + TILEPRO_INSN_MAXIB_U, + TILEPRO_INSN_MAXIH, + TILEPRO_INSN_MF, + TILEPRO_INSN_MFSPR, + TILEPRO_INSN_MINB_U, + TILEPRO_INSN_MINH, + TILEPRO_INSN_MINIB_U, + TILEPRO_INSN_MINIH, + TILEPRO_INSN_MM, + TILEPRO_INSN_MNZ, + TILEPRO_INSN_MNZB, + TILEPRO_INSN_MNZH, + TILEPRO_INSN_MOVE, + TILEPRO_INSN_MOVELIS, + TILEPRO_INSN_MTSPR, + TILEPRO_INSN_MULHH_SS, + TILEPRO_INSN_MULHH_SU, + TILEPRO_INSN_MULHH_UU, + TILEPRO_INSN_MULHHA_SS, + TILEPRO_INSN_MULHHA_SU, + TILEPRO_INSN_MULHHA_UU, + TILEPRO_INSN_MULHHSA_UU, + TILEPRO_INSN_MULHL_SS, + TILEPRO_INSN_MULHL_SU, + TILEPRO_INSN_MULHL_US, + TILEPRO_INSN_MULHL_UU, + TILEPRO_INSN_MULHLA_SS, + TILEPRO_INSN_MULHLA_SU, + TILEPRO_INSN_MULHLA_US, + TILEPRO_INSN_MULHLA_UU, + TILEPRO_INSN_MULHLSA_UU, + TILEPRO_INSN_MULLL_SS, + TILEPRO_INSN_MULLL_SU, + TILEPRO_INSN_MULLL_UU, + TILEPRO_INSN_MULLLA_SS, + TILEPRO_INSN_MULLLA_SU, + TILEPRO_INSN_MULLLA_UU, + TILEPRO_INSN_MULLLSA_UU, + TILEPRO_INSN_MVNZ, + TILEPRO_INSN_MVZ, + TILEPRO_INSN_MZ, + TILEPRO_INSN_MZB, + TILEPRO_INSN_MZH, + TILEPRO_INSN_NAP, + TILEPRO_INSN_NOP, + TILEPRO_INSN_NOR, + TILEPRO_INSN_OR, + TILEPRO_INSN_PACKBS_U, + TILEPRO_INSN_PACKHB, + TILEPRO_INSN_PACKHS, + TILEPRO_INSN_PACKLB, + TILEPRO_INSN_PCNT, + TILEPRO_INSN_PREFETCH, + TILEPRO_INSN_PREFETCH_L1, + TILEPRO_INSN_RL, + TILEPRO_INSN_S1A, + TILEPRO_INSN_S2A, + TILEPRO_INSN_S3A, + TILEPRO_INSN_SADAB_U, + TILEPRO_INSN_SADAH, + TILEPRO_INSN_SADAH_U, + TILEPRO_INSN_SADB_U, + TILEPRO_INSN_SADH, + TILEPRO_INSN_SADH_U, + TILEPRO_INSN_SB, + TILEPRO_INSN_SEQ, + TILEPRO_INSN_SEQB, + TILEPRO_INSN_SEQH, + TILEPRO_INSN_SEQIB, + TILEPRO_INSN_SEQIH, + TILEPRO_INSN_SH, + TILEPRO_INSN_SHL, + TILEPRO_INSN_SHLB, + TILEPRO_INSN_SHLH, + TILEPRO_INSN_SHLIB, + TILEPRO_INSN_SHLIH, + TILEPRO_INSN_SHR, + TILEPRO_INSN_SHRB, + TILEPRO_INSN_SHRH, + TILEPRO_INSN_SHRIB, + TILEPRO_INSN_SHRIH, + TILEPRO_INSN_SLT, + TILEPRO_INSN_SLT_U, + TILEPRO_INSN_SLTB, + TILEPRO_INSN_SLTB_U, + TILEPRO_INSN_SLTE, + TILEPRO_INSN_SLTE_U, + TILEPRO_INSN_SLTEB, + TILEPRO_INSN_SLTEB_U, + TILEPRO_INSN_SLTEH, + TILEPRO_INSN_SLTEH_U, + TILEPRO_INSN_SLTH, + TILEPRO_INSN_SLTH_U, + TILEPRO_INSN_SLTIB, + TILEPRO_INSN_SLTIB_U, + TILEPRO_INSN_SLTIH, + TILEPRO_INSN_SLTIH_U, + TILEPRO_INSN_SNE, + TILEPRO_INSN_SNEB, + TILEPRO_INSN_SNEH, + TILEPRO_INSN_SRA, + TILEPRO_INSN_SRAB, + TILEPRO_INSN_SRAH, + TILEPRO_INSN_SRAIB, + TILEPRO_INSN_SRAIH, + TILEPRO_INSN_SUB, + TILEPRO_INSN_SUBB, + TILEPRO_INSN_SUBBS_U, + TILEPRO_INSN_SUBH, + TILEPRO_INSN_SUBHS, + TILEPRO_INSN_SUBS, + TILEPRO_INSN_SW, + TILEPRO_INSN_TBLIDXB0, + TILEPRO_INSN_TBLIDXB1, + TILEPRO_INSN_TBLIDXB2, + TILEPRO_INSN_TBLIDXB3, + TILEPRO_INSN_TNS, + TILEPRO_INSN_WH64, + TILEPRO_INSN_XOR, + TILEPRO_NETWORK_BARRIER, + TILEPRO_IDN0_RECEIVE, + TILEPRO_IDN1_RECEIVE, + TILEPRO_IDN_SEND, + TILEPRO_SN_RECEIVE, + TILEPRO_SN_SEND, + TILEPRO_UDN0_RECEIVE, + TILEPRO_UDN1_RECEIVE, + TILEPRO_UDN2_RECEIVE, + TILEPRO_UDN3_RECEIVE, + TILEPRO_UDN_SEND, + TILEPRO_BUILTIN_max +}; + +#endif /* !GCC_TILEPRO_BUILTINS_H */ diff --git a/gcc/config/tilepro/tilepro-c.c b/gcc/config/tilepro/tilepro-c.c new file mode 100644 index 00000000000..7eb95f1332d --- /dev/null +++ b/gcc/config/tilepro/tilepro-c.c @@ -0,0 +1,52 @@ +/* Definitions of C specific functions for TILEPro. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +#include "config.h" +#include "system.h" +#include "coretypes.h" +#include "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 +tilepro_cpu_cpp_builtins (struct cpp_reader *pfile) +{ + builtin_define ("__tile__"); + builtin_define ("__tilepro__"); + builtin_assert ("cpu=tile"); + builtin_assert ("machine=tile"); + builtin_define ("__tile_chip__=1"); + builtin_define ("__tile_chip_rev__=0"); + + TILEPRO_CPU_CPP_ENDIAN_BUILTINS (); + GNU_USER_TARGET_OS_CPP_BUILTINS (); +} + + diff --git a/gcc/config/tilepro/tilepro-generic.md b/gcc/config/tilepro/tilepro-generic.md new file mode 100644 index 00000000000..fcbb1d43ad2 --- /dev/null +++ b/gcc/config/tilepro/tilepro-generic.md @@ -0,0 +1,108 @@ +;; Scheduling description for Tilera TILEPro chip. +;; Copyright (C) 2011, 2012 +;; Free Software Foundation, Inc. +;; Contributed by Walter Lee (walt@tilera.com) +;; +;; This file is part of GCC. +;; +;; GCC is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 3, or (at your +;; option) any later version. +;; +;; GCC is distributed in the hope that it will be useful, but WITHOUT +;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +;; License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; <http://www.gnu.org/licenses/>. + +(define_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" 8 + (eq_attr "type" "X1_L2") + "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 "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" 8 + (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/config/tilepro/tilepro-modes.def b/gcc/config/tilepro/tilepro-modes.def new file mode 100644 index 00000000000..0031f4948da --- /dev/null +++ b/gcc/config/tilepro/tilepro-modes.def @@ -0,0 +1,35 @@ +/* TILEPro extra machine modes. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +/* Extra modes for handling struct returns in up to 10 registers. */ +INT_MODE (R3I, 12); +INT_MODE (R5I, 20); +INT_MODE (R6I, 24); +INT_MODE (R7I, 28); +INT_MODE (R8I, 32); +INT_MODE (R9I, 36); +INT_MODE (R10I, 40); + +/* Vector modes. */ +VECTOR_MODES (INT, 4); /* V4QI V2HI */ +VECTOR_MODE (INT, QI, 8); /* V8QI */ +VECTOR_MODE (INT, HI, 4); /* V4HI */ +VECTOR_MODE (INT, QI, 2); /* V2QI */ diff --git a/gcc/config/tilepro/tilepro-multiply.h b/gcc/config/tilepro/tilepro-multiply.h new file mode 100644 index 00000000000..e3f88587e6a --- /dev/null +++ b/gcc/config/tilepro/tilepro-multiply.h @@ -0,0 +1,83 @@ +/* Header for constant multiple table for TILEPro. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +#ifndef GCC_TILEPRO_MULTIPLY_H +#define GCC_TILEPRO_MULTIPLY_H + +/* A node of a tilepro_multiply_insn_seq, corresponding to a single + machine instruction such as 'add', 's1a', or an shl by a + constant. */ +struct tilepro_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 + tilepro_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 tilepro_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 tilepro_multiply_insn_seq +{ + /* The constant factor by which this expression tree multiplies its + input. */ + int 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 tilepro_multiply_insn_seq_entry + op[tilepro_multiply_insn_seq_MAX_OPERATIONS]; + +}; + +/* A mapping from the compressed opcode to the corresponding enum + insn_code. */ +extern const enum insn_code tilepro_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 tilepro_multiply_insn_seq + tilepro_multiply_insn_seq_table[]; + +/* The number of elements in multiply_insn_seq_table. */ +extern const int tilepro_multiply_insn_seq_table_size; + +#endif /* !GCC_TILEPRO_MULTIPLY_H */ diff --git a/gcc/config/tilepro/tilepro-protos.h b/gcc/config/tilepro/tilepro-protos.h new file mode 100644 index 00000000000..9325bb976b0 --- /dev/null +++ b/gcc/config/tilepro/tilepro-protos.h @@ -0,0 +1,77 @@ +/* Prototypes of target machine for TILEPro. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +#ifndef GCC__TILEPRO_PROTOS_H +#define GCC__TILEPRO_PROTOS_H + + +extern void tilepro_init_expanders (void); +extern bool tilepro_legitimate_pic_operand_p (rtx); +extern rtx tilepro_simd_int (rtx, enum machine_mode); + +#ifdef RTX_CODE +extern void split_di (rtx[], int, rtx[], rtx[]); +extern bool tilepro_bitfield_operand_p (HOST_WIDE_INT, int *, int *); +extern void tilepro_expand_set_const32 (rtx, rtx); +extern bool tilepro_expand_mov (enum machine_mode, rtx *); +extern void tilepro_expand_insv (rtx operands[4]); +extern void tilepro_expand_unaligned_load (rtx, rtx, HOST_WIDE_INT, + HOST_WIDE_INT, bool); +extern void tilepro_expand_movmisalign (enum machine_mode, rtx *); +extern bool tilepro_expand_addsi (rtx, rtx, rtx); +extern void tilepro_allocate_stack (rtx, rtx); +extern bool tilepro_expand_mulsi (rtx, rtx, rtx); +extern void tilepro_expand_smulsi3_highpart (rtx, rtx, rtx); +extern void tilepro_expand_umulsi3_highpart (rtx, rtx, rtx); + +extern bool tilepro_emit_setcc (rtx[], enum machine_mode); +extern void tilepro_emit_conditional_branch (rtx[], enum machine_mode); +extern rtx tilepro_emit_conditional_move (rtx); +extern const char *tilepro_output_cbranch_with_opcode (rtx, rtx *, + const char *, + const char *, int, + bool); +extern const char *tilepro_output_cbranch (rtx, rtx *, bool); +extern void tilepro_expand_tablejump (rtx, rtx); +extern void tilepro_expand_builtin_vector_binop (rtx (*)(rtx, rtx, rtx), + enum machine_mode, rtx, + enum machine_mode, rtx, rtx, + bool); +#endif /* RTX_CODE */ + +extern bool tilepro_can_use_return_insn_p (void); +extern void tilepro_expand_prologue (void); +extern void tilepro_expand_epilogue (bool); +extern int tilepro_initial_elimination_offset (int, int); +extern rtx tilepro_return_addr (int, rtx); +extern rtx tilepro_eh_return_handler_rtx (void); +extern int tilepro_adjust_insn_length (rtx, int); + +extern int tilepro_asm_preferred_eh_data_format (int, int); +extern void tilepro_final_prescan_insn (rtx); +extern const char *tilepro_asm_output_opcode (FILE *, const char *); +extern void tilepro_function_profiler (FILE *, int); + +/* Declare functions in tile-c.c */ + +extern void tilepro_cpu_cpp_builtins (struct cpp_reader *); + +#endif /* GCC_TILEPRO_PROTOS_H */ diff --git a/gcc/config/tilepro/tilepro.c b/gcc/config/tilepro/tilepro.c new file mode 100644 index 00000000000..71b5807c5de --- /dev/null +++ b/gcc/config/tilepro/tilepro.c @@ -0,0 +1,5084 @@ +/* Subroutines used for code generation on the Tilera TILEPro. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +#include "config.h" +#include "system.h" +#include "coretypes.h" +#include "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 "sel-sched.h" +#include "tm_p.h" +#include "tm-constrs.h" +#include "target.h" +#include "target-def.h" +#include "integrate.h" +#include "dwarf2.h" +#include "timevar.h" +#include "gimple.h" +#include "cfgloop.h" +#include "tilepro-builtins.h" +#include "tilepro-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 +tilepro_option_override (void) +{ + /* 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 +tilepro_scalar_mode_supported_p (enum machine_mode mode) +{ + switch (mode) + { + case QImode: + case HImode: + case SImode: + case DImode: + return true; + + case SFmode: + case DFmode: + return true; + + default: + return false; + } +} + + +/* Implement TARGET_VECTOR_MODE_SUPPORTED_P. */ +static bool +tile_vector_mode_supported_p (enum machine_mode mode) +{ + return mode == V4QImode || mode == V2HImode; +} + + +/* Implement TARGET_CANNOT_FORCE_CONST_MEM. */ +static bool +tilepro_cannot_force_const_mem (enum machine_mode mode ATTRIBUTE_UNUSED, + rtx x ATTRIBUTE_UNUSED) +{ + return true; +} + + +/* Implement TARGET_FUNCTION_OK_FOR_SIBCALL. */ +static bool +tilepro_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED) +{ + return decl != NULL; +} + + +/* Implement TARGET_PASS_BY_REFERENCE. Variable sized types are + passed by reference. */ +static bool +tilepro_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_MEMORY. */ +static bool +tilepro_return_in_memory (const_tree type, const_tree fndecl ATTRIBUTE_UNUSED) +{ + return !IN_RANGE (int_size_in_bytes (type), + 0, TILEPRO_NUM_RETURN_REGS * UNITS_PER_WORD); +} + + +/* Implement TARGET_FUNCTION_ARG_BOUNDARY. */ +static unsigned int +tilepro_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 +tilepro_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 >= TILEPRO_NUM_ARG_REGS) + return NULL_RTX; + + /* See whether the argument has doubleword alignment. */ + doubleword_aligned_p = + tilepro_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) + > TILEPRO_NUM_ARG_REGS) + return NULL_RTX; + + return gen_rtx_REG (mode, cum); +} + + +/* Implement TARGET_FUNCTION_ARG_ADVANCE. */ +static void +tilepro_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 = + tilepro_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 < TILEPRO_NUM_ARG_REGS + && *cum + word_size > TILEPRO_NUM_ARG_REGS) + *cum = TILEPRO_NUM_ARG_REGS; + + *cum += word_size; +} + + +/* Implement TARGET_FUNCTION_VALUE. */ +static rtx +tilepro_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 +tilepro_libcall_value (enum machine_mode mode, + const_rtx fun ATTRIBUTE_UNUSED) +{ + return gen_rtx_REG (mode, 0); +} + + +/* Implement FUNCTION_VALUE_REGNO_P. */ +static bool +tilepro_function_value_regno_p (const unsigned int regno) +{ + return regno < TILEPRO_NUM_RETURN_REGS; +} + + +/* Implement TARGET_BUILD_BUILTIN_VA_LIST. */ +static tree +tilepro_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 +tilepro_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 - TILEPRO_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 +tilepro_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 < TILEPRO_NUM_ARG_REGS) + { + *pretend_args = UNITS_PER_WORD * (TILEPRO_NUM_ARG_REGS - first_reg); + + if (!no_rtl) + { + alias_set_type set = get_varargs_alias_set (); + rtx tmp = + gen_rtx_MEM (BLKmode, plus_constant (virtual_incoming_args_rtx, + -STACK_POINTER_OFFSET - + UNITS_PER_WORD * + (TILEPRO_NUM_ARG_REGS - + first_reg))); + MEM_NOTRAP_P (tmp) = 1; + set_mem_alias_set (tmp, set); + move_block_from_reg (first_reg, tmp, + TILEPRO_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) + 3) & -4; + if ((VALIST.__args + paddedsize > VALIST.__skip) + & (VALIST.__args <= VALIST.__skip)) + addr = VALIST.__skip + STACK_POINTER_OFFSET; + else + addr = VALIST.__args; + VALIST.__args = addr + paddedsize; + ret = *(TYPE *)addr; */ +static tree +tilepro_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 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)); + + gimplify_assign (addr, tmp, pre_p); + + /* Update VALIST.__args. */ + 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 +tilepro_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 s[123]a 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 SIGN_EXTEND: + case ZERO_EXTEND: + if (outer_code == MULT) + *total = 0; + else + *total = COSTS_N_INSNS (1); + 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 <= TILEPRO_LAST_LATENCY_1_INSN) + *total = COSTS_N_INSNS (1); + else if (num <= TILEPRO_LAST_LATENCY_2_INSN) + *total = COSTS_N_INSNS (2); + else if (num > TILEPRO_LAST_LATENCY_INSN) + { + if (outer_code == PLUS) + *total = 0; + else + *total = COSTS_N_INSNS (1); + } + else + { + switch (num) + { + case UNSPEC_BLOCKAGE: + case UNSPEC_NETWORK_BARRIER: + *total = 0; + break; + + case UNSPEC_LNK_AND_LABEL: + case UNSPEC_MF: + case UNSPEC_NETWORK_RECEIVE: + case UNSPEC_NETWORK_SEND: + case UNSPEC_TLS_GD_ADD: + *total = COSTS_N_INSNS (1); + break; + + case UNSPEC_TLS_IE_LOAD: + *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_LATENCY_L2: + *total = COSTS_N_INSNS (8); + 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; + } +} + + + +/* Returns an SImode integer rtx with value VAL. */ +static rtx +gen_int_si (HOST_WIDE_INT val) +{ + return gen_int_mode (val, SImode); +} + + +/* 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 * +tilepro_init_machine_status (void) +{ + return ggc_alloc_cleared_machine_function (); +} + + +/* Do anything needed before RTL is emitted for each function. */ +void +tilepro_init_expanders (void) +{ + /* Arrange to initialize and mark the machine per-function + status. */ + init_machine_status = tilepro_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, TILEPRO_PIC_TEXT_LABEL_REGNUM); + + machine->got_rtx = gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM); + + machine->calls_tls_get_addr = false; + } +} + + +/* Return true if X contains a thread-local symbol. */ +static bool +tilepro_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 tilepro_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 +tilepro_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 +tilepro_legitimate_constant_p (enum machine_mode mode ATTRIBUTE_UNUSED, rtx x) +{ + switch (GET_CODE (x)) + { + case CONST: + case SYMBOL_REF: + return !tilepro_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 +tilepro_legitimate_pic_operand_p (rtx x) +{ + if (tilepro_pic_address_needs_scratch (x)) + return false; + + if (tilepro_tls_referenced_p (x)) + return false; + + return true; +} + + +/* Return true if the rtx X can be used as an address operand. */ +static bool +tilepro_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 +tilepro_text_label_symbol (void) +{ + return cfun->machine->text_label_symbol; +} + + +/* Return the register storing the value of the text label. */ +static rtx +tilepro_text_label_rtx (void) +{ + return cfun->machine->text_label_rtx; +} + + +/* Return the register storing the value of the global offset + table. */ +static rtx +tilepro_got_rtx (void) +{ + return cfun->machine->got_rtx; +} + + +/* Return the SYMBOL_REF for _GLOBAL_OFFSET_TABLE_. */ +static rtx +tilepro_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 +tilepro_tls_got (void) +{ + rtx temp; + if (flag_pic) + { + crtl->uses_pic_offset_table = 1; + return tilepro_got_rtx (); + } + + temp = gen_reg_rtx (Pmode); + emit_move_insn (temp, tilepro_got_symbol ()); + + return temp; +} + + +/* ADDR contains a thread-local SYMBOL_REF. Generate code to compute + this (thread-local) address. */ +static rtx +tilepro_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, temp1, temp2, temp3, got, last; + + ret = gen_reg_rtx (Pmode); + r0 = gen_rtx_REG (Pmode, 0); + temp1 = gen_reg_rtx (Pmode); + temp2 = gen_reg_rtx (Pmode); + temp3 = gen_reg_rtx (Pmode); + + got = tilepro_tls_got (); + emit_insn (gen_tls_gd_addhi (temp1, got, addr)); + emit_insn (gen_tls_gd_addlo (temp2, temp1, addr)); + emit_move_insn (r0, temp2); + emit_insn (gen_tls_gd_call (addr)); + emit_move_insn (temp3, r0); + 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 temp1, temp2, temp3, got, last; + + ret = gen_reg_rtx (Pmode); + temp1 = gen_reg_rtx (Pmode); + temp2 = gen_reg_rtx (Pmode); + temp3 = gen_reg_rtx (Pmode); + + got = tilepro_tls_got (); + emit_insn (gen_tls_ie_addhi (temp1, got, addr)); + emit_insn (gen_tls_ie_addlo (temp2, temp1, 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 temp1, last; + + ret = gen_reg_rtx (Pmode); + temp1 = gen_reg_rtx (Pmode); + + emit_insn (gen_tls_le_addhi (temp1, + gen_rtx_REG (Pmode, + THREAD_POINTER_REGNUM), + addr)); + last = emit_insn (gen_tls_le_addlo (ret, temp1, addr)); + 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 = tilepro_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; +} + + +/* 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 +tilepro_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); + rtx text_label_symbol = tilepro_text_label_symbol (); + rtx text_label_rtx = tilepro_text_label_rtx (); + + emit_insn (gen_addli_pcrel (temp_reg, text_label_rtx, orig, + text_label_symbol)); + emit_insn (gen_auli_pcrel (temp_reg, temp_reg, orig, + text_label_symbol)); + + /* 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 + tilepro_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) + { + emit_insn (gen_add_got16 (temp_reg, + tilepro_got_rtx (), orig)); + } + else + { + rtx temp_reg2 = create_temp_reg_if_possible (Pmode, reg); + emit_insn (gen_addhi_got32 (temp_reg2, + tilepro_got_rtx (), orig)); + emit_insn (gen_addlo_got32 (temp_reg, temp_reg2, orig)); + } + + 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) == tilepro_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 = tilepro_legitimize_pic_address (XEXP (XEXP (orig, 0), 0), Pmode, + reg); + offset = + tilepro_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, temp_reg; + rtx text_label_symbol; + rtx text_label_rtx; + + 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); + text_label_symbol = tilepro_text_label_symbol (); + text_label_rtx = tilepro_text_label_rtx (); + + emit_insn (gen_addli_pcrel (temp_reg, text_label_rtx, orig, + text_label_symbol)); + emit_insn (gen_auli_pcrel (temp_reg, temp_reg, orig, + text_label_symbol)); + + /* 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 +tilepro_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED, + enum machine_mode mode) +{ + if (GET_MODE_SIZE (mode) <= UNITS_PER_WORD + && symbolic_operand (x, Pmode) && tilepro_tls_referenced_p (x)) + { + return tilepro_legitimize_tls_address (x); + } + else if (flag_pic) + { + return tilepro_legitimize_pic_address (x, mode, 0); + } + else + return x; +} + + +/* Implement TARGET_DELEGITIMIZE_ADDRESS. */ +static rtx +tilepro_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_PCREL_SYM: + case UNSPEC_GOT16_SYM: + case UNSPEC_GOT32_SYM: + case UNSPEC_TLS_GD: + case UNSPEC_TLS_IE: + 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 = tilepro_got_symbol (); + rtx text_label_symbol = tilepro_text_label_symbol (); + rtx text_label_rtx = tilepro_text_label_rtx (); + flag_pic = 0; + + emit_insn (gen_insn_lnk_and_label (text_label_rtx, text_label_symbol)); + + emit_insn (gen_addli_pcrel (tilepro_got_rtx (), + text_label_rtx, got_symbol, text_label_symbol)); + + emit_insn (gen_auli_pcrel (tilepro_got_rtx (), + tilepro_got_rtx (), + got_symbol, text_label_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 (tilepro_got_rtx ()); +} + + +/* Return the simd variant of the constant NUM of mode MODE, by + replicating it to fill an interger of mode SImode. NUM is first + truncated to fit in MODE. */ +rtx +tilepro_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 = 0x01010101 * (n & 0x000000FF); + break; + case HImode: + n = 0x00010001 * (n & 0x0000FFFF); + break; + case SImode: + break; + case DImode: + break; + default: + gcc_unreachable (); + } + + return gen_int_si (n); +} + + +/* Split one or more DImode RTL references into pairs of SImode + references. The RTL can be REG, offsettable MEM, integer constant, + or CONST_DOUBLE. "operands" is a pointer to an array of DImode RTL + to split and "num" is its length. lo_half and hi_half are output + arrays that parallel "operands". */ +void +split_di (rtx operands[], int num, rtx lo_half[], rtx hi_half[]) +{ + while (num--) + { + rtx op = operands[num]; + + /* simplify_subreg refuse to split volatile memory addresses, + but we still have to handle it. */ + if (MEM_P (op)) + { + lo_half[num] = adjust_address (op, SImode, 0); + hi_half[num] = adjust_address (op, SImode, 4); + } + else + { + lo_half[num] = simplify_gen_subreg (SImode, op, + GET_MODE (op) == VOIDmode + ? DImode : GET_MODE (op), 0); + hi_half[num] = simplify_gen_subreg (SImode, op, + GET_MODE (op) == VOIDmode + ? DImode : GET_MODE (op), 4); + } + } +} + + +/* 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. + + If three_wide_only is true, this insists on an instruction that + works in a bundle containing three instructions. */ +static bool +expand_set_cint32_one_inst (rtx dest_reg, + HOST_WIDE_INT val, bool three_wide_only) +{ + val = trunc_int_for_mode (val, SImode); + + if (val == trunc_int_for_mode (val, QImode)) + { + /* Success! */ + emit_move_insn (dest_reg, GEN_INT (val)); + return true; + } + else if (!three_wide_only) + { + rtx imm_op = GEN_INT (val); + + if (satisfies_constraint_J (imm_op) + || satisfies_constraint_K (imm_op) + || satisfies_constraint_N (imm_op) + || satisfies_constraint_P (imm_op)) + { + emit_move_insn (dest_reg, imm_op); + return true; + } + } + + return false; +} + + +/* Implement SImode rotatert. */ +static HOST_WIDE_INT +rotate_right (HOST_WIDE_INT n, int count) +{ + unsigned HOST_WIDE_INT x = n & 0xFFFFFFFF; + if (count == 0) + return x; + return ((x >> count) | (x << (32 - count))) & 0xFFFFFFFF; +} + + +/* Return true iff n contains exactly one contiguous sequence of 1 + bits, possibly wrapping around from high bits to low bits. */ +bool +tilepro_bitfield_operand_p (HOST_WIDE_INT n, int *first_bit, int *last_bit) +{ + int i; + + if (n == 0) + return false; + + for (i = 0; i < 32; 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))) & 31; + + return true; + } + } + + return false; +} + + +/* Create code to move the CONST_INT value in src_val to dest_reg. */ +static void +expand_set_cint32 (rtx dest_reg, rtx src_val) +{ + HOST_WIDE_INT val; + int leading_zeroes, trailing_zeroes; + int lower, upper; + int three_wide_only; + rtx temp; + + gcc_assert (CONST_INT_P (src_val)); + val = trunc_int_for_mode (INTVAL (src_val), SImode); + + /* See if we can generate the constant in one instruction. */ + if (expand_set_cint32_one_inst (dest_reg, val, false)) + return; + + /* Create a temporary variable to hold a partial result, to enable + CSE. */ + temp = create_temp_reg_if_possible (SImode, dest_reg); + + leading_zeroes = 31 - floor_log2 (val & 0xFFFFFFFF); + trailing_zeroes = exact_log2 (val & -val); + + lower = trunc_int_for_mode (val, HImode); + upper = trunc_int_for_mode ((val - lower) >> 16, HImode); + + /* 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_cint32_one_inst (temp, val >> trailing_zeroes, + three_wide_only)) + { + /* 0xFFFFA500 becomes: + movei temp, 0xFFFFFFA5 + shli dest, temp, 8 */ + emit_move_insn (dest_reg, + gen_rtx_ASHIFT (SImode, temp, + GEN_INT (trailing_zeroes))); + return; + } + + if (expand_set_cint32_one_inst (temp, val << leading_zeroes, + three_wide_only)) + { + /* 0x7FFFFFFF becomes: + movei temp, -2 + shri dest, temp, 1 */ + emit_move_insn (dest_reg, + gen_rtx_LSHIFTRT (SImode, temp, + GEN_INT (leading_zeroes))); + return; + } + + /* Try rotating a one-instruction immediate, since rotate is + 3-wide. */ + for (count = 1; count < 32; count++) + { + HOST_WIDE_INT r = rotate_right (val, count); + if (expand_set_cint32_one_inst (temp, r, three_wide_only)) + { + /* 0xFFA5FFFF becomes: + movei temp, 0xFFFFFFA5 + rli dest, temp, 16 */ + emit_move_insn (dest_reg, + gen_rtx_ROTATE (SImode, temp, GEN_INT (count))); + return; + } + } + + if (lower == trunc_int_for_mode (lower, QImode)) + { + /* We failed to use two 3-wide instructions, but the low 16 + bits are a small number so just use a 2-wide + 3-wide + auli + addi pair rather than anything more exotic. + + 0x12340056 becomes: + auli temp, zero, 0x1234 + addi dest, temp, 0x56 */ + break; + } + } + + /* Fallback case: use a auli + addli/addi pair. */ + emit_move_insn (temp, GEN_INT (upper << 16)); + emit_move_insn (dest_reg, (gen_rtx_PLUS (SImode, temp, GEN_INT (lower)))); +} + + +/* Load OP1, a 32-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 +tilepro_expand_set_const32 (rtx op0, rtx op1) +{ + enum machine_mode mode = GET_MODE (op0); + rtx temp; + + 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_cint32 (op0, op1); + } + else + { + temp = create_temp_reg_if_possible (mode, op0); + + /* A symbol, emit in the traditional way. */ + emit_move_insn (temp, gen_rtx_HIGH (mode, op1)); + emit_move_insn (op0, gen_rtx_LO_SUM (mode, temp, op1)); + } +} + + +/* Expand a move instruction. Return true if all work is done. */ +bool +tilepro_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]) && tilepro_tls_referenced_p (operands[1])) + { + operands[1] = tilepro_legitimize_tls_address (operands[1]); + return false; + } + + /* Fixup PIC cases. */ + if (flag_pic && CONSTANT_P (operands[1])) + { + if (tilepro_pic_address_needs_scratch (operands[1])) + operands[1] = tilepro_legitimize_pic_address (operands[1], mode, 0); + + if (symbolic_operand (operands[1], mode)) + { + operands[1] = tilepro_legitimize_pic_address (operands[1], + mode, + (reload_in_progress ? + operands[0] : + NULL_RTX)); + return false; + } + } + + /* Fixup for UNSPEC addresses. */ + if (flag_pic + && GET_CODE (operands[1]) == HIGH + && GET_CODE (XEXP (operands[1], 0)) == CONST + && GET_CODE (XEXP (XEXP (operands[1], 0), 0)) == UNSPEC) + { + rtx unspec = XEXP (XEXP (operands[1], 0), 0); + int unspec_num = XINT (unspec, 1); + if (unspec_num == UNSPEC_PCREL_SYM) + { + emit_insn (gen_auli_pcrel (operands[0], const0_rtx, + XVECEXP (unspec, 0, 0), + XVECEXP (unspec, 0, 1))); + return true; + } + else if (flag_pic == 2 && unspec_num == UNSPEC_GOT32_SYM) + { + emit_insn (gen_addhi_got32 (operands[0], const0_rtx, + XVECEXP (unspec, 0, 0))); + return true; + } + else if (HAVE_AS_TLS && unspec_num == UNSPEC_TLS_GD) + { + emit_insn (gen_tls_gd_addhi (operands[0], const0_rtx, + XVECEXP (unspec, 0, 0))); + return true; + } + else if (HAVE_AS_TLS && unspec_num == UNSPEC_TLS_IE) + { + emit_insn (gen_tls_ie_addhi (operands[0], const0_rtx, + XVECEXP (unspec, 0, 0))); + return true; + } + else if (HAVE_AS_TLS && unspec_num == UNSPEC_TLS_LE) + { + emit_insn (gen_tls_le_addhi (operands[0], const0_rtx, + XVECEXP (unspec, 0, 0))); + return true; + } + } + + /* Accept non-constants and valid constants unmodified. */ + if (!CONSTANT_P (operands[1]) + || GET_CODE (operands[1]) == HIGH || move_operand (operands[1], mode)) + return false; + + /* Split large integers. */ + if (GET_MODE_SIZE (mode) <= 4) + { + tilepro_expand_set_const32 (operands[0], operands[1]); + return true; + } + + return false; +} + + +/* Expand the "insv" pattern. */ +void +tilepro_expand_insv (rtx operands[4]) +{ + rtx first_rtx = operands[2]; + HOST_WIDE_INT first = INTVAL (first_rtx); + HOST_WIDE_INT width = INTVAL (operands[1]); + rtx v = operands[3]; + + /* Shift the inserted bits into position. */ + if (first != 0) + { + if (CONST_INT_P (v)) + { + /* Shift the constant into mm position. */ + v = gen_int_si (INTVAL (v) << first); + } + else + { + /* Shift over the value to be inserted. */ + rtx tmp = gen_reg_rtx (SImode); + emit_insn (gen_ashlsi3 (tmp, v, first_rtx)); + v = tmp; + } + } + + /* Insert the shifted bits using an 'mm' insn. */ + emit_insn (gen_insn_mm (operands[0], v, operands[0], first_rtx, + GEN_INT (first + width - 1))); +} + + +/* Expand unaligned loads. */ +void +tilepro_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); + + hi = gen_reg_rtx (mode); + + if (bitsize == 2 * BITS_PER_UNIT && (bit_offset % BITS_PER_UNIT) == 0) + { + rtx lo; + + /* 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); + + lo = gen_reg_rtx (mode); + emit_insn (gen_zero_extendqisi2 (lo, mem_lo)); + + if (sign) + { + rtx tmp = gen_reg_rtx (mode); + + /* Do a signed load of the second byte then shift and OR it + in. */ + emit_insn (gen_extendqisi2 (gen_lowpart (SImode, hi), mem_hi)); + emit_insn (gen_ashlsi3 (gen_lowpart (SImode, tmp), + gen_lowpart (SImode, hi), GEN_INT (8))); + emit_insn (gen_iorsi3 (gen_lowpart (SImode, dest_reg), + gen_lowpart (SImode, lo), + gen_lowpart (SImode, tmp))); + } + else + { + /* Do two unsigned loads and use intlb to interleave + them. */ + emit_insn (gen_zero_extendqisi2 (gen_lowpart (SImode, hi), mem_hi)); + emit_insn (gen_insn_intlb (gen_lowpart (SImode, dest_reg), + gen_lowpart (SImode, hi), + gen_lowpart (SImode, lo))); + } + + 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 (mema, byte_offset)); + mem_lo = change_address (mem, mode, + gen_rtx_AND (Pmode, addr_lo, GEN_INT (-4))); + 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 (mema, last_byte_offset)); + mem_hi = change_address (mem, mode, + gen_rtx_AND (Pmode, addr_hi, GEN_INT (-4))); + set_mem_alias_set (mem_hi, 0); + + if (bitsize == 32) + { + 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. */ + emit_move_insn (hi, mem_hi); + emit_move_insn (wide_result, mem_lo); + + emit_insn (gen_insn_dword_align (gen_lowpart (SImode, wide_result), + gen_lowpart (SImode, wide_result), + gen_lowpart (SImode, hi), addr_lo)); + + if (bitsize != 32) + { + rtx extracted = + extract_bit_field (gen_lowpart (SImode, wide_result), + bitsize, bit_offset % BITS_PER_UNIT, + !sign, false, gen_lowpart (SImode, dest_reg), + SImode, SImode); + + if (extracted != dest_reg) + emit_move_insn (dest_reg, gen_lowpart (SImode, extracted)); + } +} + + +/* Expand unaligned stores. */ +static void +tilepro_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_amt; + HOST_WIDE_INT i; + rtx mem_addr; + rtx store_val; + + for (i = 0, shift_amt = 0; i < bytesize; i++, shift_amt += BITS_PER_UNIT) + { + mem_addr = adjust_address (mem, QImode, byte_offset + i); + + if (shift_amt) + { + store_val = expand_simple_binop (SImode, LSHIFTRT, + gen_lowpart (SImode, 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 +tilepro_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); + + tilepro_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]); + + tilepro_expand_unaligned_store (operands[0], operands[1], + GET_MODE_BITSIZE (mode), 0); + } + else + gcc_unreachable (); +} + + +/* Implement the addsi3 pattern. */ +bool +tilepro_expand_addsi (rtx op0, rtx op1, rtx op2) +{ + rtx temp; + HOST_WIDE_INT n; + HOST_WIDE_INT high; + + /* Skip anything that only takes one instruction. */ + if (add_operand (op2, SImode)) + return false; + + /* We can only optimize ints here (it should be impossible to get + here with any other type, but it is harmless to check. */ + if (!CONST_INT_P (op2)) + return false; + + temp = create_temp_reg_if_possible (SImode, op0); + n = INTVAL (op2); + high = (n + (n & 0x8000)) & ~0xffff; + + emit_move_insn (temp, gen_rtx_PLUS (SImode, op1, gen_int_si (high))); + emit_move_insn (op0, gen_rtx_PLUS (SImode, temp, gen_int_si (n - high))); + + return true; +} + + +/* Implement the allocate_stack pattern (alloca). */ +void +tilepro_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 +tilepro_multiply_get_opcode (const struct tilepro_multiply_insn_seq_entry + *entry) +{ + return tilepro_multiply_insn_seq_decode_opcode[entry->compressed_opcode]; +} + + +/* Returns the length of the 'op' array. */ +static int +tilepro_multiply_get_num_ops (const struct tilepro_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 = tilepro_multiply_insn_seq_MAX_OPERATIONS - 1; i >= 0; i--) + if (tilepro_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 +tilepro_expand_constant_multiply_given_sequence (rtx result, rtx src, + const struct + tilepro_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[tilepro_multiply_insn_seq_MAX_OPERATIONS + 2]; + subexprs[0] = const0_rtx; + subexprs[1] = src; + + /* Determine how many instructions we are going to generate. */ + num_ops = tilepro_multiply_get_num_ops (seq); + gcc_assert (num_ops > 0 + && num_ops <= tilepro_multiply_insn_seq_MAX_OPERATIONS); + + for (i = 0; i < num_ops; i++) + { + const struct tilepro_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 (SImode); + + enum insn_code opcode = tilepro_multiply_get_opcode (entry); + if (opcode == CODE_FOR_ashlsi3) + { + /* 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 < 32); + + /* Emit the actual instruction. */ + emit_insn (GEN_FCN (opcode) + (out, subexprs[entry->lhs], + gen_rtx_CONST_INT (SImode, shift_count))); + } + else + { + /* Handle a normal two-operand instruction, such as add or + s1a. */ + + /* 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 +tilepro_compare_multipliers (const void *key, const void *t) +{ + return *(const int *) key - + ((const struct tilepro_multiply_insn_seq *) t)->multiplier; +} + + +/* Returns the tilepro_multiply_insn_seq for multiplier, or NULL if + none exists. */ +static const struct tilepro_multiply_insn_seq * +tilepro_find_multiply_insn_seq_for_constant (int multiplier) +{ + return ((const struct tilepro_multiply_insn_seq *) + bsearch (&multiplier, tilepro_multiply_insn_seq_table, + tilepro_multiply_insn_seq_table_size, + sizeof tilepro_multiply_insn_seq_table[0], + tilepro_compare_multipliers)); +} + + +/* Try to a expand constant multiply in SImode 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 +tilepro_expand_const_mulsi (rtx op0, rtx op1, int multiplier) +{ + /* See if we have precomputed an efficient way to multiply by this + constant. */ + const struct tilepro_multiply_insn_seq *seq = + tilepro_find_multiply_insn_seq_for_constant (multiplier); + if (seq != NULL) + { + tilepro_expand_constant_multiply_given_sequence (op0, op1, seq); + return true; + } + else + return false; +} + + +/* Expand the mulsi pattern. */ +bool +tilepro_expand_mulsi (rtx op0, rtx op1, rtx op2) +{ + if (CONST_INT_P (op2)) + { + HOST_WIDE_INT n = trunc_int_for_mode (INTVAL (op2), SImode); + return tilepro_expand_const_mulsi (op0, op1, n); + } + return false; +} + + +/* Expand a high multiply pattern in SImode. 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 +tilepro_expand_high_multiply (rtx result, rtx op1, rtx op2, bool sign) +{ + rtx tmp0 = gen_reg_rtx (SImode); + rtx tmp1 = gen_reg_rtx (SImode); + rtx tmp2 = gen_reg_rtx (SImode); + rtx tmp3 = gen_reg_rtx (SImode); + rtx tmp4 = gen_reg_rtx (SImode); + rtx tmp5 = gen_reg_rtx (SImode); + rtx tmp6 = gen_reg_rtx (SImode); + rtx tmp7 = gen_reg_rtx (SImode); + rtx tmp8 = gen_reg_rtx (SImode); + rtx tmp9 = gen_reg_rtx (SImode); + rtx tmp10 = gen_reg_rtx (SImode); + rtx tmp11 = gen_reg_rtx (SImode); + rtx tmp12 = gen_reg_rtx (SImode); + rtx tmp13 = gen_reg_rtx (SImode); + rtx result_lo = gen_reg_rtx (SImode); + + if (sign) + { + emit_insn (gen_insn_mulhl_su (tmp0, op1, op2)); + emit_insn (gen_insn_mulhl_su (tmp1, op2, op1)); + emit_insn (gen_insn_mulll_uu (tmp2, op1, op2)); + emit_insn (gen_insn_mulhh_ss (tmp3, op1, op2)); + } + else + { + emit_insn (gen_insn_mulhl_uu (tmp0, op1, op2)); + emit_insn (gen_insn_mulhl_uu (tmp1, op2, op1)); + emit_insn (gen_insn_mulll_uu (tmp2, op1, op2)); + emit_insn (gen_insn_mulhh_uu (tmp3, op1, op2)); + } + + emit_move_insn (tmp4, (gen_rtx_ASHIFT (SImode, tmp0, GEN_INT (16)))); + + emit_move_insn (tmp5, (gen_rtx_ASHIFT (SImode, tmp1, GEN_INT (16)))); + + emit_move_insn (tmp6, (gen_rtx_PLUS (SImode, tmp4, tmp5))); + emit_move_insn (result_lo, (gen_rtx_PLUS (SImode, tmp2, tmp6))); + + emit_move_insn (tmp7, gen_rtx_LTU (SImode, tmp6, tmp4)); + emit_move_insn (tmp8, gen_rtx_LTU (SImode, result_lo, tmp2)); + + if (sign) + { + emit_move_insn (tmp9, (gen_rtx_ASHIFTRT (SImode, tmp0, GEN_INT (16)))); + emit_move_insn (tmp10, (gen_rtx_ASHIFTRT (SImode, tmp1, GEN_INT (16)))); + } + else + { + emit_move_insn (tmp9, (gen_rtx_LSHIFTRT (SImode, tmp0, GEN_INT (16)))); + emit_move_insn (tmp10, (gen_rtx_LSHIFTRT (SImode, tmp1, GEN_INT (16)))); + } + + emit_move_insn (tmp11, (gen_rtx_PLUS (SImode, tmp3, tmp7))); + emit_move_insn (tmp12, (gen_rtx_PLUS (SImode, tmp8, tmp9))); + emit_move_insn (tmp13, (gen_rtx_PLUS (SImode, tmp11, tmp12))); + emit_move_insn (result, (gen_rtx_PLUS (SImode, tmp13, tmp10))); +} + + +/* Implement smulsi3_highpart. */ +void +tilepro_expand_smulsi3_highpart (rtx op0, rtx op1, rtx op2) +{ + tilepro_expand_high_multiply (op0, op1, op2, true); +} + + +/* Implement umulsi3_highpart. */ +void +tilepro_expand_umulsi3_highpart (rtx op0, rtx op1, rtx op2) +{ + tilepro_expand_high_multiply (op0, op1, op2, false); +} + + + +/* Compare and branches */ + +/* Helper function to handle DImode for tilepro_emit_setcc_internal. */ +static bool +tilepro_emit_setcc_internal_di (rtx res, enum rtx_code code, rtx op0, rtx op1) +{ + rtx operands[2], lo_half[2], hi_half[2]; + rtx tmp, tmp0, tmp1, tmp2; + bool swap = false; + + /* Reduce the number of cases we need to handle by reversing the + operands. */ + switch (code) + { + case EQ: + case NE: + case LE: + case LT: + case LEU: + case LTU: + /* We handle these compares directly. */ + break; + + case GE: + case GT: + case GEU: + case GTU: + /* 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; + } + + operands[0] = op0; + operands[1] = op1; + + split_di (operands, 2, lo_half, hi_half); + + if (!reg_or_0_operand (lo_half[0], SImode)) + lo_half[0] = force_reg (SImode, lo_half[0]); + + if (!reg_or_0_operand (hi_half[0], SImode)) + hi_half[0] = force_reg (SImode, hi_half[0]); + + if (!CONST_INT_P (lo_half[1]) && !register_operand (lo_half[1], SImode)) + lo_half[1] = force_reg (SImode, lo_half[1]); + + if (!CONST_INT_P (hi_half[1]) && !register_operand (hi_half[1], SImode)) + hi_half[1] = force_reg (SImode, hi_half[1]); + + tmp0 = gen_reg_rtx (SImode); + tmp1 = gen_reg_rtx (SImode); + tmp2 = gen_reg_rtx (SImode); + + switch (code) + { + case EQ: + emit_insn (gen_insn_seq (tmp0, lo_half[0], lo_half[1])); + emit_insn (gen_insn_seq (tmp1, hi_half[0], hi_half[1])); + emit_insn (gen_andsi3 (res, tmp0, tmp1)); + return true; + break; + case NE: + emit_insn (gen_insn_sne (tmp0, lo_half[0], lo_half[1])); + emit_insn (gen_insn_sne (tmp1, hi_half[0], hi_half[1])); + emit_insn (gen_iorsi3 (res, tmp0, tmp1)); + return true; + break; + case LE: + emit_insn (gen_insn_slte (tmp0, hi_half[0], hi_half[1])); + emit_insn (gen_insn_seq (tmp1, hi_half[0], hi_half[1])); + emit_insn (gen_insn_slte_u (tmp2, lo_half[0], lo_half[1])); + emit_insn (gen_insn_mvnz (res, tmp0, tmp1, tmp2)); + return true; + case LT: + if (operands[1] == const0_rtx) + { + emit_insn (gen_lshrsi3 (res, hi_half[0], GEN_INT (31))); + return true; + } + else + { + emit_insn (gen_insn_slt (tmp0, hi_half[0], hi_half[1])); + emit_insn (gen_insn_seq (tmp1, hi_half[0], hi_half[1])); + emit_insn (gen_insn_slt_u (tmp2, lo_half[0], lo_half[1])); + emit_insn (gen_insn_mvnz (res, tmp0, tmp1, tmp2)); + } + return true; + case LEU: + emit_insn (gen_insn_slte_u (tmp0, hi_half[0], hi_half[1])); + emit_insn (gen_insn_seq (tmp1, hi_half[0], hi_half[1])); + emit_insn (gen_insn_slte_u (tmp2, lo_half[0], lo_half[1])); + emit_insn (gen_insn_mvnz (res, tmp0, tmp1, tmp2)); + return true; + case LTU: + emit_insn (gen_insn_slt_u (tmp0, hi_half[0], hi_half[1])); + emit_insn (gen_insn_seq (tmp1, hi_half[0], hi_half[1])); + emit_insn (gen_insn_slt_u (tmp2, lo_half[0], lo_half[1])); + emit_insn (gen_insn_mvnz (res, tmp0, tmp1, tmp2)); + return true; + default: + gcc_unreachable (); + } + + return false; +} + + +/* Certain simplifications can be done to make invalid setcc + operations valid. Return the final comparison, or NULL if we can't + work. */ +static bool +tilepro_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 == DImode) + { + return tilepro_emit_setcc_internal_di (res, code, 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, SImode)) + op0 = force_reg (SImode, op0); + + if (!CONST_INT_P (op1) && !register_operand (op1, SImode)) + op1 = force_reg (SImode, op1); + + /* Return the setcc comparison. */ + emit_insn (gen_rtx_SET (VOIDmode, res, + gen_rtx_fmt_ee (code, SImode, op0, op1))); + + return true; +} + + +/* Implement cstore patterns. */ +bool +tilepro_emit_setcc (rtx operands[], enum machine_mode cmp_mode) +{ + return + tilepro_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 an SImode conditional branch. */ +static rtx +tilepro_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; + + /* Check for a compare against zero using a comparison we can do + directly. */ + if (cmp_mode != DImode + && op1 == const0_rtx + && (code == EQ || code == NE + || (!eq_ne_only && signed_compare_p (code)))) + { + op0 = force_reg (SImode, 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 (cmp_mode != DImode + && CONST_INT_P (op1) && (!satisfies_constraint_I (op1) || code == LEU)) + { + HOST_WIDE_INT n = trunc_int_for_mode (INTVAL (op1), SImode); + + 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 (!(symbolic_operand (op0, VOIDmode) + || (REG_P (op0) && REG_POINTER (op0)))) + { + /* To compare against MIN_INT, we add MIN_INT and check + for 0. */ + HOST_WIDE_INT add; + if (n != -2147483647 - 1) + add = -n; + else + add = n; + + op0 = force_reg (SImode, op0); + temp = gen_reg_rtx (SImode); + emit_insn (gen_addsi3 (temp, op0, gen_int_si (add))); + 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 !((unsigned)x >> 12), + etc. */ + { + int first = exact_log2 (code == LTU ? n : n + 1); + if (first != -1) + { + op0 = force_reg (SImode, op0); + temp = gen_reg_rtx (SImode); + emit_move_insn (temp, + gen_rtx_LSHIFTRT (SImode, op0, + gen_int_si (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 (SImode); + tilepro_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 +tilepro_emit_conditional_branch (rtx operands[], enum machine_mode cmp_mode) +{ + rtx cmp_rtx = + tilepro_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 movsicc pattern. */ +rtx +tilepro_emit_conditional_move (rtx cmp) +{ + return + tilepro_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 = INTVAL (XEXP (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 * +tilepro_output_simple_cbranch_with_opcode (rtx insn, const char *opcode, + int regop, bool netreg_p, + bool reverse_predicted) +{ + static char buf[64]; + sprintf (buf, "%s%s\t%%%c%d, %%l0", opcode, + (cbranch_predicted_p (insn) ^ reverse_predicted) ? "t" : "", + netreg_p ? 'N' : 'r', regop); + return buf; +} + + +/* Output assembly code for a specific branch instruction, appending + the branch prediction flag to the opcode if appropriate. */ +const char * +tilepro_output_cbranch_with_opcode (rtx insn, rtx *operands, + const char *opcode, + const char *rev_opcode, + int regop, bool netreg_p) +{ + 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 + tilepro_output_simple_cbranch_with_opcode (insn, opcode, regop, + netreg_p, 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 = + tilepro_output_simple_cbranch_with_opcode (insn, rev_opcode, regop, + netreg_p, 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 * +tilepro_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 = "bnz"; + rev_opcode = "bz"; + break; + case EQ: + opcode = "bz"; + rev_opcode = "bnz"; + break; + case GE: + opcode = "bgez"; + rev_opcode = "blz"; + break; + case GT: + opcode = "bgz"; + rev_opcode = "blez"; + break; + case LE: + opcode = "blez"; + rev_opcode = "bgz"; + break; + case LT: + opcode = "blz"; + rev_opcode = "bgez"; + break; + default: + gcc_unreachable (); + } + + return + tilepro_output_cbranch_with_opcode (insn, operands, opcode, rev_opcode, + 2, false); +} + + +/* Implement the tablejump pattern. */ +void +tilepro_expand_tablejump (rtx op0, rtx op1) +{ + if (flag_pic) + { + rtx table = gen_rtx_LABEL_REF (Pmode, op1); + rtx temp = gen_reg_rtx (Pmode); + rtx text_label_symbol = tilepro_text_label_symbol (); + rtx text_label_rtx = tilepro_text_label_rtx (); + + emit_insn (gen_addli_pcrel (temp, text_label_rtx, + table, text_label_symbol)); + emit_insn (gen_auli_pcrel (temp, temp, table, text_label_symbol)); + emit_move_insn (temp, + gen_rtx_PLUS (Pmode, + convert_to_mode (Pmode, op0, false), + temp)); + op0 = temp; + } + + emit_jump_insn (gen_tablejump_aux (op0, op1)); +} + + +/* 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 +tilepro_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 tilepro_builtin_info[TILEPRO_BUILTIN_max] = { + { CODE_FOR_addsi3, NULL }, /* add */ + { CODE_FOR_insn_addb, NULL }, /* addb */ + { CODE_FOR_insn_addbs_u, NULL }, /* addbs_u */ + { CODE_FOR_insn_addh, NULL }, /* addh */ + { CODE_FOR_insn_addhs, NULL }, /* addhs */ + { CODE_FOR_insn_addib, NULL }, /* addib */ + { CODE_FOR_insn_addih, NULL }, /* addih */ + { CODE_FOR_insn_addlis, NULL }, /* addlis */ + { CODE_FOR_ssaddsi3, NULL }, /* adds */ + { CODE_FOR_insn_adiffb_u, NULL }, /* adiffb_u */ + { CODE_FOR_insn_adiffh, NULL }, /* adiffh */ + { CODE_FOR_andsi3, NULL }, /* and */ + { CODE_FOR_insn_auli, NULL }, /* auli */ + { CODE_FOR_insn_avgb_u, NULL }, /* avgb_u */ + { CODE_FOR_insn_avgh, NULL }, /* avgh */ + { CODE_FOR_insn_bitx, NULL }, /* bitx */ + { CODE_FOR_bswapsi2, NULL }, /* bytex */ + { CODE_FOR_clzsi2, NULL }, /* clz */ + { CODE_FOR_insn_crc32_32, NULL }, /* crc32_32 */ + { CODE_FOR_insn_crc32_8, NULL }, /* crc32_8 */ + { CODE_FOR_ctzsi2, NULL }, /* ctz */ + { CODE_FOR_insn_drain, NULL }, /* drain */ + { CODE_FOR_insn_dtlbpr, NULL }, /* dtlbpr */ + { CODE_FOR_insn_dword_align, NULL }, /* dword_align */ + { CODE_FOR_insn_finv, NULL }, /* finv */ + { CODE_FOR_insn_flush, NULL }, /* flush */ + { CODE_FOR_insn_fnop, NULL }, /* fnop */ + { 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_inthb, NULL }, /* inthb */ + { CODE_FOR_insn_inthh, NULL }, /* inthh */ + { CODE_FOR_insn_intlb, NULL }, /* intlb */ + { CODE_FOR_insn_intlh, NULL }, /* intlh */ + { CODE_FOR_insn_inv, NULL }, /* inv */ + { CODE_FOR_insn_lb, NULL }, /* lb */ + { CODE_FOR_insn_lb_u, NULL }, /* lb_u */ + { CODE_FOR_insn_lh, NULL }, /* lh */ + { CODE_FOR_insn_lh_u, NULL }, /* lh_u */ + { CODE_FOR_insn_lnk, NULL }, /* lnk */ + { CODE_FOR_insn_lw, NULL }, /* lw */ + { CODE_FOR_insn_lw_na, NULL }, /* lw_na */ + { CODE_FOR_insn_lb_L2, NULL }, /* lb_L2 */ + { CODE_FOR_insn_lb_u_L2, NULL }, /* lb_u_L2 */ + { CODE_FOR_insn_lh_L2, NULL }, /* lh_L2 */ + { CODE_FOR_insn_lh_u_L2, NULL }, /* lh_u_L2 */ + { CODE_FOR_insn_lw_L2, NULL }, /* lw_L2 */ + { CODE_FOR_insn_lw_na_L2, NULL }, /* lw_na_L2 */ + { CODE_FOR_insn_lb_miss, NULL }, /* lb_miss */ + { CODE_FOR_insn_lb_u_miss, NULL }, /* lb_u_miss */ + { CODE_FOR_insn_lh_miss, NULL }, /* lh_miss */ + { CODE_FOR_insn_lh_u_miss, NULL }, /* lh_u_miss */ + { CODE_FOR_insn_lw_miss, NULL }, /* lw_miss */ + { CODE_FOR_insn_lw_na_miss, NULL }, /* lw_na_miss */ + { CODE_FOR_insn_maxb_u, NULL }, /* maxb_u */ + { CODE_FOR_insn_maxh, NULL }, /* maxh */ + { CODE_FOR_insn_maxib_u, NULL }, /* maxib_u */ + { CODE_FOR_insn_maxih, NULL }, /* maxih */ + { CODE_FOR_memory_barrier, NULL }, /* mf */ + { CODE_FOR_insn_mfspr, NULL }, /* mfspr */ + { CODE_FOR_insn_minb_u, NULL }, /* minb_u */ + { CODE_FOR_insn_minh, NULL }, /* minh */ + { CODE_FOR_insn_minib_u, NULL }, /* minib_u */ + { CODE_FOR_insn_minih, NULL }, /* minih */ + { CODE_FOR_insn_mm, NULL }, /* mm */ + { CODE_FOR_insn_mnz, NULL }, /* mnz */ + { CODE_FOR_insn_mnzb, NULL }, /* mnzb */ + { CODE_FOR_insn_mnzh, NULL }, /* mnzh */ + { CODE_FOR_movsi, NULL }, /* move */ + { CODE_FOR_insn_movelis, NULL }, /* movelis */ + { CODE_FOR_insn_mtspr, NULL }, /* mtspr */ + { CODE_FOR_insn_mulhh_ss, NULL }, /* mulhh_ss */ + { CODE_FOR_insn_mulhh_su, NULL }, /* mulhh_su */ + { CODE_FOR_insn_mulhh_uu, NULL }, /* mulhh_uu */ + { CODE_FOR_insn_mulhha_ss, NULL }, /* mulhha_ss */ + { CODE_FOR_insn_mulhha_su, NULL }, /* mulhha_su */ + { CODE_FOR_insn_mulhha_uu, NULL }, /* mulhha_uu */ + { CODE_FOR_insn_mulhhsa_uu, NULL }, /* mulhhsa_uu */ + { CODE_FOR_insn_mulhl_ss, NULL }, /* mulhl_ss */ + { CODE_FOR_insn_mulhl_su, NULL }, /* mulhl_su */ + { CODE_FOR_insn_mulhl_us, NULL }, /* mulhl_us */ + { CODE_FOR_insn_mulhl_uu, NULL }, /* mulhl_uu */ + { CODE_FOR_insn_mulhla_ss, NULL }, /* mulhla_ss */ + { CODE_FOR_insn_mulhla_su, NULL }, /* mulhla_su */ + { CODE_FOR_insn_mulhla_us, NULL }, /* mulhla_us */ + { CODE_FOR_insn_mulhla_uu, NULL }, /* mulhla_uu */ + { CODE_FOR_insn_mulhlsa_uu, NULL }, /* mulhlsa_uu */ + { CODE_FOR_insn_mulll_ss, NULL }, /* mulll_ss */ + { CODE_FOR_insn_mulll_su, NULL }, /* mulll_su */ + { CODE_FOR_insn_mulll_uu, NULL }, /* mulll_uu */ + { CODE_FOR_insn_mullla_ss, NULL }, /* mullla_ss */ + { CODE_FOR_insn_mullla_su, NULL }, /* mullla_su */ + { CODE_FOR_insn_mullla_uu, NULL }, /* mullla_uu */ + { CODE_FOR_insn_mulllsa_uu, NULL }, /* mulllsa_uu */ + { CODE_FOR_insn_mvnz, NULL }, /* mvnz */ + { CODE_FOR_insn_mvz, NULL }, /* mvz */ + { CODE_FOR_insn_mz, NULL }, /* mz */ + { CODE_FOR_insn_mzb, NULL }, /* mzb */ + { CODE_FOR_insn_mzh, NULL }, /* mzh */ + { CODE_FOR_insn_nap, NULL }, /* nap */ + { CODE_FOR_nop, NULL }, /* nop */ + { CODE_FOR_insn_nor, NULL }, /* nor */ + { CODE_FOR_iorsi3, NULL }, /* or */ + { CODE_FOR_insn_packbs_u, NULL }, /* packbs_u */ + { CODE_FOR_insn_packhb, NULL }, /* packhb */ + { CODE_FOR_insn_packhs, NULL }, /* packhs */ + { CODE_FOR_insn_packlb, NULL }, /* packlb */ + { CODE_FOR_popcountsi2, NULL }, /* pcnt */ + { CODE_FOR_insn_prefetch, NULL }, /* prefetch */ + { CODE_FOR_insn_prefetch_L1, NULL }, /* prefetch_L1 */ + { CODE_FOR_rotlsi3, NULL }, /* rl */ + { CODE_FOR_insn_s1a, NULL }, /* s1a */ + { CODE_FOR_insn_s2a, NULL }, /* s2a */ + { CODE_FOR_insn_s3a, NULL }, /* s3a */ + { CODE_FOR_insn_sadab_u, NULL }, /* sadab_u */ + { CODE_FOR_insn_sadah, NULL }, /* sadah */ + { CODE_FOR_insn_sadah_u, NULL }, /* sadah_u */ + { CODE_FOR_insn_sadb_u, NULL }, /* sadb_u */ + { CODE_FOR_insn_sadh, NULL }, /* sadh */ + { CODE_FOR_insn_sadh_u, NULL }, /* sadh_u */ + { CODE_FOR_insn_sb, NULL }, /* sb */ + { CODE_FOR_insn_seq, NULL }, /* seq */ + { CODE_FOR_insn_seqb, NULL }, /* seqb */ + { CODE_FOR_insn_seqh, NULL }, /* seqh */ + { CODE_FOR_insn_seqib, NULL }, /* seqib */ + { CODE_FOR_insn_seqih, NULL }, /* seqih */ + { CODE_FOR_insn_sh, NULL }, /* sh */ + { CODE_FOR_ashlsi3, NULL }, /* shl */ + { CODE_FOR_insn_shlb, NULL }, /* shlb */ + { CODE_FOR_insn_shlh, NULL }, /* shlh */ + { CODE_FOR_insn_shlb, NULL }, /* shlib */ + { CODE_FOR_insn_shlh, NULL }, /* shlih */ + { CODE_FOR_lshrsi3, NULL }, /* shr */ + { CODE_FOR_insn_shrb, NULL }, /* shrb */ + { CODE_FOR_insn_shrh, NULL }, /* shrh */ + { CODE_FOR_insn_shrb, NULL }, /* shrib */ + { CODE_FOR_insn_shrh, NULL }, /* shrih */ + { CODE_FOR_insn_slt, NULL }, /* slt */ + { CODE_FOR_insn_slt_u, NULL }, /* slt_u */ + { CODE_FOR_insn_sltb, NULL }, /* sltb */ + { CODE_FOR_insn_sltb_u, NULL }, /* sltb_u */ + { CODE_FOR_insn_slte, NULL }, /* slte */ + { CODE_FOR_insn_slte_u, NULL }, /* slte_u */ + { CODE_FOR_insn_slteb, NULL }, /* slteb */ + { CODE_FOR_insn_slteb_u, NULL }, /* slteb_u */ + { CODE_FOR_insn_slteh, NULL }, /* slteh */ + { CODE_FOR_insn_slteh_u, NULL }, /* slteh_u */ + { CODE_FOR_insn_slth, NULL }, /* slth */ + { CODE_FOR_insn_slth_u, NULL }, /* slth_u */ + { CODE_FOR_insn_sltib, NULL }, /* sltib */ + { CODE_FOR_insn_sltib_u, NULL }, /* sltib_u */ + { CODE_FOR_insn_sltih, NULL }, /* sltih */ + { CODE_FOR_insn_sltih_u, NULL }, /* sltih_u */ + { CODE_FOR_insn_sne, NULL }, /* sne */ + { CODE_FOR_insn_sneb, NULL }, /* sneb */ + { CODE_FOR_insn_sneh, NULL }, /* sneh */ + { CODE_FOR_ashrsi3, NULL }, /* sra */ + { CODE_FOR_insn_srab, NULL }, /* srab */ + { CODE_FOR_insn_srah, NULL }, /* srah */ + { CODE_FOR_insn_srab, NULL }, /* sraib */ + { CODE_FOR_insn_srah, NULL }, /* sraih */ + { CODE_FOR_subsi3, NULL }, /* sub */ + { CODE_FOR_insn_subb, NULL }, /* subb */ + { CODE_FOR_insn_subbs_u, NULL }, /* subbs_u */ + { CODE_FOR_insn_subh, NULL }, /* subh */ + { CODE_FOR_insn_subhs, NULL }, /* subhs */ + { CODE_FOR_sssubsi3, NULL }, /* subs */ + { CODE_FOR_insn_sw, NULL }, /* sw */ + { 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_tns, NULL }, /* tns */ + { CODE_FOR_insn_wh64, NULL }, /* wh64 */ + { CODE_FOR_xorsi3, NULL }, /* xor */ + { CODE_FOR_tilepro_network_barrier, NULL }, /* network_barrier */ + { CODE_FOR_tilepro_idn0_receive, NULL }, /* idn0_receive */ + { CODE_FOR_tilepro_idn1_receive, NULL }, /* idn1_receive */ + { CODE_FOR_tilepro_idn_send, NULL }, /* idn_send */ + { CODE_FOR_tilepro_sn_receive, NULL }, /* sn_receive */ + { CODE_FOR_tilepro_sn_send, NULL }, /* sn_send */ + { CODE_FOR_tilepro_udn0_receive, NULL }, /* udn0_receive */ + { CODE_FOR_tilepro_udn1_receive, NULL }, /* udn1_receive */ + { CODE_FOR_tilepro_udn2_receive, NULL }, /* udn2_receive */ + { CODE_FOR_tilepro_udn3_receive, NULL }, /* udn3_receive */ + { CODE_FOR_tilepro_udn_send, NULL }, /* udn_send */ +}; + + +struct tilepro_builtin_def +{ + const char *name; + enum tilepro_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 tilepro_builtin_def tilepro_builtins[] = { + { "__insn_add", TILEPRO_INSN_ADD, true, "lll" }, + { "__insn_addb", TILEPRO_INSN_ADDB, true, "lll" }, + { "__insn_addbs_u", TILEPRO_INSN_ADDBS_U, false, "lll" }, + { "__insn_addh", TILEPRO_INSN_ADDH, true, "lll" }, + { "__insn_addhs", TILEPRO_INSN_ADDHS, false, "lll" }, + { "__insn_addi", TILEPRO_INSN_ADD, true, "lll" }, + { "__insn_addib", TILEPRO_INSN_ADDIB, true, "lll" }, + { "__insn_addih", TILEPRO_INSN_ADDIH, true, "lll" }, + { "__insn_addli", TILEPRO_INSN_ADD, true, "lll" }, + { "__insn_addlis", TILEPRO_INSN_ADDLIS, false, "lll" }, + { "__insn_adds", TILEPRO_INSN_ADDS, false, "lll" }, + { "__insn_adiffb_u", TILEPRO_INSN_ADIFFB_U, true, "lll" }, + { "__insn_adiffh", TILEPRO_INSN_ADIFFH, true, "lll" }, + { "__insn_and", TILEPRO_INSN_AND, true, "lll" }, + { "__insn_andi", TILEPRO_INSN_AND, true, "lll" }, + { "__insn_auli", TILEPRO_INSN_AULI, true, "lll" }, + { "__insn_avgb_u", TILEPRO_INSN_AVGB_U, true, "lll" }, + { "__insn_avgh", TILEPRO_INSN_AVGH, true, "lll" }, + { "__insn_bitx", TILEPRO_INSN_BITX, true, "ll" }, + { "__insn_bytex", TILEPRO_INSN_BYTEX, true, "ll" }, + { "__insn_clz", TILEPRO_INSN_CLZ, true, "ll" }, + { "__insn_crc32_32", TILEPRO_INSN_CRC32_32, true, "lll" }, + { "__insn_crc32_8", TILEPRO_INSN_CRC32_8, true, "lll" }, + { "__insn_ctz", TILEPRO_INSN_CTZ, true, "ll" }, + { "__insn_drain", TILEPRO_INSN_DRAIN, false, "v" }, + { "__insn_dtlbpr", TILEPRO_INSN_DTLBPR, false, "vl" }, + { "__insn_dword_align", TILEPRO_INSN_DWORD_ALIGN, true, "lllk" }, + { "__insn_finv", TILEPRO_INSN_FINV, false, "vk" }, + { "__insn_flush", TILEPRO_INSN_FLUSH, false, "vk" }, + { "__insn_fnop", TILEPRO_INSN_FNOP, false, "v" }, + { "__insn_icoh", TILEPRO_INSN_ICOH, false, "vk" }, + { "__insn_ill", TILEPRO_INSN_ILL, false, "v" }, + { "__insn_info", TILEPRO_INSN_INFO, false, "vl" }, + { "__insn_infol", TILEPRO_INSN_INFOL, false, "vl" }, + { "__insn_inthb", TILEPRO_INSN_INTHB, true, "lll" }, + { "__insn_inthh", TILEPRO_INSN_INTHH, true, "lll" }, + { "__insn_intlb", TILEPRO_INSN_INTLB, true, "lll" }, + { "__insn_intlh", TILEPRO_INSN_INTLH, true, "lll" }, + { "__insn_inv", TILEPRO_INSN_INV, false, "vp" }, + { "__insn_lb", TILEPRO_INSN_LB, false, "lk" }, + { "__insn_lb_u", TILEPRO_INSN_LB_U, false, "lk" }, + { "__insn_lh", TILEPRO_INSN_LH, false, "lk" }, + { "__insn_lh_u", TILEPRO_INSN_LH_U, false, "lk" }, + { "__insn_lnk", TILEPRO_INSN_LNK, true, "l" }, + { "__insn_lw", TILEPRO_INSN_LW, false, "lk" }, + { "__insn_lw_na", TILEPRO_INSN_LW_NA, false, "lk" }, + { "__insn_lb_L2", TILEPRO_INSN_LB_L2, false, "lk" }, + { "__insn_lb_u_L2", TILEPRO_INSN_LB_U_L2, false, "lk" }, + { "__insn_lh_L2", TILEPRO_INSN_LH_L2, false, "lk" }, + { "__insn_lh_u_L2", TILEPRO_INSN_LH_U_L2, false, "lk" }, + { "__insn_lw_L2", TILEPRO_INSN_LW_L2, false, "lk" }, + { "__insn_lw_na_L2", TILEPRO_INSN_LW_NA_L2, false, "lk" }, + { "__insn_lb_miss", TILEPRO_INSN_LB_MISS, false, "lk" }, + { "__insn_lb_u_miss", TILEPRO_INSN_LB_U_MISS, false, "lk" }, + { "__insn_lh_miss", TILEPRO_INSN_LH_MISS, false, "lk" }, + { "__insn_lh_u_miss", TILEPRO_INSN_LH_U_MISS, false, "lk" }, + { "__insn_lw_miss", TILEPRO_INSN_LW_MISS, false, "lk" }, + { "__insn_lw_na_miss", TILEPRO_INSN_LW_NA_MISS, false, "lk" }, + { "__insn_maxb_u", TILEPRO_INSN_MAXB_U, true, "lll" }, + { "__insn_maxh", TILEPRO_INSN_MAXH, true, "lll" }, + { "__insn_maxib_u", TILEPRO_INSN_MAXIB_U, true, "lll" }, + { "__insn_maxih", TILEPRO_INSN_MAXIH, true, "lll" }, + { "__insn_mf", TILEPRO_INSN_MF, false, "v" }, + { "__insn_mfspr", TILEPRO_INSN_MFSPR, false, "ll" }, + { "__insn_minb_u", TILEPRO_INSN_MINB_U, true, "lll" }, + { "__insn_minh", TILEPRO_INSN_MINH, true, "lll" }, + { "__insn_minib_u", TILEPRO_INSN_MINIB_U, true, "lll" }, + { "__insn_minih", TILEPRO_INSN_MINIH, true, "lll" }, + { "__insn_mm", TILEPRO_INSN_MM, true, "lllll" }, + { "__insn_mnz", TILEPRO_INSN_MNZ, true, "lll" }, + { "__insn_mnzb", TILEPRO_INSN_MNZB, true, "lll" }, + { "__insn_mnzh", TILEPRO_INSN_MNZH, true, "lll" }, + { "__insn_move", TILEPRO_INSN_MOVE, true, "ll" }, + { "__insn_movei", TILEPRO_INSN_MOVE, true, "ll" }, + { "__insn_moveli", TILEPRO_INSN_MOVE, true, "ll" }, + { "__insn_movelis", TILEPRO_INSN_MOVELIS, false, "ll" }, + { "__insn_mtspr", TILEPRO_INSN_MTSPR, false, "vll" }, + { "__insn_mulhh_ss", TILEPRO_INSN_MULHH_SS, true, "lll" }, + { "__insn_mulhh_su", TILEPRO_INSN_MULHH_SU, true, "lll" }, + { "__insn_mulhh_uu", TILEPRO_INSN_MULHH_UU, true, "lll" }, + { "__insn_mulhha_ss", TILEPRO_INSN_MULHHA_SS, true, "llll" }, + { "__insn_mulhha_su", TILEPRO_INSN_MULHHA_SU, true, "llll" }, + { "__insn_mulhha_uu", TILEPRO_INSN_MULHHA_UU, true, "llll" }, + { "__insn_mulhhsa_uu", TILEPRO_INSN_MULHHSA_UU, true, "llll" }, + { "__insn_mulhl_ss", TILEPRO_INSN_MULHL_SS, true, "lll" }, + { "__insn_mulhl_su", TILEPRO_INSN_MULHL_SU, true, "lll" }, + { "__insn_mulhl_us", TILEPRO_INSN_MULHL_US, true, "lll" }, + { "__insn_mulhl_uu", TILEPRO_INSN_MULHL_UU, true, "lll" }, + { "__insn_mulhla_ss", TILEPRO_INSN_MULHLA_SS, true, "llll" }, + { "__insn_mulhla_su", TILEPRO_INSN_MULHLA_SU, true, "llll" }, + { "__insn_mulhla_us", TILEPRO_INSN_MULHLA_US, true, "llll" }, + { "__insn_mulhla_uu", TILEPRO_INSN_MULHLA_UU, true, "llll" }, + { "__insn_mulhlsa_uu", TILEPRO_INSN_MULHLSA_UU, true, "llll" }, + { "__insn_mulll_ss", TILEPRO_INSN_MULLL_SS, true, "lll" }, + { "__insn_mulll_su", TILEPRO_INSN_MULLL_SU, true, "lll" }, + { "__insn_mulll_uu", TILEPRO_INSN_MULLL_UU, true, "lll" }, + { "__insn_mullla_ss", TILEPRO_INSN_MULLLA_SS, true, "llll" }, + { "__insn_mullla_su", TILEPRO_INSN_MULLLA_SU, true, "llll" }, + { "__insn_mullla_uu", TILEPRO_INSN_MULLLA_UU, true, "llll" }, + { "__insn_mulllsa_uu", TILEPRO_INSN_MULLLSA_UU, true, "llll" }, + { "__insn_mvnz", TILEPRO_INSN_MVNZ, true, "llll" }, + { "__insn_mvz", TILEPRO_INSN_MVZ, true, "llll" }, + { "__insn_mz", TILEPRO_INSN_MZ, true, "lll" }, + { "__insn_mzb", TILEPRO_INSN_MZB, true, "lll" }, + { "__insn_mzh", TILEPRO_INSN_MZH, true, "lll" }, + { "__insn_nap", TILEPRO_INSN_NAP, false, "v" }, + { "__insn_nop", TILEPRO_INSN_NOP, true, "v" }, + { "__insn_nor", TILEPRO_INSN_NOR, true, "lll" }, + { "__insn_or", TILEPRO_INSN_OR, true, "lll" }, + { "__insn_ori", TILEPRO_INSN_OR, true, "lll" }, + { "__insn_packbs_u", TILEPRO_INSN_PACKBS_U, false, "lll" }, + { "__insn_packhb", TILEPRO_INSN_PACKHB, true, "lll" }, + { "__insn_packhs", TILEPRO_INSN_PACKHS, false, "lll" }, + { "__insn_packlb", TILEPRO_INSN_PACKLB, true, "lll" }, + { "__insn_pcnt", TILEPRO_INSN_PCNT, true, "ll" }, + { "__insn_prefetch", TILEPRO_INSN_PREFETCH, false, "vk" }, + { "__insn_prefetch_L1", TILEPRO_INSN_PREFETCH_L1, false, "vk" }, + { "__insn_rl", TILEPRO_INSN_RL, true, "lll" }, + { "__insn_rli", TILEPRO_INSN_RL, true, "lll" }, + { "__insn_s1a", TILEPRO_INSN_S1A, true, "lll" }, + { "__insn_s2a", TILEPRO_INSN_S2A, true, "lll" }, + { "__insn_s3a", TILEPRO_INSN_S3A, true, "lll" }, + { "__insn_sadab_u", TILEPRO_INSN_SADAB_U, true, "llll" }, + { "__insn_sadah", TILEPRO_INSN_SADAH, true, "llll" }, + { "__insn_sadah_u", TILEPRO_INSN_SADAH_U, true, "llll" }, + { "__insn_sadb_u", TILEPRO_INSN_SADB_U, true, "lll" }, + { "__insn_sadh", TILEPRO_INSN_SADH, true, "lll" }, + { "__insn_sadh_u", TILEPRO_INSN_SADH_U, true, "lll" }, + { "__insn_sb", TILEPRO_INSN_SB, false, "vpl" }, + { "__insn_seq", TILEPRO_INSN_SEQ, true, "lll" }, + { "__insn_seqb", TILEPRO_INSN_SEQB, true, "lll" }, + { "__insn_seqh", TILEPRO_INSN_SEQH, true, "lll" }, + { "__insn_seqi", TILEPRO_INSN_SEQ, true, "lll" }, + { "__insn_seqib", TILEPRO_INSN_SEQIB, true, "lll" }, + { "__insn_seqih", TILEPRO_INSN_SEQIH, true, "lll" }, + { "__insn_sh", TILEPRO_INSN_SH, false, "vpl" }, + { "__insn_shl", TILEPRO_INSN_SHL, true, "lll" }, + { "__insn_shlb", TILEPRO_INSN_SHLB, true, "lll" }, + { "__insn_shlh", TILEPRO_INSN_SHLH, true, "lll" }, + { "__insn_shli", TILEPRO_INSN_SHL, true, "lll" }, + { "__insn_shlib", TILEPRO_INSN_SHLIB, true, "lll" }, + { "__insn_shlih", TILEPRO_INSN_SHLIH, true, "lll" }, + { "__insn_shr", TILEPRO_INSN_SHR, true, "lll" }, + { "__insn_shrb", TILEPRO_INSN_SHRB, true, "lll" }, + { "__insn_shrh", TILEPRO_INSN_SHRH, true, "lll" }, + { "__insn_shri", TILEPRO_INSN_SHR, true, "lll" }, + { "__insn_shrib", TILEPRO_INSN_SHRIB, true, "lll" }, + { "__insn_shrih", TILEPRO_INSN_SHRIH, true, "lll" }, + { "__insn_slt", TILEPRO_INSN_SLT, true, "lll" }, + { "__insn_slt_u", TILEPRO_INSN_SLT_U, true, "lll" }, + { "__insn_sltb", TILEPRO_INSN_SLTB, true, "lll" }, + { "__insn_sltb_u", TILEPRO_INSN_SLTB_U, true, "lll" }, + { "__insn_slte", TILEPRO_INSN_SLTE, true, "lll" }, + { "__insn_slte_u", TILEPRO_INSN_SLTE_U, true, "lll" }, + { "__insn_slteb", TILEPRO_INSN_SLTEB, true, "lll" }, + { "__insn_slteb_u", TILEPRO_INSN_SLTEB_U, true, "lll" }, + { "__insn_slteh", TILEPRO_INSN_SLTEH, true, "lll" }, + { "__insn_slteh_u", TILEPRO_INSN_SLTEH_U, true, "lll" }, + { "__insn_slth", TILEPRO_INSN_SLTH, true, "lll" }, + { "__insn_slth_u", TILEPRO_INSN_SLTH_U, true, "lll" }, + { "__insn_slti", TILEPRO_INSN_SLT, true, "lll" }, + { "__insn_slti_u", TILEPRO_INSN_SLT_U, true, "lll" }, + { "__insn_sltib", TILEPRO_INSN_SLTIB, true, "lll" }, + { "__insn_sltib_u", TILEPRO_INSN_SLTIB_U, true, "lll" }, + { "__insn_sltih", TILEPRO_INSN_SLTIH, true, "lll" }, + { "__insn_sltih_u", TILEPRO_INSN_SLTIH_U, true, "lll" }, + { "__insn_sne", TILEPRO_INSN_SNE, true, "lll" }, + { "__insn_sneb", TILEPRO_INSN_SNEB, true, "lll" }, + { "__insn_sneh", TILEPRO_INSN_SNEH, true, "lll" }, + { "__insn_sra", TILEPRO_INSN_SRA, true, "lll" }, + { "__insn_srab", TILEPRO_INSN_SRAB, true, "lll" }, + { "__insn_srah", TILEPRO_INSN_SRAH, true, "lll" }, + { "__insn_srai", TILEPRO_INSN_SRA, true, "lll" }, + { "__insn_sraib", TILEPRO_INSN_SRAIB, true, "lll" }, + { "__insn_sraih", TILEPRO_INSN_SRAIH, true, "lll" }, + { "__insn_sub", TILEPRO_INSN_SUB, true, "lll" }, + { "__insn_subb", TILEPRO_INSN_SUBB, true, "lll" }, + { "__insn_subbs_u", TILEPRO_INSN_SUBBS_U, false, "lll" }, + { "__insn_subh", TILEPRO_INSN_SUBH, true, "lll" }, + { "__insn_subhs", TILEPRO_INSN_SUBHS, false, "lll" }, + { "__insn_subs", TILEPRO_INSN_SUBS, false, "lll" }, + { "__insn_sw", TILEPRO_INSN_SW, false, "vpl" }, + { "__insn_tblidxb0", TILEPRO_INSN_TBLIDXB0, true, "lll" }, + { "__insn_tblidxb1", TILEPRO_INSN_TBLIDXB1, true, "lll" }, + { "__insn_tblidxb2", TILEPRO_INSN_TBLIDXB2, true, "lll" }, + { "__insn_tblidxb3", TILEPRO_INSN_TBLIDXB3, true, "lll" }, + { "__insn_tns", TILEPRO_INSN_TNS, false, "lp" }, + { "__insn_wh64", TILEPRO_INSN_WH64, false, "vp" }, + { "__insn_xor", TILEPRO_INSN_XOR, true, "lll" }, + { "__insn_xori", TILEPRO_INSN_XOR, true, "lll" }, + { "__tile_network_barrier", TILEPRO_NETWORK_BARRIER, false, "v" }, + { "__tile_idn0_receive", TILEPRO_IDN0_RECEIVE, false, "l" }, + { "__tile_idn1_receive", TILEPRO_IDN1_RECEIVE, false, "l" }, + { "__tile_idn_send", TILEPRO_IDN_SEND, false, "vl" }, + { "__tile_sn_receive", TILEPRO_SN_RECEIVE, false, "l" }, + { "__tile_sn_send", TILEPRO_SN_SEND, false, "vl" }, + { "__tile_udn0_receive", TILEPRO_UDN0_RECEIVE, false, "l" }, + { "__tile_udn1_receive", TILEPRO_UDN1_RECEIVE, false, "l" }, + { "__tile_udn2_receive", TILEPRO_UDN2_RECEIVE, false, "l" }, + { "__tile_udn3_receive", TILEPRO_UDN3_RECEIVE, false, "l" }, + { "__tile_udn_send", TILEPRO_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 'l': + return 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 +tilepro_init_builtins (void) +{ + size_t i; + + for (i = 0; i < ARRAY_SIZE (tilepro_builtins); i++) + { + const struct tilepro_builtin_def *p = &tilepro_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 (tilepro_builtin_info[p->code].fndecl == NULL) + tilepro_builtin_info[p->code].fndecl = decl; + } +} + + +/* Implement TARGET_EXPAND_BUILTIN. */ +static rtx +tilepro_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 >= TILEPRO_BUILTIN_max) + internal_error ("bad builtin fcode"); + icode = tilepro_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)) + op[opnum] = copy_to_mode_reg (insn_op->mode, 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)) + 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; + emit_insn (pat); + + if (nonvoid) + return target; + else + return const0_rtx; +} + + +/* Implement TARGET_BUILTIN_DECL. */ +static tree +tilepro_builtin_decl (unsigned code, bool initialize_p ATTRIBUTE_UNUSED) +{ + if (code >= TILEPRO_BUILTIN_max) + return error_mark_node; + + return tilepro_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 == TILEPRO_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 +tilepro_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 (Pmode, regno); + rtx mem = gen_frame_mem (Pmode, addr); + rtx mov = gen_movsi (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 (Pmode, regno_note); + rtx cfa_relative_addr = gen_rtx_PLUS (Pmode, cfa, gen_int_si (cfa_offset)); + rtx cfa_relative_mem = gen_frame_mem (Pmode, 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 (Pmode, regno); + rtx mem = gen_frame_mem (Pmode, addr); + if (cfa_restores) + *cfa_restores = alloc_reg_note (REG_CFA_RESTORE, reg, *cfa_restores); + return emit_insn (gen_movsi (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_si (offset); + + rtx insn; + if (satisfies_constraint_J (imm_rtx)) + { + /* We can add this using a single addi or addli. */ + to_add = imm_rtx; + } + else + { + rtx tmp = gen_rtx_REG (Pmode, (*next_scratch_regno)--); + tilepro_expand_set_const32 (tmp, imm_rtx); + to_add = tmp; + } + + /* Actually adjust the stack pointer. */ + insn = emit_insn (gen_sp_adjust (stack_pointer_rtx, stack_pointer_rtx, + to_add)); + 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 +tilepro_current_function_is_leaf (void) +{ + return current_function_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 () + tilepro_saved_regs_size () + + crtl->outgoing_args_size + + crtl->args.pretend_args_size); + + if (!tilepro_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 +tilepro_can_use_return_insn_p (void) +{ + return (reload_completed + && cfun->static_chain_decl == 0 + && compute_total_frame_size () == 0 + && tilepro_current_function_is_leaf () + && !crtl->profile && !df_regs_ever_live_p (TILEPRO_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; + base_reg_rtx = stack_pointer_rtx; + offset_from_base = offset_from_sp; + } + + 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_si (offset_from_base); + + if (!tilepro_expand_addsi (tmp_reg_rtx, base_reg_rtx, offset_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 | tilepro_saved_regs_size() bytes + FP -> +-------------+ + | ... | + | vars | get_frame_size() bytes + +-------------+ + | ... | + | outgoing | + | stack args | crtl->outgoing_args_size bytes + +-------------+ + | HFP | 4 bytes (only here if nonleaf / alloca) + +-------------+ + | callee lr | 4 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+4 before calling a subroutine so the + callee can chain. */ +void +tilepro_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 (TILEPRO_LINK_REGNUM) || crtl->calls_eh_return) + FRP (frame_emit_store (TILEPRO_LINK_REGNUM, TILEPRO_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), + 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 (!tilepro_current_function_is_leaf ()) + { + /* Copy the old stack pointer aside so we can save it later. */ + sp_copy_regno = next_scratch_regno--; + insn = FRP (emit_move_insn (gen_rtx_REG (Pmode, sp_copy_regno), + stack_pointer_rtx)); + add_reg_note (insn, REG_CFA_REGISTER, NULL_RTX); + } + + if (tilepro_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_si (-(total_size - UNITS_PER_WORD)); + int cfa_offset = + frame_pointer_needed ? UNITS_PER_WORD - 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. */ + FRP (frame_emit_store (sp_copy_regno, STACK_POINTER_REGNUM, + chain_addr, cfa, cfa_offset)); + } + + /* 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) + { + rtx p = compute_frame_addr (offset, &next_scratch_regno); + r = gen_rtx_REG (word_mode, next_scratch_regno--); + reg_save_addr[which_scratch] = r; + + emit_insn (gen_rtx_SET (VOIDmode, r, p)); + } + 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 +tilepro_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 (TILEPRO_LINK_REGNUM)) + { + insn = frame_emit_load (TILEPRO_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 (!tilepro_current_function_is_leaf ()) + cfa_restores = + alloc_reg_note (REG_CFA_RESTORE, stack_pointer_rtx, cfa_restores); + + emit_insn (gen_blockage ()); + + if (crtl->calls_eh_return) + { + rtx r = compute_frame_addr (-total_size + UNITS_PER_WORD, + &next_scratch_regno); + insn = emit_move_insn (gen_rtx_REG (Pmode, STACK_POINTER_REGNUM), + gen_frame_mem (Pmode, r)); + RTX_FRAME_RELATED_P (insn) = 1; + REG_NOTES (insn) = cfa_restores; + } + else if (frame_pointer_needed) + { + /* Restore the old stack pointer by copying from the frame + pointer. */ + 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); + } + + /* Restore the old frame pointer. */ + if (frame_pointer_needed) + { + insn = emit_move_insn (hard_frame_pointer_rtx, + gen_rtx_REG (Pmode, 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 the actual 'return' instruction. */ + emit_jump_insn (gen__return ()); + } + else + { + emit_use (gen_rtx_REG (Pmode, TILEPRO_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 +tilepro_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 + - tilepro_saved_regs_size ()); + } + else if (from == FRAME_POINTER_REGNUM && to == HARD_FRAME_POINTER_REGNUM) + { + return -(crtl->args.pretend_args_size + tilepro_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 +tilepro_return_addr (int count, rtx frame ATTRIBUTE_UNUSED) +{ + if (count != 0) + return const0_rtx; + + return get_hard_reg_initial_val (Pmode, TILEPRO_LINK_REGNUM); +} + + +/* Implement EH_RETURN_HANDLER_RTX. */ +rtx +tilepro_eh_return_handler_rtx (void) +{ + /* The MEM needs to be volatile to prevent it from being + deleted. */ + 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 +tilepro_conditional_register_usage (void) +{ + global_regs[TILEPRO_NETORDER_REGNUM] = 1; + /* TILEPRO_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 (TILEPRO_PIC_TEXT_LABEL_REGNUM != INVALID_REGNUM) + { + fixed_regs[TILEPRO_PIC_TEXT_LABEL_REGNUM] = 1; + call_used_regs[TILEPRO_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 +tilepro_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 +tilepro_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 +tilepro_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 +tilepro_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 +tilepro_gen_bundles (void) +{ + basic_block bb; + FOR_EACH_BB (bb) + { + rtx insn, next; + rtx end = NEXT_INSN (BB_END (bb)); + + for (insn = next_insn_to_bundle (BB_HEAD (bb), end); 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); + } + } + } + } +} + + +/* Helper function for tilepro_fixup_pcrel_references. */ +static void +replace_pc_relative_symbol_ref (rtx insn, rtx opnds[4], bool first_insn_p) +{ + rtx new_insns; + + start_sequence (); + + if (flag_pic == 1) + { + if (!first_insn_p) + { + emit_insn (gen_add_got16 (opnds[0], tilepro_got_rtx (), + opnds[2])); + emit_insn (gen_insn_lw (opnds[0], opnds[0])); + } + } + else + { + if (first_insn_p) + { + emit_insn (gen_addhi_got32 (opnds[0], tilepro_got_rtx (), + opnds[2])); + } + else + { + emit_insn (gen_addlo_got32 (opnds[0], opnds[1], opnds[2])); + emit_insn (gen_insn_lw (opnds[0], opnds[0])); + } + } + + new_insns = get_insns (); + end_sequence (); + + if (new_insns) + emit_insn_before (new_insns, insn); + + delete_insn (insn); +} + + +/* Returns whether INSN is a pc-relative addli insn. */ +static bool +match_addli_pcrel (rtx insn) +{ + rtx pattern = PATTERN (insn); + rtx unspec; + + if (GET_CODE (pattern) != SET) + return false; + + if (GET_CODE (SET_SRC (pattern)) != LO_SUM) + return false; + + if (GET_CODE (XEXP (SET_SRC (pattern), 1)) != CONST) + return false; + + unspec = XEXP (XEXP (SET_SRC (pattern), 1), 0); + + return (GET_CODE (unspec) == UNSPEC + && XINT (unspec, 1) == UNSPEC_PCREL_SYM); +} + + +/* Helper function for tilepro_fixup_pcrel_references. */ +static void +replace_addli_pcrel (rtx insn) +{ + rtx pattern = PATTERN (insn); + rtx set_src; + rtx unspec; + rtx opnds[4]; + bool first_insn_p; + + gcc_assert (GET_CODE (pattern) == SET); + opnds[0] = SET_DEST (pattern); + + set_src = SET_SRC (pattern); + gcc_assert (GET_CODE (set_src) == LO_SUM); + gcc_assert (GET_CODE (XEXP (set_src, 1)) == CONST); + opnds[1] = XEXP (set_src, 0); + + unspec = XEXP (XEXP (set_src, 1), 0); + gcc_assert (GET_CODE (unspec) == UNSPEC); + gcc_assert (XINT (unspec, 1) == UNSPEC_PCREL_SYM); + opnds[2] = XVECEXP (unspec, 0, 0); + opnds[3] = XVECEXP (unspec, 0, 1); + + /* We only need to replace SYMBOL_REFs, not LABEL_REFs. */ + if (GET_CODE (opnds[2]) != SYMBOL_REF) + return; + + first_insn_p = (opnds[1] == tilepro_text_label_rtx ()); + + replace_pc_relative_symbol_ref (insn, opnds, first_insn_p); +} + + +/* Returns whether INSN is a pc-relative auli insn. */ +static bool +match_auli_pcrel (rtx insn) +{ + rtx pattern = PATTERN (insn); + rtx high; + rtx unspec; + + if (GET_CODE (pattern) != SET) + return false; + + if (GET_CODE (SET_SRC (pattern)) != PLUS) + return false; + + high = XEXP (SET_SRC (pattern), 1); + + if (GET_CODE (high) != HIGH + || GET_CODE (XEXP (high, 0)) != CONST) + return false; + + unspec = XEXP (XEXP (high, 0), 0); + + return (GET_CODE (unspec) == UNSPEC + && XINT (unspec, 1) == UNSPEC_PCREL_SYM); +} + + +/* Helper function for tilepro_fixup_pcrel_references. */ +static void +replace_auli_pcrel (rtx insn) +{ + rtx pattern = PATTERN (insn); + rtx set_src; + rtx high; + rtx unspec; + rtx opnds[4]; + bool first_insn_p; + + gcc_assert (GET_CODE (pattern) == SET); + opnds[0] = SET_DEST (pattern); + + set_src = SET_SRC (pattern); + gcc_assert (GET_CODE (set_src) == PLUS); + opnds[1] = XEXP (set_src, 0); + + high = XEXP (set_src, 1); + gcc_assert (GET_CODE (high) == HIGH); + gcc_assert (GET_CODE (XEXP (high, 0)) == CONST); + + unspec = XEXP (XEXP (high, 0), 0); + gcc_assert (GET_CODE (unspec) == UNSPEC); + gcc_assert (XINT (unspec, 1) == UNSPEC_PCREL_SYM); + opnds[2] = XVECEXP (unspec, 0, 0); + opnds[3] = XVECEXP (unspec, 0, 1); + + /* We only need to replace SYMBOL_REFs, not LABEL_REFs. */ + if (GET_CODE (opnds[2]) != SYMBOL_REF) + return; + + first_insn_p = (opnds[1] == tilepro_text_label_rtx ()); + + replace_pc_relative_symbol_ref (insn, opnds, first_insn_p); +} + + +/* 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 one of the following two instruction sequences: + addli tmp1, txt_label_reg, lo16(sym - txt_label) + auli tmp2, tmp1, ha16(sym - txt_label) + + auli tmp1, txt_label_reg, ha16(sym - txt_label) + addli tmp2, tmp1, lo16(sym - txt_label) + + If we're compiling -fpic, we replace the first instruction with + nothing, and the second instruction with: + + addli tmp2, got_rtx, got(sym) + lw tmp2, tmp2 + + If we're compiling -fPIC, we replace the first instruction with: + + auli tmp1, got_rtx, got_ha16(sym) + + and the second instruction with: + + addli tmp2, tmp1, got_lo16(sym) + lw tmp2, tmp2 + + 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 +tilepro_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 (match_addli_pcrel (insn)) + replace_addli_pcrel (insn); + else if (match_auli_pcrel (insn)) + replace_auli_pcrel (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 (bb) + { + 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 +tilepro_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) + { + tilepro_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. */ + tilepro_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 +tilepro_asm_preferred_eh_data_format (int code ATTRIBUTE_UNUSED, int global) +{ + if (flag_pic) + return (global ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4; + else + return DW_EH_PE_absptr; +} + + +/* Implement TARGET_ASM_OUTPUT_MI_THUNK. */ +static void +tilepro_asm_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; + + /* 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. */ + emit_insn (gen_addsi3 (this_rtx, this_rtx, GEN_INT (delta))); + + /* 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)); + + emit_insn (gen_addsi3 (tmp, tmp, GEN_INT (vcall_offset))); + + emit_move_insn (tmp, gen_rtx_MEM (Pmode, tmp)); + + emit_insn (gen_addsi3 (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 (); + insn_locators_alloc (); + 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 +tilepro_asm_trampoline_template (FILE *file) +{ + fprintf (file, "\tlnk r10\n"); + fprintf (file, "\taddi r10, r10, 32\n"); + fprintf (file, "\tlwadd r11, r10, %d\n", GET_MODE_SIZE (ptr_mode)); + fprintf (file, "\tlw 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"); +} + + +/* Implement TARGET_TRAMPOLINE_INIT. */ +static void +tilepro_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 (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 +tilepro_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 'h': + { + /* Print the high 16 bits of a 32-bit 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 >> 16, HImode); + fprintf (file, HOST_WIDE_INT_PRINT_DEC, i); + return; + } + + case 'H': + { + rtx addr = NULL; + const char *opstr = NULL; + bool pcrel = false; + if (GET_CODE (x) == CONST + && GET_CODE (XEXP (x, 0)) == UNSPEC) + { + addr = XVECEXP (XEXP (x, 0), 0, 0); + switch (XINT (XEXP (x, 0), 1)) + { + case UNSPEC_GOT32_SYM: + opstr = "got_ha16"; + break; + case UNSPEC_PCREL_SYM: + opstr = "ha16"; + pcrel = true; + break; + case UNSPEC_TLS_GD: + opstr = "tls_gd_ha16"; + break; + case UNSPEC_TLS_IE: + opstr = "tls_ie_ha16"; + break; + case UNSPEC_TLS_LE: + opstr = "tls_le_ha16"; + break; + default: + output_operand_lossage ("invalid %%H operand"); + } + } + else + { + addr = x; + opstr = "ha16"; + } + + fputs (opstr, file); + fputc ('(', file); + output_addr_const (file, addr); + + if (pcrel) + { + rtx addr2 = XVECEXP (XEXP (x, 0), 0, 1); + fputs (" - " , file); + output_addr_const (file, addr2); + } + + fputc (')', file); + 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 'L': + { + rtx addr = NULL; + const char *opstr = NULL; + bool pcrel = false; + if (GET_CODE (x) == CONST + && GET_CODE (XEXP (x, 0)) == UNSPEC) + { + addr = XVECEXP (XEXP (x, 0), 0, 0); + switch (XINT (XEXP (x, 0), 1)) + { + case UNSPEC_GOT16_SYM: + opstr = "got"; + break; + case UNSPEC_GOT32_SYM: + opstr = "got_lo16"; + break; + case UNSPEC_PCREL_SYM: + opstr = "lo16"; + pcrel = true; + break; + case UNSPEC_TLS_GD: + opstr = "tls_gd_lo16"; + break; + case UNSPEC_TLS_IE: + opstr = "tls_ie_lo16"; + break; + case UNSPEC_TLS_LE: + opstr = "tls_le_lo16"; + break; + default: + output_operand_lossage ("invalid %%L operand"); + } + } + else + { + addr = x; + opstr = "lo16"; + } + + fputs (opstr, file); + fputc ('(', file); + output_addr_const (file, addr); + + if (pcrel) + { + rtx addr2 = XVECEXP (XEXP (x, 0), 0, 1); + fputs (" - " , file); + output_addr_const (file, addr2); + } + + fputc (')', file); + 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 'P': + { + /* Print a 32-bit constant plus one. */ + HOST_WIDE_INT i; + if (!CONST_INT_P (x)) + { + output_operand_lossage ("invalid %%P operand"); + return; + } + i = trunc_int_for_mode (INTVAL (x) + 1, SImode); + fprintf (file, HOST_WIDE_INT_PRINT_DEC, i); + return; + } + + case 'M': + { + /* Print an mm-style bit range. */ + int first_bit, last_bit; + + if (!CONST_INT_P (x) + || !tilepro_bitfield_operand_p (INTVAL (x), &first_bit, + &last_bit)) + { + output_operand_lossage ("invalid %%M operand"); + 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 TILEPRO_NETREG_IDN0: reg = "idn0"; break; + case TILEPRO_NETREG_IDN1: reg = "idn1"; break; + case TILEPRO_NETREG_SN: reg = "sn"; break; + case TILEPRO_NETREG_UDN0: reg = "udn0"; break; + case TILEPRO_NETREG_UDN1: reg = "udn1"; break; + case TILEPRO_NETREG_UDN2: reg = "udn2"; break; + case TILEPRO_NETREG_UDN3: reg = "udn3"; break; + default: gcc_unreachable (); + } + + fprintf (file, reg); + return; + } + + case 't': + { + /* Log base 2 of a power of two. */ + HOST_WIDE_INT i; + HOST_WIDE_INT n; + + if (!CONST_INT_P (x)) + { + output_operand_lossage ("invalid %%t operand"); + return; + } + n = trunc_int_for_mode (INTVAL (x), SImode); + i = exact_log2 (n); + if (i < 0) + { + output_operand_lossage ("invalid %%t operand '" + HOST_WIDE_INT_PRINT_DEC "'", n); + return; + } + + fprintf (file, HOST_WIDE_INT_PRINT_DEC, i); + return; + } + break; + + 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 %%r operand"); + 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; + } + break; + } + + debug_rtx (x); + output_operand_lossage ("unable to print out operand yet; code == %d (%c)", + code, code); +} + + +/* Implement TARGET_PRINT_OPERAND_ADDRESS. */ +static void +tilepro_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 + tilepro_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 +tilepro_final_prescan_insn (rtx insn) +{ + /* Record this for tilepro_asm_output_opcode to examine. */ + insn_mode = GET_MODE (insn); +} + + +/* While emitting asm, are we currently inside '{' for a bundle? */ +static bool tilepro_in_bundle = false; + +/* Implement ASM_OUTPUT_OPCODE. Prepend/append curly braces as + appropriate given the bundling information recorded by + tilepro_gen_bundles. */ +const char * +tilepro_asm_output_opcode (FILE *stream, const char *code) +{ + bool pseudo = !strcmp (code, "pseudo"); + + if (!tilepro_in_bundle && insn_mode == SImode) + { + /* Start a new bundle. */ + fprintf (stream, "{\n\t"); + tilepro_in_bundle = true; + } + + if (tilepro_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}"); + tilepro_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 +tilepro_function_profiler (FILE *file, int labelno ATTRIBUTE_UNUSED) +{ + if (tilepro_in_bundle) + { + fprintf (file, "\t}\n"); + } + + if (flag_pic) + { + fprintf (file, + "\t{\n" + "\tmove\tr10, lr\n" + "\tjal\t%s@plt\n" + "\t}\n", MCOUNT_NAME); + } + else + { + fprintf (file, + "\t{\n" + "\tmove\tr10, lr\n" + "\tjal\t%s\n" + "\t}\n", MCOUNT_NAME); + } + + tilepro_in_bundle = false; +} + + +/* Implement TARGET_ASM_FILE_END. */ +static void +tilepro_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 tilepro_option_override + +#undef TARGET_SCALAR_MODE_SUPPORTED_P +#define TARGET_SCALAR_MODE_SUPPORTED_P tilepro_scalar_mode_supported_p + +#undef TARGET_VECTOR_MODE_SUPPORTED_P +#define TARGET_VECTOR_MODE_SUPPORTED_P tile_vector_mode_supported_p + +#undef TARGET_CANNOT_FORCE_CONST_MEM +#define TARGET_CANNOT_FORCE_CONST_MEM tilepro_cannot_force_const_mem + +#undef TARGET_FUNCTION_OK_FOR_SIBCALL +#define TARGET_FUNCTION_OK_FOR_SIBCALL tilepro_function_ok_for_sibcall + +#undef TARGET_PASS_BY_REFERENCE +#define TARGET_PASS_BY_REFERENCE tilepro_pass_by_reference + +#undef TARGET_RETURN_IN_MEMORY +#define TARGET_RETURN_IN_MEMORY tilepro_return_in_memory + +#undef TARGET_FUNCTION_ARG_BOUNDARY +#define TARGET_FUNCTION_ARG_BOUNDARY tilepro_function_arg_boundary + +#undef TARGET_FUNCTION_ARG +#define TARGET_FUNCTION_ARG tilepro_function_arg + +#undef TARGET_FUNCTION_ARG_ADVANCE +#define TARGET_FUNCTION_ARG_ADVANCE tilepro_function_arg_advance + +#undef TARGET_FUNCTION_VALUE +#define TARGET_FUNCTION_VALUE tilepro_function_value + +#undef TARGET_LIBCALL_VALUE +#define TARGET_LIBCALL_VALUE tilepro_libcall_value + +#undef TARGET_FUNCTION_VALUE_REGNO_P +#define TARGET_FUNCTION_VALUE_REGNO_P tilepro_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 tilepro_build_builtin_va_list + +#undef TARGET_EXPAND_BUILTIN_VA_START +#define TARGET_EXPAND_BUILTIN_VA_START tilepro_va_start + +#undef TARGET_SETUP_INCOMING_VARARGS +#define TARGET_SETUP_INCOMING_VARARGS tilepro_setup_incoming_varargs + +#undef TARGET_GIMPLIFY_VA_ARG_EXPR +#define TARGET_GIMPLIFY_VA_ARG_EXPR tilepro_gimplify_va_arg_expr + +#undef TARGET_RTX_COSTS +#define TARGET_RTX_COSTS tilepro_rtx_costs + +/* 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 tilepro_legitimate_constant_p + +#undef TARGET_LEGITIMATE_ADDRESS_P +#define TARGET_LEGITIMATE_ADDRESS_P tilepro_legitimate_address_p + +#undef TARGET_LEGITIMIZE_ADDRESS +#define TARGET_LEGITIMIZE_ADDRESS tilepro_legitimize_address + +#undef TARGET_DELEGITIMIZE_ADDRESS +#define TARGET_DELEGITIMIZE_ADDRESS tilepro_delegitimize_address + +#undef TARGET_INIT_BUILTINS +#define TARGET_INIT_BUILTINS tilepro_init_builtins + +#undef TARGET_BUILTIN_DECL +#define TARGET_BUILTIN_DECL tilepro_builtin_decl + +#undef TARGET_EXPAND_BUILTIN +#define TARGET_EXPAND_BUILTIN tilepro_expand_builtin + +#undef TARGET_CONDITIONAL_REGISTER_USAGE +#define TARGET_CONDITIONAL_REGISTER_USAGE tilepro_conditional_register_usage + +#undef TARGET_FRAME_POINTER_REQUIRED +#define TARGET_FRAME_POINTER_REQUIRED tilepro_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 tilepro_issue_rate + +#undef TARGET_SCHED_ADJUST_COST +#define TARGET_SCHED_ADJUST_COST tilepro_sched_adjust_cost + +#undef TARGET_MACHINE_DEPENDENT_REORG +#define TARGET_MACHINE_DEPENDENT_REORG tilepro_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 tilepro_asm_output_mi_thunk + +#undef TARGET_ASM_TRAMPOLINE_TEMPLATE +#define TARGET_ASM_TRAMPOLINE_TEMPLATE tilepro_asm_trampoline_template + +#undef TARGET_TRAMPOLINE_INIT +#define TARGET_TRAMPOLINE_INIT tilepro_trampoline_init + +#undef TARGET_PRINT_OPERAND +#define TARGET_PRINT_OPERAND tilepro_print_operand + +#undef TARGET_PRINT_OPERAND_ADDRESS +#define TARGET_PRINT_OPERAND_ADDRESS tilepro_print_operand_address + +#undef TARGET_ASM_FILE_END +#define TARGET_ASM_FILE_END tilepro_file_end + + +struct gcc_target targetm = TARGET_INITIALIZER; + +#include "gt-tilepro.h" diff --git a/gcc/config/tilepro/tilepro.h b/gcc/config/tilepro/tilepro.h new file mode 100644 index 00000000000..930612d1fb4 --- /dev/null +++ b/gcc/config/tilepro/tilepro.h @@ -0,0 +1,479 @@ +/* Definitions of target machine for GNU compiler for TILEPro. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +/* This is used by tilepro_cpu_cpp_builtins to indicate the byte order + we're compiling for. */ +#define TILEPRO_CPU_CPP_ENDIAN_BUILTINS() \ + do \ + { \ + if (BYTES_BIG_ENDIAN) \ + builtin_define ("__BIG_ENDIAN__"); \ + else \ + builtin_define ("__LITTLE_ENDIAN__"); \ + } \ + while (0) + +/* Target CPU builtins. */ +#define TARGET_CPU_CPP_BUILTINS() \ + tilepro_cpu_cpp_builtins (pfile) + +#undef PTRDIFF_TYPE +#define PTRDIFF_TYPE "int" + +#undef SIZE_TYPE +#define SIZE_TYPE "unsigned int" + + +/* Target machine storage layout */ + +#define BITS_BIG_ENDIAN 0 +#define BYTES_BIG_ENDIAN 0 +#define WORDS_BIG_ENDIAN 0 + +#define UNITS_PER_WORD 4 +#define PARM_BOUNDARY 32 +#define STACK_BOUNDARY 64 +#define FUNCTION_BOUNDARY 64 +#define BIGGEST_ALIGNMENT 64 +#define STRICT_ALIGNMENT 1 + +#define PCC_BITFIELD_TYPE_MATTERS 1 +#define FASTEST_ALIGNMENT 32 +#define BIGGEST_FIELD_ALIGNMENT 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 + 3) + +#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} + +#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} + +#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 \ +} + +#define HARD_REGNO_NREGS(REGNO, MODE) \ + ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) + +/* All registers can hold all modes. */ +#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 TILEPRO_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 TILEPRO_LINK_REGNUM 55 +#define FRAME_POINTER_REGNUM 64 +#define ARG_POINTER_REGNUM 65 +/* Pseudo register used to enforce order between instructions that + touch the networks. */ +#define TILEPRO_NETORDER_REGNUM 66 +#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 ((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 TILEPRO_NUM_RETURN_REGS 10 + +/* The first 10 registers hold function arguments. */ +#define TILEPRO_NUM_ARG_REGS 10 + +#define FUNCTION_ARG_REGNO_P(N) ((N) < TILEPRO_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) = tilepro_initial_elimination_offset((FROM),(TO))) + +#define FUNCTION_PROFILER(FILE, LABELNO) \ + tilepro_function_profiler (FILE, LABELNO) + +#define TRAMPOLINE_SIZE 48 +#define TRAMPOLINE_ALIGNMENT 64 +#define TRAMPOLINE_SECTION text_section + + +/* Call frame debugging information. */ + +#define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, TILEPRO_LINK_REGNUM) + +#define RETURN_ADDR_RTX tilepro_return_addr + +#define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (TILEPRO_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 tilepro_eh_return_handler_rtx () + +#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \ + tilepro_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) tilepro_legitimate_pic_operand_p (X) + + +#define CASE_VECTOR_MODE SImode +#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 TILEPRO_CALL_RATIO 11 +#define MOVE_RATIO(speed) ((speed) ? 15 : TILEPRO_CALL_RATIO) +#define CLEAR_RATIO(speed) ((speed) ? 15 : TILEPRO_CALL_RATIO) +#define SET_RATIO(speed) ((speed) ? 15 : TILEPRO_CALL_RATIO) + +#define WORD_REGISTER_OPERATIONS + +#define LOAD_EXTEND_OP(MODE) ZERO_EXTEND + +#define PROMOTE_MODE(MODE,UNSIGNEDP,TYPE) \ + if (GET_MODE_CLASS (MODE) == MODE_INT \ + && GET_MODE_SIZE (MODE) < UNITS_PER_WORD) \ + (MODE) = SImode; + +/* Define SLOW_BYTE_ACCESS to avoid making a QI or HI mode + register. */ +#define SLOW_BYTE_ACCESS 1 + +#define SHIFT_COUNT_TRUNCATED 1 + +#define SHORT_IMMEDIATES_SIGN_EXTEND + +#define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1 + +#define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) ((VALUE) = 32, 1) +#define CTZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) ((VALUE) = 32, 1) + +#define Pmode SImode + +#define STORE_FLAG_VALUE 1 + +#define FUNCTION_MODE SImode + +#define NO_FUNCTION_CSE 1 + +#define ADJUST_INSN_LENGTH(INSN, LENGTH) \ + ((LENGTH) = tilepro_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", \ + "sn", "idn0", "idn1", "udn0", "udn1", "udn2", "udn3", "zero", \ + "?FRAME?", "?ARG?", "?NET?" } + +/* This is used to help emit bundles. */ +#define FINAL_PRESCAN_INSN(INSN, OPVEC, NOPERANDS) \ + tilepro_final_prescan_insn (insn) + +/* This is used to help emit bundles. */ +#define ASM_OUTPUT_OPCODE(STREAM, PTR) \ + (PTR = tilepro_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, "\t.word "); \ + 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, "\t.word "); \ + 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 INIT_EXPANDERS tilepro_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 diff --git a/gcc/config/tilepro/tilepro.md b/gcc/config/tilepro/tilepro.md new file mode 100644 index 00000000000..9d5d44e85ed --- /dev/null +++ b/gcc/config/tilepro/tilepro.md @@ -0,0 +1,3817 @@ +;; Machine description for Tilera TILEPro chip for GCC. +;; Copyright (C) 2011, 2012 +;; Free Software Foundation, Inc. +;; Contributed by Walter Lee (walt@tilera.com) +;; +;; This file is part of GCC. +;; +;; GCC is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 3, or (at your +;; option) any later version. +;; +;; GCC is distributed in the hope that it will be useful, but WITHOUT +;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +;; License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; <http://www.gnu.org/licenses/>. + +(define_constants [ + ;; + ;; The following represent intrinsic insns, organized by latency. + ;; + + ;; single cycle + (UNSPEC_INSN_ADDLIS 1) + (UNSPEC_INSN_AULI 2) + (UNSPEC_INSN_AVGB_U 3) + (UNSPEC_INSN_AVGH 4) + (UNSPEC_INSN_BITX 5) + (UNSPEC_INSN_CRC32_32 6) + (UNSPEC_INSN_CRC32_8 7) + (UNSPEC_INSN_DRAIN 8) + (UNSPEC_INSN_DTLBPR 9) + (UNSPEC_INSN_DWORD_ALIGN 10) + (UNSPEC_INSN_FINV 11) + (UNSPEC_INSN_FLUSH 12) + (UNSPEC_INSN_FNOP 13) + (UNSPEC_INSN_ICOH 14) + (UNSPEC_INSN_ILL 15) + (UNSPEC_INSN_INFO 16) + (UNSPEC_INSN_INFOL 17) + (UNSPEC_INSN_INV 18) + (UNSPEC_INSN_LNK 19) + (UNSPEC_INSN_MFSPR 20) + (UNSPEC_INSN_MNZB 21) + (UNSPEC_INSN_MNZH 22) + (UNSPEC_INSN_MOVELIS 23) + (UNSPEC_INSN_MTSPR 24) + (UNSPEC_INSN_MZB 25) + (UNSPEC_INSN_MZH 26) + (UNSPEC_INSN_NAP 27) + (UNSPEC_INSN_PACKBS_U 28) + (UNSPEC_INSN_PACKHB 29) + (UNSPEC_INSN_PACKHS 30) + (UNSPEC_INSN_PACKLB 31) + (UNSPEC_INSN_PREFETCH_L1 32) + (UNSPEC_INSN_TBLIDXB0 33) + (UNSPEC_INSN_TBLIDXB1 34) + (UNSPEC_INSN_TBLIDXB2 35) + (UNSPEC_INSN_TBLIDXB3 36) + (UNSPEC_INSN_WH64 37) + + ;; 2 cycles + (UNSPEC_INSN_ADIFFB_U 100) + (UNSPEC_INSN_ADIFFH 101) + (UNSPEC_INSN_MULHHA_SS 102) + (UNSPEC_INSN_MULHHA_SU 103) + (UNSPEC_INSN_MULHHA_UU 104) + (UNSPEC_INSN_MULHHSA_UU 105) + (UNSPEC_INSN_MULHH_SS 106) + (UNSPEC_INSN_MULHH_SU 107) + (UNSPEC_INSN_MULHH_UU 108) + (UNSPEC_INSN_MULHLA_SS 109) + (UNSPEC_INSN_MULHLA_SU 110) + (UNSPEC_INSN_MULHLA_US 111) + (UNSPEC_INSN_MULHLA_UU 112) + (UNSPEC_INSN_MULHLSA_UU 113) + (UNSPEC_INSN_MULHL_SS 114) + (UNSPEC_INSN_MULHL_SU 115) + (UNSPEC_INSN_MULHL_US 116) + (UNSPEC_INSN_MULHL_UU 117) + (UNSPEC_INSN_MULLLA_SS 118) + (UNSPEC_INSN_MULLLA_SU 119) + (UNSPEC_INSN_MULLLA_UU 120) + (UNSPEC_INSN_MULLLSA_UU 121) + (UNSPEC_INSN_MULLL_SU 122) + (UNSPEC_INSN_MULLL_SS 123) + (UNSPEC_INSN_MULLL_UU 124) + (UNSPEC_INSN_SADAB_U 125) + (UNSPEC_INSN_SADAH 126) + (UNSPEC_INSN_SADAH_U 127) + (UNSPEC_INSN_SADB_U 128) + (UNSPEC_INSN_SADH 129) + (UNSPEC_INSN_SADH_U 130) + + ;; + ;; The following are special insns. + ;; + + ;; Blockage + (UNSPEC_BLOCKAGE 200) + + ;; Latency specifying loads. + (UNSPEC_LATENCY_L2 201) + (UNSPEC_LATENCY_MISS 202) + + ;; Lnk and its label + (UNSPEC_LNK_AND_LABEL 203) + + ;; Memory fence + (UNSPEC_MF 204) + + ;; A pseudo-op that prevents network operations from being ordered. + (UNSPEC_NETWORK_BARRIER 205) + + ;; Operations that access network registers. + (UNSPEC_NETWORK_RECEIVE 206) + (UNSPEC_NETWORK_SEND 207) + + ;; Stack protector operations + (UNSPEC_SP_SET 208) + (UNSPEC_SP_TEST 209) + + ;; A call to __tls_get_addr + (UNSPEC_TLS_GD_CALL 210) + + ;; An opaque TLS "add" operation for TLS general dynamic model + ;; access. + (UNSPEC_TLS_GD_ADD 211) + + ;; An opaque TLS "load" operation for TLS initial exec model access. + (UNSPEC_TLS_IE_LOAD 212) + + ;; + ;; The following are operands. + ;; + (UNSPEC_PCREL_SYM 300) + (UNSPEC_GOT16_SYM 301) + (UNSPEC_GOT32_SYM 302) + (UNSPEC_TLS_GD 303) + (UNSPEC_TLS_IE 304) + (UNSPEC_TLS_LE 305) +]) + +;; Mark the last instruction of various latencies, used to +;; determine the rtx costs of unspec insns. +(define_constants [ + (TILEPRO_LAST_LATENCY_1_INSN 99) + (TILEPRO_LAST_LATENCY_2_INSN 199) + (TILEPRO_LAST_LATENCY_INSN 299) +]) + +;; Constants for network registers. +(define_constants [ + (TILEPRO_NETREG_IDN0 0) + (TILEPRO_NETREG_IDN1 1) + (TILEPRO_NETREG_SN 2) + (TILEPRO_NETREG_UDN0 3) + (TILEPRO_NETREG_UDN1 4) + (TILEPRO_NETREG_UDN2 5) + (TILEPRO_NETREG_UDN3 6) +]) + +;; Constants for special purpose registers. +(define_constants [ + (TILEPRO_NETORDER_REG 66)]) + + +;; Operand and operator predicates and constraints + +(include "predicates.md") +(include "constraints.md") +(include "tilepro-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_miss,X01,Y0,Y0_2cycle,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 iterators. +(define_mode_iterator I48MODE [SI DI]) +(define_mode_iterator I12MODE [QI HI]) + +(define_code_iterator binop_u5bit [ashift ashiftrt lshiftrt rotate]) +(define_code_iterator binop_with_imm + [ashift lshiftrt ashiftrt rotate eq lt and ior xor]) +(define_code_iterator unop [bswap clz ctz popcount]) + +(define_mode_attr load [(QI "lb") (HI "lh") (SI "lw")]) +(define_mode_attr store [(QI "sb") (HI "sh") (SI "sw")]) + +;; <optab> expands to the name of the optab for a particular code. +(define_code_attr optab [(ashift "ashl") + (ashiftrt "ashr") + (lshiftrt "lshr") + (eq "seq") + (ne "sne") + (lt "slt") + (ltu "sltu") + (le "sle") + (leu "sleu") + (minus "sub") + (plus "add") + (rotate "rotl") + (smax "smax") + (smin "smin") + (umax "umax") + (umin "umin") + (ss_minus "sssub") + (ss_plus "ssadd") + (us_minus "ussub") + (us_plus "usadd") + (and "and") + (ior "ior") + (xor "xor") + (bswap "bswap") + (clz "clz") + (ctz "ctz") + (popcount "popcount")]) + +;; <insn> expands to the name of the insn that implements a particular +;; code. +(define_code_attr insn [(ashift "shl") + (ashiftrt "sra") + (lshiftrt "shr") + (eq "seq") + (ne "sne") + (lt "slt") + (ltu "slt") + (le "slte") + (leu "slte") + (minus "sub") + (plus "add") + (rotate "rl") + (smax "max") + (smin "min") + (umax "max") + (umin "min") + (ss_minus "sub") + (ss_plus "add") + (us_minus "sub") + (us_plus "add") + (and "and") + (ior "or") + (xor "xor") + (bswap "bytex") + (clz "clz") + (ctz "ctz") + (popcount "pcnt")]) + +;; <u> expands to the suffix of the insn that implements a particular +;; code. +(define_code_attr u [(ashift "") + (ashiftrt "") + (lshiftrt "") + (eq "") + (ne "") + (lt "") + (ltu "_u") + (le "") + (leu "_u") + (minus "") + (plus "") + (rotate "") + (smax "") + (smin "") + (umax "_u") + (umin "_u") + (ss_minus "s") + (ss_plus "s") + (us_minus "s_u") + (us_plus "s_u") + (and "") + (ior "") + (xor "")]) + +;; <comm> indicates whether a particular code is commutative, using +;; the "%" commutative opterator constraint. +(define_code_attr comm [(ashift "") + (ashiftrt "") + (lshiftrt "") + (eq "%") + (ne "%") + (lt "") + (ltu "") + (le "") + (leu "") + (minus "") + (plus "%") + (rotate "") + (smax "%") + (umax "%") + (smin "%") + (umin "%") + (ss_plus "%") + (us_plus "%") + (ss_minus "") + (us_minus "") + (and "%") + (ior "%") + (xor "%")]) + +(define_mode_iterator VEC [V4QI V2HI]) + +;; 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_plus ne le leu minus us_minus]) + +;; Code iterator for all 2-byte vector ops without immediate variants. +(define_code_iterator v2op [ss_plus ne le leu minus ss_minus]) + +;; 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 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 "pack") + (ss_truncate "pack")]) + +;; <pack_u> expands to the suffix of the insn that implements a +;; particular vector packing code. +(define_code_attr pack_u [(truncate "") + (us_truncate "s_u") + (ss_truncate "s")]) + + +;; +;; The basic data move insns. +;; + +(define_expand "movqi" + [(set (match_operand:QI 0 "nonimmediate_operand" "") + (match_operand:QI 1 "nonautoinc_operand" ""))] + "" +{ + if (tilepro_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 + lb_u\t%0, %1 + lbadd_u\t%0, %I1, %i1 + sb\t%0, %r1 + sbadd\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 (tilepro_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,J,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, %1 + lh_u\t%0, %1 + lhadd_u\t%0, %I1, %i1 + sh\t%0, %r1 + shadd\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 (tilepro_expand_mov (SImode, operands)) + DONE; +}) + +(define_insn "*movsi_high_insn" + [(set (match_operand:SI 0 "register_operand" "=r") + (high:SI (match_operand:SI 1 "symbolic_operand" "in")))] + "" + "auli\t%0, zero, ha16(%1)" + [(set_attr "type" "X01")]) + +(define_insn "*movsi_insn" + [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,r,r,r,r,r,U,m") + (match_operand:SI 1 "move_operand" "r,I,J,K,N,P,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, %1 + auli\t%0, zero, %h1 + addib\t%0, zero, %j1 + addih\t%0, zero, %h1 + lw\t%0, %1 + lwadd\t%0, %I1, %i1 + sw\t%0, %r1 + swadd\t%I0, %r1, %i0" + [(set_attr "type" "*,*,X01,X01,X01,X01,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"))] + "" + "mm\t%r0, %r1, %r0, 0, 7" + [(set_attr "type" "X01")]) + +(define_insn "movstricthi" + [(set (strict_low_part (match_operand:HI 0 "register_operand" "+r")) + (match_operand:HI 1 "reg_or_0_operand" "rO"))] + "" + "mm\t%r0, %r1, %r0, 0, 15" + [(set_attr "type" "X01")]) + +(define_expand "movmisalign<mode>" + [(set (match_operand:VEC 0 "nonautoincmem_nonimmediate_operand" "") + (match_operand:VEC 1 "nonautoincmem_general_operand" ""))] + "" +{ + tilepro_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 + lw\t%0, %1 + lwadd\t%0, %I1, %i1 + sw\t%0, %r1 + swadd\t%I0, %r1, %i0" + [(set_attr "type" "*,Y2_2cycle,X1_2cycle,Y2,X1")]) + +(define_expand "mov<mode>" + [(set (match_operand:VEC 0 "nonimmediate_operand" "") + (match_operand:VEC 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], <MODE>mode) + && operands[1] != const0_rtx + && (register_operand (operands[0], <MODE>mode) + || (!reload_in_progress && !reload_completed))) + { + emit_insn (gen_movsi (gen_lowpart (SImode, operands[0]), + gen_lowpart (SImode, operands[1]))); + DONE; + } +}) + +(define_insn "*mov<mode>" + [(set (match_operand:VEC 0 "nonimmediate_operand" "=r,r,r,U,m") + (match_operand:VEC 1 "general_operand" "rO,U,m,rO,rO"))] + "" + "@ + move\t%0, %r1 + lw\t%0, %1 + lwadd\t%0, %I1, %i1 + sw\t%0, %r1 + swadd\t%I0, %r1, %i0" + [(set_attr "type" "*,Y2_2cycle,X1_2cycle,Y2,X1")]) + + +;; +;; Bit-field extracts +;; + +(define_expand "extv" + [(set (match_operand:SI 0 "register_operand" "") + (sign_extract:SI + (match_operand:QI 1 "nonautoincmem_operand" "") + (match_operand:SI 2 "immediate_operand" "") + (match_operand:SI 3 "immediate_operand" "")))] + "" +{ + HOST_WIDE_INT bit_offset, bit_width; + HOST_WIDE_INT first_byte_offset, last_byte_offset; + + bit_width = INTVAL (operands[2]); + bit_offset = INTVAL (operands[3]); + + /* 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 4 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 > 3) + FAIL; + + tilepro_expand_unaligned_load (operands[0], operands[1], + bit_width, bit_offset, 1); + + DONE; +}) + +(define_expand "extzv" + [(set (match_operand:SI 0 "register_operand" "") + (zero_extract:SI + (match_operand:QI 1 "nonautoincmem_operand" "") + (match_operand:SI 2 "immediate_operand" "") + (match_operand:SI 3 "immediate_operand" "")))] + "" +{ + HOST_WIDE_INT bit_offset, bit_width; + HOST_WIDE_INT first_byte_offset, last_byte_offset; + + bit_width = INTVAL (operands[2]); + bit_offset = INTVAL (operands[3]); + + /* 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 4 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 > 3) + FAIL; + + tilepro_expand_unaligned_load (operands[0], operands[1], + bit_width, bit_offset, 0); + + DONE; +}) + + +;; +;; Arithmetic ops +;; + +(define_insn "*s123a_insn" + [(set (match_operand:SI 0 "register_operand" "=r") + (plus:SI (mult:SI (match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "cint_248_operand" "I")) + (match_operand:SI 3 "reg_or_0_operand" "rO")))] + "" + "s%t2a\t%0, %r1, %r3") + +(define_expand "addsi3" + [(set (match_operand:SI 0 "register_operand" "") + (plus:SI (match_operand:SI 1 "register_operand" "") + (match_operand:SI 2 "reg_or_cint_operand" "")))] + "" + " + if (tilepro_expand_addsi (operands[0], operands[1], operands[2])) + DONE; + ") + +(define_insn "*addsi_high_insn" + [(set (match_operand:SI 0 "register_operand" "=r") + (plus:SI + (match_operand:SI 1 "reg_or_0_operand" "%rO") + (high:SI (match_operand:SI 2 "const_symbolic_operand" "T"))))] + "" + "auli\t%0, %r1, %H2" + [(set_attr "type" "X01")]) + +(define_insn "*addsi_lo_sum_insn" + [(set (match_operand:SI 0 "register_operand" "=r") + (lo_sum:SI + (match_operand:SI 1 "reg_or_0_operand" "%rO") + (match_operand:SI 2 "const_symbolic_operand" "T")))] + "" + "addli\t%0, %r1, %L2" + [(set_attr "type" "X01")]) + +(define_insn "*addsi3_insn" + [(set (match_operand:SI 0 "register_operand" "=r,r,r,r") + (plus:SI (match_operand:SI 1 "reg_or_0_operand" "%rO,rO,rO,rO") + (match_operand:SI 2 "add_operand" "r,I,J,K")))] + "" + "@ + add\t%0, %r1, %r2 + addi\t%0, %r1, %2 + addli\t%0, %r1, %2 + auli\t%0, %r1, %h2" + [(set_attr "type" "*,*,X01,X01")]) + +(define_insn "subsi3" + [(set (match_operand:SI 0 "register_operand" "=r") + (minus:SI (match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")))] + "" + "sub\t%0, %r1, %r2") + +(define_insn "negsi2" + [(set (match_operand:SI 0 "register_operand" "=r") + (neg:SI (match_operand:SI 1 "reg_or_0_operand" "rO")))] + "" + "sub\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")))] + "" + "adds\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")))] + "" + "subs\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +;; +;; Shifts +;; + +;; ashift, ashiftrt, lshiftrt, rotate. +(define_insn "<optab>si3" + [(set (match_operand:SI 0 "register_operand" "=r,r") + (binop_u5bit:SI (match_operand:SI 1 "reg_or_0_operand" "rO,rO") + (match_operand:SI 2 "reg_or_u5bit_operand" "I,rO")))] + "" + "@ + <insn>i\t%0, %r1, %2 + <insn>\t%0, %r1, %r2") + + +;; +;; Compares +;; + +(define_expand "cstore<mode>4" + [(set (match_operand:SI 0 "register_operand" "") + (match_operator:SI 1 "ordered_comparison_operator" + [(match_operand:I48MODE 2 "reg_or_cint_operand" "") + (match_operand:I48MODE 3 "reg_or_cint_operand" "")]))] + "" + { if (!tilepro_emit_setcc (operands, <MODE>mode)) FAIL; else DONE; }) + +(define_insn "insn_seq" + [(set (match_operand:SI 0 "register_operand" "=r,r") + (eq:SI (match_operand:SI 1 "reg_or_0_operand" "%rO,rO") + (match_operand:SI 2 "reg_or_cint_operand" "I,rO")))] + "" + "@ + seqi\t%0, %r1, %2 + seq\t%0, %r1, %r2") + +(define_insn "insn_sne" + [(set (match_operand:SI 0 "register_operand" "=r") + (ne:SI (match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_cint_operand" "rO")))] + "" + "sne\t%0, %r1, %r2") + +(define_insn "insn_slt" + [(set (match_operand:SI 0 "register_operand" "=r,r") + (lt:SI (match_operand:SI 1 "reg_or_0_operand" "rO,rO") + (match_operand:SI 2 "reg_or_cint_operand" "I,rO")))] + "" + "@ + slti\t%0, %r1, %2 + slt\t%0, %r1, %r2") + +(define_insn "insn_slte" + [(set (match_operand:SI 0 "register_operand" "=r,r") + (le:SI (match_operand:SI 1 "reg_or_0_operand" "rO,rO") + (match_operand:SI 2 "reg_or_cint_operand" "L,rO")))] + "" + "@ + slti\t%0, %r1, %P2 + slte\t%0, %r1, %r2") + +(define_insn "insn_slt_u" + [(set (match_operand:SI 0 "register_operand" "=r,r") + (ltu:SI (match_operand:SI 1 "reg_or_0_operand" "rO,rO") + (match_operand:SI 2 "reg_or_cint_operand" "I,rO")))] + "" + "@ + slti_u\t%0, %r1, %2 + slt_u\t%0, %r1, %r2") + +(define_insn "insn_slte_u" + [(set (match_operand:SI 0 "register_operand" "=r,r") + (leu:SI (match_operand:SI 1 "reg_or_0_operand" "rO,rO") + (match_operand:SI 2 "reg_or_cint_operand" "Q,rO")))] + "" + "@ + slti_u\t%0, %r1, %P2 + slte_u\t%0, %r1, %r2") + + +;; +;; Logical ops +;; + +(define_insn "andsi3" + [(set (match_operand:SI 0 "register_operand" "=r,r,r") + (and:SI (match_operand:SI 1 "reg_or_0_operand" "%rO,rO,rO") + (match_operand:SI 2 "and_operand" "I,M,rO")))] + "" + "@ + andi\t%0, %r1, %2 + mm\t%0, %r1, zero, %M2 + and\t%0, %r1, %r2" + [(set_attr "type" "*,X01,*")]) + +(define_insn "iorsi3" + [(set (match_operand:SI 0 "register_operand" "=r,r") + (ior:SI (match_operand:SI 1 "reg_or_0_operand" "%rO,rO") + (match_operand:SI 2 "reg_or_s8bit_operand" "I,rO")))] + "" + "@ + ori\t%0, %r1, %2 + or\t%0, %r1, %r2") + +(define_insn "xorsi3" + [(set (match_operand:SI 0 "register_operand" "=r,r") + (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")]) + +;; bswap, clz, ctz, popcount +(define_insn "<optab>si2" + [(set (match_operand:SI 0 "register_operand" "=r") + (unop:SI (match_operand:SI 1 "reg_or_0_operand" "rO")))] + "" + "<insn>\t%0, %r1" + [(set_attr "type" "Y0")]) + +(define_expand "ctzdi2" + [(set (match_operand:DI 0 "register_operand" "") + (ctz:DI (match_operand:DI 1 "reg_or_0_operand" "")))] + "" +{ + rtx lo, hi, ctz_lo, ctz_hi, ctz_hi_plus_32, result; + + split_di (&operands[1], 1, &lo, &hi); + lo = force_reg (SImode, lo); + hi = force_reg (SImode, hi); + + ctz_lo = gen_reg_rtx (SImode); + emit_insn (gen_ctzsi2 (ctz_lo, lo)); + + ctz_hi = gen_reg_rtx (SImode); + emit_insn (gen_ctzsi2 (ctz_hi, hi)); + + ctz_hi_plus_32 = gen_reg_rtx (SImode); + emit_insn (gen_addsi3 (ctz_hi_plus_32, ctz_hi, GEN_INT (32))); + + result = gen_reg_rtx (SImode); + emit_insn (gen_insn_mvz (result, ctz_lo, lo, ctz_hi_plus_32)); + + emit_move_insn (operands[0], convert_to_mode (DImode, result, 1)); + + DONE; +}) + +(define_expand "clzdi2" + [(set (match_operand:DI 0 "register_operand" "") + (clz:DI (match_operand:DI 1 "reg_or_0_operand" "")))] + "" +{ + rtx lo, hi, clz_lo, clz_hi, clz_lo_plus_32, result; + + split_di (&operands[1], 1, &lo, &hi); + lo = force_reg (SImode, lo); + hi = force_reg (SImode, hi); + + clz_lo = gen_reg_rtx (SImode); + emit_insn (gen_clzsi2 (clz_lo, lo)); + + clz_hi = gen_reg_rtx (SImode); + emit_insn (gen_clzsi2 (clz_hi, hi)); + + clz_lo_plus_32 = gen_reg_rtx (SImode); + emit_insn (gen_addsi3 (clz_lo_plus_32, clz_lo, GEN_INT (32))); + + result = gen_reg_rtx (SImode); + emit_insn (gen_insn_mvz (result, clz_hi, hi, clz_lo_plus_32)); + + emit_move_insn (operands[0], convert_to_mode (DImode, result, 1)); + + DONE; +}) + +(define_expand "ffsdi2" + [(set (match_operand:DI 0 "register_operand" "") + (ffs:DI (match_operand:DI 1 "reg_or_0_operand" "")))] + "" +{ + rtx lo, hi, ctz_lo, ctz_hi, ctz_hi_plus_32, ctz, ctz_plus_1,ctz_cond; + rtx result; + + split_di (&operands[1], 1, &lo, &hi); + lo = force_reg (SImode, lo); + hi = force_reg (SImode, hi); + + ctz_lo = gen_reg_rtx (SImode); + emit_insn (gen_ctzsi2 (ctz_lo, lo)); + + ctz_hi = gen_reg_rtx (SImode); + emit_insn (gen_ctzsi2 (ctz_hi, hi)); + + ctz_hi_plus_32 = gen_reg_rtx (SImode); + emit_insn (gen_addsi3 (ctz_hi_plus_32, ctz_hi, GEN_INT (32))); + + ctz = gen_reg_rtx (SImode); + emit_insn (gen_insn_mvz (ctz, ctz_lo, lo, ctz_hi_plus_32)); + + ctz_plus_1 = gen_reg_rtx (SImode); + emit_insn (gen_addsi3 (ctz_plus_1, ctz, GEN_INT (1))); + + ctz_cond = gen_reg_rtx (SImode); + emit_insn (gen_iorsi3 (ctz_cond, lo, hi)); + + result = gen_reg_rtx (SImode); + emit_insn (gen_insn_mvz (result, ctz_plus_1, ctz_cond, const0_rtx)); + + emit_move_insn (operands[0], convert_to_mode (DImode, result, 1)); + + DONE; +}) + +(define_expand "popcountdi2" + [(set (match_operand:DI 0 "register_operand" "") + (popcount:DI (match_operand:DI 1 "nonmemory_operand" "")))] + "" +{ + rtx lo, hi, popcount_lo, popcount_hi, result; + + split_di (&operands[1], 1, &lo, &hi); + lo = force_reg (SImode, lo); + hi = force_reg (SImode, hi); + + popcount_lo = gen_reg_rtx (SImode); + emit_insn (gen_popcountsi2 (popcount_lo, lo)); + + popcount_hi = gen_reg_rtx (SImode); + emit_insn (gen_popcountsi2 (popcount_hi, hi)); + + result = gen_reg_rtx (SImode); + emit_insn (gen_addsi3 (result, popcount_lo, popcount_hi)); + + emit_move_insn (operands[0], convert_to_mode (DImode, result, 1)); + + DONE; +}) + +(define_expand "paritysi2" + [(set (match_operand:SI 0 "register_operand" "") + (parity:SI (match_operand:SI 1 "reg_or_0_operand" "")))] + "" + { + operands[2] = gen_reg_rtx (SImode); + emit_insn (gen_popcountsi2 (operands[2], operands[1])); + emit_insn (gen_andsi3 (operands[0], operands[2], const1_rtx)); + DONE; + }) + +(define_expand "paritydi2" + [(set (match_operand:DI 0 "register_operand" "") + (parity:DI (match_operand:DI 1 "nonmemory_operand" "")))] + "" +{ + rtx lo, hi, xor_lohi, result; + + split_di (&operands[1], 1, &lo, &hi); + lo = force_reg (SImode, lo); + hi = force_reg (SImode, hi); + + xor_lohi = gen_reg_rtx (SImode); + emit_insn (gen_xorsi3 (xor_lohi, lo, hi)); + + result = gen_reg_rtx (SImode); + emit_insn (gen_paritysi2 (result, xor_lohi)); + + emit_move_insn (operands[0], convert_to_mode (DImode, result, 1)); + + DONE; +}) + +(define_insn "one_cmplsi2" + [(set (match_operand:SI 0 "register_operand" "=r") + (not:SI (match_operand:SI 1 "reg_or_0_operand" "rO")))] + "" + "nor\t%0, %r1, zero") + + +;; +;; Conditional moves. +;; + +(define_expand "movsicc" + [(set (match_operand:SI 0 "register_operand" "") + (if_then_else:SI (match_operand 1 "comparison_operator" "") + (match_operand:SI 2 "reg_or_0_operand" "") + (match_operand:SI 3 "reg_or_0_operand" "")))] + "" + { operands[1] = tilepro_emit_conditional_move (operands[1]); }) + +(define_insn "movcc_insn" + [(set (match_operand:SI 0 "register_operand" "=r,r,r,r") + (if_then_else:SI + (match_operator 4 "eqne_operator" + [(match_operand:SI 1 "reg_or_0_operand" "rO,rO,rO,rO") + (const_int 0)]) + (match_operand:SI 2 "reg_or_0_operand" "rO,O,rO,0") + (match_operand:SI 3 "reg_or_0_operand" "O,rO,0,rO")))] + "" + "@ + m%c4\t%0, %r1, %r2 + m%C4\t%0, %r1, %r3 + mv%c4\t%0, %r1, %r2 + mv%C4\t%0, %r1, %r3" + [(set_attr "type" "*,*,Y0,Y0")]) + +(define_expand "insn_mz" + [(set (match_operand:SI 0 "register_operand" "") + (if_then_else:SI + (eq (match_operand:SI 1 "reg_or_0_operand" "") + (const_int 0)) + (match_operand:SI 2 "reg_or_0_operand" "") + (const_int 0)))]) + +(define_expand "insn_mnz" + [(set (match_operand:SI 0 "register_operand" "") + (if_then_else:SI + (ne (match_operand:SI 1 "reg_or_0_operand" "") + (const_int 0)) + (match_operand:SI 2 "reg_or_0_operand" "") + (const_int 0)))]) + +(define_expand "insn_mvz" + [(set (match_operand:SI 0 "register_operand" "") + (if_then_else:SI + (eq (match_operand:SI 2 "reg_or_0_operand" "") + (const_int 0)) + (match_operand:SI 3 "reg_or_0_operand" "") + (match_operand:SI 1 "reg_or_0_operand" "")))]) + +(define_expand "insn_mvnz" + [(set (match_operand:SI 0 "register_operand" "") + (if_then_else:SI + (ne (match_operand:SI 2 "reg_or_0_operand" "") + (const_int 0)) + (match_operand:SI 3 "reg_or_0_operand" "") + (match_operand:SI 1 "reg_or_0_operand" "")))]) + + +;; +;; Conversions +;; + +(define_insn "zero_extendqisi2" + [(set (match_operand:SI 0 "register_operand" "=r,r,r") + (zero_extend:SI (match_operand:QI 1 "move_operand" "rO,U,m")))] + "" + "@ + mm\t%0, %r1, zero, 0, 7 + lb_u\t%0, %1 + lbadd_u\t%0, %I1, %i1" + [(set_attr "type" "X01,Y2_2cycle,X1_2cycle")]) + +(define_insn "zero_extendhisi2" + [(set (match_operand:SI 0 "register_operand" "=r,r,r") + (zero_extend:SI (match_operand:HI 1 "move_operand" "rO,U,m")))] + "" + "@ + mm\t%0, %r1, zero, 0, 15 + lh_u\t%0, %1 + lhadd_u\t%0, %I1, %i1" + [(set_attr "type" "X01,Y2_2cycle,X1_2cycle")]) + +(define_expand "extendhisi2" + [(set (match_operand:SI 0 "register_operand" "") + (sign_extend:SI (match_operand:HI 1 "move_operand" "")))] + "" +{ + if (!memory_operand (operands[1], HImode)) + { + operands[1] = gen_lowpart (SImode, operands[1]); + operands[2] = can_create_pseudo_p () ? gen_reg_rtx (SImode) : operands[0]; + + emit_move_insn (operands[2], gen_rtx_ASHIFT (SImode, operands[1], + GEN_INT (16))); + emit_move_insn (operands[0], gen_rtx_ASHIFTRT (SImode, operands[2], + GEN_INT (16))); + DONE; + } +}) + +(define_insn "*lh" + [(set (match_operand:SI 0 "register_operand" "=r,r") + (sign_extend:SI (match_operand:HI 1 "memory_operand" "U,m")))] + "" + "@ + lh\t%0, %1 + lhadd\t%0, %I1, %i1" + [(set_attr "type" "Y2_2cycle,X1_2cycle")]) + +(define_expand "extendqisi2" + [(set (match_operand:SI 0 "register_operand" "") + (sign_extend:SI (match_operand:QI 1 "move_operand" "")))] + "" +{ + if (!memory_operand (operands[1], QImode)) + { + operands[1] = gen_lowpart (SImode, operands[1]); + operands[2] = can_create_pseudo_p () ? gen_reg_rtx (SImode) : operands[0]; + + emit_move_insn (operands[2], gen_rtx_ASHIFT (SImode, operands[1], + GEN_INT (24))); + emit_move_insn (operands[0], gen_rtx_ASHIFTRT (SImode, operands[2], + GEN_INT (24))); + DONE; + } +}) + +(define_insn "*lb" + [(set (match_operand:SI 0 "register_operand" "=r,r") + (sign_extend:SI (match_operand:QI 1 "memory_operand" "U,m")))] + "" + "@ + lb\t%0, %1 + lbadd\t%0, %I1, %i1" + [(set_attr "type" "Y2_2cycle,X1_2cycle")]) + +;; +;; insv patterns +;; +(define_expand "insv" + [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "") + (match_operand:SI 1 "u5bit_cint_operand" "") + (match_operand:SI 2 "u5bit_cint_operand" "")) + (match_operand:SI 3 "reg_or_cint_operand" ""))] + "" +{ + tilepro_expand_insv (operands); + DONE; +}) + +(define_insn "*insv_tblidxb0" + [(set (zero_extract:SI + (match_operand:SI 0 "register_operand" "+r") + (const_int 8) + (const_int 2)) + (match_operand:SI 1 "register_operand" "rO"))] + "" + "tblidxb0\t%0, %r1" + [(set_attr "type" "Y0")]) + +(define_insn "*insv_tblidxb1" + [(set (zero_extract:SI + (match_operand:SI 0 "register_operand" "+r") + (const_int 8) + (const_int 2)) + (zero_extract:SI + (const_int 8) + (const_int 8) + (match_operand:SI 1 "register_operand" "rO")))] + "" + "tblidxb1\t%0, %r1" + [(set_attr "type" "Y0")]) + +(define_insn "*insv_tblidxb2" + [(set (zero_extract:SI + (match_operand:SI 0 "register_operand" "+r") + (const_int 8) + (const_int 2)) + (zero_extract:SI + (const_int 8) + (const_int 16) + (match_operand:SI 1 "register_operand" "rO")))] + "" + "tblidxb2\t%0, %r1" + [(set_attr "type" "Y0")]) + +(define_insn "*insv_tblidxb3" + [(set (zero_extract:SI + (match_operand:SI 0 "register_operand" "+r") + (const_int 8) + (const_int 2)) + (zero_extract:SI + (const_int 8) + (const_int 24) + (match_operand:SI 1 "register_operand" "rO")))] + "" + "tblidxb3\t%0, %r1" + [(set_attr "type" "Y0")]) + +(define_insn "*insv_mm1" + [(set (zero_extract:SI + (match_operand:SI 0 "register_operand" "+r") + (match_operand:SI 1 "u5bit_cint_operand" "n") + (const_int 0)) + (match_operand:SI 2 "register_operand" "rO"))] + "" + "mm\t%0, %r2, %0, 0, %1-1" + [(set_attr "type" "X01")]) + +(define_insn "*insv_mm2" + [(set (zero_extract:SI + (match_operand:SI 0 "register_operand" "+r") + (match_operand:SI 1 "u5bit_cint_operand" "n") + (match_operand:SI 2 "u5bit_cint_operand" "n")) + (zero_extract:SI + (match_operand:SI 3 "register_operand" "rO") + (match_dup 1) + (match_dup 2)))] + "" + "mm\t%0, %r3, %0, %2, %2+%1-1" + [(set_attr "type" "X01")]) + + +;; +;; Multiplies +;; + +(define_expand "mulsi3" + [(set (match_operand:SI 0 "register_operand" "=r") + (mult:SI (zero_extend:SI + (subreg:HI (match_operand:SI 1 "nonmemory_operand" "") 0)) + (zero_extend:SI + (subreg:HI (match_operand:SI 2 "nonmemory_operand" "") 0)))) + (set (match_dup 0) + (unspec:SI [(match_dup 0) (match_dup 1) (match_dup 2)] + UNSPEC_INSN_MULHLSA_UU)) + (set (match_dup 0) + (unspec:SI [(match_dup 0) (match_dup 2) (match_dup 1)] + UNSPEC_INSN_MULHLSA_UU))] + "" + { + operands[1] = force_reg (SImode, operands[1]); + operands[1] = make_safe_from (operands[1], operands[0]); + + if (tilepro_expand_mulsi (operands[0], operands[1], operands[2])) + DONE; + else + { + operands[2] = force_reg (SImode, operands[2]); + operands[2] = make_safe_from (operands[2], operands[0]); + } + }) + +(define_insn "mulhisi3" + [(set (match_operand:SI 0 "register_operand" "=r") + (mult:SI (sign_extend:SI + (match_operand:HI 1 "reg_or_0_operand" "rO")) + (sign_extend:SI + (match_operand:HI 2 "reg_or_0_operand" "rO"))))] + "" + "mulll_ss\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "umulhisi3" + [(set (match_operand:SI 0 "register_operand" "=r") + (mult:SI (zero_extend:SI + (match_operand:HI 1 "reg_or_0_operand" "rO")) + (zero_extend:SI + (match_operand:HI 2 "reg_or_0_operand" "rO"))))] + "" + "mulll_uu\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "usmulhisi3" + [(set (match_operand:SI 0 "register_operand" "=r") + (mult:SI (zero_extend:SI + (match_operand:HI 1 "reg_or_0_operand" "rO")) + (sign_extend:SI + (match_operand:HI 2 "reg_or_0_operand" "rO"))))] + "" + "mulll_su\t%0, %r2, %r1" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "maddhisi4" + [(set (match_operand:SI 0 "register_operand" "=r") + (plus:SI + (mult:SI (sign_extend:SI + (match_operand:HI 1 "reg_or_0_operand" "rO")) + (sign_extend:SI + (match_operand:HI 2 "reg_or_0_operand" "rO"))) + (match_operand:SI 3 "register_operand" "0")))] + "" + "mullla_ss\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "umaddhisi4" + [(set (match_operand:SI 0 "register_operand" "=r") + (plus:SI + (mult:SI (zero_extend:SI + (match_operand:HI 1 "reg_or_0_operand" "rO")) + (zero_extend:SI + (match_operand:HI 2 "reg_or_0_operand" "rO"))) + (match_operand:SI 3 "register_operand" "0")))] + "" + "mullla_uu\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + + +(define_insn "mulqihi3" + [(set (match_operand:HI 0 "register_operand" "=r") + (mult:HI (sign_extend:HI + (match_operand:QI 1 "reg_or_0_operand" "rO")) + (sign_extend:HI + (match_operand:QI 2 "reg_or_0_operand" "rO"))))] + "" + "mulll_ss\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "umulqihi3" + [(set (match_operand:HI 0 "register_operand" "=r") + (mult:HI (zero_extend:HI + (match_operand:QI 1 "reg_or_0_operand" "rO")) + (zero_extend:HI + (match_operand:QI 2 "reg_or_0_operand" "rO"))))] + "" + "mulll_uu\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_expand "smulsi3_highpart" + [(set (match_operand:SI 0 "register_operand" "") + (truncate:SI + (ashiftrt:DI + (mult:DI (sign_extend:DI (match_operand:SI 1 "reg_or_0_operand" "")) + (sign_extend:DI (match_operand:SI 2 "reg_or_0_operand" ""))) + (const_int 32))))] + "" + { + tilepro_expand_smulsi3_highpart (operands[0], operands[1], operands[2]); + DONE; + }) + +(define_expand "umulsi3_highpart" + [(set (match_operand:SI 0 "register_operand" "") + (truncate:SI + (lshiftrt:DI + (mult:DI (zero_extend:DI (match_operand:SI 1 "reg_or_0_operand" "")) + (zero_extend:DI (match_operand:SI 2 "reg_or_0_operand" ""))) + (const_int 32))))] + "" +{ + tilepro_expand_umulsi3_highpart (operands[0], operands[1], operands[2]); + DONE; +}) + + +;; +;; 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 "" "")) ;; iterations; zero if unknown + (use (match_operand 2 "" "")) ;; max iterations + (use (match_operand 3 "" "")) ;; loop level + (use (match_operand 4 "" ""))] ;; label + "" +{ + if (optimize > 0) + { + rtx s0; + rtx bcomp; + rtx loc_ref; + + /* only do inner loop */ + if (INTVAL (operands[3]) > 1) + FAIL; + /* only deal with loop counters in SImode */ + if (GET_MODE (operands[0]) != SImode) + FAIL; + + s0 = operands [0]; + + emit_move_insn (s0, gen_rtx_PLUS (SImode, s0, GEN_INT (-1))); + bcomp = gen_rtx_NE(SImode, s0, const0_rtx); + loc_ref = gen_rtx_LABEL_REF (VOIDmode, operands [4]); + 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)] + "" +{ + tilepro_expand_prologue (); + DONE; +}) + +(define_expand "epilogue" + [(const_int 0)] + "" +{ + tilepro_expand_epilogue (false); + DONE; +}) + +(define_expand "sibcall_epilogue" + [(const_int 0)] + "" +{ + tilepro_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)))] + "" + "tilepro_allocate_stack (operands[0], operands[1]); DONE;") + +;; +;; Branches +;; +(define_expand "call" + [(parallel [(call (match_operand:SI 0 "call_operand" "") + (match_operand 1 "" "")) + (use (reg:SI 54)) + (clobber (reg:SI 55))])] + "" + "") + +(define_insn "*call_insn" + [(call (mem:SI (match_operand:SI 0 "call_address_operand" "rO,i")) + (match_operand 1 "" "")) + (use (reg:SI 54)) + (clobber (reg:SI 55))] + "" + "@ + jalr\t%r0 + jal\t%p0" + [(set_attr "type" "X1,X1")]) + +(define_expand "call_value" + [(parallel [(set (match_operand 0 "register_operand" "") + (call (match_operand:SI 1 "call_operand" "") + (match_operand 2 "" ""))) + (use (reg:SI 54)) + (clobber (reg:SI 55))])] + "") + +(define_insn "*call_value_insn" + [(set (match_operand 0 "register_operand" "=r,r") + (call (mem:SI (match_operand:SI 1 "call_address_operand" "rO,i")) + (match_operand 2 "" ""))) + (use (reg:SI 54)) + (clobber (reg:SI 55))] + "" + "@ + jalr\t%r1 + jal\t%p1" + [(set_attr "type" "X1,X1")]) + +(define_expand "sibcall" + [(parallel [(call (match_operand:SI 0 "call_operand" "") + (match_operand 1 "" "")) + (use (reg:SI 54))])] + "" + "") + +(define_insn "*sibcall_insn" + [(call (mem:SI (match_operand:SI 0 "call_address_operand" "rO,i")) + (match_operand 1 "" "")) + (use (reg:SI 54))] + "SIBLING_CALL_P(insn)" + "@ + jr\t%r0 + j\t%p0" + [(set_attr "type" "X1,X1")]) + +(define_expand "sibcall_value" + [(parallel [(set (match_operand 0 "" "") + (call (match_operand:SI 1 "call_operand" "") + (match_operand:SI 2 "" ""))) + (use (reg:SI 54))])] + "" + "") + +(define_insn "*sibcall_value" + [(set (match_operand 0 "" "") + (call (mem:SI (match_operand:SI 1 "call_address_operand" "rO,i")) + (match_operand:SI 2 "" ""))) + (use (reg:SI 54))] + "SIBLING_CALL_P(insn)" + "@ + jr\t%r1 + j\t%p1" + [(set_attr "type" "X1,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:SI 0 "register_operand" "rO"))] + "" + "jr\t%r0" + [(set_attr "type" "X1")]) + +(define_expand "return" + [(parallel + [(return) + (use (reg:SI 55))])] + "tilepro_can_use_return_insn_p ()" + "") + +(define_insn "_return" + [(return) + (use (reg:SI 55))] + "reload_completed" + "jrp\tlr" + [(set_attr "type" "X1")]) + +(define_expand "tablejump" + [(set (pc) (match_operand:SI 0 "register_operand" "")) + (use (label_ref (match_operand 1 "" "")))] + "" +{ + tilepro_expand_tablejump (operands[0], operands[1]); + DONE; +}) + +(define_insn "tablejump_aux" + [(set (pc) (match_operand:SI 0 "register_operand" "r")) + (use (label_ref (match_operand 1 "" "")))] + "" + "jr\t%0" + [(set_attr "type" "X1")]) + +;; 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: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,J"))) + (clobber (mem:BLK (scratch)))] + "" + "@ + add\t%0, %1, %2 + addi\t%0, %1, %2 + addli\t%0, %1, %2" + [(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" + [(set (match_operand:SI 0 "register_operand" "=r") + (match_operand:SI 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 "cbranchsi4" + [(set (pc) + (if_then_else (match_operator 0 "ordered_comparison_operator" + [(match_operand:SI 1 "reg_or_cint_operand") + (match_operand:SI 2 "reg_or_cint_operand")]) + (label_ref (match_operand 3 "")) + (pc)))] + "" + { tilepro_emit_conditional_branch (operands, SImode); DONE; }) + + +(define_expand "cbranchdi4" + [(set (pc) + (if_then_else (match_operator 0 "ordered_comparison_operator" + [(match_operand:DI 1 "reg_or_cint_operand") + (match_operand:DI 2 "reg_or_cint_operand")]) + (label_ref (match_operand 3 "")) + (pc)))] + "" + { tilepro_emit_conditional_branch (operands, DImode); DONE; }) + + +(define_insn "*bcc_normal" + [(set (pc) + (if_then_else + (match_operator 1 "signed_comparison_operator" + [(match_operand:SI 2 "reg_or_0_operand" "rO") + (const_int 0)]) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + { return tilepro_output_cbranch (insn, operands, false); } + [(set_attr "type" "X1_branch")]) + +(define_insn "*bcc_reverse" + [(set (pc) + (if_then_else + (match_operator 1 "signed_comparison_operator" + [(match_operand:SI 2 "reg_or_0_operand" "rO") + (const_int 0)]) + (pc) + (label_ref (match_operand 0 "" ""))))] + "" + { return tilepro_output_cbranch (insn, operands, true); } + [(set_attr "type" "X1_branch")]) + +;; FIXME: the straight forward versions which do not include the +;; subreg:QI does not match for some unknown reason. +(define_insn "*bbs_normal" + [(set (pc) + (if_then_else + (ne (zero_extract:SI (subreg:QI + (match_operand:SI 1 "reg_or_0_operand" "rO") 0) + (const_int 1) + (const_int 0)) + (const_int 0)) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + { return tilepro_output_cbranch_with_opcode (insn, operands, "bbs", "bbns", + 1, 0); } + [(set_attr "type" "X1_branch")]) + +(define_insn "*bbc_normal" + [(set (pc) + (if_then_else + (eq (zero_extract:SI (subreg:QI + (match_operand:SI 1 "reg_or_0_operand" "rO") 0) + (const_int 1) + (const_int 0)) + (const_int 0)) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + { return tilepro_output_cbranch_with_opcode (insn, operands, "bbns", "bbs", + 1, 0); } + [(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:SI 0 "address_operand" "rO") + (match_operand:SI 1 "const_int_operand" "") + (match_operand:SI 2 "const_int_operand" ""))] + "" + "prefetch\t%r0" + [(set_attr "type" "Y2")]) + + +;; +;; Network intrinsics +;; + +;; Note the "pseudo" text is handled specially by the +;; asm_output_opcode routine. If the output is an empty string, the +;; instruction would bypass the asm_output_opcode routine, bypassing +;; the bundle handling code. +(define_insn "tilepro_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:SI 0 "nonimmediate_operand" "=r,U,m") + (unspec_volatile:SI [(match_operand:SI 1 "netreg_operand" "i,i,i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "@ + move\t%0, %N1 + sw\t%0, %N1 + swadd\t%I0, %N1, %i0" + [(set_attr "type" "*,Y2,X1")]) + +(define_insn "*netreg_send" + [(unspec_volatile:SI + [(match_operand:SI 0 "netreg_operand" "i,i,i,i,i,i") + (match_operand:SI 1 "reg_or_cint_operand" "rO,I,J,K,N,P") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "@ + move\t%N0, %r1 + movei\t%N0, %1 + moveli\t%N0, %1 + auli\t%N0, zero, %h1 + addib\t%N0, zero, %j1 + addih\t%N0, zero, %h1" + [(set_attr "type" "*,*,X01,X01,X01,X01")]) + +(define_insn "*netreg_copy" + [(unspec_volatile:SI + [(match_operand:SI 0 "netreg_operand" "i") + (unspec_volatile:SI [(match_operand:SI 1 "netreg_operand" "i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE) + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:SI TILEPRO_NETORDER_REG)) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "move %N0, %N1") + +(define_expand "tilepro_idn0_receive" + [(parallel + [(set (match_operand:SI 0 "register_operand" "") + (unspec_volatile:SI [(const_int TILEPRO_NETREG_IDN0) + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)) + (clobber (reg:SI TILEPRO_NETORDER_REG))])] + "") + +(define_expand "tilepro_idn1_receive" + [(parallel + [(set (match_operand:SI 0 "register_operand" "") + (unspec_volatile:SI [(const_int TILEPRO_NETREG_IDN1) + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)) + (clobber (reg:SI TILEPRO_NETORDER_REG))])] + "") + +(define_expand "tilepro_idn_send" + [(parallel + [(unspec_volatile:SI [(const_int TILEPRO_NETREG_IDN0) + (match_operand:SI 0 "reg_or_cint_operand" "") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:SI TILEPRO_NETORDER_REG))])] + "") + +(define_expand "tilepro_sn_receive" + [(parallel + [(set (match_operand:SI 0 "register_operand" "") + (unspec_volatile:SI [(const_int TILEPRO_NETREG_SN) + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)) + (clobber (reg:SI TILEPRO_NETORDER_REG))])] + "") + +(define_expand "tilepro_sn_send" + [(parallel + [(unspec_volatile:SI [(const_int TILEPRO_NETREG_SN) + (match_operand:SI 0 "reg_or_cint_operand" "") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:SI TILEPRO_NETORDER_REG))])] + "") + +(define_expand "tilepro_udn0_receive" + [(parallel + [(set (match_operand:SI 0 "register_operand" "") + (unspec_volatile:SI [(const_int TILEPRO_NETREG_UDN0) + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)) + (clobber (reg:SI TILEPRO_NETORDER_REG))])] + "") + +(define_expand "tilepro_udn1_receive" + [(parallel + [(set (match_operand:SI 0 "register_operand" "") + (unspec_volatile:SI [(const_int TILEPRO_NETREG_UDN1) + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)) + (clobber (reg:SI TILEPRO_NETORDER_REG))])] + "") + +(define_expand "tilepro_udn2_receive" + [(parallel + [(set (match_operand:SI 0 "register_operand" "") + (unspec_volatile:SI [(const_int TILEPRO_NETREG_UDN2) + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)) + (clobber (reg:SI TILEPRO_NETORDER_REG))])] + "") + +(define_expand "tilepro_udn3_receive" + [(parallel + [(set (match_operand:SI 0 "register_operand" "") + (unspec_volatile:SI [(const_int TILEPRO_NETREG_UDN3) + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)) + (clobber (reg:SI TILEPRO_NETORDER_REG))])] + "") + +(define_expand "tilepro_udn_send" + [(parallel + [(unspec_volatile:SI [(const_int TILEPRO_NETREG_UDN0) + (match_operand:SI 0 "reg_or_cint_operand" "") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:SI TILEPRO_NETORDER_REG))])] + "") + +(define_insn "*netreg_add_to_network" + [(unspec_volatile:SI + [(match_operand:SI 0 "netreg_operand" "i,i,i,i") + (plus:SI (match_operand:SI 1 "reg_or_0_operand" "%rO,rO,rO,rO") + (match_operand:SI 2 "add_operand" "r,I,J,K")) + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "@ + add\t%N0, %r1, %2 + addi\t%N0, %r1, %2 + addli\t%N0, %r1, %2 + auli\t%N0, %r1, %h2" + [(set_attr "type" "*,*,X01,X01")]) + +(define_insn "*netreg_add_from_network" + [(set (match_operand:SI 0 "register_operand" "=r,r,r,r") + (plus:SI + (unspec_volatile:SI [(match_operand:SI 1 "netreg_operand" "i,i,i,i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE) + (match_operand:SI 2 "add_operand" "rO,I,J,K"))) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "@ + add\t%0, %N1, %r2 + addi\t%0, %N1, %2 + addli\t%0, %N1, %2 + auli\t%0, %N1, %h2" + [(set_attr "type" "*,*,X01,X01")]) + +(define_insn "*netreg_add_from_to_network" + [(unspec_volatile:SI + [(match_operand:SI 0 "netreg_operand" "i,i,i,i") + (plus:SI + (unspec_volatile:SI [(match_operand:SI 1 "netreg_operand" "i,i,i,i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE) + (match_operand:SI 2 "add_operand" "rO,I,J,K")) + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:SI TILEPRO_NETORDER_REG)) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "@ + add\t%N0, %N1, %r2 + addi\t%N0, %N1, %2 + addli\t%N0, %N1, %2 + auli\t%N0, %N1, %h2" + [(set_attr "type" "*,*,X01,X01")]) + +(define_code_iterator netreg_binop + [minus]) + +(define_insn "*netreg_binop_to_network" + [(unspec_volatile:SI + [(match_operand:SI 0 "netreg_operand" "i") + (netreg_binop:SI (match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")) + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "<insn>\t%N0, %r1, %r2") + +(define_insn "*netreg_binop_from_network0" + [(set (match_operand:SI 0 "register_operand" "=r") + (netreg_binop:SI + (unspec_volatile:SI [(match_operand:SI 1 "netreg_operand" "i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE) + (match_operand:SI 2 "reg_or_0_operand" "rO"))) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "<insn>\t%0, %N1, %r2") + +(define_insn "*netreg_binop_from_network1" + [(set (match_operand:SI 0 "register_operand" "=r") + (netreg_binop:SI + (match_operand:SI 1 "reg_or_0_operand" "rO") + (unspec_volatile:SI [(match_operand:SI 2 "netreg_operand" "i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE))) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "<insn>\t%0, %r1, %N2") + +(define_insn "*netreg_binop_from_to_network0" + [(unspec_volatile:SI + [(match_operand:SI 0 "netreg_operand" "i") + (netreg_binop:SI + (unspec_volatile:SI [(match_operand:SI 1 "netreg_operand" "i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE) + (match_operand:SI 2 "reg_or_0_operand" "rO")) + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:SI TILEPRO_NETORDER_REG)) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "<insn>\t%N0, %N1, %r2") + +(define_insn "*netreg_binop_from_to_network1" + [(unspec_volatile:SI + [(match_operand:SI 0 "netreg_operand" "i") + (netreg_binop:SI + (match_operand:SI 1 "reg_or_0_operand" "rO") + (unspec_volatile:SI [(match_operand:SI 2 "netreg_operand" "i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)) + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:SI TILEPRO_NETORDER_REG)) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "<insn>\t%N0, %r1, %N2") + +(define_insn "*netreg_binop_to_network" + [(unspec_volatile:SI + [(match_operand:SI 0 "netreg_operand" "i,i") + (binop_with_imm:SI (match_operand:SI 1 "reg_or_0_operand" "rO,rO") + (match_operand:SI 2 "reg_or_cint_operand" "I,rO")) + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "@ + <insn>i<u>\t%N0, %r1, %2 + <insn><u>\t%N0, %r1, %r2") + +(define_insn "*netreg_binop_from_network" + [(set (match_operand:SI 0 "register_operand" "=r,r") + (binop_with_imm:SI + (unspec_volatile:SI [(match_operand:SI 1 "netreg_operand" "i,i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE) + (match_operand:SI 2 "reg_or_cint_operand" "I,rO"))) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "@ + <insn>i<u>\t%0, %N1, %2 + <insn><u>\t%0, %N1, %r2") + +(define_insn "*netreg_binop_from_to_network" + [(unspec_volatile:SI + [(match_operand:SI 0 "netreg_operand" "i,i") + (binop_with_imm:SI + (unspec_volatile:SI [(match_operand:SI 1 "netreg_operand" "i,i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE) + (match_operand:SI 2 "reg_or_cint_operand" "I,rO")) + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:SI TILEPRO_NETORDER_REG)) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "@ + <insn>i<u>\t%N0, %N1, %2 + <insn><u>\t%N0, %N1, %r2") + +(define_insn "*netreg_unop_to_network" + [(unspec_volatile:SI [(match_operand:SI 0 "netreg_operand" "i") + (unop:SI (match_operand:SI 1 "reg_or_0_operand" "rO")) + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "<insn>\t%N0, %r1" + [(set_attr "type" "Y0")]) + +(define_insn "*netreg_unop_from_network" + [(set (match_operand:SI 0 "register_operand" "=r") + (unop:SI + (unspec_volatile:SI [(match_operand:SI 1 "netreg_operand" "i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE))) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "<insn>\t%0, %N1" + [(set_attr "type" "Y0")]) + +(define_insn "*netreg_unop_from_to_network" + [(unspec_volatile:SI + [(match_operand:SI 0 "netreg_operand" "i") + (unop:SI + (unspec_volatile:SI [(match_operand:SI 1 "netreg_operand" "i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)) + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_SEND) + (clobber (reg:SI TILEPRO_NETORDER_REG)) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "<insn>\t%N0, %N1" + [(set_attr "type" "Y0")]) + +(define_insn "*netreg_sadh_u_from_network0" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI + [(unspec_volatile:SI [(match_operand:SI 1 "netreg_operand" "i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE) + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_SADH_U)) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "sadh_u\t%0, %N1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "*netreg_sadh_u_from_network1" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI + [(match_operand:SI 1 "reg_or_0_operand" "rO") + (unspec_volatile:SI [(match_operand:SI 2 "netreg_operand" "i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)] + UNSPEC_INSN_SADH_U)) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "sadh_u\t%0, %r1, %N2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "*netreg_sadah_u_from_network0" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI + [(match_operand:SI 1 "reg_or_0_operand" "0") + (unspec_volatile:SI [(match_operand:SI 2 "netreg_operand" "i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE) + (match_operand:SI 3 "reg_or_0_operand" "rO")] + UNSPEC_INSN_SADAH_U)) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "sadah_u\t%0, %N2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "*netreg_sadah_u_from_network1" + [(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") + (unspec_volatile:SI [(match_operand:SI 3 "netreg_operand" "i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE)] + UNSPEC_INSN_SADAH_U)) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + "sadah_u\t%0, %r2, %N3" + [(set_attr "type" "X0_2cycle")]) + +(define_code_iterator mm_combiner [ior xor plus]) + +;; This doesn't seem to match -- too complex for 'combine'? +;; +;; (define_insn "*netreg_mm_to_network" +;; [(unspec_volatile:SI +;; [(match_operand:SI 0 "netreg_operand" "i") +;; (mm_combiner:SI +;; (and:SI (match_operand:SI 1 "reg_or_0_operand" "rO") +;; (match_operand:SI 3 "const_int_operand" "n")) +;; (and:SI (match_operand:SI 2 "reg_or_0_operand" "rO") +;; (match_operand:SI 4 "const_int_operand" "n")))] +;; UNSPEC_NETWORK_SEND)] +;; "tilepro_bitfield_operand_p (INTVAL (operands[3]), NULL, NULL) +;; && INTVAL (operands[3]) == ~INTVAL (operands[4])" +;; "mm\t%N0, %r1, %r2, %M3" +;; [(set_attr "type" "X01")]) + +;; FIXME: the straight forward versions which do not include the +;; subreg:QI does not match for some unknown reason. +(define_insn "*netreg_bbs_normal" + [(set (pc) + (if_then_else + (ne (zero_extract:SI + (subreg:QI + (unspec_volatile:SI [(match_operand:SI 1 "netreg_operand" "i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE) 0) + (const_int 1) + (const_int 0)) + (const_int 0)) + (label_ref (match_operand 0 "" "")) + (pc))) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + { return tilepro_output_cbranch_with_opcode (insn, operands, "bbs", "bbns", + 1, 1); } + [(set_attr "type" "X1_branch")]) + +(define_insn "*netreg_bbc_normal" + [(set (pc) + (if_then_else + (eq (zero_extract:SI + (subreg:QI + (unspec_volatile:SI [(match_operand:SI 1 "netreg_operand" "i") + (reg:SI TILEPRO_NETORDER_REG)] + UNSPEC_NETWORK_RECEIVE) 0) + (const_int 1) + (const_int 0)) + (const_int 0)) + (label_ref (match_operand 0 "" "")) + (pc))) + (clobber (reg:SI TILEPRO_NETORDER_REG))] + "" + { return tilepro_output_cbranch_with_opcode (insn, operands, "bbns", "bbns", + 1, 1); } + [(set_attr "type" "X1_branch")]) + + +;; +;; "__insn" Intrinsics (some expand directly to normal patterns above). +;; + +(define_insn "insn_addlis" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec_volatile:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "s16bit_cint_operand" "i")] + UNSPEC_INSN_ADDLIS))] + "" + "addlis\t%0, %r1, %2" + [(set_attr "type" "X01")]) + +(define_insn "insn_auli" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "s16bit_cint_operand" "i")] + UNSPEC_INSN_AULI))] + "" + "auli\t%0, %r1, %2" + [(set_attr "type" "X01")]) + +(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:SI 0 "reg_or_0_operand" "rO")] + UNSPEC_INSN_ICOH)] + "" + "icoh\t%r0" + [(set_attr "type" "X1")]) + + +(define_insn "insn_info" + [(unspec_volatile:VOID [(match_operand:SI 0 "s8bit_cint_operand" "i")] + UNSPEC_INSN_INFO)] + "" + "info\t%0") + +(define_insn "insn_infol" + [(unspec_volatile:VOID [(match_operand:SI 0 "s16bit_cint_operand" "i")] + UNSPEC_INSN_INFOL)] + "" + "infol\t%0" + [(set_attr "type" "X01")]) + +;; loads + +(define_expand "insn_<load>" + [(set (match_operand:SI 0 "register_operand" "") + (sign_extend:SI + (mem:I12MODE (match_operand:SI 1 "address_operand" ""))))] + "") + +(define_expand "insn_<load>_u" + [(set (match_operand:SI 0 "register_operand" "") + (zero_extend:SI + (mem:I12MODE (match_operand:SI 1 "address_operand" ""))))] + "") + +(define_insn "insn_<load>add" + [(set (match_operand:SI 1 "register_operand" "=r") + (plus:SI (match_operand:SI 3 "register_operand" "1") + (match_operand:SI 2 "s8bit_cint_operand" "i"))) + (set (match_operand:SI 0 "register_operand" "=r") + (sign_extend:SI (mem:I12MODE (match_dup 3))))] + "" + "<load>add\t%0, %1, %2" + [(set_attr "type" "X1_2cycle")]) + +(define_insn "insn_<load>add_u" + [(set (match_operand:SI 1 "register_operand" "=r") + (plus:SI (match_operand:SI 3 "register_operand" "1") + (match_operand:SI 2 "s8bit_cint_operand" "i"))) + (set (match_operand:SI 0 "register_operand" "=r") + (zero_extend:SI (mem:I12MODE (match_dup 3))))] + "" + "<load>add_u\t%0, %1, %2" + [(set_attr "type" "X1_2cycle")]) + +(define_expand "insn_lw" + [(set (match_operand:SI 0 "register_operand" "") + (mem:SI (match_operand:SI 1 "address_operand" "")))] + "") + +(define_insn "insn_lwadd" + [(set (match_operand:SI 1 "register_operand" "=r") + (plus:SI (match_operand:SI 3 "register_operand" "1") + (match_operand:SI 2 "s8bit_cint_operand" "i"))) + (set (match_operand:SI 0 "register_operand" "=r") + (mem:SI (match_dup 3)))] + "" + "lwadd\t%0, %1, %2" + [(set_attr "type" "X1_2cycle")]) + +(define_insn "insn_lwadd_na" + [(set (match_operand:SI 1 "register_operand" "=r") + (plus:SI (match_operand:SI 3 "register_operand" "1") + (match_operand:SI 2 "s8bit_cint_operand" "i"))) + (set (match_operand:SI 0 "register_operand" "=r") + (mem:SI (and:SI (match_dup 3) (const_int -4))))] + "" + "lwadd_na\t%0, %1, %2" + [(set_attr "type" "X1_2cycle")]) + +(define_insn "insn_lw_na" + [(set (match_operand:SI 0 "register_operand" "=r") + (mem:SI (and:SI (match_operand:SI 1 "address_operand" "rO") + (const_int -4))))] + "" + "lw_na\t%0, %r1" + [(set_attr "type" "X1_2cycle")]) + +;; L2 hits + +(define_insn "insn_<load>_L2" + [(set (match_operand:SI 0 "register_operand" "=r") + (sign_extend:SI + (unspec:I12MODE + [(mem:I12MODE (match_operand:SI 1 "address_operand" "rO"))] + UNSPEC_LATENCY_L2)))] + "" + "<load>\t%0, %r1" + [(set_attr "type" "Y2_L2")]) + +(define_insn "insn_<load>_u_L2" + [(set (match_operand:SI 0 "register_operand" "=r") + (zero_extend:SI + (unspec:I12MODE + [(mem:I12MODE (match_operand:SI 1 "address_operand" "rO"))] + UNSPEC_LATENCY_L2)))] + "" + "<load>_u\t%0, %r1" + [(set_attr "type" "Y2_L2")]) + +(define_insn "insn_<load>add_L2" + [(set (match_operand:SI 1 "register_operand" "=r") + (plus:SI (match_operand:SI 3 "register_operand" "1") + (match_operand:SI 2 "s8bit_cint_operand" "i"))) + (set (match_operand:SI 0 "register_operand" "=r") + (sign_extend:SI (unspec:I12MODE [(mem:I12MODE (match_dup 3))] + UNSPEC_LATENCY_L2)))] + "" + "<load>add\t%0, %1, %2" + [(set_attr "type" "X1_L2")]) + +(define_insn "insn_<load>add_u_L2" + [(set (match_operand:SI 1 "register_operand" "=r") + (plus:SI (match_operand:SI 3 "register_operand" "1") + (match_operand:SI 2 "s8bit_cint_operand" "i"))) + (set (match_operand:SI 0 "register_operand" "=r") + (zero_extend:SI (unspec:I12MODE [(mem:I12MODE (match_dup 3))] + UNSPEC_LATENCY_L2)))] + "" + "<load>add_u\t%0, %1, %2" + [(set_attr "type" "X1_L2")]) + +(define_insn "insn_lwadd_L2" + [(set (match_operand:SI 1 "register_operand" "=r") + (plus:SI (match_operand:SI 3 "register_operand" "1") + (match_operand:SI 2 "s8bit_cint_operand" "i"))) + (set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(mem:SI (match_dup 3))] UNSPEC_LATENCY_L2))] + "" + "lwadd\t%0, %1, %2" + [(set_attr "type" "X1_L2")]) + +(define_insn "insn_lwadd_na_L2" + [(set (match_operand:SI 1 "register_operand" "=r") + (plus:SI (match_operand:SI 3 "register_operand" "1") + (match_operand:SI 2 "s8bit_cint_operand" "i"))) + (set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(mem:SI (and:SI (match_dup 3) (const_int -4)))] + UNSPEC_LATENCY_L2))] + "" + "lwadd_na\t%0, %1, %2" + [(set_attr "type" "X1_L2")]) + +(define_insn "insn_lw_na_L2" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(mem:SI (and:SI (match_operand:SI 1 "address_operand" "rO") + (const_int -4)))] + UNSPEC_LATENCY_L2))] + "" + "lw_na\t%0, %r1" + [(set_attr "type" "X1_L2")]) + +(define_insn "insn_lw_L2" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(mem:SI (match_operand:SI 1 "address_operand" "rO"))] + UNSPEC_LATENCY_L2))] + "" + "lw\t%0, %r1" + [(set_attr "type" "Y2_L2")]) + +;; L2 miss + +(define_insn "insn_<load>_miss" + [(set (match_operand:SI 0 "register_operand" "=r") + (sign_extend:SI + (unspec:I12MODE + [(mem:I12MODE (match_operand:SI 1 "address_operand" "rO"))] + UNSPEC_LATENCY_MISS)))] + "" + "<load>\t%0, %r1" + [(set_attr "type" "Y2_miss")]) + +(define_insn "insn_<load>_u_miss" + [(set (match_operand:SI 0 "register_operand" "=r") + (zero_extend:SI + (unspec:I12MODE + [(mem:I12MODE (match_operand:SI 1 "address_operand" "rO"))] + UNSPEC_LATENCY_MISS)))] + "" + "<load>_u\t%0, %r1" + [(set_attr "type" "Y2_miss")]) + +(define_insn "insn_<load>add_miss" + [(set (match_operand:SI 1 "register_operand" "=r") + (plus:SI (match_operand:SI 3 "register_operand" "1") + (match_operand:SI 2 "s8bit_cint_operand" "i"))) + (set (match_operand:SI 0 "register_operand" "=r") + (sign_extend:SI (unspec:I12MODE [(mem:I12MODE (match_dup 3))] + UNSPEC_LATENCY_MISS)))] + "" + "<load>add\t%0, %1, %2" + [(set_attr "type" "X1_miss")]) + +(define_insn "insn_<load>add_u_miss" + [(set (match_operand:SI 1 "register_operand" "=r") + (plus:SI (match_operand:SI 3 "register_operand" "1") + (match_operand:SI 2 "s8bit_cint_operand" "i"))) + (set (match_operand:SI 0 "register_operand" "=r") + (zero_extend:SI (unspec:I12MODE [(mem:I12MODE (match_dup 3))] + UNSPEC_LATENCY_MISS)))] + "" + "<load>add_u\t%0, %1, %2" + [(set_attr "type" "X1_miss")]) + +(define_insn "insn_lwadd_miss" + [(set (match_operand:SI 1 "register_operand" "=r") + (plus:SI (match_operand:SI 3 "register_operand" "1") + (match_operand:SI 2 "s8bit_cint_operand" "i"))) + (set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(mem:SI (match_dup 3))] UNSPEC_LATENCY_MISS))] + "" + "lwadd\t%0, %1, %2" + [(set_attr "type" "X1_miss")]) + +(define_insn "insn_lwadd_na_miss" + [(set (match_operand:SI 1 "register_operand" "=r") + (plus:SI (match_operand:SI 3 "register_operand" "1") + (match_operand:SI 2 "s8bit_cint_operand" "i"))) + (set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(mem:SI (and:SI (match_dup 3) (const_int -4)))] + UNSPEC_LATENCY_MISS))] + "" + "lwadd_na\t%0, %1, %2" + [(set_attr "type" "X1_miss")]) + +(define_insn "insn_lw_na_miss" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(mem:SI (and:SI (match_operand:SI 1 "address_operand" "rO") + (const_int -4)))] + UNSPEC_LATENCY_MISS))] + "" + "lw_na\t%0, %r1" + [(set_attr "type" "X1_miss")]) + +(define_insn "insn_lw_miss" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(mem:SI (match_operand:SI 1 "address_operand" "rO"))] + UNSPEC_LATENCY_MISS))] + "" + "lw\t%0, %r1" + [(set_attr "type" "Y2_miss")]) + +;; end loads + +(define_insn "insn_mfspr" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec_volatile:SI [(match_operand:SI 1 "u15bit_cint_operand" "i")] + UNSPEC_INSN_MFSPR)) + (clobber (mem:BLK (const_int 0)))] + "" + "mfspr\t%0, %1" + [(set_attr "type" "X1")]) + +(define_insn "*mm" + [(set (match_operand:SI 0 "register_operand" "=r") + (mm_combiner:SI + (and:SI (match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 3 "const_int_operand" "n")) + (and:SI (match_operand:SI 2 "reg_or_0_operand" "rO") + (match_operand:SI 4 "const_int_operand" "n"))))] + "tilepro_bitfield_operand_p (INTVAL (operands[3]), NULL, NULL) + && INTVAL (operands[3]) == ~INTVAL (operands[4])" + "mm\t%0, %r1, %r2, %M3" + [(set_attr "type" "X01")]) + +(define_expand "insn_mm" + [(set (match_operand:SI 0 "register_operand" "") + (ior:SI + (and:SI (match_operand:SI 1 "reg_or_cint_operand" "") + (match_operand:SI 3 "u5bit_cint_operand" "")) + (and:SI (match_operand:SI 2 "reg_or_cint_operand" "") + (match_operand:SI 4 "u5bit_cint_operand" ""))))] + "" +{ + int first, last, i; + HOST_WIDE_INT mask; + + first = INTVAL (operands[3]) & 31; + last = INTVAL (operands[4]) & 31; + + if (((last + 1) & 31) == first) + { + /* Handle pathological case of a mask that includes only the + first operand. The reordering code below can't handle this. */ + emit_move_insn (operands[0], operands[1]); + DONE; + } + + /* Canonicalize order by putting constant second, if any. */ + if (CONST_INT_P (operands[1])) + { + int tmp_first; + + rtx tmp = operands[1]; + operands[1] = operands[2]; + operands[2] = tmp; + + /* Invert the bit range. */ + tmp_first = first; + first = (last + 1) & 31; + last = (tmp_first - 1) & 31; + } + + /* Convert the first/last bit range into a bit mask. */ + mask = 0; + + for (i = first; ; i = (i + 1) & 31) + { + mask |= ((HOST_WIDE_INT)1) << i; + if (i == last) + break; + } + + mask = trunc_int_for_mode (mask, SImode); + + operands[1] = force_reg (SImode, operands[1]); + operands[3] = GEN_INT (mask); + operands[4] = GEN_INT (~mask); + + if (CONST_INT_P (operands[2])) + { + HOST_WIDE_INT inserted_bits = INTVAL (operands[2]) & ~mask; + + if (inserted_bits == 0) + { + /* All inserted bits are zero. Use a bitwise AND. */ + emit_insn (gen_andsi3 (operands[0], operands[1], operands[3])); + DONE; + } + else if (inserted_bits == ~mask) + { + /* All inserted bits are ones. Use a bitwise IOR if we can. */ + if (satisfies_constraint_I (operands[4])) + { + emit_insn (gen_iorsi3 (operands[0], operands[1], operands[4])); + DONE; + } + + /* Canonicalize to inserting -1 when setting all masked bits + to 1, to facilitate CSE. */ + inserted_bits = -1; + } + + /* Sign extend the inserted bits to make them easier to materialize + in a register, but only if the inserted bits (~mask) do not already + include the high bits. */ + if ((~mask & 0x80000000) == 0) + { + int shift = sizeof (HOST_WIDE_INT) * 8 - first; + inserted_bits = (inserted_bits << shift) >> shift; + } + + operands[2] = GEN_INT (inserted_bits); + } + + operands[2] = force_reg (SImode, operands[2]); +}) + +(define_insn "insn_movelis" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec_volatile:SI [(match_operand:SI 1 "s16bit_cint_operand" "i")] + UNSPEC_INSN_MOVELIS))] + "" + "movelis\t%0, %1" + [(set_attr "type" "X01")]) + +(define_insn "insn_mtspr" + [(unspec_volatile:SI [(match_operand:SI 0 "u15bit_cint_operand" "i") + (match_operand:SI 1 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MTSPR) + (clobber (mem:BLK (const_int 0)))] + "" + "mtspr\t%0, %r1" + [(set_attr "type" "X1")]) + +(define_expand "insn_prefetch" + [(prefetch (match_operand:SI 0 "address_operand" "") + (const_int 0) + (const_int 2))]) + +(define_expand "insn_prefetch_L1" + [(use (match_operand:SI 0 "address_operand" ""))] + "" +{ + /* Generate a volatile byte load to a dummy register. */ + rtx mem = gen_rtx_MEM (QImode, operands[0]); + MEM_VOLATILE_P (mem) = 1; + + emit_insn (gen_zero_extendqisi2 (gen_reg_rtx (SImode), mem)); + DONE; +}) + +(define_expand "insn_s1a" + [(set (match_operand:SI 0 "register_operand" "") + (plus:SI (mult:SI (match_operand:SI 1 "reg_or_0_operand" "") + (const_int 2)) + (match_operand:SI 2 "reg_or_0_operand" "")))] + "") + +(define_expand "insn_s2a" + [(set (match_operand:SI 0 "register_operand" "") + (plus:SI (mult:SI (match_operand:SI 1 "reg_or_0_operand" "") + (const_int 4)) + (match_operand:SI 2 "reg_or_0_operand" "")))] + "") + +(define_expand "insn_s3a" + [(set (match_operand:SI 0 "register_operand" "") + (plus:SI (mult:SI (match_operand:SI 1 "reg_or_0_operand" "") + (const_int 8)) + (match_operand:SI 2 "reg_or_0_operand" "")))] + "") + +(define_expand "insn_<store>" + [(set (mem:I12MODE (match_operand:SI 0 "address_operand" "")) + (match_operand:SI 1 "reg_or_0_operand" ""))] + "" +{ + operands[1] = simplify_gen_subreg (<MODE>mode, operands[1], SImode, 0); +}) + +(define_expand "insn_sw" + [(set (mem:SI (match_operand:SI 0 "address_operand" "")) + (match_operand:SI 1 "reg_or_0_operand" ""))] + "") + +(define_expand "insn_<store>add" + [(parallel + [(set (match_operand:SI 0 "register_operand" "") + (plus:SI (match_operand:SI 3 "register_operand" "") + (match_operand:SI 2 "s8bit_cint_operand" ""))) + (set (mem:I12MODE (match_dup 3)) + (match_operand:SI 1 "reg_or_0_operand" ""))])] + "" +{ + operands[1] = simplify_gen_subreg (<MODE>mode, operands[1], SImode, 0); +}) + +(define_insn "*insn_<store>add" + [(set (match_operand:SI 0 "register_operand" "=r") + (plus:SI (match_operand:SI 3 "register_operand" "0") + (match_operand:SI 2 "s8bit_cint_operand" "i"))) + (set (mem:I12MODE (match_dup 3)) + (match_operand:I12MODE 1 "reg_or_0_operand" "rO"))] + "" + "<store>add\t%0, %r1, %2" + [(set_attr "type" "X1")]) + +(define_insn "insn_swadd" + [(set (match_operand:SI 0 "register_operand" "=r") + (plus:SI (match_operand:SI 3 "register_operand" "0") + (match_operand:SI 2 "s8bit_cint_operand" "i"))) + (set (mem:SI (match_dup 3)) + (match_operand:SI 1 "reg_or_0_operand" "rO"))] + "" + "swadd\t%0, %r1, %2" + [(set_attr "type" "X1")]) + +(define_insn "insn_wh64" + [(unspec_volatile:VOID [(match_operand:SI 0 "reg_or_0_operand" "rO")] + UNSPEC_INSN_WH64) + (clobber (mem:BLK (const_int 0)))] + "" + "wh64\t%r0" + [(set_attr "type" "X1")]) + +(define_insn "insn_tns" + [(set (match_operand:SI 0 "register_operand" "=r") + (mem:SI (match_operand:SI 1 "reg_or_0_operand" "rO"))) + (set (mem:SI (match_dup 1)) (const_int 1))] + "" + "tns\t%0, %1" + [(set_attr "type" "X1")]) + +;; insn_addb +;; insn_addib +;; insn_maxb_u +;; insn_maxib_u +;; insn_minb_u +;; insn_minib_u +;; insn_seqb +;; insn_seqib +;; insn_sltb +;; insn_sltib +;; insn_sltb_u +;; insn_sltib_u +(define_insn "<optab>v4qi3" + [(set (match_operand:V4QI 0 "register_operand" "=r,r") + (v1op_immed:V4QI + (match_operand:V4QI 1 "reg_or_0_operand" "<comm>rO,rO") + (match_operand:V4QI 2 "reg_or_v4s8bit_operand" "W,rO")))] + "" + "@ + <insn>ib<u>\t%0, %r1, %j2 + <insn>b<u>\t%0, %r1, %r2" + [(set_attr "type" "X01,X01")]) + +(define_expand "insn_<insn>b<u>" + [(set (match_operand:SI 0 "register_operand" "") + (v1op_immed:V4QI + (match_operand:SI 1 "reg_or_0_operand" "") + (match_operand:SI 2 "reg_or_0_operand" "")))] + "" +{ + tilepro_expand_builtin_vector_binop (gen_<optab>v4qi3, V4QImode, operands[0], + V4QImode, operands[1], operands[2], true); + DONE; +}) + +(define_expand "insn_<insn>ib<u>" + [(set (match_operand:SI 0 "register_operand" "") + (v1op_immed:V4QI + (match_operand:SI 1 "reg_or_0_operand" "") + (match_operand:SI 2 "s8bit_cint_operand" "")))] + "" +{ + /* Tile out immediate and expand to general case. */ + rtx n = tilepro_simd_int (operands[2], QImode); + tilepro_expand_builtin_vector_binop (gen_<optab>v4qi3, V4QImode, operands[0], + V4QImode, operands[1], n, true); + DONE; +}) + +;; insn_shlb +;; insn_shlib +;; insn_shrb +;; insn_shrib +;; insn_srab +;; insn_sraib +(define_insn "<optab>v4qi3" + [(set (match_operand:V4QI 0 "register_operand" "=r,r") + (any_shift:V4QI + (match_operand:V4QI 1 "reg_or_0_operand" "rO,rO") + (match_operand:SI 2 "reg_or_u5bit_operand" "I,rO")))] + "" + "@ + <insn>ib<u>\t%0, %r1, %2 + <insn>b<u>\t%0, %r1, %r2" + [(set_attr "type" "X01,X01")]) + +(define_expand "insn_<insn>b<u>" + [(set (match_operand:SI 0 "register_operand" "") + (any_shift:V4QI + (match_operand:SI 1 "reg_or_0_operand" "") + (match_operand:SI 2 "reg_or_u5bit_operand" "")))] + "" +{ + tilepro_expand_builtin_vector_binop (gen_<optab>v4qi3, V4QImode, operands[0], + V4QImode, operands[1], operands[2], false); + DONE; +}) + +;; insn_addh +;; insn_addih +;; insn_maxh +;; insn_maxih +;; insn_minh +;; insn_minih +;; insn_seqh +;; insn_seqih +;; insn_slth +;; insn_sltih +;; insn_slth_u +;; insn_sltih_u +(define_insn "<optab>v2hi3" + [(set (match_operand:V2HI 0 "register_operand" "=r,r") + (v2op_immed:V2HI + (match_operand:V2HI 1 "reg_or_0_operand" "<comm>rO,rO") + (match_operand:V2HI 2 "reg_or_v2s8bit_operand" "Y,rO")))] + "" + "@ + <insn>ih<u>\t%0, %r1, %j2 + <insn>h<u>\t%0, %r1, %r2" + [(set_attr "type" "X01,X01")]) + +(define_expand "insn_<insn>h<u>" + [(set (match_operand:SI 0 "register_operand" "") + (v2op_immed:V2HI + (match_operand:SI 1 "reg_or_0_operand" "") + (match_operand:SI 2 "reg_or_0_operand" "")))] + "" +{ + tilepro_expand_builtin_vector_binop (gen_<optab>v2hi3, V2HImode, operands[0], + V2HImode, operands[1], operands[2], true); + DONE; +}) + +(define_expand "insn_<insn>ih<u>" + [(set (match_operand:SI 0 "register_operand" "") + (v2op_immed:V2HI + (match_operand:SI 1 "reg_or_0_operand" "") + (match_operand:SI 2 "s8bit_cint_operand" "")))] + "" +{ + /* Tile out immediate and expand to general case. */ + rtx n = tilepro_simd_int (operands[2], HImode); + tilepro_expand_builtin_vector_binop (gen_<optab>v2hi3, V2HImode, operands[0], + V2HImode, operands[1], n, true); + DONE; +}) + +;; insn_shlh +;; insn_shlih +;; insn_shrh +;; insn_shrih +;; insn_srah +;; insn_sraih +(define_insn "<optab>v2hi3" + [(set (match_operand:V2HI 0 "register_operand" "=r,r") + (any_shift:V2HI + (match_operand:V2HI 1 "reg_or_0_operand" "rO,rO") + (match_operand:SI 2 "reg_or_u5bit_operand" "I,rO")))] + "" + "@ + <insn>ih<u>\t%0, %r1, %2 + <insn>h<u>\t%0, %r1, %r2" + [(set_attr "type" "X01,X01")]) + +(define_expand "insn_<insn>h<u>" + [(set (match_operand:SI 0 "register_operand" "") + (any_shift:V2HI + (match_operand:SI 1 "reg_or_0_operand" "") + (match_operand:SI 2 "reg_or_0_operand" "")))] + "" +{ + tilepro_expand_builtin_vector_binop (gen_<optab>v2hi3, V2HImode, operands[0], + V2HImode, operands[1], operands[2], false); + DONE; +}) + +;; insn_addbs_u +;; insn_subbs_u +;; insn_subb +;; insn_slteb +;; insn_slteb_u +;; insn_sneb +(define_insn "<optab>v4qi3" + [(set (match_operand:V4QI 0 "register_operand" "=r") + (v1op:V4QI + (match_operand:V4QI 1 "reg_or_0_operand" "<comm>rO") + (match_operand:V4QI 2 "reg_or_0_operand" "rO")))] + "" + "<insn>b<u>\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_expand "insn_<insn>b<u>" + [(set (match_operand:SI 0 "register_operand" "") + (v1op:V4QI + (match_operand:SI 1 "reg_or_0_operand" "") + (match_operand:SI 2 "reg_or_0_operand" "")))] + "" +{ + tilepro_expand_builtin_vector_binop (gen_<optab>v4qi3, V4QImode, operands[0], + V4QImode, operands[1], operands[2], true); + DONE; +}) + +;; insn_addhs +;; insn_subhs +;; insn_subh +;; insn_slteh +;; insn_slteh_u +;; insn_sneh +(define_insn "<optab>v2hi3" + [(set (match_operand:V2HI 0 "register_operand" "=r") + (v2op:V2HI + (match_operand:V2HI 1 "reg_or_0_operand" "<comm>rO") + (match_operand:V2HI 2 "reg_or_0_operand" "rO")))] + "" + "<insn>h<u>\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_expand "insn_<insn>h<u>" + [(set (match_operand:SI 0 "register_operand" "") + (v2op:V2HI + (match_operand:SI 1 "reg_or_0_operand" "") + (match_operand:SI 2 "reg_or_0_operand" "")))] + "" +{ + tilepro_expand_builtin_vector_binop (gen_<optab>v2hi3, V2HImode, operands[0], + V2HImode, operands[1], operands[2], true); + DONE; +}) + +;; insn_inthb + +;; Byte ordering of these vectors is endian dependent. We concat +;; right-to-left for little endian. We concat and interleave in the +;; opposite way gcc's vector patterns work, so we need to reverse the +;; order of source operands. + +;; {B3,B2,B1,B0} {A3,A2,A1,A0} +;; => {A3,A2,A1,A0,B3,B2,B1,B0} +;; => {A3,B3,A2,B2} +(define_insn "vec_interleave_highv4qi" + [(set (match_operand:V4QI 0 "register_operand" "=r") + (vec_select:V4QI + (vec_concat:V8QI (match_operand:V4QI 1 "reg_or_0_operand" "rO") + (match_operand:V4QI 2 "reg_or_0_operand" "rO")) + (parallel [(const_int 2) (const_int 6) + (const_int 3) (const_int 7)])))] + "" + "inthb\t%0, %r2, %r1" + [(set_attr "type" "X01")]) + +(define_expand "insn_inthb" + [(match_operand:SI 0 "register_operand" "") + (match_operand:SI 1 "reg_or_0_operand" "") + (match_operand:SI 2 "reg_or_0_operand" "")] + "" +{ + /* Our instruction interleaves opposite of the way vec_interleave + works, so we need to reverse the source operands. */ + tilepro_expand_builtin_vector_binop (gen_vec_interleave_highv4qi, V4QImode, + operands[0], V4QImode, operands[2], + operands[1], true); + DONE; +}) + +;; insn_intlb +;; {B3,B2,B1,B0} {A3,A2,A1,A0} +;; => {A3,A2,A1,A0,B3,B2,B1,B0} +;; => {A1,B1,A0,B0} +(define_insn "vec_interleave_lowv4qi" + [(set (match_operand:V4QI 0 "register_operand" "=r") + (vec_select:V4QI + (vec_concat:V8QI (match_operand:V4QI 1 "reg_or_0_operand" "rO") + (match_operand:V4QI 2 "reg_or_0_operand" "rO")) + (parallel [(const_int 0) (const_int 4) + (const_int 1) (const_int 5)])))] + "" + "intlb\t%0, %r2, %r1" + [(set_attr "type" "X01")]) + +(define_expand "insn_intlb" + [(match_operand:SI 0 "register_operand" "") + (match_operand:SI 1 "reg_or_0_operand" "") + (match_operand:SI 2 "reg_or_0_operand" "")] + "" +{ + /* Our instruction interleaves opposite of the way vec_interleave + works, so we need to reverse the source operands. */ + tilepro_expand_builtin_vector_binop (gen_vec_interleave_lowv4qi, V4QImode, + operands[0], V4QImode, operands[2], + operands[1], true); + DONE; +}) + +;; insn_inthh +;; {B1,B0} {A1,A0} +;; => {A1,A0,B1,B0} +;; => {A1,B1} +(define_insn "vec_interleave_highv2hi" + [(set (match_operand:V2HI 0 "register_operand" "=r") + (vec_select:V2HI + (vec_concat:V4HI (match_operand:V2HI 1 "reg_or_0_operand" "rO") + (match_operand:V2HI 2 "reg_or_0_operand" "rO")) + (parallel [(const_int 1) (const_int 3)])))] + "" + "inthh\t%0, %r2, %r1" + [(set_attr "type" "X01")]) + +(define_expand "insn_inthh" + [(match_operand:SI 0 "register_operand" "") + (match_operand:SI 1 "reg_or_0_operand" "") + (match_operand:SI 2 "reg_or_0_operand" "")] + "" +{ + /* Our instruction interleaves opposite of the way vec_interleave + works, so we need to reverse the source operands. */ + tilepro_expand_builtin_vector_binop (gen_vec_interleave_highv2hi, V2HImode, + operands[0], V2HImode, operands[2], + operands[1], true); + DONE; +}) + +;; insn_intlh +;; {B1,B0} {A1,A0} +;; => {A1,A0,B1,B0} +;; => {A0,B0} +(define_insn "vec_interleave_lowv2hi" + [(set (match_operand:V2HI 0 "register_operand" "=r") + (vec_select:V2HI + (vec_concat:V4HI (match_operand:V2HI 1 "reg_or_0_operand" "rO") + (match_operand:V2HI 2 "reg_or_0_operand" "rO")) + (parallel [(const_int 0) (const_int 2)])))] + "" + "intlh\t%0, %r2, %r1" + [(set_attr "type" "X01")]) + +(define_expand "insn_intlh" + [(match_operand:SI 0 "register_operand" "") + (match_operand:SI 1 "reg_or_0_operand" "") + (match_operand:SI 2 "reg_or_0_operand" "")] + "" +{ + /* Our instruction interleaves opposite of the way vec_interleave + works, so we need to reverse the source operands. */ + tilepro_expand_builtin_vector_binop (gen_vec_interleave_lowv2hi, V2HImode, + operands[0], V2HImode, operands[2], + operands[1], true); + DONE; +}) + +;; insn_packbs_u +;; insn_packlb +;; {B1,B0} {A1,A0} +;; => {A1,A0,B1,B0} +(define_insn "vec_pack_<pack_optab>_v2hi" + [(set (match_operand:V4QI 0 "register_operand" "=r") + (vec_concat:V4QI + (v2pack:V2QI (match_operand:V2HI 1 "reg_or_0_operand" "rO")) + (v2pack:V2QI (match_operand:V2HI 2 "reg_or_0_operand" "rO"))))] + "" + "<pack_insn>b<pack_u>\t%0, %r2, %r1" + [(set_attr "type" "X01")]) + +(define_expand "insn_<pack_insn>b<pack_u>" + [(set (match_operand:SI 0 "register_operand" "") + (vec_concat:V4QI + (v2pack:V2QI (match_operand:SI 1 "reg_or_0_operand" "")) + (v2pack:V2QI (match_operand:SI 2 "reg_or_0_operand" ""))))] + "" +{ + /* Our instruction concats opposite of the way vec_pack works, so we + need to reverse the source operands. */ + tilepro_expand_builtin_vector_binop (gen_vec_pack_<pack_optab>_v2hi, + V4QImode, operands[0], + V2HImode, operands[2], operands[1], true); + DONE; +}) + +;; insn_packhb +;; {B1,B0} {A1,A0} +;; => {A1,A0,B1,B0} +(define_insn "vec_pack_hipart_v2hi" + [(set (match_operand:V4QI 0 "register_operand" "=r") + (vec_concat:V4QI + (truncate:V2QI + (ashiftrt:V2HI (match_operand:V2HI 1 "reg_or_0_operand" "rO") + (const_int 8))) + (truncate:V2QI + (ashiftrt:V2HI (match_operand:V2HI 2 "reg_or_0_operand" "rO") + (const_int 8)))))] + "" + "packhb\t%0, %r2, %r1" + [(set_attr "type" "X01")]) + +(define_expand "insn_packhb" + [(set (match_operand:SI 0 "register_operand" "") + (vec_concat:V4QI + (truncate:V2QI + (ashiftrt:V2HI (match_operand:SI 2 "reg_or_0_operand" "") + (const_int 8))) + (truncate:V2QI + (ashiftrt:V2HI (match_operand:SI 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. */ + tilepro_expand_builtin_vector_binop (gen_vec_pack_hipart_v2hi, + V4QImode, operands[0], + V2HImode, operands[2], operands[1], true); + DONE; +}) + +;; insn_packhs +;; {B0} {A0} +;; => {A0,B0} +(define_insn "vec_pack_ssat_si" + [(set (match_operand:V2HI 0 "register_operand" "=r") + (vec_concat:V2HI + (ss_truncate:HI (match_operand:SI 1 "reg_or_0_operand" "rO")) + (ss_truncate:HI (match_operand:SI 2 "reg_or_0_operand" "rO"))))] + "" + "packhs\t%0, %r2, %r1" + [(set_attr "type" "X01")]) + +(define_expand "insn_packhs" + [(set (match_operand:SI 0 "register_operand" "") + (vec_concat:V2HI + (ss_truncate:HI (match_operand:SI 2 "reg_or_0_operand" "")) + (ss_truncate:HI (match_operand:SI 1 "reg_or_0_operand" ""))))] + "" +{ + /* Our instruction concats opposite of the way vec_pack works, so we + need to reverse the source operands. */ + tilepro_expand_builtin_vector_binop (gen_vec_pack_ssat_si, + V2HImode, operands[0], + SImode, operands[2], operands[1], true); + DONE; +}) + +;; Rest of the intrinsics +(define_insn "insn_adiffb_u" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_ADIFFB_U))] + "" + "adiffb_u\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_adiffh" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_ADIFFH))] + "" + "adiffh\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_avgb_u" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_AVGB_U))] + "" + "avgb_u\t%0, %r1, %r2" + [(set_attr "type" "X0")]) + +(define_insn "insn_avgh" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_AVGH))] + "" + "avgh\t%0, %r1, %r2" + [(set_attr "type" "X0")]) + +(define_insn "insn_bitx" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO")] + UNSPEC_INSN_BITX))] + "" + "bitx\t%0, %r1" + [(set_attr "type" "Y0")]) + +(define_insn "insn_crc32_32" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 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:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_CRC32_8))] + "" + "crc32_8\t%0, %r1, %r2" + [(set_attr "type" "X0")]) + +(define_insn "insn_dtlbpr" + [(unspec_volatile:VOID [(match_operand:SI 0 "reg_or_0_operand" "rO")] + UNSPEC_INSN_DTLBPR)] + "" + "dtlbpr\t%r0" + [(set_attr "type" "X1")]) + +(define_insn "insn_dword_align" + [(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_DWORD_ALIGN))] + "" + "dword_align\t%0, %r2, %r3" + [(set_attr "type" "X0")]) + +(define_insn "insn_finv" + [(unspec_volatile:VOID [(match_operand:SI 0 "reg_or_0_operand" "rO")] + UNSPEC_INSN_FINV)] + "" + "finv\t%r0" + [(set_attr "type" "X1")]) + +(define_insn "insn_flush" + [(unspec_volatile:VOID [(match_operand:SI 0 "reg_or_0_operand" "rO")] + UNSPEC_INSN_FLUSH)] + "" + "flush\t%r0" + [(set_attr "type" "X1")]) + +(define_insn "insn_fnop" + [(unspec_volatile:VOID [(const_int 0)] UNSPEC_INSN_FNOP)] + "" + "fnop") + +(define_insn "insn_ill" + [(unspec_volatile:VOID [(const_int 0)] UNSPEC_INSN_ILL)] + "" + "ill" + [(set_attr "type" "cannot_bundle")]) + +(define_insn "insn_inv" + [(unspec_volatile:VOID [(match_operand:SI 0 "reg_or_0_operand" "rO")] + UNSPEC_INSN_INV)] + "" + "inv\t%r0" + [(set_attr "type" "X1")]) + +(define_insn "insn_lnk" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(const_int 0)] UNSPEC_INSN_LNK))] + "" + "lnk\t%0" + [(set_attr "type" "X1")]) + +(define_insn "insn_mnzb" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MNZB))] + "" + "mnzb\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "insn_mnzh" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MNZH))] + "" + "mnzh\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "insn_mulhh_ss" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULHH_SS))] + "" + "mulhh_ss\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_mulhh_su" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULHH_SU))] + "" + "mulhh_su\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mulhh_uu" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULHH_UU))] + "" + "mulhh_uu\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_mulhha_ss" + [(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_MULHHA_SS))] + "" + "mulhha_ss\t%0, %r2, %r3" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_mulhha_su" + [(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_MULHHA_SU))] + "" + "mulhha_su\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mulhha_uu" + [(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_MULHHA_UU))] + "" + "mulhha_uu\t%0, %r2, %r3" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_mulhhsa_uu" + [(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_MULHHSA_UU))] + "" + "mulhhsa_uu\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mulhl_ss" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULHL_SS))] + "" + "mulhl_ss\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mulhl_su" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULHL_SU))] + "" + "mulhl_su\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mulhl_us" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULHL_US))] + "" + "mulhl_us\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mulhl_uu" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULHL_UU))] + "" + "mulhl_uu\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mulhla_ss" + [(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_MULHLA_SS))] + "" + "mulhla_ss\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mulhla_su" + [(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_MULHLA_SU))] + "" + "mulhla_su\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mulhla_us" + [(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_MULHLA_US))] + "" + "mulhla_us\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mulhla_uu" + [(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_MULHLA_UU))] + "" + "mulhla_uu\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mulhlsa_uu" + [(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_MULHLSA_UU))] + "" + "mulhlsa_uu\t%0, %r2, %r3" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_mulll_ss" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULLL_SS))] + "" + "mulll_ss\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_mulll_su" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULLL_SU))] + "" + "mulll_su\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mulll_uu" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MULLL_UU))] + "" + "mulll_uu\t%0, %r1, %r2" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_mullla_ss" + [(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_MULLLA_SS))] + "" + "mullla_ss\t%0, %r2, %r3" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_mullla_su" + [(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_MULLLA_SU))] + "" + "mullla_su\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mullla_uu" + [(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_MULLLA_UU))] + "" + "mullla_uu\t%0, %r2, %r3" + [(set_attr "type" "Y0_2cycle")]) + +(define_insn "insn_mulllsa_uu" + [(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_MULLLSA_UU))] + "" + "mulllsa_uu\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_mzb" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MZB))] + "" + "mzb\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "insn_mzh" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_MZH))] + "" + "mzh\t%0, %r1, %r2" + [(set_attr "type" "X01")]) + +(define_insn "insn_nap" + [(unspec_volatile:VOID [(const_int 0)] UNSPEC_INSN_NAP)] + "" + "nap" + [(set_attr "type" "cannot_bundle")]) + +(define_insn "insn_nor" + [(set (match_operand:SI 0 "register_operand" "=r") + (and:SI (not:SI (match_operand:SI 1 "reg_or_0_operand" "rO")) + (not:SI (match_operand:SI 2 "reg_or_0_operand" "rO"))))] + "" + "nor\t%0, %r1, %r2") + +(define_insn "insn_sadab_u" + [(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_SADAB_U))] + "" + "sadab_u\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_sadah" + [(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_SADAH))] + "" + "sadah\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_sadah_u" + [(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_SADAH_U))] + "" + "sadah_u\t%0, %r2, %r3" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_sadb_u" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_SADB_U))] + "" + "sadb_u\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_sadh" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_SADH))] + "" + "sadh\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_sadh_u" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "rO") + (match_operand:SI 2 "reg_or_0_operand" "rO")] + UNSPEC_INSN_SADH_U))] + "" + "sadh_u\t%0, %r1, %r2" + [(set_attr "type" "X0_2cycle")]) + +(define_insn "insn_tblidxb0" + [(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")] + UNSPEC_INSN_TBLIDXB0))] + "" + "tblidxb0\t%0, %r2" + [(set_attr "type" "Y0")]) + +(define_insn "insn_tblidxb1" + [(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")] + UNSPEC_INSN_TBLIDXB1))] + "" + "tblidxb1\t%0, %r2" + [(set_attr "type" "Y0")]) + +(define_insn "insn_tblidxb2" + [(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")] + UNSPEC_INSN_TBLIDXB2))] + "" + "tblidxb2\t%0, %r2" + [(set_attr "type" "Y0")]) + +(define_insn "insn_tblidxb3" + [(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")] + UNSPEC_INSN_TBLIDXB3))] + "" + "tblidxb3\t%0, %r2" + [(set_attr "type" "Y0")]) + + +;; +;; 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" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec_volatile:SI [(match_operand:SI 1 "symbolic_operand" "")] + UNSPEC_LNK_AND_LABEL))] + "" + "%1 = . + 8\n\tlnk\t%0" + [(set_attr "type" "X1")]) + +(define_expand "addli_pcrel" + [(set (match_operand:SI 0 "register_operand" "") + (lo_sum:SI + (match_operand:SI 1 "register_operand" "") + (const:SI + (unspec:SI [(match_operand:SI 2 "symbolic_operand" "") + (match_operand:SI 3 "symbolic_operand" "")] + UNSPEC_PCREL_SYM))))] + "flag_pic") + +(define_expand "auli_pcrel" + [(set (match_operand:SI 0 "register_operand" "") + (plus:SI + (match_operand:SI 1 "reg_or_0_operand" "") + (high:SI + (const:SI + (unspec:SI [(match_operand:SI 2 "symbolic_operand" "") + (match_operand:SI 3 "symbolic_operand" "")] + UNSPEC_PCREL_SYM)))))] + "flag_pic") + +(define_expand "add_got16" + [(set (match_operand:SI 0 "register_operand" "") + (lo_sum:SI + (match_operand:SI 1 "reg_or_0_operand" "") + (const:SI (unspec:SI [(match_operand:SI 2 "symbolic_operand" "")] + UNSPEC_GOT16_SYM))))] + "flag_pic == 1") + +(define_expand "addhi_got32" + [(set (match_operand:SI 0 "register_operand" "") + (plus:SI + (match_operand:SI 1 "reg_or_0_operand" "") + (high:SI + (const:SI (unspec:SI [(match_operand:SI 2 "symbolic_operand" "")] + UNSPEC_GOT32_SYM)))))] + "flag_pic == 2") + +(define_expand "addlo_got32" + [(set (match_operand:SI 0 "register_operand" "") + (lo_sum:SI + (match_operand:SI 1 "reg_or_0_operand" "") + (const:SI (unspec:SI [(match_operand:SI 2 "symbolic_operand" "")] + UNSPEC_GOT32_SYM))))] + "flag_pic == 2") + + +;; +;; TLS +;; + +(define_expand "tls_gd_addhi" + [(set (match_operand:SI 0 "register_operand" "") + (plus:SI + (match_operand:SI 1 "reg_or_0_operand" "") + (high:SI + (const:SI (unspec:SI [(match_operand 2 "tls_symbolic_operand" "")] + UNSPEC_TLS_GD)))))] + "HAVE_AS_TLS") + +(define_expand "tls_gd_addlo" + [(set (match_operand:SI 0 "register_operand" "") + (lo_sum:SI + (match_operand:SI 1 "reg_or_0_operand" "") + (const:SI (unspec:SI [(match_operand 2 "tls_symbolic_operand" "")] + UNSPEC_TLS_GD))))] + "HAVE_AS_TLS") + +(define_expand "tls_gd_call" + [(parallel + [(set (reg:SI 0) + (unspec:SI [(match_operand:SI 0 "tls_symbolic_operand" "") + (reg:SI 0)] + UNSPEC_TLS_GD_CALL)) + (clobber (reg:SI 25)) + (clobber (reg:SI 26)) + (clobber (reg:SI 27)) + (clobber (reg:SI 28)) + (clobber (reg:SI 29)) + (clobber (reg:SI 55))])] + "" +{ + cfun->machine->calls_tls_get_addr = true; +}) + +(define_insn "*tls_gd_call" + [(set (reg:SI 0) + (unspec:SI [(match_operand:SI 0 "tls_symbolic_operand" "") + (reg:SI 0)] + UNSPEC_TLS_GD_CALL)) + (clobber (reg:SI 25)) + (clobber (reg:SI 26)) + (clobber (reg:SI 27)) + (clobber (reg:SI 28)) + (clobber (reg:SI 29)) + (clobber (reg:SI 55))] + "" + "jal\ttls_gd_call(%0)" + [(set_attr "type" "X1")]) + +(define_insn "tls_gd_add" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "register_operand" "r") + (match_operand:SI 2 "tls_symbolic_operand" "")] + UNSPEC_TLS_GD_ADD))] + "HAVE_AS_TLS" + "addi\t%0, %1, tls_gd_add(%2)") + +(define_insn "tls_ie_load" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "register_operand" "r") + (match_operand:SI 2 "tls_symbolic_operand" "")] + UNSPEC_TLS_IE_LOAD))] + "HAVE_AS_TLS" + "lw_tls\t%0, %1, tls_ie_load(%2)" + [(set_attr "type" "X1_2cycle")]) + +(define_expand "tls_ie_addhi" + [(set (match_operand:SI 0 "register_operand" "") + (plus:SI + (match_operand:SI 1 "register_operand" "") + (high:SI + (const:SI (unspec:SI [(match_operand 2 "tls_ie_symbolic_operand" "")] + UNSPEC_TLS_IE)))))] + "HAVE_AS_TLS") + +(define_expand "tls_ie_addlo" + [(set (match_operand:SI 0 "register_operand" "") + (lo_sum:SI + (match_operand:SI 1 "register_operand" "") + (const:SI (unspec:SI [(match_operand 2 "tls_ie_symbolic_operand" "")] + UNSPEC_TLS_IE))))] + "HAVE_AS_TLS") + +(define_expand "tls_le_addhi" + [(set (match_operand:SI 0 "register_operand" "") + (plus:SI + (match_operand:SI 1 "register_operand" "") + (high:SI + (const:SI (unspec:SI [(match_operand 2 "tls_le_symbolic_operand" "")] + UNSPEC_TLS_LE)))))] + "HAVE_AS_TLS") + +(define_expand "tls_le_addlo" + [(set (match_operand:SI 0 "register_operand" "") + (lo_sum:SI + (match_operand:SI 1 "register_operand" "") + (const:SI (unspec:SI [(match_operand 2 "tls_le_symbolic_operand" "")] + UNSPEC_TLS_LE))))] + "HAVE_AS_TLS") + + +;; +;; 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 + + emit_insn (gen_stack_protect_setsi (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))] + "" + "lw\t%2, %1; { sw\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 (SImode); + + emit_insn (gen_stack_protect_testsi (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))] + "" + "lw\t%0, %1; lw\t%3, %2; { seq\t%0, %0, %3; move\t%3, zero }" + [(set_attr "length" "24") + (set_attr "type" "cannot_bundle_4cycle")]) + diff --git a/gcc/config/tilepro/tilepro.opt b/gcc/config/tilepro/tilepro.opt new file mode 100644 index 00000000000..2ab54e0c520 --- /dev/null +++ b/gcc/config/tilepro/tilepro.opt @@ -0,0 +1,37 @@ +; Options for the TILEPro port of the compiler. +; Copyright (C) 2011, 2012 +; Free Software Foundation, Inc. +; Contributed by Walter Lee (walt@tilera.com) +; +; This file is part of GCC. +; +; GCC is free software; you can redistribute it and/or modify it under +; the terms of the GNU General Public License as published by the Free +; Software Foundation; either version 3, or (at your option) any later +; version. +; +; GCC is distributed in the hope that it will be useful, but WITHOUT ANY +; WARRANTY; without even the implied warranty of MERCHANTABILITY or +; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +; for more details. +; +; You should have received a copy of the GNU General Public License +; along with GCC; see the file COPYING3. If not see +; <http://www.gnu.org/licenses/>. + +m32 +Target Report RejectNegative +Compile with 32 bit longs and pointers, which is the only supported +behavior and thus the flag is ignored. + +mcpu= +Target RejectNegative Joined Enum(tilepro_cpu) Var(tilepro_cpu) Init(0) +-mcpu=CPU Use features of and schedule code for given CPU + +Enum +Name(tilepro_cpu) Type(int) +Known TILEPro CPUs (for use with the -mcpu= option): + +EnumValue +Enum(tilepro_cpu) String(tilepro) Value(0) + diff --git a/gcc/configure b/gcc/configure index 468369aa0a7..15a9ece5e6f 100755 --- a/gcc/configure +++ b/gcc/configure @@ -23491,6 +23491,37 @@ foo: .long 25 xor %l1, %tle_lox10(foo), %o5 ld [%g7 + %o5], %o1" ;; + tilepro*-*-*) + conftest_s=' + .section ".tdata","awT",@progbits +foo: .long 25 + .text + addli r0, zero, tls_gd(foo) + auli r0, zero, tls_gd_ha16(foo) + addli r0, r0, tls_gd_lo16(foo) + jal __tls_get_addr + addli r0, zero, tls_ie(foo) + auli r0, r0, tls_ie_ha16(foo) + addli r0, r0, tls_ie_lo16(foo)' + tls_first_major=2 + tls_first_minor=22 + tls_as_opt="--fatal-warnings" + ;; + tilegx*-*-*) + conftest_s=' + .section ".tdata","awT",@progbits +foo: .long 25 + .text + shl16insli r0, zero, hw0_last_tls_gd(foo) + shl16insli r0, zero, hw1_last_tls_gd(foo) + shl16insli r0, r0, hw0_tls_gd(foo) + jal __tls_get_addr + shl16insli r0, zero, hw1_last_tls_ie(foo) + shl16insli r0, r0, hw0_tls_ie(foo)' + tls_first_major=2 + tls_first_minor=22 + tls_as_opt="--fatal-warnings" + ;; xtensa*-*-*) conftest_s=' .section ".tdata","awT",@progbits @@ -25835,7 +25866,7 @@ esac # version to the per-target configury. case "$cpu_type" in alpha | arm | avr | bfin | cris | i386 | m32c | m68k | microblaze | mips \ - | pa | rs6000 | score | sparc | spu | xstormy16 | xtensa) + | pa | rs6000 | score | sparc | spu | tilegx | tilepro | xstormy16 | xtensa) insn="nop" ;; ia64 | s390) diff --git a/gcc/configure.ac b/gcc/configure.ac index 1e6f2636fba..5d6aa5d3c28 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -3125,6 +3125,37 @@ foo: .long 25 xor %l1, %tle_lox10(foo), %o5 ld [%g7 + %o5], %o1" ;; + tilepro*-*-*) + conftest_s=' + .section ".tdata","awT",@progbits +foo: .long 25 + .text + addli r0, zero, tls_gd(foo) + auli r0, zero, tls_gd_ha16(foo) + addli r0, r0, tls_gd_lo16(foo) + jal __tls_get_addr + addli r0, zero, tls_ie(foo) + auli r0, r0, tls_ie_ha16(foo) + addli r0, r0, tls_ie_lo16(foo)' + tls_first_major=2 + tls_first_minor=22 + tls_as_opt="--fatal-warnings" + ;; + tilegx*-*-*) + conftest_s=' + .section ".tdata","awT",@progbits +foo: .long 25 + .text + shl16insli r0, zero, hw0_last_tls_gd(foo) + shl16insli r0, zero, hw1_last_tls_gd(foo) + shl16insli r0, r0, hw0_tls_gd(foo) + jal __tls_get_addr + shl16insli r0, zero, hw1_last_tls_ie(foo) + shl16insli r0, r0, hw0_tls_ie(foo)' + tls_first_major=2 + tls_first_minor=22 + tls_as_opt="--fatal-warnings" + ;; xtensa*-*-*) conftest_s=' .section ".tdata","awT",@progbits @@ -4071,7 +4102,7 @@ esac # version to the per-target configury. case "$cpu_type" in alpha | arm | avr | bfin | cris | i386 | m32c | m68k | microblaze | mips \ - | pa | rs6000 | score | sparc | spu | xstormy16 | xtensa) + | pa | rs6000 | score | sparc | spu | tilegx | tilepro | xstormy16 | xtensa) insn="nop" ;; ia64 | s390) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f9246e56b74..c20077c6db0 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,14 @@ +2012-02-14 Jason Merrill <jason@redhat.com> + + PR c++/39055 + * decl.c (local_variable_p_walkfn): Don't check DECL_ARTIFICIAL. + +2012-02-14 Jakub Jelinek <jakub@redhat.com> + + PR c/52181 + * decl.c (duplicate_decls): If olddecl has bigger DECL_ALIGN than + newdecl, copy DECL_ALIGN to newdecl and or DECL_USER_ALIGN bits. + 2012-02-07 Jason Merrill <jason@redhat.com> PR c++/51675 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 7fba04ab9f1..f0ba1816384 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -1,6 +1,6 @@ /* Process declarations and variables for C++ compiler. Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) @@ -2214,7 +2214,12 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend) SET_DECL_INIT_PRIORITY (olddecl, DECL_INIT_PRIORITY (newdecl)); DECL_HAS_INIT_PRIORITY_P (olddecl) = 1; } - /* Likewise for DECL_USER_ALIGN and DECL_PACKED. */ + /* Likewise for DECL_ALIGN, DECL_USER_ALIGN and DECL_PACKED. */ + if (DECL_ALIGN (olddecl) > DECL_ALIGN (newdecl)) + { + DECL_ALIGN (newdecl) = DECL_ALIGN (olddecl); + DECL_USER_ALIGN (newdecl) |= DECL_USER_ALIGN (olddecl); + } DECL_USER_ALIGN (olddecl) = DECL_USER_ALIGN (newdecl); if (TREE_CODE (newdecl) == FIELD_DECL) DECL_PACKED (olddecl) = DECL_PACKED (newdecl); @@ -10504,7 +10509,9 @@ static tree local_variable_p_walkfn (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED) { - if (local_variable_p (*tp) && !DECL_ARTIFICIAL (*tp)) + /* Check DECL_NAME to avoid including temporaries. We don't check + DECL_ARTIFICIAL because we do want to complain about 'this'. */ + if (local_variable_p (*tp) && DECL_NAME (*tp)) return *tp; else if (TYPE_P (*tp)) *walk_subtrees = 0; @@ -10512,7 +10519,6 @@ local_variable_p_walkfn (tree *tp, int *walk_subtrees, return NULL_TREE; } - /* Check that ARG, which is a default-argument expression for a parameter DECL, is valid. Returns ARG, or ERROR_MARK_NODE, if something goes wrong. DECL may also be a _TYPE node, rather than a @@ -10573,7 +10579,10 @@ check_default_argument (tree decl, tree arg) var = cp_walk_tree_without_duplicates (&arg, local_variable_p_walkfn, NULL); if (var) { - error ("default argument %qE uses local variable %qD", arg, var); + if (DECL_NAME (var) == this_identifier) + permerror (input_location, "default argument %qE uses %qD", arg, var); + else + error ("default argument %qE uses local variable %qD", arg, var); return error_mark_node; } diff --git a/gcc/cselib.c b/gcc/cselib.c index 0c3b3a38e06..d7cb355fc33 100644 --- a/gcc/cselib.c +++ b/gcc/cselib.c @@ -1372,8 +1372,18 @@ expand_loc (struct elt_loc_list *p, struct expand_value_data *evd, unsigned int regno = UINT_MAX; struct elt_loc_list *p_in = p; - for (; p; p = p -> next) + for (; p; p = p->next) { + /* Return these right away to avoid returning stack pointer based + expressions for frame pointer and vice versa, which is something + that would confuse DSE. See the comment in cselib_expand_value_rtx_1 + for more details. */ + if (REG_P (p->loc) + && (REGNO (p->loc) == STACK_POINTER_REGNUM + || REGNO (p->loc) == FRAME_POINTER_REGNUM + || REGNO (p->loc) == HARD_FRAME_POINTER_REGNUM + || REGNO (p->loc) == cfa_base_preserved_regno)) + return p->loc; /* Avoid infinite recursion trying to expand a reg into a the same reg. */ if ((REG_P (p->loc)) @@ -1895,6 +1905,19 @@ cselib_subst_to_values (rtx x, enum machine_mode memmode) return copy; } +/* Wrapper for cselib_subst_to_values, that indicates X is in INSN. */ + +rtx +cselib_subst_to_values_from_insn (rtx x, enum machine_mode memmode, rtx insn) +{ + rtx ret; + gcc_assert (!cselib_current_insn); + cselib_current_insn = insn; + ret = cselib_subst_to_values (x, memmode); + cselib_current_insn = NULL; + return ret; +} + /* Look up the rtl expression X in our tables and return the value it has. If CREATE is zero, we return NULL if we don't know the value. Otherwise, we create a new one if possible, using mode MODE if X @@ -2688,8 +2711,11 @@ dump_cselib_val (void **x, void *info) fputs (" locs:", out); do { - fprintf (out, "\n from insn %i ", - INSN_UID (l->setting_insn)); + if (l->setting_insn) + fprintf (out, "\n from insn %i ", + INSN_UID (l->setting_insn)); + else + fprintf (out, "\n "); print_inline_rtx (out, l->loc, 4); } while ((l = l->next)); diff --git a/gcc/cselib.h b/gcc/cselib.h index 6a9d79537bc..5b5fe23ae40 100644 --- a/gcc/cselib.h +++ b/gcc/cselib.h @@ -1,6 +1,6 @@ /* Common subexpression elimination for GNU compiler. Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, - 1998, 1999, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + 1998, 1999, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This file is part of GCC. @@ -88,6 +88,7 @@ extern rtx cselib_expand_value_rtx_cb (rtx, bitmap, int, extern bool cselib_dummy_expand_value_rtx_cb (rtx, bitmap, int, cselib_expand_callback, void *); extern rtx cselib_subst_to_values (rtx, enum machine_mode); +extern rtx cselib_subst_to_values_from_insn (rtx, enum machine_mode, rtx); extern void cselib_invalidate_rtx (rtx); extern void cselib_reset_table (unsigned int); diff --git a/gcc/doc/contrib.texi b/gcc/doc/contrib.texi index 37e24f06a1d..face894ff48 100644 --- a/gcc/doc/contrib.texi +++ b/gcc/doc/contrib.texi @@ -395,6 +395,9 @@ of testing and bug fixing, particularly of GCC configury code. Steve Holmgren for MachTen patches. @item +Mat Hostetter for work on the TILE-Gx and TILEPro ports. + +@item Jan Hubicka for his x86 port improvements. @item @@ -506,6 +509,9 @@ handling merges from GCC2, reviewing tons of patches that might have fallen through the cracks else, and random but extensive hacking. @item +Walter Lee for work on the TILE-Gx and TILEPro ports. + +@item Marc Lehmann for his direction via the steering committee and helping with analysis and improvements of x86 performance. diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index e821041ee43..4c7196080a1 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -7146,9 +7146,12 @@ This built-in function implements an atomic compare and exchange operation. This compares the contents of @code{*@var{ptr}} with the contents of @code{*@var{expected}} and if equal, writes @var{desired} into @code{*@var{ptr}}. If they are not equal, the current contents of -@code{*@var{ptr}} is written into @code{*@var{expected}}. +@code{*@var{ptr}} is written into @code{*@var{expected}}. @var{weak} is true +for weak compare_exchange, and false for the strong variation. Many targets +only offer the strong variation and ignore the parameter. When in doubt, use +the strong variation. -True is returned if @code{*@var{desired}} is written into +True is returned if @var{desired} is written into @code{*@var{ptr}} and the execution is considered to conform to the memory model specified by @var{success_memmodel}. There are no restrictions on what memory model can be used here. @@ -7242,27 +7245,32 @@ All memory orders are valid. @end deftypefn -@deftypefn {Built-in Function} bool __atomic_always_lock_free (size_t size) +@deftypefn {Built-in Function} bool __atomic_always_lock_free (size_t size, void *ptr) -This built-in function returns true if objects of size bytes will always -generate lock free atomic instructions for the target architecture. -Otherwise false is returned. +This built-in function returns true if objects of @var{size} bytes will always +generate lock free atomic instructions for the target architecture. +@var{size} must resolve to a compile time constant and the result also resolves to compile time constant. -size must resolve to a compile time constant. +@var{ptr} is an optional pointer to the object which may be used to determine +alignment. A value of 0 indicates typical alignment should be used. The +compiler may also ignore this parameter. @smallexample -if (_atomic_always_lock_free (sizeof (long long))) +if (_atomic_always_lock_free (sizeof (long long), 0)) @end smallexample @end deftypefn -@deftypefn {Built-in Function} bool __atomic_is_lock_free (size_t size) +@deftypefn {Built-in Function} bool __atomic_is_lock_free (size_t size, void *ptr) -This built-in function returns true if objects of size bytes will always +This built-in function returns true if objects of @var{size} bytes will always generate lock free atomic instructions for the target architecture. If it is not known to be lock free a call is made to a runtime routine named @code{__atomic_is_lock_free}. +@var{ptr} is an optional pointer to the object which may be used to determine +alignment. A value of 0 indicates typical alignment should be used. The +compiler may also ignore this parameter. @end deftypefn @node Object Size Checking @@ -8523,6 +8531,8 @@ instructions, but allow the compiler to schedule those calls. * SPARC VIS Built-in Functions:: * SPU Built-in Functions:: * TI C6X Built-in Functions:: +* TILE-Gx Built-in Functions:: +* TILEPro Built-in Functions:: @end menu @node Alpha Built-in Functions @@ -13710,6 +13720,78 @@ int _abs2 (int) @end smallexample +@node TILE-Gx Built-in Functions +@subsection TILE-Gx Built-in Functions + +GCC provides intrinsics to access every instruction of the TILE-Gx +processor. The intrinsics are of the form: + +@smallexample + +unsigned long long __insn_@var{op} (...) + +@end smallexample + +Where @var{op} is the name of the instruction. Refer to the ISA manual +for the complete list of instructions. + +GCC also provides intrinsics to directly access the network registers. +The intrinsics are: + +@smallexample + +unsigned long long __tile_idn0_receive (void) +unsigned long long __tile_idn1_receive (void) +unsigned long long __tile_udn0_receive (void) +unsigned long long __tile_udn1_receive (void) +unsigned long long __tile_udn2_receive (void) +unsigned long long __tile_udn3_receive (void) +void __tile_idn_send (unsigned long long) +void __tile_udn_send (unsigned long long) + +@end smallexample + +The intrinsic @code{void __tile_network_barrier (void)} is used to +guarantee that no network operatons before it will be reordered with +those after it. + +@node TILEPro Built-in Functions +@subsection TILEPro Built-in Functions + +GCC provides intrinsics to access every instruction of the TILEPro +processor. The intrinsics are of the form: + +@smallexample + +unsigned __insn_@var{op} (...) + +@end smallexample + +Where @var{op} is the name of the instruction. Refer to the ISA manual +for the complete list of instructions. + +GCC also provides intrinsics to directly access the network registers. +The intrinsics are: + +@smallexample + +unsigned __tile_idn0_receive (void) +unsigned __tile_idn1_receive (void) +unsigned __tile_sn_receive (void) +unsigned __tile_udn0_receive (void) +unsigned __tile_udn1_receive (void) +unsigned __tile_udn2_receive (void) +unsigned __tile_udn3_receive (void) +void __tile_idn_send (unsigned) +void __tile_sn_send (unsigned) +void __tile_udn_send (unsigned) + +@end smallexample + +The intrinsic @code{void __tile_network_barrier (void)} is used to +guarantee that no network operatons before it will be reordered with +those after it. + @node Target Format Checks @section Format Checks Specific to Particular Target Machines diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 4a85397b702..f1f2a6ca877 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -3096,6 +3096,10 @@ information are. @item @uref{#c6x-x-x,,c6x-*-*} @item +@uref{#tilegx-x-linux,,tilegx-*-linux*} +@item +@uref{#tilepro-x-linux,,tilepro-*-linux*} +@item @uref{#x-x-vxworks,,*-*-vxworks*} @item @uref{#x86-64-x-x,,x86_64-*-*, amd64-*-*} @@ -4460,6 +4464,22 @@ The C6X family of processors. This port requires binutils-2.22 or newer. @html <hr /> @end html +@heading @anchor{tilegx-*-linux}tilegx-*-linux* + +The TILE-Gx processor running GNU/Linux. This port requires +binutils-2.22 or newer. + +@html +<hr /> +@end html +@heading @anchor{tilepro-*-linux}tilepro-*-linux* + +The TILEPro processor running GNU/Linux. This port requires +binutils-2.22 or newer. + +@html +<hr /> +@end html @heading @anchor{x-x-vxworks}*-*-vxworks* Support for VxWorks is in flux. At present GCC supports @emph{only} the very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC@. diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 52d6bd56773..9718b1ed812 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -924,6 +924,12 @@ See RS/6000 and PowerPC Options. @emph{System V Options} @gccoptlist{-Qy -Qn -YP,@var{paths} -Ym,@var{dir}} +@emph{TILE-Gx Options} +@gccoptlist{-mcpu=CPU -m32 -m64} + +@emph{TILEPro Options} +@gccoptlist{-mcpu=CPU -m32} + @emph{V850 Options} @gccoptlist{-mlong-calls -mno-long-calls -mep -mno-ep @gol -mprolog-function -mno-prolog-function -mspace @gol @@ -10355,6 +10361,8 @@ platform. * SPARC Options:: * SPU Options:: * System V Options:: +* TILE-Gx Options:: +* TILEPro Options:: * V850 Options:: * VAX Options:: * VxWorks Options:: @@ -18485,6 +18493,46 @@ The assembler uses this option. @c the generic assembler that comes with Solaris takes just -Ym. @end table +@node TILE-Gx Options +@subsection TILE-Gx Options +@cindex TILE-Gx options + +These @samp{-m} options are supported on the TILE-Gx: + +@table @gcctabopt +@item -mcpu=@var{name} +@opindex mcpu +Selects the type of CPU to be targeted. Currently the only supported +type is @samp{tilegx}. + +@item -m32 +@itemx -m64 +@opindex m32 +@opindex m64 +Generate code for a 32-bit or 64-bit environment. The 32-bit +environment sets int, long, and pointer to 32 bits. The 64-bit +environment sets int to 32 bits and long and pointer to 64 bits. +@end table + +@node TILEPro Options +@subsection TILEPro Options +@cindex TILEPro options + +These @samp{-m} options are supported on the TILEPro: + +@table @gcctabopt +@item -mcpu=@var{name} +@opindex mcpu +Selects the type of CPU to be targeted. Currently the only supported +type is @samp{tilepro}. + +@item -m32 +@opindex m32 +Generate code for a 32-bit environment, which sets int, long, and +pointer to 32 bits. This is the only supported behavior so the flag +is essentially ignored. +@end table + @node V850 Options @subsection V850 Options @cindex V850 Options diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi index 92c1b28137d..c4eb355e253 100644 --- a/gcc/doc/md.texi +++ b/gcc/doc/md.texi @@ -3576,6 +3576,154 @@ Register B14 (aka DP). @end table +@item TILE-Gx---@file{config/tilegx/constraints.md} +@table @code +@item R00 +@itemx R01 +@itemx R02 +@itemx R03 +@itemx R04 +@itemx R05 +@itemx R06 +@itemx R07 +@itemx R08 +@itemx R09 +@itemx R010 +Each of these represents a register constraint for an individual +register, from r0 to r10. + +@item I +Signed 8-bit integer constant. + +@item J +Signed 16-bit integer constant. + +@item K +Unsigned 16-bit integer constant. + +@item L +Integer constant that fits in one signed byte when incremented by one +(@minus{}129 @dots{} 126). + +@item m +Memory operand. If used together with @samp{<} or @samp{>}, the +operand can have postincrement which requires printing with @samp{%In} +and @samp{%in} on TILE-Gx. For example: + +@smallexample +asm ("st_add %I0,%1,%i0" : "=m<>" (*mem) : "r" (val)); +@end smallexample + +@item M +A bit mask suitable for the BFINS instruction. + +@item N +Integer constant that is a byte tiled out eight times. + +@item O +The integer zero constant. + +@item P +Integer constant that is a sign-extended byte tiled out as four shorts. + +@item Q +Integer constant that fits in one signed byte when incremented +(@minus{}129 @dots{} 126), but excluding -1. + +@item S +Integer constant that has all 1 bits consecutive and starting at bit 0. + +@item T +A 16-bit fragment of a got, tls, or pc-relative reference. + +@item U +Memory operand except postincrement. This is roughly the same as +@samp{m} when not used together with @samp{<} or @samp{>}. + +@item W +An 8-element vector constant with identical elements. + +@item Y +A 4-element vector constant with identical elements. + +@item Z0 +The integer constant 0xffffffff. + +@item Z1 +The integer constant 0xffffffff00000000. + +@end table + +@item TILEPro---@file{config/tilepro/constraints.md} +@table @code +@item R00 +@itemx R01 +@itemx R02 +@itemx R03 +@itemx R04 +@itemx R05 +@itemx R06 +@itemx R07 +@itemx R08 +@itemx R09 +@itemx R010 +Each of these represents a register constraint for an individual +register, from r0 to r10. + +@item I +Signed 8-bit integer constant. + +@item J +Signed 16-bit integer constant. + +@item K +Nonzero integer constant with low 16 bits zero. + +@item L +Integer constant that fits in one signed byte when incremented by one +(@minus{}129 @dots{} 126). + +@item m +Memory operand. If used together with @samp{<} or @samp{>}, the +operand can have postincrement which requires printing with @samp{%In} +and @samp{%in} on TILEPro. For example: + +@smallexample +asm ("swadd %I0,%1,%i0" : "=m<>" (mem) : "r" (val)); +@end smallexample + +@item M +A bit mask suitable for the MM instruction. + +@item N +Integer constant that is a byte tiled out four times. + +@item O +The integer zero constant. + +@item P +Integer constant that is a sign-extended byte tiled out as two shorts. + +@item Q +Integer constant that fits in one signed byte when incremented +(@minus{}129 @dots{} 126), but excluding -1. + +@item T +A symbolic operand, or a 16-bit fragment of a got, tls, or pc-relative +reference. + +@item U +Memory operand except postincrement. This is roughly the same as +@samp{m} when not used together with @samp{<} or @samp{>}. + +@item W +A 4-element vector constant with identical elements. + +@item Y +A 2-element vector constant with identical elements. + +@end table + @item Xtensa---@file{config/xtensa/constraints.md} @table @code @item a diff --git a/gcc/expr.c b/gcc/expr.c index e63ed3b71f5..2e716cc328d 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -8600,8 +8600,9 @@ expand_expr_real_2 (sepops ops, rtx target, enum machine_mode tmode, if (modifier == EXPAND_STACK_PARM) target = 0; /* In case we have to reduce the result to bitfield precision - expand this as XOR with a proper constant instead. */ - if (reduce_bit_field) + for unsigned bitfield expand this as XOR with a proper constant + instead. */ + if (reduce_bit_field && TYPE_UNSIGNED (type)) temp = expand_binop (mode, xor_optab, op0, immed_double_int_const (double_int_mask (TYPE_PRECISION (type)), mode), diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 10d4abc2866..defca3f3512 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,24 @@ +2012-02-12 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/50981 + * trans-stmt.c (gfc_get_proc_ifc_for_call): New function. + (gfc_trans_call): Use gfc_get_proc_ifc_for_call. + +2012-02-12 Mikael Morin <mikael@gcc.gnu.org> + + * trans-array.c (gfc_walk_elemental_function_args, + gfc_walk_function_expr): Move call to gfc_get_proc_ifc_for_expr out + of gfc_walk_elemental_function_args. + * trans-stmt.c (gfc_trans_call): Ditto. + * trans-array.h (gfc_get_proc_ifc_for_expr): New prototype. + (gfc_walk_elemental_function_args): Update prototype. + +2012-02-12 Mikael Morin <mikael@gcc.gnu.org> + + * trans-array.c (gfc_get_proc_ifc_for_expr): New function. + (gfc_walk_elemental_function_args): Move code to + gfc_get_proc_ifc_for_expr and call it. + 2012-02-08 Tobias Burnus <burnus@net-b.de> PR fortran/52151 diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index edcde5c4c0c..bbe5afeebbf 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -8426,6 +8426,36 @@ gfc_reverse_ss (gfc_ss * ss) } +/* Given an expression refering to a procedure, return the symbol of its + interface. We can't get the procedure symbol directly as we have to handle + the case of (deferred) type-bound procedures. */ + +gfc_symbol * +gfc_get_proc_ifc_for_expr (gfc_expr *procedure_ref) +{ + gfc_symbol *sym; + gfc_ref *ref; + + if (procedure_ref == NULL) + return NULL; + + /* Normal procedure case. */ + sym = procedure_ref->symtree->n.sym; + + /* Typebound procedure case. */ + for (ref = procedure_ref->ref; ref; ref = ref->next) + { + if (ref->type == REF_COMPONENT + && ref->u.c.component->attr.proc_pointer) + sym = ref->u.c.component->ts.interface; + else + sym = NULL; + } + + return sym; +} + + /* Walk the arguments of an elemental function. PROC_EXPR is used to check whether an argument is permitted to be absent. If it is NULL, we don't do the check and the argument is assumed to be present. @@ -8433,7 +8463,7 @@ gfc_reverse_ss (gfc_ss * ss) gfc_ss * gfc_walk_elemental_function_args (gfc_ss * ss, gfc_actual_arglist *arg, - gfc_expr *proc_expr, gfc_ss_type type) + gfc_symbol *proc_ifc, gfc_ss_type type) { gfc_formal_arglist *dummy_arg; int scalar; @@ -8444,24 +8474,8 @@ gfc_walk_elemental_function_args (gfc_ss * ss, gfc_actual_arglist *arg, head = gfc_ss_terminator; tail = NULL; - if (proc_expr) - { - gfc_ref *ref; - - /* Normal procedure case. */ - dummy_arg = proc_expr->symtree->n.sym->formal; - - /* Typebound procedure case. */ - for (ref = proc_expr->ref; ref; ref = ref->next) - { - if (ref->type == REF_COMPONENT - && ref->u.c.component->attr.proc_pointer - && ref->u.c.component->ts.interface) - dummy_arg = ref->u.c.component->ts.interface->formal; - else - dummy_arg = NULL; - } - } + if (proc_ifc) + dummy_arg = proc_ifc->formal; else dummy_arg = NULL; @@ -8549,7 +8563,8 @@ gfc_walk_function_expr (gfc_ss * ss, gfc_expr * expr) by reference. */ if (sym->attr.elemental || (comp && comp->attr.elemental)) return gfc_walk_elemental_function_args (ss, expr->value.function.actual, - expr, GFC_SS_REFERENCE); + gfc_get_proc_ifc_for_expr (expr), + GFC_SS_REFERENCE); /* Scalar functions are OK as these are evaluated outside the scalarization loop. Pass back and let the caller deal with it. */ diff --git a/gcc/fortran/trans-array.h b/gcc/fortran/trans-array.h index 6ca630e9ed9..9bafb9478d5 100644 --- a/gcc/fortran/trans-array.h +++ b/gcc/fortran/trans-array.h @@ -66,6 +66,8 @@ void gfc_trans_deferred_array (gfc_symbol *, gfc_wrapped_block *); /* Generate an initializer for a static pointer or allocatable array. */ void gfc_trans_static_array_pointer (gfc_symbol *); +/* Get the procedure interface for a function call. */ +gfc_symbol *gfc_get_proc_ifc_for_expr (gfc_expr *); /* Generate scalarization information for an expression. */ gfc_ss *gfc_walk_expr (gfc_expr *); /* Workhorse for gfc_walk_expr. */ @@ -74,7 +76,7 @@ gfc_ss *gfc_walk_subexpr (gfc_ss *, gfc_expr *); gfc_ss *gfc_walk_array_ref (gfc_ss *, gfc_expr *, gfc_ref * ref); /* Walk the arguments of an elemental function. */ gfc_ss *gfc_walk_elemental_function_args (gfc_ss *, gfc_actual_arglist *, - gfc_expr *, gfc_ss_type); + gfc_symbol *, gfc_ss_type); /* Walk an intrinsic function. */ gfc_ss *gfc_walk_intrinsic_function (gfc_ss *, gfc_expr *, gfc_intrinsic_sym *); diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index 7d094b0311e..bb3a89084e0 100644 --- a/gcc/fortran/trans-stmt.c +++ b/gcc/fortran/trans-stmt.c @@ -348,6 +348,27 @@ gfc_conv_elemental_dependencies (gfc_se * se, gfc_se * loopse, } +/* Get the interface symbol for the procedure corresponding to the given call. + We can't get the procedure symbol directly as we have to handle the case + of (deferred) type-bound procedures. */ + +static gfc_symbol * +get_proc_ifc_for_call (gfc_code *c) +{ + gfc_symbol *sym; + + gcc_assert (c->op == EXEC_ASSIGN_CALL || c->op == EXEC_CALL); + + sym = gfc_get_proc_ifc_for_expr (c->expr1); + + /* Fall back/last resort try. */ + if (sym == NULL) + sym = c->resolved_sym; + + return sym; +} + + /* Translate the CALL statement. Builds a call to an F95 subroutine. */ tree @@ -372,7 +393,8 @@ gfc_trans_call (gfc_code * code, bool dependency_check, ss = gfc_ss_terminator; if (code->resolved_sym->attr.elemental) ss = gfc_walk_elemental_function_args (ss, code->ext.actual, - code->expr1, GFC_SS_REFERENCE); + get_proc_ifc_for_call (code), + GFC_SS_REFERENCE); /* Is not an elemental subroutine call with array valued arguments. */ if (ss == gfc_ss_terminator) diff --git a/gcc/gcc.c b/gcc/gcc.c index 6f98fc9b9d6..c7c8c053ba3 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -675,6 +675,7 @@ proper position among the other output files. */ %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}}\ %{static:} %{L*} %(mfwrap) %(link_libgcc) %o\ %{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)}\ + %{fgnu-tm:%:include(libitm.spec)%(link_itm)}\ %(mflib) " STACK_SPLIT_SPEC "\ %{fprofile-arcs|fprofile-generate*|coverage:-lgcov}\ %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\ @@ -839,9 +840,14 @@ static const char *const multilib_defaults_raw[] = MULTILIB_DEFAULTS; #define GOMP_SELF_SPECS "%{fopenmp|ftree-parallelize-loops=*: -pthread}" #endif +/* Likewise for -fgnu-tm. */ +#ifndef GTM_SELF_SPECS +#define GTM_SELF_SPECS "%{fgnu-tm: -pthread}" +#endif + static const char *const driver_self_specs[] = { "%{fdump-final-insns:-fdump-final-insns=.} %<fdump-final-insns", - DRIVER_SELF_SPECS, CONFIGURE_SPECS, GOMP_SELF_SPECS + DRIVER_SELF_SPECS, CONFIGURE_SPECS, GOMP_SELF_SPECS, GTM_SELF_SPECS }; #ifndef OPTION_DEFAULT_SPECS diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h index a78a7703387..8a03948ee78 100644 --- a/gcc/ginclude/stddef.h +++ b/gcc/ginclude/stddef.h @@ -200,8 +200,9 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t; #define ___int_size_t_h #define _GCC_SIZE_T #define _SIZET_ -#if defined (__FreeBSD__) && (__FreeBSD__ >= 5) -/* __size_t is a typedef on FreeBSD 5!, must not trash it. */ +#if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \ + || defined(__FreeBSD_kernel__) +/* __size_t is a typedef on FreeBSD 5, must not trash it. */ #else #define __size_t #endif diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 8ab689d0152..db715947df0 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -3,7 +3,7 @@ marshalling to implement data sharing and copying clauses. Contributed by Diego Novillo <dnovillo@redhat.com> - Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 + Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This file is part of GCC. @@ -4664,6 +4664,9 @@ expand_omp_for (struct omp_region *region) { int fn_index, start_ix, next_ix; + if (fd.chunk_size == NULL + && fd.sched_kind == OMP_CLAUSE_SCHEDULE_STATIC) + fd.chunk_size = integer_zero_node; gcc_assert (fd.sched_kind != OMP_CLAUSE_SCHEDULE_AUTO); fn_index = (fd.sched_kind == OMP_CLAUSE_SCHEDULE_RUNTIME) ? 3 : fd.sched_kind; diff --git a/gcc/passes.c b/gcc/passes.c index c129be102fb..7f8ff6f05f7 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -709,7 +709,7 @@ enable_disable_pass (const char *arg, bool is_enable) if (is_enable) error ("unknown pass %s specified in -fenable", phase_name); else - error ("unknown pass %s specified in -fdisble", phase_name); + error ("unknown pass %s specified in -fdisable", phase_name); free (argstr); return; } diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog index f04ac6aec3e..aba4a1ae885 100644 --- a/gcc/po/ChangeLog +++ b/gcc/po/ChangeLog @@ -1,3 +1,19 @@ +2012-02-13 Joseph Myers <joseph@codesourcery.com> + + * de.po: Update. + +2012-02-13 Joseph Myers <joseph@codesourcery.com> + + * de.po: Update. + +2012-02-13 Joseph Myers <joseph@codesourcery.com> + + * sv.po: Update. + +2012-02-12 Joseph Myers <joseph@codesourcery.com> + + * de.po: Update. + 2012-02-09 Joseph Myers <joseph@codesourcery.com> * de.po: Update. diff --git a/gcc/po/de.po b/gcc/po/de.po index f81af279fcc..e5240a7082e 100644 --- a/gcc/po/de.po +++ b/gcc/po/de.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gcc 4.7-b20120128\n" "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" "POT-Creation-Date: 2012-01-27 16:13+0000\n" -"PO-Revision-Date: 2012-02-09 22:21+0200\n" +"PO-Revision-Date: 2012-02-13 11:55+0200\n" "Last-Translator: Roland Stigge <stigge@antcom.de>\n" "Language-Team: German <translation-team-de@lists.sourceforge.net>\n" "Language: de\n" @@ -17175,7 +17175,7 @@ msgstr "Spezifikationsfehler: mehr als ein Argument für SYSROOT_HEADERS_SUFFIX_ #: gcc.c:6466 #, gcc-internal-format msgid "unrecognized option %<-%s%>" -msgstr "nicht erkannte Option %<-%s%>" +msgstr "unbekannte Option %<-%s%>" #. The error status indicates that only one set of fixed #. headers should be built. @@ -17769,9 +17769,9 @@ msgid "toplevel reorder must be disabled when unit-at-a-time is disabled" msgstr "Toplevel-Neuordnung muss ausgeschaltet sein, wenn »unit-at-a-time« ausgeschaltet ist" #: opts.c:667 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "transactional memory is not supported with non-call exceptions" -msgstr "-static-libgfortran wird in dieser Konfiguration nicht unterstützt" +msgstr "transaktionsbasierter Speicher wird von Nicht-Aufruf-Ausnahmen nicht unterstützt" #: opts.c:686 #, gcc-internal-format @@ -17905,49 +17905,49 @@ msgid "invalid parameter %qs" msgstr "ungültiger Parameter %qs" #: passes.c:700 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "unrecognized option -fenable" -msgstr "nicht erkannte Option %<-%s%>" +msgstr "unbekannte Option -fenable" #: passes.c:702 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "unrecognized option -fdisable" -msgstr "nicht erkannte Option %<-%s%>" +msgstr "unbekannte Option -fdisable" #: passes.c:710 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "unknown pass %s specified in -fenable" -msgstr "unbekanntes Feld %qE in Initialisierung angegeben" +msgstr "unbekannter Durchlauf %s in -fenable angegeben" #: passes.c:712 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "unknown pass %s specified in -fdisble" -msgstr "unbekanntes Feld %qE in Initialisierung angegeben" +msgstr "unbekannter Durchlauf %s in -fdisable" #: passes.c:739 passes.c:829 #, gcc-internal-format, gfc-internal-format msgid "enable pass %s for functions in the range of [%u, %u]" -msgstr "" +msgstr "Durchlauf %s für Funktionen im Bereich [%u, %u] einschalten" #: passes.c:742 passes.c:840 #, gcc-internal-format, gfc-internal-format msgid "disable pass %s for functions in the range of [%u, %u]" -msgstr "" +msgstr "Durchlauf %s für Funktionen im Bereich [%u, %u] ausschalten" #: passes.c:778 passes.c:806 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Invalid range %s in option %s" -msgstr "ungültige Option %qs" +msgstr "Ungültiger Bereich %s in Option %s" #: passes.c:825 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "enable pass %s for function %s" -msgstr "ungültige Speicherklasse für Funktion %qE" +msgstr "Durchlauf %s für Funktion %s einschalten" #: passes.c:836 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "disable pass %s for function %s" -msgstr "ungültige Speicherklasse für Funktion %qE" +msgstr "Durchlauf %s für Funktion %s ausschalten" #: passes.c:1049 #, gcc-internal-format @@ -17975,7 +17975,7 @@ msgid "pass %qs not found but is referenced by new pass %qs" msgstr "Durchlauf %qs nicht gefunden, wird jedoch von neuem Durchlauf %qs referenziert" #: plugin.c:152 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "inaccessible plugin file %s expanded from short plugin name %s: %m" msgstr "nicht zugreifbare Plugin-Datei %s aus kurzem Plugin-Namen %s erzeugt: %m" @@ -18170,14 +18170,14 @@ msgid "global register variable follows a function definition" msgstr "globale Registervariable folgt einer Funktionsdefinition" #: reginfo.c:886 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "register of %qD used for multiple global register variables" -msgstr "Register für zwei globale Registervariablen verwendet" +msgstr "Register von %qD für mehrere globale Registervariablen verwendet" #: reginfo.c:889 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "conflicts with %qD" -msgstr " Konflikt mit %q+D" +msgstr "Konflikt mit %qD" #: reginfo.c:894 #, gcc-internal-format @@ -18490,14 +18490,14 @@ msgid "#pragma GCC target is not supported for this machine" msgstr "#pragma GCC target wird für diese Maschine nicht unterstützt" #: tlink.c:481 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "removing .rpo file: %m" -msgstr ".rpo-Datei wird gelöscht" +msgstr ".rpo-Datei wird gelöscht: %m" #: tlink.c:483 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "renaming .rpo file: %m" -msgstr ".rpo-Datei wird umbenannt" +msgstr ".rpo-Datei wird umbenannt: %m" #: tlink.c:487 #, gcc-internal-format, gfc-internal-format @@ -18530,24 +18530,24 @@ msgid "-frecord-gcc-switches is not supported by the current target" msgstr "-frecord-gcc-switches wird für das aktuelle Ziel nicht unterstützt" #: toplev.c:1056 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "stack usage computation not supported for this target" -msgstr "-fstack-usage für dieses Ziel nicht unterstützt" +msgstr "Stapelverbrauchsberechnung wird für dieses Ziel nicht unterstützt" #: toplev.c:1110 #, gcc-internal-format msgid "stack usage might be unbounded" -msgstr "" +msgstr "Stapelverbrauch möglicherweise unbegrenzt" #: toplev.c:1114 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "stack usage might be %wd bytes" -msgstr "Stapelrahmen zu groß: %d Bytes" +msgstr "Stapelverbrauch könnte %wd Bytes sein" #: toplev.c:1117 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "stack usage is %wd bytes" -msgstr "Stapelrahmen zu groß: %d Bytes" +msgstr "Stapelverbrauch ist %wd Bytes" #: toplev.c:1294 #, gcc-internal-format @@ -18562,12 +18562,12 @@ msgstr "Graphite-Schleifenoptimierungen können nicht verwendet werden (-fgraphi #: toplev.c:1329 #, gcc-internal-format msgid "mudflap cannot be used together with link-time optimization" -msgstr "" +msgstr "Schmutzfänger kann nicht zusammen mit Linkzeit-Optimierung verwendet werden" #: toplev.c:1338 #, gcc-internal-format msgid "-fstrict-volatile-bitfields disabled; it is incompatible with ABI versions < 2" -msgstr "" +msgstr "-fstrict-volatile-bitfields ausgeschaltet; unverträglich mit ABI-Versionen < 2" #: toplev.c:1366 #, gcc-internal-format @@ -18665,79 +18665,79 @@ msgid "error closing %s: %m" msgstr "Fehler beim Schließen von %s: %m" #: trans-mem.c:570 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid volatile use of %qD inside transaction" -msgstr "ungültige Verwendung von %qD in Spezifizierung der Bindung" +msgstr "ungültige volatile-Verwendung von %qD innerhalb von Transaktion" #: trans-mem.c:596 #, gcc-internal-format msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>" -msgstr "" +msgstr "Funktionsaufruf von %<transaction_may_cancel_outer%> nicht innerhalb von äußerer Transaktion oder %<transaction_may_cancel_outer%>" #: trans-mem.c:664 trans-mem.c:4137 #, gcc-internal-format msgid "unsafe function call %qD within atomic transaction" -msgstr "" +msgstr "unsicherer Funktionsaufruf %qD innerhalb von atomarer Transaktion" #: trans-mem.c:670 #, gcc-internal-format msgid "unsafe function call %qE within atomic transaction" -msgstr "" +msgstr "unsicherer Funktionsaufruf %qE innerhalb von atomarer Transaktion" #: trans-mem.c:674 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "unsafe indirect function call within atomic transaction" -msgstr "Indirekter Funktionsaufruf mit noch unbekanntem Aufrufer" +msgstr "unsicherer indirekter Funktionsaufruf innerhalb von atomarer Transaktion" #: trans-mem.c:682 trans-mem.c:4070 #, gcc-internal-format msgid "unsafe function call %qD within %<transaction_safe%> function" -msgstr "" +msgstr "unsicherer Funktionsaufruf %qD innerhalb von %<transaction_safe%>-Funktion" #: trans-mem.c:688 #, gcc-internal-format msgid "unsafe function call %qE within %<transaction_safe%> function" -msgstr "" +msgstr "unsicherer Funktionsaufruf %qE innerhalb von %<transaction_safe%>-Funktion" #: trans-mem.c:692 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "unsafe indirect function call within %<transaction_safe%> function" -msgstr "Indirekter Funktionsaufruf mit noch unbekanntem Aufrufer" +msgstr "unsicherer indirekter Funktionsaufruf innerhalb von %<transaction_safe%>-Funktion" #: trans-mem.c:707 trans-mem.c:4109 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "asm not allowed in atomic transaction" -msgstr "%H%<[*]%> nicht außerhalb einer Deklaration erlaubt" +msgstr "in atomarer Transaktion ist kein asm erlaubt" #: trans-mem.c:710 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "asm not allowed in %<transaction_safe%> function" -msgstr "bei einer Funktionsdefinition sind keine Attribute erlaubt" +msgstr "in %<transaction_safe%>-Funktion ist kein asm erlaubt" #: trans-mem.c:721 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "relaxed transaction in atomic transaction" -msgstr "Jede Funktion in ihren eigenen Abschnitt platzieren" +msgstr "entspannte Transaktion in atomarer Transaktion" #: trans-mem.c:724 #, gcc-internal-format msgid "relaxed transaction in %<transaction_safe%> function" -msgstr "" +msgstr "entspannte Transaktion in %<transaction_safe%>-Funktion" #: trans-mem.c:731 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "outer transaction in transaction" -msgstr "Zeiger auf eine Funktion in Subtraktion verwendet" +msgstr "äußere Transaktion in Transaktion" #: trans-mem.c:734 #, gcc-internal-format msgid "outer transaction in %<transaction_may_cancel_outer%> function" -msgstr "" +msgstr "äußere Transaktion in %<transaction_may_cancel_outer%>-Funktion" #: trans-mem.c:738 #, gcc-internal-format msgid "outer transaction in %<transaction_safe%> function" -msgstr "" +msgstr "äußere Transaktion in %<transaction_safe%>-Funktion" #: tree-cfg.c:2616 #, gcc-internal-format @@ -18830,14 +18830,14 @@ msgid "invalid operand to pointer plus, first operand is not a pointer" msgstr "ungültiger Operand für Zeiger-Plus, erster Operand ist kein Zeiger" #: tree-cfg.c:2844 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid operand to pointer plus, second operand is not an integer type of appropriate width" -msgstr "ungültiger Operand für Zeiger-Plus, zweiter Operand ist keine Ganzzahl mit Größentyp" +msgstr "ungültiger Operand für Zeiger-Plus, zweiter Operand ist kein Ganzzahltyp mit passender Breite" #: tree-cfg.c:2895 #, gcc-internal-format msgid "invalid CASE_CHAIN" -msgstr "" +msgstr "ungültiges CASE_CHAIN" #: tree-cfg.c:2923 #, gcc-internal-format @@ -18895,9 +18895,9 @@ msgid "invalid offset operand in MEM_REF" msgstr "ungültiger Offset-Operand in MEM_REF" #: tree-cfg.c:3060 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid address operand in TARGET_MEM_REF" -msgstr "invalid address operand in TARGET_MEM_REF" +msgstr "ungültiger Adressoperand in TARGET_MEM_REF" #: tree-cfg.c:3067 #, gcc-internal-format @@ -18907,12 +18907,12 @@ msgstr "ungültiger Offset-Operand in TARGET_MEM_REF" #: tree-cfg.c:3121 #, gcc-internal-format msgid "gimple call has two targets" -msgstr "" +msgstr "Gimple-Aufruf hat zwei Ziele" #: tree-cfg.c:3130 #, gcc-internal-format msgid "gimple call has no target" -msgstr "" +msgstr "Gimple-Aufruf hat kein Ziel" #: tree-cfg.c:3137 #, gcc-internal-format @@ -18970,24 +18970,24 @@ msgid "invalid operands in gimple comparison" msgstr "ungültige Operanden in GIMPLE-Vergleich" #: tree-cfg.c:3270 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "mismatching comparison operand types" -msgstr "Typ passt nicht in Vergleichsausdruck" +msgstr "Vergleichsoperandentypen passen nicht" #: tree-cfg.c:3289 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-vector operands in vector comparison" -msgstr "ungültige Operanden in GIMPLE-Vergleich" +msgstr "Nicht-Vektoroperanden in Vektorvergleich" #: tree-cfg.c:3299 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid vector comparison resulting type" -msgstr "ungültige Operanden in Vergleichsausdruck" +msgstr "ungültiger Ergebnistyp in Vektorvergleich" #: tree-cfg.c:3306 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "bogus comparison result type" -msgstr "Beim Vergleich verschiedener Enum-Typen warnen" +msgstr "falscher Ergebnistyp bei Vergleich" #: tree-cfg.c:3328 #, gcc-internal-format @@ -19060,9 +19060,9 @@ msgid "non-element sized vector shift of floating point vector" msgstr "Vektorschieben um Nicht-Elementgröße eines Gleitkommavektors" #: tree-cfg.c:3588 tree-cfg.c:3609 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "type mismatch in widening vector shift expression" -msgstr "Typ passt nicht in Vektorschiebeausdruck" +msgstr "Typ passt nicht bei Erweiterung von Vektorschiebeausdruck" #: tree-cfg.c:3631 #, gcc-internal-format @@ -19105,24 +19105,24 @@ msgid "type mismatch in fused multiply-add expression" msgstr "Typ passt nicht in vereinigtem Multiplizier-Addier-Ausdruck" #: tree-cfg.c:3836 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "type mismatch in vector permute expression" -msgstr "Typ passt nicht in Vektorschiebeausdruck" +msgstr "Typ passt nicht in Vektorpermutationsausdruck" #: tree-cfg.c:3848 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "vector types expected in vector permute expression" -msgstr "Ganzzahlausdruck erwartet" +msgstr "in Vektorpermutationsausdruck werden Vektortypen erwartet" #: tree-cfg.c:3862 #, gcc-internal-format msgid "vectors with different element number found in vector permute expression" -msgstr "" +msgstr "Vektoren unterschiedlicher Elementanzahl in Vektorpermutationsausdruck gefunden" #: tree-cfg.c:3875 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid mask type in vector permute expression" -msgstr "ungültige Operanden in Wahrheitsausdruck" +msgstr "ungültiger Maskentyp in Vektorpermutationsausdruck" #: tree-cfg.c:3911 #, gcc-internal-format @@ -19455,9 +19455,9 @@ msgid "function %q+F can never be inlined because it uses attributes conflicting msgstr "Funktion %q+F kann nie inline sein, da sie mit inline in Konflikt stehende Attribute hat" #: tree-inline.c:3823 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "inlining failed in call to always_inline %q+F: %s" -msgstr "»inline« beim Aufruf von %q+F gescheitert: %s" +msgstr "»inline« beim Aufruf von always_inline %q+F gescheitert: %s" #: tree-inline.c:3825 tree-inline.c:3840 #, gcc-internal-format @@ -19516,44 +19516,44 @@ msgid "virtual definition of statement not up-to-date" msgstr "" #: tree-ssa-operands.c:1123 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "virtual def operand missing for stmt" -msgstr "ungültiger Operand in »return«-Anweisung" +msgstr "für Anweisung fehlt virtueller Def-Operand" #: tree-ssa-operands.c:1133 #, gcc-internal-format msgid "virtual use of statement not up-to-date" -msgstr "" +msgstr "virtuelle Verwendung von Anweisung nicht aktuell" #: tree-ssa-operands.c:1140 #, gcc-internal-format msgid "virtual use operand missing for stmt" -msgstr "" +msgstr "für Anweisung fehlt virtueller Verwendungs-Operand" #: tree-ssa-operands.c:1156 #, gcc-internal-format msgid "excess use operand for stmt" -msgstr "" +msgstr "überzähliger Verwendungs-Operand für Anweisung" #: tree-ssa-operands.c:1164 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "use operand missing for stmt" -msgstr "Operandenzahl fehlt hinter %%-Buchstabe" +msgstr "für Anweisung fehlt Verwendungs-Operand" #: tree-ssa-operands.c:1181 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "excess def operand for stmt" -msgstr "Deklaration oder Anweisung erwartet" +msgstr "überzähliger Def-Operand für Anweisung" #: tree-ssa-operands.c:1189 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "def operand missing for stmt" -msgstr "Operandenzahl fehlt hinter %%-Buchstabe" +msgstr "für Anweisung fehlt Def-Operand" #: tree-ssa-operands.c:1196 #, gcc-internal-format msgid "stmt volatile flag not up-to-date" -msgstr "" +msgstr "volatile-Kennzeichen für Anweisung nicht aktuell" #: tree-ssa-uninit.c:1958 tree-ssa.c:1655 #, gcc-internal-format @@ -19686,19 +19686,19 @@ msgid "%qD is used uninitialized in this function" msgstr "%qD wird in dieser Funktion uninitialisiert verwendet" #: tree-ssa.c:1687 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE is used uninitialized in this function" -msgstr "%qD wird in dieser Funktion uninitialisiert verwendet" +msgstr "%qE wird in dieser Funktion uninitialisiert verwendet" #: tree-ssa.c:1692 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE may be used uninitialized in this function" -msgstr "%qD könnte in dieser Funktion uninitialisiert verwendet werden" +msgstr "%qE könnte in dieser Funktion uninitialisiert verwendet werden" #: tree-streamer-in.c:306 tree-streamer-in.c:1075 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "machine independent builtin code out of range" -msgstr "Hex-Fluchtsequenz außerhalb des Wertebereiches" +msgstr "maschinenunabhängiger eingebauter Code außerhalb des Wertebereiches" #: tree-streamer-in.c:311 tree-streamer-in.c:1083 #, gcc-internal-format @@ -19711,34 +19711,34 @@ msgid "cl_target_option size mismatch in LTO reader and writer" msgstr "unpassende Größe von cl_target_option in LTO-Leser und -Schreiber" #: tree-streamer-in.c:920 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "cl_optimization size mismatch in LTO reader and writer" -msgstr "unpassende Größe von cl_target_option in LTO-Leser und -Schreiber" +msgstr "unpassende Größe von cl_optimization in LTO-Leser und -Schreiber" #: tree-streamer-out.c:364 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "tree bytecode streams do not support machine specific builtin functions on this target" -msgstr "GIMPLE-Bytecode-Ströme unterstützen keine maschinenspezifischen eingebauten Funktionen auf diesem Ziel" +msgstr "Baum-Bytecode-Ströme unterstützen keine maschinenspezifischen eingebauten Funktionen auf diesem Ziel" #: tree-vect-generic.c:244 #, gcc-internal-format msgid "vector operation will be expanded piecewise" -msgstr "" +msgstr "Vektoroperation wird stückweise ausgeweitet" #: tree-vect-generic.c:247 #, gcc-internal-format msgid "vector operation will be expanded in parallel" -msgstr "" +msgstr "Vektoroperation wird parallel ausgeweitet" #: tree-vect-generic.c:299 #, gcc-internal-format msgid "vector operation will be expanded with a single scalar operation" -msgstr "" +msgstr "Vektoroperation wird mit einzelner skalarer Operation ausgeweitet" #: tree-vect-generic.c:661 #, gcc-internal-format msgid "vector shuffling operation will be expanded piecewise" -msgstr "" +msgstr "Vektorumverteilungsoperation wird stückweise ausgeweitet" #: tree-vrp.c:5295 #, gcc-internal-format @@ -20004,9 +20004,9 @@ msgid "variable tracking size limit exceeded" msgstr "" #: varasm.c:317 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%+D causes a section type conflict with %D" -msgstr "%+D löst einen Abschnittstypkonflikt aus" +msgstr "%+D löst einen Abschnittstypkonflikt mit %D aus" #: varasm.c:958 #, gcc-internal-format @@ -20029,14 +20029,14 @@ msgid "data type of %q+D isn%'t suitable for a register" msgstr "Datentyp von %q+D ist nicht für Register geeignet" #: varasm.c:1212 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "the register specified for %q+D cannot be accessed by the current target" -msgstr "für %q+D angegebenes Register eignet sich nicht für Datentyp" +msgstr "für %q+D angegebenes Register kann vom aktuellen Ziel nicht zugegriffen werden" #: varasm.c:1215 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "the register specified for %q+D is not general enough to be used as a register variable" -msgstr "Register für zwei globale Registervariablen verwendet" +msgstr "für %q+D angegebenes Register ist nicht allgemein genug, um als eine Registervariable verwendet zu werden" #: varasm.c:1218 #, gcc-internal-format @@ -20406,14 +20406,14 @@ msgid "invalid application of %<sizeof%> to a function type" msgstr "Ungültige Anwendung von %<sizeof%> auf einen Funktionstypen" #: c-family/c-common.c:4367 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C++ does not permit %<alignof%> applied to a function type" -msgstr "ISO-C++ erlaubt kein %<alignof%> mit einem Nicht-Typ" +msgstr "ISO-C++ erlaubt kein auf Funktionstypen angewendetes %<alignof%>" #: c-family/c-common.c:4370 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C does not permit %<_Alignof%> applied to a function type" -msgstr "ISO-C++ erlaubt kein %<alignof%> mit einem Nicht-Typ" +msgstr "ISO-C erlaubt kein auf Funktionstypen angewendetes %<_Alignof%>" #: c-family/c-common.c:4381 #, gcc-internal-format @@ -20421,14 +20421,14 @@ msgid "invalid application of %qs to a void type" msgstr "Ungültige Anwendung von %qs auf einen void-Typen" #: c-family/c-common.c:4390 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid application of %qs to incomplete type %qT" msgstr "Ungültige Anwendung von %qs auf unvollständigen Typen %qT" #: c-family/c-common.c:4398 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid application of %qs to array type %qT of incomplete element type" -msgstr "Ungültige Anwendung von %qs auf unvollständigen Typen %qT" +msgstr "Ungültige Anwendung von %qs auf Feldtyp %qT mit unvollständigem Elementtyp" #: c-family/c-common.c:4440 #, gcc-internal-format @@ -20632,9 +20632,9 @@ msgid "section attributes are not supported for this target" msgstr "Abschnitts-Attribute werden für dieses Ziel nicht unterstützt" #: c-family/c-common.c:6747 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "requested alignment is not an integer constant" -msgstr "Verlangte Ausrichtung ist keine Konstante" +msgstr "Verlangte Ausrichtung ist keine Ganzzahlkonstante" #: c-family/c-common.c:6754 #, gcc-internal-format @@ -20758,34 +20758,34 @@ msgid "alloc_size parameter outside range" msgstr "Parameter alloc_size außerhalb des Wertebereiches" #: c-family/c-common.c:7397 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE attribute duplicated" -msgstr "Attribut %qE wird ignoriert" +msgstr "doppeltes Attribut %qE" #: c-family/c-common.c:7399 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE attribute follows %qE" -msgstr "Attribut %qE ignoriert für %qE" +msgstr "Attribut %qE folgt auf %qE" #: c-family/c-common.c:7498 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "type was previously declared %qE" -msgstr "vorher hier deklariert" +msgstr "Typ war vorher als %qE deklariert" #: c-family/c-common.c:7551 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE argument not an identifier" -msgstr "Argument für cleanup ist kein Bezeichner" +msgstr "Argument %qE ist kein Bezeichner" #: c-family/c-common.c:7562 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD is not compatible with %qD" -msgstr "%qD in %qD nicht deklariert" +msgstr "%qD ist mit %qD unverträglich" #: c-family/c-common.c:7565 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "transaction_wrap argument is not a function" -msgstr "Argument für cleanup ist keine Funktion" +msgstr "Argument für transaction_wrap ist keine Funktion" #: c-family/c-common.c:7613 #, gcc-internal-format @@ -20916,9 +20916,9 @@ msgid "non-const integer argument %u in call to function %qE" msgstr "Nicht-konstantes Ganzzahl-Argument %u in Aufruf von Funktion %qE" #: c-family/c-common.c:8522 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-integer argument 3 in call to function %qE" -msgstr "Nicht-konstantes Ganzzahl-Argument %u in Aufruf von Funktion %qE" +msgstr "Nicht-Ganzzahl-Argument 3 in Aufruf von Funktion %qE" #: c-family/c-common.c:8847 #, gcc-internal-format @@ -21131,44 +21131,44 @@ msgid "size of array is too large" msgstr "Feldgröße ist zu groß" #: c-family/c-common.c:9425 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "incorrect number of arguments to function %qE" -msgstr "Zu wenige Argumente für Funktion %qE" +msgstr "Falsche Anzahl der Argumente für Funktion %qE" #: c-family/c-common.c:9433 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "argument 1 of %qE must be a non-void pointer type" -msgstr "Argument %d von %qE muss eine Adresse sein" +msgstr "Argument 1 von %qE muss ein Nicht-Void-Zeigertyp sein" #: c-family/c-common.c:9442 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "argument 1 of %qE must be a pointer to a constant size type" -msgstr "%Kerstes Argument von %D muss ein Zeiger, das zweite eine Ganzzahlkonstante sein" +msgstr "Argument 1 von %qE muss ein Zeiger auf Typen konstanter Größe sein" #: c-family/c-common.c:9453 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "argument 1 of %qE must be a pointer to a nonzero size object" -msgstr "%Kerstes Argument von %D muss ein Zeiger, das zweite eine Ganzzahlkonstante sein" +msgstr "Argument 1 von %qE muss ein Zeiger auf Objekt breiter als Null sein" #: c-family/c-common.c:9468 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "argument %d of %qE must be a pointer type" -msgstr "Argument %d von %qE muss eine Adresse sein" +msgstr "Argument %d von %qE muss eine Zeigertyp sein" #: c-family/c-common.c:9475 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "size mismatch in argument %d of %qE" -msgstr "Unpassender Typ/Rang in Argument »%s« bei %L" +msgstr "Unpassende Größe in Argument %d von %qE" #: c-family/c-common.c:9491 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid memory model argument %d of %qE" -msgstr "Inkompatibler Typ für Argument %d von %qE" +msgstr "ungültiges Argument %d für Speichermodell von %qE" #: c-family/c-common.c:9498 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-integer memory model argument %d of %qE" -msgstr "Inkompatibler Typ für Argument %d von %qE" +msgstr "Nicht-Ganzzahlargument %d für Speichermodell von %qE" #: c-family/c-common.c:10024 #, gcc-internal-format @@ -21301,9 +21301,9 @@ msgid "comparison of promoted ~unsigned with unsigned" msgstr "Vergleich von weitergegebenem ~unsigned mit unsigned" #: c-family/c-common.c:10511 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "typedef %qD locally defined but not used" -msgstr "%q+D definiert, aber nicht verwendet" +msgstr "typedef %qD lokal definiert, aber nicht verwendet" #: c-family/c-format.c:126 c-family/c-format.c:313 #, gcc-internal-format @@ -22259,39 +22259,39 @@ msgid "-mcpu=%s has invalid silicon revision" msgstr "-mcpu=%s hat ungültige Silizium-Revision" #: common/config/i386/i386-common.c:560 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "-malign-loops is obsolete, use -falign-loops" -msgstr "%salign-loops%s ist veraltet, Ersatz: -falign-loops%s" +msgstr "-malign-loops ist veraltet, Ersatz: -falign-loops" #: common/config/i386/i386-common.c:562 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "-malign-loops=%d is not between 0 and %d" -msgstr "-malign-loops=%d ist nicht zwischen 1 und %d" +msgstr "-malign-loops=%d ist nicht zwischen 0 und %d" #: common/config/i386/i386-common.c:569 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "-malign-jumps is obsolete, use -falign-jumps" -msgstr "%salign-jumps%s ist veraltet, Ersatz: -falign-jumps%s" +msgstr "-malign-jumps ist veraltet, Ersatz: -falign-jumps" #: common/config/i386/i386-common.c:571 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "-malign-jumps=%d is not between 0 and %d" -msgstr "-malign-jumps=%d ist nicht zwischen 1 und %d" +msgstr "-malign-jumps=%d ist nicht zwischen 0 und %d" #: common/config/i386/i386-common.c:579 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "-malign-functions is obsolete, use -falign-functions" -msgstr "%salign-functions%s ist veraltet, Ersatz: -falign-functions%s" +msgstr "-malign-functions ist veraltet, Ersatz: -falign-functions" #: common/config/i386/i386-common.c:581 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "-malign-functions=%d is not between 0 and %d" -msgstr "-malign-functions=%d ist nicht zwischen 1 und %d" +msgstr "-malign-functions=%d ist nicht zwischen 0 und %d" #: common/config/i386/i386-common.c:590 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "-mbranch-cost=%d is not between 0 and 5" -msgstr "%sbranch-cost=%d%s ist nicht zwischen 0 und 5" +msgstr "-mbranch-cost=%d ist nicht zwischen 0 und 5" #: common/config/i386/i386-common.c:640 #, gcc-internal-format @@ -22344,9 +22344,9 @@ msgid "stack size must be an exact power of 2" msgstr "Stack-Größe muss eine exakte Zweierpotenz sein" #: common/config/v850/v850-common.c:48 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "value passed in %qs is too large" -msgstr "an %<-m%s%> übergebener Wert ist zu groß" +msgstr "in %qs übergebener Wert ist zu groß" #: config/darwin-c.c:85 #, gcc-internal-format @@ -22452,17 +22452,17 @@ msgstr "temporäre Datei %s konnte nicht mit LTO-Ausgabe geöffnet werden" #: config/darwin.c:2963 #, gcc-internal-format msgid "%<-fobjc-abi-version%> >= 2 must be used for %<-m64%> targets with %<-fnext-runtime%>" -msgstr "" +msgstr "für %<-m64%>-Ziele mit %<-fnext-runtime%> muss %<-fobjc-abi-version%> verwendet werden" #: config/darwin.c:2967 #, gcc-internal-format msgid "%<-fobjc-abi-version%> >= 2 is not supported on %<-m32%> targets with %<-fnext-runtime%>" -msgstr "" +msgstr "auf %<-m32%>-Zielen mit %<-fnext-runtime%> wird %<-fobjc-abi-version%> >= 2 nicht unterstützt" #: config/darwin.c:3038 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<-mdynamic-no-pic%> overrides %<-fpic%>, %<-fPIC%>, %<-fpie%> or %<-fPIE%>" -msgstr "-mdynamic-no-pic hebt -fpic oder -fPIC auf" +msgstr "%<-mdynamic-no-pic%> hebt %<-fpic%>, %<-fPIC%>, %<-fpie%> oder %<-fPIE%> auf" #: config/darwin.c:3223 #, gcc-internal-format @@ -22747,14 +22747,14 @@ msgid "can not use -mtp=cp15 with 16-bit Thumb" msgstr "-mtp=cp15 kann nicht mit 16-Bit-Thumb verwendet werden" #: config/arm/arm.c:1899 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "structure size boundary can only be set to 8, 32 or 64" -msgstr "Grenze für Strukturgröße kann nur auf %s gesetzt werden" +msgstr "Grenze für Strukturgröße kann nur auf 8, 32 oder 64 gesetzt werden" #: config/arm/arm.c:1901 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "structure size boundary can only be set to 8 or 32" -msgstr "Grenze für Strukturgröße kann nur auf %s gesetzt werden" +msgstr "Grenze für Strukturgröße kann nur auf 8 oder 32 gesetzt werden" #: config/arm/arm.c:1909 #, gcc-internal-format @@ -22777,9 +22777,9 @@ msgid "unable to use '%s' for PIC register" msgstr "»%s« kann nicht für PIC-Register verwendet werden" #: config/arm/arm.c:1971 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "target CPU does not support unaligned accesses" -msgstr "Ziel-CPU unterstützt nicht ARM-Modus" +msgstr "Ziel-CPU unterstützt nicht unausgerichteten Zugriffe" #: config/arm/arm.c:1995 #, gcc-internal-format @@ -22888,14 +22888,14 @@ msgid "accessing program memory with data memory address" msgstr "" #: config/avr/avr.c:2350 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "fixed register %s used to pass parameter to function" -msgstr "Anzahl der zur Ãœbergabe von Ganzzahlargumenten verwendeten Register" +msgstr "festes Register %s zur Parameterübergabe an Funktion verwendet" #: config/avr/avr.c:2622 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "writing to address space %qs not supported" -msgstr "in Konflikt stehende benannte Adressräume (%s und %s)" +msgstr "Schreibzugriff auf Adressraum %qs wird nicht unterstützt" #: config/avr/avr.c:6660 #, gcc-internal-format @@ -22908,19 +22908,19 @@ msgid "%qs appears to be a misspelled signal handler" msgstr "%qs scheint ein falsch geschriebener Signal-Handler zu sein" #: config/avr/avr.c:6932 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "pointer targeting address space %qs must be const in %qT" -msgstr "Zeiger auf disjunkte Adressräume in bedingtem Ausdruck verwendet" +msgstr "Zeiger auf Adressraum %qs muss in %qT konstant sein" #: config/avr/avr.c:6935 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "pointer targeting address space %qs must be const in %s %q+D" -msgstr "Zeiger auf disjunkte Adressräume in bedingtem Ausdruck verwendet" +msgstr "Zeiger auf Adressraum %qs muss in %s %q+D konstant sein" #: config/avr/avr.c:6978 #, gcc-internal-format msgid "variable %q+D must be const in order to be put into read-only section by means of %qs" -msgstr "" +msgstr "Variable %q+D muss konstant sein, um mit %qs in Nur-Lese-Abschnitt gelegt zu werden" #: config/avr/avr.c:7188 #, gcc-internal-format @@ -22928,9 +22928,9 @@ msgid "only uninitialized variables can be placed in the .noinit section" msgstr "Nur uninitialisierte Variablen können im .noinit-Bereich platziert werden" #: config/avr/avr.c:7229 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "uninitialized variable %q+D put into program memory area" -msgstr "Nur initialisierte Variablen können im Programmspeicherbereich platziert werden" +msgstr "nicht initialisierte Variable %q+D in Programmspeicherbereich platziert" #: config/avr/avr.c:7296 #, gcc-internal-format @@ -22938,24 +22938,24 @@ msgid "MCU %qs supported for assembler only" msgstr "MCU %qs nur für Assemblierung unterstützt" #: config/avr/avr.c:10519 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "%s expects a compile time integer constant" -msgstr "Unerwartetes Modulende in Zeichenkettenkonstante" +msgstr "%s erwartet eine Ganzzahlkonstante zur Compile-Zeit" #: config/avr/avr.c:10532 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "%s expects a compile time long integer constant as first argument" -msgstr "%qs erwartet ein konstantes Argument" +msgstr "%s erwartet eine Long-Ganzzahlkonstante als erstes Argument zur Compile-Zeit" #: config/avr/avr.c:10545 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "%s expects a compile time long long integer constant as first argument" -msgstr "Attribut %qE erlaubt nur eine Ganzzahlkonstante als Argument" +msgstr "%s erwartet eine Long Long-Ganzzahlkonstante als erstes Argument zur Compile-Zeit" #: config/bfin/bfin.c:2348 #, gcc-internal-format msgid "-mfdpic is not supported, please use a bfin-linux-uclibc target" -msgstr "" +msgstr "-mfdpic wird nicht unterstützt, bitte »bfin-linux-uclibc-Ziel« verwenden" #: config/bfin/bfin.c:2353 #, gcc-internal-format @@ -22965,7 +22965,7 @@ msgstr "-mshared-library-id= ohne -mid-shared-library angegeben" #: config/bfin/bfin.c:2357 #, gcc-internal-format msgid "-fstack-limit- options are ignored with -mfdpic; use -mstack-check-l1" -msgstr "" +msgstr "Optionen -fstack-limit- werden mit -mfdpic ignoriert; stattdessen -mstack-check-l1 verwenden" #: config/bfin/bfin.c:2362 #, gcc-internal-format @@ -23024,14 +23024,14 @@ msgid "%qE attribute cannot be specified for local variables" msgstr "Attribut %qE kann nicht für lokale Variablen angegeben werden" #: config/c6x/c6x.c:235 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "-fpic and -fPIC not supported without -mdsbt on this target" -msgstr "-fPIC und -fpic werden für dieses Ziel nicht unterstützt" +msgstr "-fpic und -fPIC werden ohne -mdsbt für dieses Ziel nicht unterstützt" #: config/c6x/c6x.h:362 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "profiling is not yet implemented for this architecture" -msgstr "Profiling ist für dieses Ziel noch experimentell" +msgstr "Profiling ist für dieses Ziel noch nicht implementiert" #. This function is for retrieving a part of an instruction name for #. an operator, for immediate output. If that ever happens for @@ -23183,14 +23183,14 @@ msgid "argument of %qE attribute is not \"reset\", \"software_exception\", \"pag msgstr "" #: config/epiphany/epiphany.c:1428 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "stack_offset must be at least 4" -msgstr "Stack-Größe muss eine exakte Zweierpotenz sein" +msgstr "stack_offset muss mindestens 4 sein" #: config/epiphany/epiphany.c:1430 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "stack_offset must be a multiple of 4" -msgstr "Stack-Größe muss eine exakte Zweierpotenz sein" +msgstr "stack_offset muss ein Vielfaches von 4 sein" #: config/frv/frv.c:8681 #, gcc-internal-format @@ -23295,9 +23295,9 @@ msgid "code model %qs not supported in the %s bit mode" msgstr "Codemodell %qs wird im %s-Bit-Modus nicht unterstützt" #: config/i386/i386.c:3195 config/i386/i386.c:3207 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "code model %qs not supported in x32 mode" -msgstr "Codemodell %qs wird im %s-Bit-Modus nicht unterstützt" +msgstr "Codemodell %qs wird im x32-Modus nicht unterstützt" #: config/i386/i386.c:3213 config/i386/i386.c:3222 #, gcc-internal-format, gfc-internal-format @@ -23305,9 +23305,9 @@ msgid "code model %s does not support PIC mode" msgstr "Codemodell %s unterstützt keinen PIC-Modus" #: config/i386/i386.c:3249 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "-masm=intel not supported in this configuration" -msgstr "-m%s wird in dieser Konfiguration nicht unterstützt" +msgstr "-masm=intel wird in dieser Konfiguration nicht unterstützt" #: config/i386/i386.c:3253 #, gcc-internal-format, gfc-internal-format @@ -23330,14 +23330,14 @@ msgid "bad value (%s) for %sarch=%s %s" msgstr "falscher Wert (%s) für %sarch=%s %s" #: config/i386/i386.c:3481 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "-mregparm is ignored in 64-bit mode" -msgstr "%sregparm%s wird im 64-Bit-Modus ignoriert" +msgstr "-mregparm wird im 64-Bit-Modus ignoriert" #: config/i386/i386.c:3484 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "-mregparm=%d is not between 0 and %d" -msgstr "%sregparm=%d%s ist nicht zwischen 0 und %d" +msgstr "-mregparm=%d ist nicht zwischen 0 und %d" #: config/i386/i386.c:3525 #, gcc-internal-format, gfc-internal-format @@ -23345,14 +23345,14 @@ msgid "%srtd%s is ignored in 64bit mode" msgstr "%srtd%s wird im 64-Bit-Modus ignoriert" #: config/i386/i386.c:3589 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "-mpreferred-stack-boundary is not supported for this target" -msgstr "%spreferred-stack-boundary%s wird für dieses Ziel nicht unterstützt" +msgstr "-mpreferred-stack-boundary wird für dieses Ziel nicht unterstützt" #: config/i386/i386.c:3592 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "-mpreferred-stack-boundary=%d is not between %d and %d" -msgstr "%spreferred-stack-boundary=%d%s ist nicht zwischen %d und %d" +msgstr "-mpreferred-stack-boundary=%d ist nicht zwischen %d und %d" #: config/i386/i386.c:3613 #, gcc-internal-format, gfc-internal-format @@ -23602,7 +23602,7 @@ msgid "the third argument must be an 8-bit immediate" msgstr "drittes Argument muss ein 8-Bit-Immediate sein" #: config/i386/i386.c:28612 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "the last argument must be an 1-bit immediate" msgstr "Das letzte Argument muss ein 1-Bit-Immediate sein" @@ -23657,9 +23657,9 @@ msgid "last argument must be an immediate" msgstr "das letzte Argument muss ein Immediate sein" #: config/i386/i386.c:29473 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "last argument must be scale 1, 2, 4, 8" -msgstr "linkes Argument muss eine Scheibe sein" +msgstr "letztes Argument muss Skalierung 1, 2, 4, 8 sein" #: config/i386/i386.c:31719 #, gcc-internal-format @@ -24060,18 +24060,22 @@ msgid "%qE attribute only applies to functions, not %s" msgstr "Attribut %qE gilt nur für Funktionen, nicht %s" #: config/mep/mep.c:4107 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "" "to describe a pointer to a VLIW function, use syntax like this:\n" "%s" -msgstr "um Zeiger auf VLIW-Funktion zu beschreiben, folgende Syntax verwenden:" +msgstr "" +"um Zeiger auf VLIW-Funktion zu beschreiben, folgende Syntax verwenden:\n" +"%s" #: config/mep/mep.c:4116 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "" "to describe an array of VLIW function pointers, use syntax like this:\n" "%s" -msgstr "um Feld von VLIW-Funktionszeigern zu beschreiben, folgende Syntax verwenden:" +msgstr "" +"um Feld von VLIW-Funktionszeigern zu beschreiben, folgende Syntax verwenden:\n" +"%s" #: config/mep/mep.c:4122 #, gcc-internal-format @@ -24274,9 +24278,9 @@ msgid "%<-mgp32%> and %<-mfp64%> can only be combined when using the o32 ABI" msgstr "%<-mgp32%> und %<-mfp64%> können nur kombiniert werden, wenn o32-ABI verwendet wird" #: config/mips/mips.c:15724 config/mips/mips.c:15726 config/mips/mips.c:15739 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qs is incompatible with %qs" -msgstr "assert: %s ist mit %s zuweisungsverträglich" +msgstr "%qs ist mit %qs unverträglich" #. We have traditionally allowed non-abicalls code to use #. an LP64 form of o64. However, it would take a bit more @@ -24284,9 +24288,9 @@ msgstr "assert: %s ist mit %s zuweisungsverträglich" #. and 64-bit pointers, so we treat the abicalls case as #. an error. #: config/mips/mips.c:15733 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "the combination of %qs and %qs is incompatible with %qs" -msgstr "assert: %s ist mit %s zuweisungsverträglich" +msgstr "die Kombination von %qs und %qs ist mit %qs unverträglich" #: config/mips/mips.c:15779 #, gcc-internal-format @@ -24640,9 +24644,9 @@ msgid "-malign-power is not supported for 64-bit Darwin; it is incompatible with msgstr "-malign-power wird für 64-Bit-Darwin nicht unterstützt; es ist mit den installierten C- und C++-Bibliotheken unverträglich" #: config/rs6000/rs6000.c:2621 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "not configured for SPE ABI" -msgstr "nicht für ABI konfiguriert: »%s«" +msgstr "nicht für SPE-ABI konfiguriert" #: config/rs6000/rs6000.c:2697 #, gcc-internal-format @@ -24720,9 +24724,9 @@ msgid "GCC vector passed by reference: non-standard ABI extension with no compat msgstr "GCC-Vektor per Referenz übergegeben: Nicht-Standard-ABI-Erweiterung ohne Kompatibilitätsgarantie" #: config/rs6000/rs6000.c:9443 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "internal error: builtin function %s already processed" -msgstr "interner Fehler: Eingebaute Funktion auf %s bereits verarbeitet" +msgstr "interner Fehler: Eingebaute Funktion %s bereits verarbeitet" #: config/rs6000/rs6000.c:9816 #, gcc-internal-format @@ -24795,34 +24799,34 @@ msgid "argument 1 of __builtin_spe_predicate is out of range" msgstr "Argument 1 von __builtin_spe_predicate ist außerhalb des Wertebereiches" #: config/rs6000/rs6000.c:11282 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Builtin function %s is only valid for the cell processor" -msgstr "diese eingebaute Funktion ist nur auf dem fr450 verfügbar" +msgstr "Eingebaute Funktion %s ist nur für den Cell-Prozessor gültig" #: config/rs6000/rs6000.c:11284 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Builtin function %s requires the -mvsx option" -msgstr "eingebaute Funktion %qD erfordert das Kennzeichen %<-mconstant-cfstrings%>" +msgstr "Eingebaute Funktion %s erfordert die Option -mvsx" #: config/rs6000/rs6000.c:11286 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Builtin function %s requires the -maltivec option" -msgstr "eingebaute Funktion %qD erfordert das Kennzeichen %<-mconstant-cfstrings%>" +msgstr "Eingebaute Funktion %s erfordert die Option -maltivec" #: config/rs6000/rs6000.c:11288 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Builtin function %s requires the -mpaired option" -msgstr "eingebaute Funktion %qD erfordert das Kennzeichen %<-mconstant-cfstrings%>" +msgstr "Eingebaute Funktion %s erfordert die Option -mpaired" #: config/rs6000/rs6000.c:11290 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Builtin function %s requires the -mspe option" -msgstr "eingebaute Funktion %qD erfordert das Kennzeichen %<-mconstant-cfstrings%>" +msgstr "Eingebaute Funktion %s erfordert die Option -mspe" #: config/rs6000/rs6000.c:11292 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Builtin function %s is not supported with the current options" -msgstr "ifunc wird in dieser Konfiguration nicht unterstützt" +msgstr "Eingebaute Funktion %s wird mit den aktuellen Optionen nicht unterstützt" #: config/rs6000/rs6000.c:12552 #, gcc-internal-format, gfc-internal-format @@ -24837,7 +24841,7 @@ msgstr "interner Fehler: eingebaute Funktion %s hatte unerwarteten Rückgabetyp #: config/rs6000/rs6000.c:12575 #, gcc-internal-format, gfc-internal-format msgid "internal error: builtin function %s, argument %d had unexpected argument type %s" -msgstr "" +msgstr "interner Fehler: Eingebaute Funktion %s, Argument %d hatte unerwarteten Argumenttypen %s" #: config/rs6000/rs6000.c:18575 #, gcc-internal-format @@ -24852,7 +24856,7 @@ msgstr "kein Profiling von 64-bit-Code für dieses ABI" #: config/rs6000/rs6000.c:24034 #, gcc-internal-format msgid "-mno-r11 must not be used if you have trampolines" -msgstr "" +msgstr "-mno-r11 darf nicht mit Trampolinen verwendet werden" #: config/rs6000/rs6000.c:24114 #, gcc-internal-format @@ -25053,7 +25057,7 @@ msgid "-m%s not supported in this configuration" msgstr "-m%s wird in dieser Konfiguration nicht unterstützt" #: config/rx/rx.c:641 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "unrecognized control register number: %d - using 'psw'" msgstr "unbekannte Steuerregisterzahl: %d - 'psw' wird verwendet" @@ -25130,17 +25134,17 @@ msgstr "Gesamtgröße der lokalen Variablen übersteigt Grenze der Architektur" #: config/s390/s390.c:8072 #, gcc-internal-format msgid "frame size of function %qs is %wd bytes exceeding user provided stack limit of %d bytes. An unconditional trap is added." -msgstr "" +msgstr "Rahmengröße der Funktion %qs ist %wd Bytes, größer als benutzerdefinierte Stackgrenze von %d Bytes. Eine unbedingte Falle wird gesetzt." #: config/s390/s390.c:8087 #, gcc-internal-format msgid "frame size of function %qs is %wd bytes which is more than half the stack size. The dynamic check would not be reliable. No check emitted for this function." -msgstr "" +msgstr "Rahmengröße der Funktion %qs ist %wd Bytes, mehr als die Hälfte der Stapelgröße. Dynamische Prüfung wäre nicht zuverlässig. Für diese Funktion wird keine Prüfung ausgegeben." #: config/s390/s390.c:8115 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "frame size of %qs is %wd bytes" -msgstr "Rahmengröße von %qs ist " +msgstr "Rahmengröße von %qs ist %wd Bytes" #: config/s390/s390.c:8119 #, gcc-internal-format @@ -25241,9 +25245,9 @@ msgid "-mcmodel= is not supported on 32 bit systems" msgstr "-mcmodel= wird auf 32-Bit-Systemen nicht unterstützt" #: config/sparc/sparc.c:1019 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "-fcall-saved-REG is not supported for out registers" -msgstr "-fdata-sections wird für dieses Ziel nicht unterstützt" +msgstr "-fcall-saved-REG wird für Ausgaberegister nicht unterstützt" #: config/spu/spu-c.c:135 #, gcc-internal-format, gfc-internal-format @@ -25441,69 +25445,69 @@ msgid "too much stack space to prepare: %d" msgstr "Zu viel Stapelspeicher vorzubereiten: %d" #: config/vms/vms-c.c:44 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "junk at end of #pragma __nostandard" -msgstr "Ausschuss am Ende von #pragma ghs starttda" +msgstr "Ausschuss am Ende von #pragma __nostandard" #: config/vms/vms-c.c:55 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "junk at end of #pragma __standard" -msgstr "Ausschuss am Ende von #pragma %s" +msgstr "Ausschuss am Ende von #pragma __standard" #: config/vms/vms-c.c:80 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "malformed '#pragma member_alignment', ignoring" -msgstr "Falsch geformtes %<#pragma align%> - ignoriert" +msgstr "Falsch geformtes »#pragma member_alignment«, ignoriert" #: config/vms/vms-c.c:95 #, gcc-internal-format, gfc-internal-format msgid "unknown '#pragma member_alignment' name %s" -msgstr "" +msgstr "unbekannter Name %s für »#pragma member_alignment«" #: config/vms/vms-c.c:100 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "malformed '#pragma member_alignment'" -msgstr "Falsch geformtes %<#pragma align%>" +msgstr "Falsch geformtes »#pragma member_alignment«" #: config/vms/vms-c.c:130 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "unhandled alignment for '#pragma nomember_alignment'" -msgstr "ungültige Ausrichtung für %<#pragma align%> - ignoriert" +msgstr "unbehandelte Ausrichtung für »#pragma nomember_alignment«" #: config/vms/vms-c.c:143 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "garbage at end of '#pragma nomember_alignment'" -msgstr "Ausschuss am Ende von '#pragma options'" +msgstr "Ausschuss am Ende von »#pragma nomember_alignment«'" #: config/vms/vms-c.c:182 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "malformed '#pragma extern_model', ignoring" -msgstr "Falsch geformtes '#pragma options', ignoriert" +msgstr "Falsch geformtes »#pragma extern_model«, ignoriert" #: config/vms/vms-c.c:201 #, gcc-internal-format msgid "extern model globalvalue" -msgstr "" +msgstr "Globaler Wert mit externem Modell" #: config/vms/vms-c.c:206 #, gcc-internal-format, gfc-internal-format msgid "unknown '#pragma extern_model' model '%s'" -msgstr "" +msgstr "unbekanntes Modell »%s« für »#pragma extern_model«" #: config/vms/vms-c.c:212 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "junk at end of '#pragma extern_model'" -msgstr "Ausschuss am Ende von %<#pragma extern_prefix%>" +msgstr "Ausschuss am Ende von »#pragma extern_model«" #: config/vms/vms-c.c:226 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "vms '#pragma __message' is ignored" -msgstr "falsch geformtes %<#pragma message%>, ignoriert" +msgstr "vms »#pragma __message« wird ignoriert" #: config/vms/vms-c.c:251 config/vms/vms-c.c:257 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "malformed '#pragma __extern_prefix', ignoring" -msgstr "falsch geformtes #pragma extern_prefix, ignoriert" +msgstr "falsch geformtes »#pragma __extern_prefix«, ignoriert" #: config/xtensa/xtensa.c:2172 #, gcc-internal-format @@ -25533,7 +25537,7 @@ msgstr "%<-gnat%> falsch buchstabiert als %<-gant%>" #: ada/gcc-interface/misc.c:229 #, gcc-internal-format msgid "-fexcess-precision=standard for Ada" -msgstr "" +msgstr "-fexcess-precision=standard für Ada" #: ada/gcc-interface/utils.c:5289 ada/gcc-interface/utils.c:5464 #: ada/gcc-interface/utils.c:5506 ada/gcc-interface/utils.c:5560 @@ -25641,9 +25645,9 @@ msgstr "" #. Re-run template unification with diagnostics. #: cp/call.c:3208 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " template argument deduction/substitution failed:" -msgstr "Templateargument %d ist ungültig" +msgstr " Herleitung/Ersetzung von Templateargument gescheitert:" #: cp/call.c:3227 #, gcc-internal-format @@ -25848,9 +25852,9 @@ msgid "converting %<false%> to pointer type for argument %P of %qD" msgstr "%<false%> wird für Argument %P von %qD in Zeigertyp umgewandelt" #: cp/call.c:5556 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "converting %<false%> to pointer type %qT" -msgstr "%<false%> wird für Argument %P von %qD in Zeigertyp umgewandelt" +msgstr "%<false%> wird in Zeigertyp %qT umgewandelt" #: cp/call.c:5598 #, gcc-internal-format @@ -25858,9 +25862,9 @@ msgid "too many braces around initializer for %qT" msgstr "zu viele geschweifte Klammern um Initialisierung für %qT" #: cp/call.c:5604 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid user-defined conversion from %qT to %qT" -msgstr "ungültige Umwandlung von %qT in %qT" +msgstr "ungültige benutzerdefinierte Umwandlung von %qT in %qT" #: cp/call.c:5634 cp/cvt.c:223 #, gcc-internal-format @@ -25924,9 +25928,9 @@ msgid "recursive evaluation of default argument for %q#D" msgstr "rekursive Auswertung des Standardarguments für %q#D" #: cp/call.c:6140 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "call to %qD uses the default argument for parameter %P, which is not yet defined" -msgstr "das Standardargument für den Parameter %d von %qD wurde noch nicht gelesen" +msgstr "Aufruf von %qD verwendet das Standardargument für Parameter %P, der noch nicht definiert wurde" #: cp/call.c:6253 #, gcc-internal-format @@ -26114,9 +26118,9 @@ msgid " because of local member %q+#D with same name" msgstr " wegen lokalem Element %q+#D mit gleichem Namen" #: cp/class.c:1291 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "cannot derive from %<final%> base %qT in derived type %qT" -msgstr "Es kann nicht von Basis %qT in abgeleiteten Typ %qT über virtuelle Basis %qT gewandelt werden" +msgstr "Es kann nicht von %<final%>-Basis %qT in abgeleiteten Typ %qT abgeleitet werden" #: cp/class.c:1303 #, gcc-internal-format @@ -26144,14 +26148,14 @@ msgid "no unique final overrider for %qD in %qT" msgstr "%qD wurde nicht eindeutig und endgültig in %qT überschrieben" #: cp/class.c:2524 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q+#D marked final, but is not virtual" -msgstr "%q+D definiert, aber nicht verwendet" +msgstr "%q+#D als »final« markiert, ist aber nicht »virtual«" #: cp/class.c:2526 #, gcc-internal-format msgid "%q+#D marked override, but does not override" -msgstr "" +msgstr "%q+#D als override markiert, überschreibt aber nicht" #. Here we know it is a hider, and no overrider exists. #: cp/class.c:2595 @@ -26240,9 +26244,9 @@ msgid "member %q+#D with copy assignment operator not allowed in union" msgstr "Element %q+#D mit Copy-Zuweisungsoperator ist nicht erlaubt in Union" #: cp/class.c:2991 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "unrestricted unions only available with -std=c++11 or -std=gnu++11" -msgstr "enums mit Gültigkeitsbereich nur mit -std=c++0x oder -std=gnu++0x verfügbar" +msgstr "uneingeschränkte »Unions« nur mit -std=c++11 oder -std=gnu++11 verfügbar" #: cp/class.c:3025 #, gcc-internal-format @@ -26325,19 +26329,19 @@ msgid "method declared %qE overriding %qE method" msgstr "" #: cp/class.c:4876 cp/semantics.c:5732 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type" -msgstr "umschließende Klasse von %q+#D ist kein Literaltyp" +msgstr "umschließende Klasse der nicht-statischen Elementfunktion %q+#D als konstanter Ausdruck ist kein Literaltyp" #: cp/class.c:4901 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q+T is not literal because:" -msgstr "%q#T ist keine Klasse" +msgstr "%q+T ist kein Literal, denn: " #: cp/class.c:4903 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " %q+T has a non-trivial destructor" -msgstr "Basisklasse %q#T hat einen nicht-virtuellen Destruktor" +msgstr " %q+T hat einen nicht-trivialen Destruktor" #: cp/class.c:4908 #, gcc-internal-format @@ -26345,14 +26349,14 @@ msgid " %q+T is not an aggregate, does not have a trivial default constructor, msgstr "" #: cp/class.c:4924 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " base class %qT of %q+T is non-literal" -msgstr "umschließende Klasse von %q+#D ist kein Literaltyp" +msgstr " Basisklasse %qT von %q+T ist kein Literal" #: cp/class.c:4938 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " non-static data member %q+D has non-literal type" -msgstr "nicht-statisches Datenelement %qD hat Java-Klassentyp" +msgstr " nicht-statisches Datenelement %q+D hat nicht-literalen Typ" #: cp/class.c:5050 #, gcc-internal-format @@ -26427,19 +26431,19 @@ msgid "%q#T has virtual functions and accessible non-virtual destructor" msgstr "%q#T hat virtuelle Funktionen und erreichbaren nicht-virtuellen Destruktor" #: cp/class.c:6119 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "type transparent class %qT does not have any fields" -msgstr "Klasse %qT hat keinen Feldnamen %qD" +msgstr "typtransparente Klasse %qT hat keine Felder" #: cp/class.c:6125 #, gcc-internal-format msgid "type transparent class %qT has base classes" -msgstr "" +msgstr "typtransparente Klasse %qT hat Basisklassen" #: cp/class.c:6129 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "type transparent class %qT has virtual functions" -msgstr "Typ %qE hat virtuelle Elementfunktionen" +msgstr "typtransparente Klasse %qT hat virtuelle Funktionen" #: cp/class.c:6231 #, gcc-internal-format @@ -26517,9 +26521,9 @@ msgid "conversion of %qE from %qT to %qT is ambiguous" msgstr "Umwandlung von %qE von %qT nach %qT ist mehrdeutig" #: cp/cvt.c:204 cp/typeck.c:4088 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "zero as null pointer constant" -msgstr "C99 long long Ganzzahlkonstante verwendet" +msgstr "Null als Null-Zeigerkonstante" #: cp/cvt.c:378 #, gcc-internal-format @@ -27000,9 +27004,9 @@ msgid "%q+#D previously defined here" msgstr "%q+#D wurde vorher hier definiert" #: cp/decl.c:1563 cp/name-lookup.c:1133 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q+#D previously declared here" -msgstr "vorher hier deklariert" +msgstr "%q+#D wurde bereits hier deklariert" #. Prototype decl follows defn w/o prototype. #: cp/decl.c:1572 @@ -27269,9 +27273,9 @@ msgid "redeclaration of C++ built-in type %qT" msgstr "Redeklaration des eingebauten C++-Typs %qT" #: cp/decl.c:4150 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<auto%> can only be specified for variables or function declarations" -msgstr "%qs kann nur für Funktionen angegeben werden" +msgstr "%<auto%> kann nur für Variablen oder Funktionsdeklarationen angegeben werden" #: cp/decl.c:4176 #, gcc-internal-format @@ -27493,9 +27497,9 @@ msgid "initializer for %qT must be brace-enclosed" msgstr "Initialisierung für %qT muss geklammert sein" #: cp/decl.c:5095 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT" -msgstr "Name %qD in benannter Initialisierung im GNU-Stil für ein Feld verwendet" +msgstr "%<[%E] =%> in benannter Initialisierung im GNU-Stil für Klasse %qT verwendet" #: cp/decl.c:5105 #, gcc-internal-format @@ -27503,9 +27507,9 @@ msgid "%qT has no non-static data member named %qD" msgstr "%qT hat kein nicht-statisches Datenelement namens %qD" #: cp/decl.c:5146 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "C99 designator %qE outside aggregate initializer" -msgstr "überschüssige Elemente in Aggregatinitialisierung" +msgstr "C99-Bezeichner %qE außerhalb von Aggregatinitialisierung" #: cp/decl.c:5183 cp/decl.c:5368 cp/typeck2.c:1071 cp/typeck2.c:1270 #: cp/typeck2.c:1299 cp/typeck2.c:1346 @@ -27539,9 +27543,9 @@ msgid "variable-sized compound literal" msgstr "zusammengesetztes Literal variabler Größe" #: cp/decl.c:5457 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q#D has incomplete type" -msgstr "%qD hat unvollständigen Typen" +msgstr "%q#D hat unvollständigen Typ" #: cp/decl.c:5477 #, gcc-internal-format @@ -27614,19 +27618,19 @@ msgid "function %q#D is initialized like a variable" msgstr "Funktion %q#D ist wie eine Variable initialisiert" #: cp/decl.c:6938 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "initializer fails to determine size of %qT" -msgstr "Initialisierung gibt nicht die Größe von %qD an" +msgstr "Initialisierung gibt nicht die Größe von %qT an" #: cp/decl.c:6942 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "array size missing in %qT" -msgstr "Feldgröße fehlt in %qD" +msgstr "Feldgröße fehlt in %qT" #: cp/decl.c:6945 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "zero-size array %qT" -msgstr "Feld %qD der Größe null" +msgstr "Feld %qT der Größe null" #: cp/decl.c:6961 #, gcc-internal-format @@ -27780,14 +27784,14 @@ msgid "non-member function %qD cannot have cv-qualifier" msgstr "Nicht-Elementfunktion %qD kann nicht CV-Qualifizierer haben" #: cp/decl.c:7375 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "literal operator with C linkage" -msgstr "Template mit C-Bindung" +msgstr "literaler Operator mit C-Bindung" #: cp/decl.c:7384 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD has invalid argument list" -msgstr "%qs ist ein ungültiges Argument für -mcpu=" +msgstr "%qD hat ungültige Argumentliste" #: cp/decl.c:7392 #, gcc-internal-format @@ -27800,9 +27804,9 @@ msgid "floating point suffix %<%s%> shadowed by implementation" msgstr "" #: cp/decl.c:7404 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD must be a non-member function" -msgstr "%qD muss eine nichtstatische Elementfunktion sein" +msgstr "%qD muss eine Nicht-Elementfunktion sein" #: cp/decl.c:7448 #, gcc-internal-format @@ -27815,14 +27819,14 @@ msgid "definition of implicitly-declared %qD" msgstr "Definition des implizit deklarierten %qD" #: cp/decl.c:7495 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "definition of explicitly-defaulted %q+D" -msgstr "Definition des implizit deklarierten %qD" +msgstr "Definition des explizit standardisierten %q+D" #: cp/decl.c:7496 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q+#D explicitly defaulted here" -msgstr "%q+#D wurde vorher hier definiert" +msgstr "%q+#D wurde ausdrücklich hier standardisiert" #: cp/decl.c:7513 cp/decl2.c:736 #, gcc-internal-format @@ -27844,9 +27848,9 @@ msgid "type %qT with no linkage used to declare variable %q#D with linkage" msgstr "Typ %qT ohne Bindung verwendet, um Variable %q#D mit Bindung zu deklarieren" #: cp/decl.c:7816 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "in-class initialization of static data member %q#D of incomplete type" -msgstr "Initialisierung innerhalb der Klasse des statischen Datenelements %q#D mit nicht eingebautem Typ" +msgstr "Initialisierung innerhalb der Klasse des statischen Datenelements %q#D mit unvollständigem Typ" #: cp/decl.c:7820 #, gcc-internal-format @@ -27934,9 +27938,9 @@ msgid "overflow in array dimension" msgstr "Ãœberlauf in Feldgröße" #: cp/decl.c:8148 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "declaration of %qD as array of %<auto%>" -msgstr "Deklaration von %qD als Feld von voids" +msgstr "Deklaration von %qD als Feld von %<auto%>" #: cp/decl.c:8156 #, gcc-internal-format @@ -28059,14 +28063,14 @@ msgid "function definition does not declare parameters" msgstr "Funktionsdefinition deklariert keine Parameter" #: cp/decl.c:8616 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "declaration of %qD as %<typedef%>" -msgstr "Templatedeklaration von %<typedef%>" +msgstr "Deklaration von %qD als %<typedef%>" #: cp/decl.c:8621 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "declaration of %qD as parameter" -msgstr "Deklaration von %q+D überdeckt einen Parameter" +msgstr "Deklaration von %qD als Parameter" #: cp/decl.c:8654 #, gcc-internal-format @@ -28244,26 +28248,26 @@ msgid "%qs declared as function returning an array" msgstr "%qs als Funktion, die ein Feld zurückgibt, deklariert" #: cp/decl.c:9173 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qs function uses %<auto%> type specifier without trailing return type" -msgstr "Funktion %qs verwendet Typspezifikation %<auto%> ohne späten Rückgabetypen" +msgstr "Funktion %qs verwendet Typspezifikation %<auto%> ohne folgenden Rückgabetypen" #: cp/decl.c:9179 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>" -msgstr "Funktion %qs mit spätem Rückgabetypen hat %qT als seinen Typ statt einfaches %<auto%>" +msgstr "Funktion %qs mit folgendem Rückgabetypen hat %qT als seinen Typ statt einfaches %<auto%>" #. Not using maybe_warn_cpp0x because this should #. always be an error. #: cp/decl.c:9190 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "trailing return type only available with -std=c++11 or -std=gnu++11" -msgstr "»inline« Namensräume nur mit -std=c++0x oder -std=gnu++0x verfügbar" +msgstr "folgender Rückgabetyp nur mit -std=c++11 oder -std=gnu++11 verfügbar" #: cp/decl.c:9193 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qs function with trailing return type not declared with %<auto%> type specifier" -msgstr "Funktion %qs mit spätem Rückgabetypen nicht mit Typspezifikation %<auto%> deklariert" +msgstr "Funktion %qs mit folgendem Rückgabetypen nicht mit Typspezifikation %<auto%> deklariert" #: cp/decl.c:9226 #, gcc-internal-format @@ -28519,9 +28523,9 @@ msgid "parameter declared %<auto%>" msgstr "Parameter als %<auto%> deklariert" #: cp/decl.c:10016 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-static data member declared %<auto%>" -msgstr "nicht-statisches Datenelement %qE als %<constexpr%> deklariert" +msgstr "nicht-statisches Datenelement als %<auto%> deklariert" #. Something like struct S { int N::j; }; #: cp/decl.c:10038 @@ -28610,9 +28614,9 @@ msgid "storage class %<__thread%> invalid for function %qs" msgstr "Speicherklasse %<__thread%> ungültig für Funktion %qs" #: cp/decl.c:10297 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "virt-specifiers in %qs not allowed outside a class definition" -msgstr "asm-Spezifikation ist bei Funktionsdefinition nicht erlaubt" +msgstr "virt-Spezifikation in %qs ist außerhalb einer Klassendefinition nicht erlaubt" #: cp/decl.c:10308 #, gcc-internal-format @@ -28635,9 +28639,9 @@ msgid "%qs defined in a non-class scope" msgstr "%qs nicht in Klassen-Gültigkeitsbereich definiert" #: cp/decl.c:10328 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qs declared in a non-class scope" -msgstr "%qs nicht in Klassen-Gültigkeitsbereich definiert" +msgstr "%qs in einem Nicht-Klassen-Gültigkeitsbereich definiert" #: cp/decl.c:10356 #, gcc-internal-format @@ -28867,9 +28871,9 @@ msgid "using template type parameter %qT after %qs" msgstr "Templatetyp-Parameter %qT wird nach %qs verwendet" #: cp/decl.c:11444 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "using alias template specialization %qT after %qs" -msgstr "mehrdeutige Templatespezialisierung %qD für %q+D" +msgstr "Templatespezialisierung alias %qT hinter %qs wird verwendet" #: cp/decl.c:11447 #, gcc-internal-format @@ -28877,9 +28881,9 @@ msgid "using typedef-name %qD after %qs" msgstr "typedef-Name %qD wird nach %qs verwendet" #: cp/decl.c:11449 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD has a previous declaration here" -msgstr "%q+D hat eine vorherige Deklaration hier" +msgstr "%qD hat eine vorherige Deklaration hier" #: cp/decl.c:11457 #, gcc-internal-format @@ -29004,9 +29008,9 @@ msgid "enumerator value for %qD is not an integer constant" msgstr "Aufzählungswert für %qD ist keine Ganzzahlkonstante" #: cp/decl.c:12430 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "incremented enumerator value is too large for %<unsigned long%>" -msgstr "Ganzzahlkonstante ist zu groß für %<unsigned long%>-Typ" +msgstr "erhöhter Aufzählungswert ist zu groß für %<unsigned long%>" #: cp/decl.c:12442 #, gcc-internal-format @@ -29290,64 +29294,64 @@ msgid "use of deleted function %qD" msgstr "gelöschte Funktion %qD wird verwendet" #: cp/error.c:3261 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "extended initializer lists only available with -std=c++11 or -std=gnu++11" -msgstr "erweiterte Initialisierungsliste nur mit -std=c++0x oder -std=gnu++0x verfügbar" +msgstr "erweiterte Initialisierungsliste nur mit -std=c++11 oder -std=gnu++11 verfügbar" #: cp/error.c:3266 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "explicit conversion operators only available with -std=c++11 or -std=gnu++11" -msgstr "explizite Umwandlungsoperatoren nur mit -std=c++0x oder -std=gnu++0x verfügbar" +msgstr "explizite Umwandlungsoperatoren nur mit -std=c++11 oder -std=gnu++11 verfügbar" #: cp/error.c:3271 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "variadic templates only available with -std=c++11 or -std=gnu++11" -msgstr "variadische Templates nur mit -std=c++0x oder -std=gnu++0x verfügbar" +msgstr "variadische Templates nur mit -std=c++11 oder -std=gnu++11 verfügbar" #: cp/error.c:3276 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "lambda expressions only available with -std=c++11 or -std=gnu++11" -msgstr "Lambda-Ausdrücke nur mit -std=c++0x oder -std=gnu++0x verfügbar" +msgstr "Lambda-Ausdrücke nur mit -std=c++11 oder -std=gnu++11 verfügbar" #: cp/error.c:3281 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "C++0x auto only available with -std=c++11 or -std=gnu++11" -msgstr "C++0x »auto« nur mit -std=c++0x oder -std=gnu++0x verfügbar" +msgstr "C++0x »auto« nur mit -std=c++11 oder -std=gnu++11 verfügbar" #: cp/error.c:3285 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "scoped enums only available with -std=c++11 or -std=gnu++11" -msgstr "enums mit Gültigkeitsbereich nur mit -std=c++0x oder -std=gnu++0x verfügbar" +msgstr "enums mit Gültigkeitsbereich nur mit -std=c++11 oder -std=gnu++11 verfügbar" #: cp/error.c:3289 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "defaulted and deleted functions only available with -std=c++11 or -std=gnu++11" -msgstr "Standard- und gelöschte Funktionen nur mit -std=c++0x oder -std=gnu++0x verfügbar" +msgstr "Standard- und gelöschte Funktionen nur mit -std=c++11 oder -std=gnu++11 verfügbar" #: cp/error.c:3294 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "inline namespaces only available with -std=c++11 or -std=gnu++11" -msgstr "»inline« Namensräume nur mit -std=c++0x oder -std=gnu++0x verfügbar" +msgstr "»inline« Namensräume nur mit -std=c++11 oder -std=gnu++11 verfügbar" #: cp/error.c:3299 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "override controls (override/final) only available with -std=c++11 or -std=gnu++11" -msgstr "explizite Umwandlungsoperatoren nur mit -std=c++0x oder -std=gnu++0x verfügbar" +msgstr "Ãœberschreibsteuerung (override/final) nur mit -std=c++11 oder -std=gnu++11 verfügbar" #: cp/error.c:3304 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11" -msgstr "erweiterte Initialisierungsliste nur mit -std=c++0x oder -std=gnu++0x verfügbar" +msgstr "nicht-statische Initialisierungen für Datenelemente nur mit -std=c++11 oder -std=gnu++11 verfügbar" #: cp/error.c:3309 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "user-defined literals only available with -std=c++11 or -std=gnu++11" -msgstr "erweiterte Initialisierungsliste nur mit -std=c++0x oder -std=gnu++0x verfügbar" +msgstr "benutzerdefinierte Literale nur mit -std=c++11 oder -std=gnu++11 verfügbar" #: cp/error.c:3314 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "delegating constructors only available with -std=c++11 or -std=gnu++11" -msgstr "explizite Umwandlungsoperatoren nur mit -std=c++0x oder -std=gnu++0x verfügbar" +msgstr "delegierende Konstruktoren nur mit -std=c++11 oder -std=gnu++11 verfügbar" #: cp/error.c:3361 #, gcc-internal-format @@ -29531,9 +29535,9 @@ msgid "(if this is not what you intended, make sure the function template has al msgstr "(wenn das nicht beabsichtigt war, sollte sicher gestellt werden, dass das Funktions-Template bereits deklariert wurde, und <> hier hinter Funktionsnamen eingefügt wurde) " #: cp/init.c:383 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "value-initialization of incomplete type %qT" -msgstr "Ungültige Anwendung von %qs auf unvollständigen Typen %qT" +msgstr "Wertinitialisierung des unvollständigen Typen %qT" #: cp/init.c:442 #, gcc-internal-format @@ -29541,14 +29545,14 @@ msgid "cannot value-initialize array of unknown bound %qT" msgstr "Feld mit unbekannter Grenze %qT kann nicht mit Werten initialisiert werden" #: cp/init.c:482 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "value-initialization of function type %qT" -msgstr "Wert-Initialisierung von Referenz" +msgstr "Wertinitialisierung des Funktionstypen %qT" #: cp/init.c:488 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "value-initialization of reference type %qT" -msgstr "Wert-Initialisierung von Referenz" +msgstr "Wertinitialisierung des Referenztypen %qT" #: cp/init.c:559 #, gcc-internal-format @@ -29556,9 +29560,9 @@ msgid "%qD should be initialized in the member initialization list" msgstr "%qD sollte in Elementinitialisierungsliste initialisiert werden" #: cp/init.c:577 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD is initialized with itself" -msgstr "%qD wird in dieser Funktion uninitialisiert verwendet" +msgstr "%qD wird mit sich selbst initialisiert" #: cp/init.c:671 #, gcc-internal-format @@ -29746,9 +29750,9 @@ msgid "non-constant array size in new, unable to verify length of initializer-li msgstr "Größe eines nicht konstanten Feldes in new, Länge der Initialisierungsliste kann nicht geprüft werden" #: cp/init.c:2574 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "parenthesized initializer in array new" -msgstr "Attribute hinter geklammerter Initialisierung werden ignoriert" +msgstr "geklammerte Initialisierung in Feld-»new«" #: cp/init.c:2806 #, gcc-internal-format @@ -29876,9 +29880,9 @@ msgid "mangling typeof, use decltype instead" msgstr "defektes typeof, stattdessen decltype verwenden" #: cp/mangle.c:2028 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "mangling __underlying_type" -msgstr "unbekannter Festkommatyp wird vernichtet" +msgstr "__underlying_type wird vernichtet" #: cp/mangle.c:2252 #, gcc-internal-format @@ -29906,9 +29910,9 @@ msgid "the mangled name of %qD will change in a future version of GCC" msgstr "der verarbeitete Name von %qD« wird sich in einer zukünftigen Version des GCC ändern" #: cp/mangle.c:3383 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling" -msgstr "-fabi-version=4 (oder =0) verhindert diesen Fehler mit einer Änderung in Vektorvernichtung" +msgstr "-fabi-version=6 (oder =0) verhindert diesen Fehler mit einer Änderung in Vernichtung" #: cp/method.c:405 #, gcc-internal-format @@ -29936,14 +29940,14 @@ msgid "union member %q+D with non-trivial %qD" msgstr "Union-Element %q+D mit nichttrivialem %qD" #: cp/method.c:964 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "defaulted constructor calls non-constexpr %q+D" -msgstr "Destruktor kann nicht %<constexpr%> sein" +msgstr "Standardkonstruktor ruft nicht-konstanten Audruck %q+D auf" #: cp/method.c:1025 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "initializer for %q+#D is invalid" -msgstr "nicht initialisiertes const %qD ist in C++ ungültig" +msgstr "Initialisierung für %q+#D ist ungültig" #: cp/method.c:1048 #, gcc-internal-format @@ -29958,13 +29962,13 @@ msgstr "nicht initialisiertes nicht statisches Referenzelement %q#D" #: cp/method.c:1071 #, gcc-internal-format msgid "defaulted default constructor does not initialize %q+#D" -msgstr "" +msgstr "Standardisierter Standardkonstruktor initialisiert nicht %q+#D" #. A trivial constructor doesn't have any NSDMI. #: cp/method.c:1220 #, gcc-internal-format msgid "defaulted default constructor does not initialize any non-static data member" -msgstr "" +msgstr "Standardisierter Standardkonstruktor initialisiert kein nicht-statisches Datenelement" #: cp/method.c:1298 #, gcc-internal-format @@ -29987,9 +29991,9 @@ msgid "%q+#D is implicitly declared as deleted because %qT declares a move const msgstr "" #: cp/method.c:1411 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:" -msgstr "%qD wird implizit gelöscht, da die Standarddefinition ungültig wäre:" +msgstr "%q+#D wird implizit gelöscht, da die Standarddefinition ungültig wäre:" #: cp/method.c:1620 #, gcc-internal-format @@ -30002,9 +30006,9 @@ msgid "does not match expected signature %qD" msgstr "passt nicht zur erwarteten Signatur %qD" #: cp/method.c:1636 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D" -msgstr "bei ihrer ersten Deklaration vorgegebene Funktion %q+D darf keine Ausnahmespezifikation haben" +msgstr "Funktion %q+D wurde bei ihrer ersten Deklaration mit einer Ausnahmespezifikation standardisiert, die sich von der impliziten Deklaration %q#D unterscheidet" #: cp/method.c:1657 #, gcc-internal-format @@ -30032,14 +30036,14 @@ msgid "vtable layout for class %qT may not be ABI-compliantand may change in a f msgstr "vtable-Anordnung für Klasse %qT könnte ABI-unverträglich sein und sich in zukünftigen GCC-Versionen durch implizite virtuelle Destruktoren ändern" #: cp/name-lookup.c:552 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q#D conflicts with a previous declaration" -msgstr "%q#D steht mit vorheriger %<using%>-Deklaration %q#D in Konflikt" +msgstr "%q#D steht mit vorheriger Deklaration in Konflikt" #: cp/name-lookup.c:554 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "previous declaration %q+#D" -msgstr "vorherige Deklaration %q+D" +msgstr "vorherige Deklaration %q+#D" #: cp/name-lookup.c:766 #, gcc-internal-format @@ -30098,9 +30102,9 @@ msgid "declaration of %q#D shadows a parameter" msgstr "Deklaration von %q#D überdeckt einen Parameter" #: cp/name-lookup.c:1143 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "declaration of %qD shadows a lambda capture" -msgstr "Deklaration von %q+D überdeckt einen Parameter" +msgstr "Deklaration von %q+D überdeckt eine Lambda-Erfassung" #: cp/name-lookup.c:1147 #, gcc-internal-format @@ -30321,9 +30325,9 @@ msgid "making multiple clones of %qD" msgstr "mehrfache Kopien von %qD werden erzeugt" #: cp/parser.c:752 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "identifier %qE is a keyword in C++11" -msgstr "Bezeichner %qE wird in C++0x zum Schlüsselwort" +msgstr "Bezeichner %qE wird in C++11 zum Schlüsselwort" #: cp/parser.c:2374 #, gcc-internal-format @@ -30501,9 +30505,9 @@ msgid "a call to a constructor cannot appear in a constant-expression" msgstr "ein Konstruktoraufruf kann nicht in einem Konstanten-Ausdruck auftreten" #: cp/parser.c:2693 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "a transaction expression cannot appear in a constant-expression" -msgstr "ein Funktionsaufruf kann nicht in einem Konstanten-Ausdruck auftreten" +msgstr "ein Transaktionsausdruck kann nicht in einem Konstanten-Ausdruck auftreten" #: cp/parser.c:2739 #, gcc-internal-format @@ -30533,9 +30537,9 @@ msgid "%qE does not name a type" msgstr "%qE bezeichnet keinen Typ" #: cp/parser.c:2787 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "C++11 %<constexpr%> only available with -std=c++11 or -std=gnu++11" -msgstr "%<constexpr%> von C++0x nur mit -std=c++0x oder -std=gnu++0x verfügbar" +msgstr "%<constexpr%> von C++11 nur mit -std=c++11 oder -std=gnu++11 verfügbar" #: cp/parser.c:2814 #, gcc-internal-format @@ -30589,19 +30593,19 @@ msgid "unable to find character literal operator %qD with %qT argument" msgstr "" #: cp/parser.c:3719 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "unable to find numeric literal operator %qD" -msgstr "in Klasse %qs konnte kein Register für Ãœberlauf gefunden werden" +msgstr "numerischer literaler Operator %qD konnte nicht gefunden werden" #: cp/parser.c:3746 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "unable to find string literal operator %qD" -msgstr "in Klasse %qs konnte kein Register für Ãœberlauf gefunden werden" +msgstr "literaler Operator für Zeichenketten %qD konnte nicht gefunden werden" #: cp/parser.c:3755 #, gcc-internal-format msgid "unable to find string literal operator %qD with %qT, %qT arguments" -msgstr "" +msgstr "literaler Operator für Zeichenketten %qD mit Argumenten %qT, %qT konnte nicht gefunden werden" #: cp/parser.c:3815 cp/parser.c:10361 #, gcc-internal-format @@ -30679,9 +30683,9 @@ msgid "found %<:%> in nested-name-specifier, expected %<::%>" msgstr "%<:%> in Spezifikation mit geschachteltem Namen gefunden, %<::%> erwartet" #: cp/parser.c:5011 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "decltype evaluates to %qT, which is not a class or enumeration type" -msgstr "%qT wird in %qT aufgelöst, was kein Aufzählungstyp ist" +msgstr "decltype wird zu %qT ausgewertet, was keine Klasse oder Aufzählungstyp ist" #: cp/parser.c:5103 cp/typeck.c:2444 cp/typeck.c:2464 #, gcc-internal-format @@ -30721,9 +30725,9 @@ msgid "invalid use of %qD" msgstr "ungültige Verwendung von %qD" #: cp/parser.c:6035 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<%D::%D%> is not a class member" -msgstr "%<%D::%D%> ist kein Element von %qT" +msgstr "%<%D::%D%> ist kein Klassenelement" #: cp/parser.c:6296 #, gcc-internal-format @@ -30741,9 +30745,9 @@ msgid "types may not be defined in %<noexcept%> expressions" msgstr "Typen dürfen nicht in %<noexcept%>-Ausdrücken definiert werden" #: cp/parser.c:6678 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "types may not be defined in a new-expression" -msgstr "Typen dürfen nicht in einem »new-type-id« definiert werden" +msgstr "Typen dürfen nicht in einem »new«-Ausdruck definiert werden" #: cp/parser.c:6691 #, gcc-internal-format @@ -30771,9 +30775,9 @@ msgid "use of old-style cast" msgstr "Verwendung einer Typumwandlung im alten Stil" #: cp/parser.c:7283 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<>>%> operator is treated as two right angle brackets in C++11" -msgstr "Operator %<>>%> wird in C++0x als zwei spitze schließende Klammern behandelt" +msgstr "Operator %<>>%> wird in C++11 wie zwei spitze schließende Klammern behandelt" #: cp/parser.c:7286 #, gcc-internal-format @@ -30806,19 +30810,19 @@ msgid "ISO C++ does not allow initializers in lambda expression capture lists" msgstr "ISO-C++ erlaubt keine Initialisierungen Auffanglisten von Lambda-Ausdrücken" #: cp/parser.c:8268 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "capture of non-variable %qD " -msgstr "Erhöhung der schreibgeschützten Variable %qD" +msgstr "Erfassung von Nicht-Variable %qD" #: cp/parser.c:8270 cp/parser.c:8279 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q+#D declared here" -msgstr "%q+D hier deklariert" +msgstr "%q+#D hier deklariert" #: cp/parser.c:8276 #, gcc-internal-format msgid "capture of variable %qD with non-automatic storage duration" -msgstr "" +msgstr "Erfassung der Variable %qD ohne automatische Speicherdauer" #: cp/parser.c:8305 #, gcc-internal-format @@ -30856,9 +30860,9 @@ msgid "%<%T::%D%> names the constructor, not the type" msgstr "%<%T::%D%> benennt Konstruktor, nicht den Typ" #: cp/parser.c:8939 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "compound-statement in constexpr function" -msgstr "%qD ist keine Funktion mit konstantem Audruck" +msgstr "zusammengesetzte Anweisung in Funktion als konstantem Audruck" #: cp/parser.c:9151 cp/parser.c:22258 #, gcc-internal-format @@ -30871,24 +30875,24 @@ msgid "types may not be defined in conditions" msgstr "Typen dürfen nicht in Bedingungen definiert werden" #: cp/parser.c:9527 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "range-based %<for%> expression of type %qT has incomplete type" -msgstr "Ausdrucksanweisung hat unvollständigen Typ" +msgstr "bereichsbasierter %<for%>-Ausdruck mit Typ %qT hat unvollständigen Typ" #: cp/parser.c:9565 #, gcc-internal-format msgid "range-based %<for%> expression of type %qT has an %<end%> member but not a %<begin%>" -msgstr "" +msgstr "bereichsbasierter %<for%>-Ausdruck mit Typ %qT hat %<end%>-Element, aber kein %<begin%>" #: cp/parser.c:9571 #, gcc-internal-format msgid "range-based %<for%> expression of type %qT has a %<begin%> member but not an %<end%>" -msgstr "" +msgstr "bereichsbasierter %<for%>-Ausdruck mit Typ %qT hat %<begin%>-Element, aber kein %<end%>" #: cp/parser.c:9609 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT" -msgstr "widersprüchliche Anfang-/Ende-Typen in bereichsbasiertem »for«: %qT und %qT" +msgstr "unvereinbare Anfang-/Ende-Typen in bereichsbasierter %<for%>-Anweisung: %qT und %qT" #: cp/parser.c:9740 cp/parser.c:22261 #, gcc-internal-format @@ -30896,9 +30900,9 @@ msgid "expected iteration-statement" msgstr "Iterationsanweisung erwartet" #: cp/parser.c:9787 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "range-based %<for%> loops are not allowed in C++98 mode" -msgstr "bereichsbasierte for-Schleifen sind im C++98-Modus nicht erlaubt" +msgstr "bereichsbasierte %<for%>-Schleifen sind im C++98-Modus nicht erlaubt" #. Issue a warning about this use of a GNU extension. #: cp/parser.c:9909 @@ -30979,19 +30983,19 @@ msgid "cannot expand initializer for member %<%D%>" msgstr "Initialisierung für Element %<%D%> kann nicht aufgelöst werden" #: cp/parser.c:11391 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "mem-initializer for %qD follows constructor delegation" -msgstr "Statische Deklaration von %q+D folgt nicht-statischer Deklaration" +msgstr "Speicherinitialisierung für %qD folgt Konstruktordelegation" #: cp/parser.c:11403 #, gcc-internal-format msgid "constructor delegation follows mem-initializer for %qD" -msgstr "" +msgstr "Konstruktordelegation folgt Speicherinitialisierung für %qD" #: cp/parser.c:11455 #, gcc-internal-format msgid "anachronistic old-style base class initializer" -msgstr "anachronistische Basisklasseninitialisierung im alten Stil" +msgstr "veraltete Basisklasseninitialisierung" #: cp/parser.c:11523 #, gcc-internal-format @@ -30999,19 +31003,19 @@ msgid "keyword %<typename%> not allowed in this context (a qualified member init msgstr "Schlüsselwort %<typename%> in diesem Kontext nicht erlaubt (eine qualifizierte Elementinitialisierung ist implizit ein Typ)" #: cp/parser.c:11840 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected empty string after %<operator%> keyword" -msgstr "hinter %<#pragma message%> wird eine Zeichenkette erwartet" +msgstr "hinter Schlüsselwort %<operator%> wird leere Zeichenkette erwartet" #: cp/parser.c:11858 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected suffix identifier" -msgstr "Bezeichner erwartet" +msgstr "Suffixbezeichner erwartet" #: cp/parser.c:11863 #, gcc-internal-format msgid "missing space between %<\"\"%> and suffix identifier" -msgstr "" +msgstr "zwischen %<\"\"%> und Suffixbezeichner fehlt Leerzeichen" #: cp/parser.c:11878 #, gcc-internal-format @@ -31219,12 +31223,12 @@ msgstr "eine Template-ID darf nicht in »using«-Deklaration auftreten" #: cp/parser.c:15030 #, gcc-internal-format msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the %<using%> keyword" -msgstr "" +msgstr "Zugriffsdeklarationen sind zugunsten von %<using%>-Deklarationen veraltet; Vorschlag: %<using%> hinzufügen" #: cp/parser.c:15085 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "types may not be defined in alias template declarations" -msgstr "Typen dürfen nicht in Ausnahmedeklarationen definiert werden" +msgstr "Typen dürfen nicht in Alias-Templatedeklarationen definiert werden" #: cp/parser.c:15532 #, gcc-internal-format @@ -31312,9 +31316,9 @@ msgid "%qD is a namespace" msgstr "%qD ist ein Namensbereich" #: cp/parser.c:16487 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "cannot form pointer to member of non-class %q#T" -msgstr "Zeiger auf Element des Nicht-Klassentypen %qT wird erzeugt" +msgstr "Zeiger auf Element der Nicht-Klasse %q#T kann nicht erzeugt werden" #: cp/parser.c:16504 #, gcc-internal-format @@ -31327,9 +31331,9 @@ msgid "duplicate cv-qualifier" msgstr "doppelter CV-Qualifizierer" #: cp/parser.c:16621 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "duplicate virt-specifier" -msgstr "doppelter CV-Qualifizierer" +msgstr "doppelter Virt-Spezifizierer" #: cp/parser.c:16783 cp/typeck2.c:450 cp/typeck2.c:1670 #, gcc-internal-format @@ -31367,14 +31371,14 @@ msgid "default arguments are only permitted for function parameters" msgstr "Standardargumente sind nur für Funktionsparameter zugelassen" #: cp/parser.c:17333 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "parameter pack %qD cannot have a default argument" -msgstr "%sParameterpack %qD kann kein Standardargument haben" +msgstr "Parameterpack %qD kann kein Standardargument haben" #: cp/parser.c:17341 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "parameter pack cannot have a default argument" -msgstr "%sParameterpack kann kein Standardargument haben" +msgstr "Parameterpack kann kein Standardargument haben" #: cp/parser.c:17628 #, gcc-internal-format @@ -31382,9 +31386,9 @@ msgid "ISO C++ does not allow designated initializers" msgstr "ISO-C++ erlaubt keine benannten Initialisierungen" #: cp/parser.c:17642 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C++ does not allow C99 designated initializers" -msgstr "ISO-C++ erlaubt keine benannten Initialisierungen" +msgstr "ISO-C++ erlaubt keine benannten Initialisierungen von C99" #: cp/parser.c:17746 cp/parser.c:17868 #, gcc-internal-format @@ -31412,9 +31416,9 @@ msgid "expected %<{%> or %<:%>" msgstr "%<{%> oder %<:%> erwartet" #: cp/parser.c:18394 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "cannot specify %<override%> for a class" -msgstr "Datei für Klasse %s kann nicht gefunden werden" +msgstr "für eine Klasse kann kein %<override%> angegeben werden" #: cp/parser.c:18402 #, gcc-internal-format @@ -31462,9 +31466,9 @@ msgid "expected class-key" msgstr "Klassenschlüssel erwartet" #: cp/parser.c:18874 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "in C++03 a class-key must be used when declaring a friend" -msgstr "ein Klassenschlüssel muss bei Deklaration als »friend« verwendet werden" +msgstr "in C++03 muss bei Deklaration eines »friend« ein Klassenschlüssel verwendet werden" #: cp/parser.c:18892 #, gcc-internal-format @@ -31701,14 +31705,14 @@ msgid "expected %<@throw%>" msgstr "%<@throw%> erwartet" #: cp/parser.c:22185 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected %<__transaction_atomic%>" -msgstr "%<static_assert%> erwartet" +msgstr "%<__transaction_atomic%> erwartet" #: cp/parser.c:22188 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected %<__transaction_relaxed%>" -msgstr "%<static_assert%> erwartet" +msgstr "%<__transaction_relaxed%> erwartet" #: cp/parser.c:22219 #, gcc-internal-format @@ -31746,9 +31750,9 @@ msgid "%qs tag used in naming %q#T" msgstr "Markierung %qs bei Benennung von %q#T verwendet" #: cp/parser.c:22514 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q#T was previously declared here" -msgstr "vorher hier deklariert" +msgstr "%q#T wurde vorher hier deklariert" #: cp/parser.c:22533 #, gcc-internal-format @@ -31911,9 +31915,9 @@ msgid "specialization of %qT after instantiation" msgstr "Spezialisierung von %qT hinter Instanziierung" #: cp/pt.c:855 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "partial specialization of alias template %qD" -msgstr "partielle Spezialisierung »%D« eines Funktionstemplates" +msgstr "partielle Spezialisierung des Alias-Template %qD" #: cp/pt.c:891 #, gcc-internal-format @@ -32140,9 +32144,9 @@ msgid "default template arguments may not be used in function template friend de msgstr "Standardtemplateargumente dürfen in friend-Deklaration eines Funktionstemplates nicht verwendet werden" #: cp/pt.c:4687 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11" -msgstr "Standardtemplateargumente dürfen in Funktionstemplates ohne -std=c++0x und -std=gnu++0x nicht verwendet werden" +msgstr "Standardtemplateargumente dürfen in Funktionstemplates nicht ohne -std=c++11 und -std=gnu++11 verwendet werden" #: cp/pt.c:4690 #, gcc-internal-format @@ -32261,14 +32265,14 @@ msgid "original definition appeared here" msgstr "ursprüngliche Definition trat hier auf" #: cp/pt.c:5368 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE is not a valid template argument for type %qT because %qD has no linkage" -msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil Objekt %qD keine externe Bindung hat" +msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil %qD keine Bindung hat" #: cp/pt.c:5372 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage" -msgstr "%qE ist kein gültiges Templateargument des Typs %qT, weil %qD keine externe Bindung hat" +msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil %qD keine externe Bindung hat" #: cp/pt.c:5396 cp/pt.c:5997 #, gcc-internal-format @@ -32281,94 +32285,94 @@ msgid "it must be a pointer-to-member of the form %<&X::Y%>" msgstr "es muss ein Zeiger auf ein Element der Form %<&X::Y%> sein" #: cp/pt.c:5449 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " couldn't deduce template parameter %qD" -msgstr "%d Template-Parameter für %q#D erhalten" +msgstr " Template-Parameter %qD konnte nicht ermittelt werden" #: cp/pt.c:5464 #, gcc-internal-format msgid " types %qT and %qT have incompatible cv-qualifiers" -msgstr "" +msgstr " Typen %qT und %qT haben unverträgliche CV-Qualifizierer" #: cp/pt.c:5473 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " mismatched types %qT and %qT" -msgstr "Vergleich zwischen den Typen %qT und %qT" +msgstr " unpassende Typen %qT und %qT" #: cp/pt.c:5482 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " template parameter %qD is not a parameter pack, but argument %qD is" -msgstr "Templateparameterpack %qD kann kein Standardargument haben" +msgstr " Templateparameter %qD ist kein Parameterpack wie Argument %qD" #: cp/pt.c:5493 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " template argument %qE does not match pointer-to-member constant %qE" -msgstr "Template-Argumente für %qD passen nicht zum ursprünglichen Template %qD" +msgstr " Templateargumente %qE passt nicht zum konstanten Zeiger auf Element %qE" #: cp/pt.c:5503 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " %qE is not equivalent to %qE" -msgstr "%qs ist für %qs ungültig" +msgstr " %qE entspricht nicht %qE" #: cp/pt.c:5512 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " inconsistent parameter pack deduction with %qT and %qT" -msgstr "widersprüchliche Herleitung für %qT: %qT und dann %qT" +msgstr " unpassende Herleitung von Parameterpack mit %qT und %qT" #: cp/pt.c:5524 #, gcc-internal-format msgid " deduced conflicting types for parameter %qT (%qT and %qT)" -msgstr "" +msgstr " hergeleitete Typen für Parameter %qT stehen in Konflikt (%qT und %qT)" #: cp/pt.c:5528 #, gcc-internal-format msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)" -msgstr "" +msgstr " hergeleitete Werte für Nicht-Typ-Parameter %qE stehen in Konflikt (%qE und %qE)" #: cp/pt.c:5539 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " variable-sized array type %qT is not a valid template argument" -msgstr "Teilspezialisierung %qT spezialisiert keine Templateargumente" +msgstr " Feldtyp %qT mit veränderlicher Größe ist kein gültiges Templateargument" #: cp/pt.c:5550 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " member function type %qT is not a valid template argument" -msgstr "%qE ist kein gültiges Templateargument für Typ %qT" +msgstr " Typ %qT von Elementfunktion ist kein gültiges Templateargument" #: cp/pt.c:5583 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " cannot convert %qE (type %qT) to type %qT" -msgstr "Typ %qT kann nicht in den Typ %qT umgewandelt werden" +msgstr " %qE (Typ %qT) kann nicht in den Typ %qT umgewandelt werden" #: cp/pt.c:5596 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " %qT is an ambiguous base class of %qT" -msgstr "%qT ist mehrdeutige Basis von %qT" +msgstr " %qT ist mehrdeutige Basisklasse von %qT" #: cp/pt.c:5600 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " %qT is not derived from %qT" -msgstr "Typ %qT ist nicht vom Typ %qT abgeleitet" +msgstr " %qT ist nicht vom Typ %qT abgeleitet" #: cp/pt.c:5611 #, gcc-internal-format msgid " template parameters of a template template argument are inconsistent with other deduced template arguments" -msgstr "" +msgstr " Templateparameter eines Template-Templatearguments sind mit anderen hergeleiteten Templateargumenten unverträglich" #: cp/pt.c:5621 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " can't deduce a template for %qT from non-template type %qT" -msgstr "Zeiger auf unvollständigen Typen %qT kann nicht verringert werden" +msgstr " für %qT kann kein Template aus Nicht-Templatetyp %qT hergeleitet werden" #: cp/pt.c:5631 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " template argument %qE does not match %qD" -msgstr "Template-Argumente für %qD passen nicht zum ursprünglichen Template %qD" +msgstr " Template-Argument %qE passt nicht zu %qD" #: cp/pt.c:5640 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " could not resolve address from overloaded function %qE" -msgstr "Anweisung kann die Adresse der überladenen Funktion nicht auflösen" +msgstr " Adresse von überladener Funktion %qE konnte nicht aufgelöst werden" #: cp/pt.c:5679 #, gcc-internal-format @@ -32396,9 +32400,9 @@ msgid "%qE is not a valid template argument of type %qT because %qD does not hav msgstr "%qE ist kein gültiges Templateargument des Typs %qT, weil %qD keine externe Bindung hat" #: cp/pt.c:5890 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE is not a valid template argument of type %qT because %qD has no linkage" -msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil %qE keine Variable ist" +msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil %qD keine Bindung hat" #: cp/pt.c:5920 #, gcc-internal-format @@ -32451,9 +32455,9 @@ msgid "standard conversions are not allowed in this context" msgstr "Standardumwandlungen sind in diesem Kontext nicht erlaubt" #: cp/pt.c:6368 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ignoring attributes on template argument %qT" -msgstr "ungültiges Templateargument ohne Typ" +msgstr "Attribute an Templateargument %qT werden ignoriert" #: cp/pt.c:6426 #, gcc-internal-format @@ -32461,9 +32465,9 @@ msgid "injected-class-name %qD used as template template argument" msgstr "eingegebener Klassenname %qD als Template-Templateargument verwendet" #: cp/pt.c:6454 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid use of destructor %qE as a type" -msgstr "ungültige Benutzung des Destruktors %qD als Typ" +msgstr "ungültige Benutzung des Destruktors %qE als Typ" #: cp/pt.c:6459 #, gcc-internal-format @@ -32538,9 +32542,9 @@ msgid "template argument %d is invalid" msgstr "Templateargument %d ist ungültig" #: cp/pt.c:7087 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q#D is not a function template" -msgstr "%qD ist kein Funktionstemplate" +msgstr "%q#D ist kein Funktionstemplate" #: cp/pt.c:7251 #, gcc-internal-format @@ -32553,9 +32557,8 @@ msgid "for template declaration %q+D" msgstr "Für Template-Deklaration %q+D" #: cp/pt.c:8058 -#, fuzzy msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS" -msgstr "Instanziierungstiefe für Templates überschreitet Höchstwert %d (-ftemplate-depth= verwenden, um dies zu erhöhen) bei Instanziierung von %qD" +msgstr "Instanziierungstiefe für Templates überschreitet Höchstwert %d (-ftemplate-depth= verwenden, um dies zu erhöhen) bei Ersetzung von %qS" #: cp/pt.c:8062 #, gcc-internal-format @@ -32713,27 +32716,27 @@ msgstr "%<...%> verwenden, um Argumentpack aufzulösen" #: cp/pt.c:13880 #, gcc-internal-format msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation" -msgstr "" +msgstr "%qD wurde in diesem Gültigkeitsbereich nicht deklariert, und bei argumentabhängiger Suche am Ort der Instanziierung wurden keine Deklarationen gefunden" #: cp/pt.c:13889 #, gcc-internal-format msgid "declarations in dependent base %qT are not found by unqualified lookup" -msgstr "" +msgstr "Deklarationen in abhängiger Basis %qT wurden bei unqualifizierter Suche nicht gefunden" #: cp/pt.c:13894 #, gcc-internal-format msgid "use %<this->%D%> instead" -msgstr "" +msgstr "stattdessen %<this->%D%> verwenden" #: cp/pt.c:13897 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "use %<%T::%D%> instead" -msgstr "%<%T::%E%> ist kein Typ" +msgstr "stattdessen %<%T::%D%> verwenden" #: cp/pt.c:13901 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q+D declared here, later in the translation unit" -msgstr "%q+D nach der Definition als inline deklariert" +msgstr "%q+D hier deklariert, später in Ãœbersetzungseinheit" #: cp/pt.c:14134 #, gcc-internal-format @@ -32821,9 +32824,9 @@ msgid "storage class %qD applied to template instantiation" msgstr "Speicherklasse %qD auf Templateinstanziierung angewendet" #: cp/pt.c:17985 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "explicit instantiation of non-class template %qD" -msgstr "explizite Instanziierung des Nicht-Templates %q#D" +msgstr "explizite Instanziierung des Nicht-Klassen-Templates %qD" #: cp/pt.c:17987 #, gcc-internal-format @@ -32863,14 +32866,14 @@ msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, po msgstr "Instanziierungstiefe für Templates überschreitet Höchstwert %d (-ftemplate-depth= verwenden, um dies zu erhöhen) bei Instanziierung von %q+D, möglicherweise von Erzeugung der virtuellen Tabelle" #: cp/pt.c:19161 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid template non-type parameter" -msgstr "ungültige Verwendung des Parameters %qT für Templatetyp" +msgstr "ungültiger Nicht-Typ-Parameter für Template" #: cp/pt.c:19163 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q#T is not a valid type for a template non-type parameter" -msgstr "%q#T ist kein gültiger Typ für einen Templatekonstanten-Parameter" +msgstr "%q#T ist kein gültiger Typ für einen Nicht-Typ-Parameter eines Templates" #: cp/pt.c:20249 #, gcc-internal-format @@ -33006,14 +33009,14 @@ msgid "overriding deleted function %q+D" msgstr "gelöschte Funktion %q+D aufgehoben" #: cp/search.c:1969 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "virtual function %q+D" -msgstr "virtuelle Nicht-Klassen-Funktion %qs" +msgstr "virtuelle Funktion %q+D" #: cp/search.c:1970 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "overriding final function %q+D" -msgstr "gelöschte Funktion %q+D aufgehoben" +msgstr "finale Funktion %q+D wird überschrieben" #. A static member function cannot match an inherited #. virtual member function. @@ -33138,9 +33141,9 @@ msgid "use of %<auto%> variable from containing function" msgstr "Verwendung einer %<auto%>-Variable aus enthaltender Funktion" #: cp/semantics.c:3006 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "use of parameter from containing function" -msgstr "Verwendung einer %<auto%>-Variable aus enthaltender Funktion" +msgstr "Verwendung eines Parameters aus enthaltender Funktion" #: cp/semantics.c:3007 #, gcc-internal-format @@ -33184,15 +33187,15 @@ msgid "type of %qE is unknown" msgstr "Typ von %qE ist unbekannt" #: cp/semantics.c:3398 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qT is not an enumeration type" -msgstr "%qD ist kein Aufzählungsname" +msgstr "%qT ist kein Aufzählungstyp" #. Parameter packs can only be used in templates #: cp/semantics.c:3546 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "Parameter pack __bases only valid in template declaration" -msgstr "Speicherklassenangaben sind in Parameterdeklarationen ungültig" +msgstr "Parameterpack __bases nur in Templatedeklaration gültig" #: cp/semantics.c:3566 #, gcc-internal-format @@ -33256,9 +33259,9 @@ msgstr "Unterschied zwischen %qE und %qD hat keinen Ganzzahltyp" #. Report the error. #: cp/semantics.c:5135 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "static assertion failed: %s" -msgstr "statische Behauptung gescheitert: %E" +msgstr "statische Erklärung gescheitert: %s" #: cp/semantics.c:5138 #, gcc-internal-format @@ -33271,9 +33274,9 @@ msgid "argument to decltype must be an expression" msgstr "Argument für decltype muss ein Ausdruck sein" #: cp/semantics.c:5196 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "decltype cannot resolve address of overloaded function" -msgstr "Anweisung kann die Adresse der überladenen Funktion nicht auflösen" +msgstr "decltype kann die Adresse der überladenen Funktion nicht auflösen" #: cp/semantics.c:5519 #, gcc-internal-format @@ -33296,9 +33299,9 @@ msgid "invalid return type %qT of constexpr function %q+D" msgstr "ungültiger Rückgabetyp %qT der Funktion %q+D als konstantem Ausdruck" #: cp/semantics.c:5742 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q#T has virtual base classes" -msgstr "%q#T ist keine Klasse" +msgstr "%q#T hat virtuelle Basisklassen" #: cp/semantics.c:5879 #, gcc-internal-format @@ -33316,9 +33319,9 @@ msgid "body of constexpr function %qD not a return-statement" msgstr "Körper der Funktion %qD mit konstantem Ausdruck ist keine Rückgabeanweisung" #: cp/semantics.c:6151 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q+D is not usable as a constexpr function because:" -msgstr "%qD ist keine Funktion mit konstantem Audruck" +msgstr "%q+D ist nicht als Funktion mit konstantem Audruck verwendbar, denn:" #: cp/semantics.c:6475 #, gcc-internal-format @@ -33326,15 +33329,15 @@ msgid "expression %qE does not designate a constexpr function" msgstr "Ausdruck %qE bezeichnet keine Funktion mit konstantem Ausdruck" #: cp/semantics.c:6489 cp/semantics.c:8072 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "call to non-constexpr function %qD" -msgstr "Aufruf der Nicht-Funktion %qD" +msgstr "Aufruf der Funktion %qD, die kein konstanter Ausdruck ist" #. The definition of fun was somehow unsuitable. #: cp/semantics.c:6517 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD called in a constant expression" -msgstr "%qE ist kein Konstantenausdruck" +msgstr "%qD in konstantem Ausdruck aufgerufen" #: cp/semantics.c:6521 #, gcc-internal-format @@ -33367,9 +33370,9 @@ msgid "%qE is not a constant expression" msgstr "%qE ist kein Konstantenausdruck" #: cp/semantics.c:6833 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "mutable %qD is not usable in a constant expression" -msgstr "der Wert von %qD ist in konstantem Ausdruck nicht verwendbar" +msgstr "veränderliches %qD ist in konstantem Ausdruck nicht verwendbar" #: cp/semantics.c:6848 #, gcc-internal-format @@ -33422,9 +33425,9 @@ msgid "use of the value of the object being constructed in a constant expression msgstr "Verwendung des Wertes des konstruierten Objektes in konstantem Ausdruck" #: cp/semantics.c:7539 cp/semantics.c:8342 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "temporary of non-literal type %qT in a constant expression" -msgstr "Aufzählungs- und Nicht-Aufzählungstyp in bedingtem Ausdruck" +msgstr "Zwischenergebnis des nicht-literalen Typs %qT in konstantem Ausdruck" #: cp/semantics.c:7787 cp/semantics.c:8246 cp/semantics.c:8495 #, gcc-internal-format @@ -33442,9 +33445,9 @@ msgid "%qT cannot be the type of a complete constant expression because it has m msgstr "" #: cp/semantics.c:7836 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression" -msgstr "Umwandlung des Ausdrucks %qE mit Zeigertyp kann keinen konstanten Ausdruck ergeben" +msgstr "Umwandlung des Zeigertyps %qT in arithmetischen Typ %qT in konstantem Ausdruck" #: cp/semantics.c:8007 #, gcc-internal-format @@ -33452,9 +33455,9 @@ msgid "expression %qE has side-effects" msgstr "Ausdruck %qE hat Seiteneffekte" #: cp/semantics.c:8090 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "calling a member function of the object being constructed in a constant expression" -msgstr "Verwendung des Wertes des konstruierten Objektes in konstantem Ausdruck" +msgstr "Aufruf einer Elementfunktion des konstruierten Objektes in konstantem Ausdruck" #: cp/semantics.c:8172 #, gcc-internal-format @@ -33487,7 +33490,7 @@ msgid "non-constant array initialization" msgstr "nicht konstante Feldinitialisierung" #: cp/semantics.c:8509 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "unexpected AST of kind %s" msgstr "unerwarteter AST der Art %s" @@ -33497,9 +33500,9 @@ msgid "cannot capture %qE by reference" msgstr "%qE kann nicht per Referenz aufgefangen werden" #: cp/semantics.c:9022 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "already captured %qD in lambda expression" -msgstr "%<this%> bereits in Lambda-Ausdruck aufgefangen" +msgstr "%qD bereits in Lambda-Ausdruck erfasst" #: cp/semantics.c:9168 #, gcc-internal-format @@ -33647,9 +33650,9 @@ msgid "deprecated conversion from string constant to %qT" msgstr "veraltete Konvertierung von Zeichenkettenkonstante in %qT" #: cp/typeck.c:2142 cp/typeck.c:2536 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)" -msgstr "Anforderung des Elements %qD in %qE, das vom Nicht-Aggregattyp %qT ist" +msgstr "Anforderung des Elements %qD in %qE, das vom Zeigertyp %qT ist (vielleicht war %<->%> gemeint?)" #: cp/typeck.c:2146 cp/typeck.c:2540 #, gcc-internal-format @@ -34016,9 +34019,9 @@ msgid "address requested for %qD, which is declared %<register%>" msgstr "Adresse für %qD angefordert, was als %<register%> deklariert ist" #: cp/typeck.c:5571 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "list-initializer for non-class type must not be parenthesized" -msgstr "Initialisierung für %qT muss geklammert sein" +msgstr "Listeninitialisierung für Nicht-Klassentyp darf nicht geklammert sein" #: cp/typeck.c:5583 #, gcc-internal-format @@ -34435,9 +34438,9 @@ msgid "invalid use of %qT" msgstr "ungültige Verwendung von %qT" #: cp/typeck2.c:438 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid use of member function (did you forget the %<()%> ?)" -msgstr "ungültige Verwendung eines Elements (%<&%> vergessen?)" +msgstr "ungültige Verwendung von Elementfunktion (%<()%> vergessen?)" #: cp/typeck2.c:442 #, gcc-internal-format @@ -34460,9 +34463,9 @@ msgid "invalid use of dependent type %qT" msgstr "ungültige Verwendung des abhängigen Typen %qT" #: cp/typeck2.c:471 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid use of brace-enclosed initializer list" -msgstr "<geschweift geklammerte Initialisierungsliste>" +msgstr "ungültige Verwendung von geschweift geklammerter Initialisierungsliste" #: cp/typeck2.c:479 #, gcc-internal-format @@ -34495,9 +34498,9 @@ msgid "narrowing conversion of %qE from %qT to %qT inside { }" msgstr "verengende Umwandlung von %qE von %qT nach %qT in { }" #: cp/typeck2.c:836 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "narrowing conversion of %qE from %qT to %qT inside { } is ill-formed in C++11" -msgstr "verengende Umwandlung von %qE von %qT nach %qT in { }" +msgstr "verengende Umwandlung von %qE von %qT nach %qT in { } ist in C++11 ungültig" #: cp/typeck2.c:899 #, gcc-internal-format @@ -34590,9 +34593,9 @@ msgid "pointer to member type %qT incompatible with object type %qT" msgstr "Zeiger auf Elementtyp %qT mit Objekttyp %qT inkompatibel" #: cp/typeck2.c:1663 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "functional cast to array type %qT" -msgstr "ungültige Umwandlung in Funktionstyp %qT" +msgstr "funktionale Umwandlung in Feldtyp %qT" #: cp/typeck2.c:1684 #, gcc-internal-format @@ -34713,9 +34716,9 @@ msgid "Too few codimensions at %C, expected %d not %d" msgstr "Zu wenige Codimensionen bei %C, %d statt %d erwartet" #: fortran/array.c:243 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Too many codimensions at %C, expected %d not %d" -msgstr "Zu wenige Codimensionen bei %C, %d statt %d erwartet" +msgstr "Zu viele Codimensionen bei %C, %d statt %d erwartet" #: fortran/array.c:253 #, gcc-internal-format, gfc-internal-format @@ -34915,9 +34918,9 @@ msgid "'%s' at %L must be nonnegative" msgstr "'%s' bei %L muss nichtnegativ sein" #: fortran/check.c:314 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "The absolute value of SHIFT at %L must be less than or equal to BIT_SIZE('%s')" -msgstr "'%s + %s' bei %L muss kleiner oder gleich BIT_SIZE('%s') sein" +msgstr "Der absolute Wert von SHIFT bei %L muss kleiner oder gleich BIT_SIZE('%s') sein" #: fortran/check.c:325 #, gcc-internal-format, gfc-internal-format @@ -35006,9 +35009,9 @@ msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER" msgstr "Argument »%s« des intrinsischen »%s« bei %L muss ein POINTER sein" #: fortran/check.c:910 fortran/check.c:946 fortran/check.c:2853 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "'%s' argument of '%s' intrinsic at %L shall not be conindexed" -msgstr "Argument »%s« des intrinsischen »%s« bei %L muss von der Art %d sein" +msgstr "Argument »%s« des intrinsischen »%s« bei %L sollte keinen Koindex haben" #: fortran/check.c:928 #, gcc-internal-format, gfc-internal-format @@ -35033,27 +35036,27 @@ msgstr "NULL-Zeiger bei %L ist nicht als effektives Argument der intrinsischen F #: fortran/check.c:1012 #, gcc-internal-format, gfc-internal-format msgid "ATOM argument at %L to intrinsic function %s shall be an integer of ATOMIC_INT_KIND or a logical of ATOMIC_LOGICAL_KIND" -msgstr "" +msgstr "ATOM-Argument bei %L für intrinsische Funktion %s sollte eine ATOMIC_INT_KIND-Ganzzahl oder ein ATOMIC_LOGICAL_KIND-Logikwert sein" #: fortran/check.c:1020 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "ATOM argument at %L of the %s intrinsic function shall be a coarray or coindexed" -msgstr "Effektives Argument für »%s« muss ein Zeiger bei %L sein" +msgstr "ATOM-Argument bei %L der intrinsischen Funktion %s sollte Koarray oder koindiziert sein" #: fortran/check.c:1027 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "ATOM and VALUE argument of the %s intrinsic function shall have the same type at %L" -msgstr "Argumente »%s« und »%s« des intrinsischen »%s« bei %L müssen den selben Typ haben" +msgstr "ATOM- und VALUE-Argumente der intrinsischen Funktion »%s« sollte bei %L den selben Typ haben" #: fortran/check.c:1045 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "ATOM argument of the %s intrinsic function at %L shall be definable" -msgstr "Argument »%s« des intrinsischen »%s« bei %L muss ein Standard-Real sein" +msgstr "ATOM-Argument der intrinsischen Funktion »%s« bei %L sollte definierbar sein" #: fortran/check.c:1062 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "VALUE argument of the %s intrinsic function at %L shall be definable" -msgstr "Argument »%s« des intrinsischen »%s« bei %L muss ein Standard-Real sein" +msgstr "VALUE-Argument der intrinsischen Funktion »%s« bei %L sollte definierbar sein" #: fortran/check.c:1082 #, gcc-internal-format, gfc-internal-format @@ -35129,14 +35132,14 @@ msgid "'%s' argument of '%s' intrinsic at %L must be the same kind as '%s'" msgstr "Argument »%s« des intrinsischen »%s« bei %L muss von der selben Art wie »%s« sein" #: fortran/check.c:2038 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "SIZE at %L must be positive" -msgstr "'%s' bei %L muss nichtnegativ sein" +msgstr "SIZE bei %L muss positiv sein" #: fortran/check.c:2050 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "The absolute value of SHIFT at %L must be less than or equal to SIZE at %L" -msgstr "'%s + %s' bei %L muss kleiner oder gleich BIT_SIZE('%s') sein" +msgstr "Der absolute Wert von SHIFT bei %L muss kleiner oder gleich SIZE bei %L sein" #: fortran/check.c:2111 #, gcc-internal-format, gfc-internal-format @@ -35204,19 +35207,19 @@ msgid "the '%s' and '%s' arguments of '%s' intrinsic at %L must be of the same k msgstr "Argumente »%s« und »%s« des intrinsischen »%s« bei %L müssen von der selben Art %d/%d sein" #: fortran/check.c:2788 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Argument 'S' of NEAREST at %L shall not be zero" -msgstr "Zweites Argument von NEAREST bei %L sollte nicht Null sein" +msgstr "Argument 'S' von NEAREST bei %L sollte nicht Null sein" #: fortran/check.c:2838 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER, ALLOCATABLE or procedure pointer" -msgstr "Argument »%s« des intrinsischen »%s« bei %L muss ALLOCATABLE sein" +msgstr "Argument »%s« des intrinsischen »%s« bei %L muss POINTER, ALLOCATABLE oder Prozedurzeiger sein" #: fortran/check.c:2846 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Fortran 2003: NULL intrinsic with allocatable MOLD at %L" -msgstr "Fortran 2003: intrinsisches »%s« mit KIND-Argument bei %L" +msgstr "Fortran 2003: intrinsisches NULL mit reservierbarem MOLD bei %L" #: fortran/check.c:2925 fortran/check.c:4182 #, gcc-internal-format, gfc-internal-format @@ -35239,9 +35242,9 @@ msgid "'%s' argument of '%s' intrinsic at %L must not be a subobject of '%s'" msgstr "Argument »%s« des intrinsischen »%s« bei %L darf kein Unterobjekt von »%s« sein" #: fortran/check.c:3058 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "The argument of the RANK intrinsic at %L must be a data object" -msgstr "Argument »%s« des intrinsischen »%s« bei %L muss eine Variable sein" +msgstr "Argument des intrinsischen RANK bei %L muss ein Datenobjekt sein" #: fortran/check.c:3162 #, gcc-internal-format, gfc-internal-format @@ -35309,14 +35312,14 @@ msgid "'source' argument of 'shape' intrinsic at %L must not be an assumed size msgstr "Argument »source« des intrinsischen »shape« bei %L darf kein Feld impliziter Größe sein" #: fortran/check.c:3586 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "'%s' argument of '%s' intrinsic at %L may not be a procedure" -msgstr "Argument »%s« des intrinsischen »%s« bei %L muss ein Skalar sein" +msgstr "Argument »%s« des intrinsischen »%s« bei %L darf keine Prozedur" #: fortran/check.c:3600 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "'%s' argument of '%s' intrinsic at %L must be an interoperable data entity" -msgstr "Argument »%s« des intrinsischen »%s« bei %L muss kompatible Datenentität sein" +msgstr "Argument »%s« des intrinsischen »%s« bei %L muss austauschbare Datenentität sein" #: fortran/check.c:3629 #, gcc-internal-format, gfc-internal-format @@ -35526,14 +35529,14 @@ msgid "Procedure '%s' at %L must have the BIND(C) attribute to be C interoperabl msgstr "Prozedur »%s« bei %L muss das BIND(C)-Attribut haben, um mit C interoperabel zu sein" #: fortran/decl.c:1013 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Variable '%s' at %L is a dummy argument to the BIND(C) procedure '%s' but is not C interoperable because derived type '%s' is not C interoperable" -msgstr "Typ »%s« bei %L ist ein Parameter für die BIND(C)-Prozedur »%s«, jedoch nicht interoperabel mit C, da der abgeleitete Typ »%s« nicht mit C interoperabel ist" +msgstr "Variable »%s« bei %L ist ein Scheinargument für die BIND(C)-Prozedur »%s«, jedoch nicht interoperabel mit C, da der abgeleitete Typ »%s« nicht mit C interoperabel ist" #: fortran/decl.c:1020 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Variable '%s' at %L is a dummy argument to the BIND(C) procedure '%s' but is not C interoperable because it is polymorphic" -msgstr "Variable »%s« bei %L ist ein Parameter für die BIND(C)-Prozedur »%s«, könnte jedoch inkompatibel mit C sein" +msgstr "Variable »%s« bei %L ist ein Scheinargument für die BIND(C)-Prozedur »%s«, jedoch nicht interoperabel mit C, da sie polymorph ist" #: fortran/decl.c:1026 #, gcc-internal-format, gfc-internal-format @@ -35556,14 +35559,14 @@ msgid "Variable '%s' at %L cannot have the POINTER attribute because procedure ' msgstr "Variable »%s« bei %L kann kein POINTER-Attribut haben, da Prozedur »%s« BIND(C) ist" #: fortran/decl.c:1073 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Variable '%s' at %L cannot have both the OPTIONAL and the VALUE attribute because procedure '%s' is BIND(C)" -msgstr "Variable »%s« bei %L kann kein OPTIONAL-Attribut haben, da Prozedur »%s« BIND(C) ist" +msgstr "Variable »%s« bei %L kann nicht gleichzeitig die Attribute OPTIONAL und VALUE haben, da Prozedur »%s« BIND(C) ist" #: fortran/decl.c:1080 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "TS29113: Variable '%s' at %L with OPTIONAL attribute in procedure '%s' which is BIND(C)" -msgstr "Variable »%s« bei %L kann kein OPTIONAL-Attribut haben, da Prozedur »%s« BIND(C) ist" +msgstr "TS29113: Variable »%s« bei %L mit OPTIONAL-Attribut in Prozedur »%s«, die BIND(C) ist" #: fortran/decl.c:1094 #, gcc-internal-format, gfc-internal-format @@ -35681,9 +35684,9 @@ msgid "Duplicate array spec for Cray pointee at %C" msgstr "Doppelte Feldspezifikation für Cray-Zeigerende bei %C" #: fortran/decl.c:1965 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "The type of '%s' at %C has not been declared within the interface" -msgstr "der Typ von »%s« bei %C wurde nicht innerhalb der Schnittstelle deklariert" +msgstr "Der Typ von »%s« bei %C wurde nicht innerhalb der Schnittstelle deklariert" #: fortran/decl.c:1989 #, gcc-internal-format, gfc-internal-format @@ -36710,44 +36713,44 @@ msgid "FINAL declaration at %C must be inside a derived type CONTAINS section" msgstr "FINAL-Deklaration bei %C muss innerhalb eines CONTAINS-Abschnitts eines abgeleiteten Typs stehen" #: fortran/decl.c:8448 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Derived type declaration with FINAL at %C must be in the specification part of a MODULE" -msgstr "Abgeleiteter Typ bei %C kann nur PUBLIC im Spezifikationsteil eines Moduls sein" +msgstr "Deklaration abgeleiteten Typs mit FINAL bei %C muss im Spezifikationsteil eines Moduls sein" #: fortran/decl.c:8470 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Empty FINAL at %C" -msgstr "VARIABLE bei %C erwartet" +msgstr "Leeres FINAL bei %C" #: fortran/decl.c:8477 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Expected module procedure name at %C" -msgstr "Prozedur für Argument »%s« bei %L erwartet" +msgstr "Prozedurname im Modul bei %C erwartet" #: fortran/decl.c:8487 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Expected ',' at %C" -msgstr "»(« bei %C erwartet" +msgstr "»,« bei %C erwartet" #: fortran/decl.c:8493 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Unknown procedure name \"%s\" at %C" -msgstr "Unbekannter Operator »%s« bei %%L" +msgstr "Unbekannter Prozedurname »%s« bei %C" #: fortran/decl.c:8507 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "'%s' at %C is already defined as FINAL procedure!" -msgstr "Prozedur %s bei %L ist bereits als Prozedur %s deklariert" +msgstr "»%s« bei %C ist bereits als FINAL-Prozedur definiert!" #: fortran/decl.c:8576 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Unknown attribute in !GCC$ ATTRIBUTES statement at %C" -msgstr "RESULT-Attribut in ENTRY-Anweisung bei %C benötigt" +msgstr "Unbekanntes Attribut in !GCC$ ATTRIBUTES-Anweisung bei %C" #: fortran/decl.c:8623 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Syntax error in !GCC$ ATTRIBUTES statement at %C" -msgstr "Syntaxfehler in VALUE-Anweisung bei %C" +msgstr "Syntaxfehler in !GCC$ ATTRIBUTES-Anweisung bei %C" #. We are told not to check dependencies. #. We do it, however, and issue a warning in case we find one. @@ -36757,7 +36760,7 @@ msgstr "Syntaxfehler in VALUE-Anweisung bei %C" #: fortran/dependency.c:720 #, gcc-internal-format, gfc-internal-format msgid "INTENT(%s) actual argument at %L might interfere with actual argument at %L." -msgstr "" +msgstr "Effektives Argument von INTENT(%s) bei %L könnte effektives Argument bei %L stören" #: fortran/error.c:301 #, gcc-internal-format, gfc-internal-format @@ -36830,14 +36833,14 @@ msgid "Numeric operands are required in expression at %L" msgstr "In Ausdruck bei %L werden numerische Operanden benötigt" #: fortran/expr.c:2217 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Invalid initialization expression for ALLOCATABLE component '%s' in structure constructor at %L" -msgstr "Zu wenige Komponenten in Strukturkonstruktor bei %C" +msgstr "Ungültiger Initialisierungsausdruck für ALLOCATABLE-Komponente »%s« in Strukturkonstruktor bei %L" #: fortran/expr.c:2315 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Assumed or deferred character length variable '%s' in constant expression at %L" -msgstr "Variable »%s« mit vermuteter Zeichenlänge in konstantem Ausdruck bei %L" +msgstr "Variable »%s« mit vermuteter oder aufgeschobener Zeichenlänge in konstantem Ausdruck bei %L" #: fortran/expr.c:2381 #, gcc-internal-format, gfc-internal-format @@ -36850,9 +36853,9 @@ msgid "Extension: Evaluation of nonstandard initialization expression at %L" msgstr "Erweiterung: Auswertung des nicht standardisierten Initialisierungsausdrucks bei %L" #: fortran/expr.c:2468 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Function '%s' in initialization expression at %L must be an intrinsic function" -msgstr "Funktion »%s« in Initialisierungs-Ausdruck bei %L muss eine intrinsische oder Spezifikations-Funktion sein" +msgstr "Funktion »%s« in Initialisierungs-Ausdruck bei %L muss eine intrinsische Funktion sein" #: fortran/expr.c:2480 #, gcc-internal-format, gfc-internal-format @@ -36930,9 +36933,9 @@ msgid "Variable '%s' cannot appear in the expression at %L" msgstr "Variable »%s« kann nicht im Ausdruck bei %L auftreten" #: fortran/expr.c:2967 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Expression at %L must be of INTEGER type, found %s" -msgstr "Ausdruck bei %L muss INTEGER-Typ haben" +msgstr "Ausdruck bei %L muss INTEGER-Typ haben, %s gefunden" #: fortran/expr.c:2979 #, gcc-internal-format, gfc-internal-format @@ -37010,14 +37013,14 @@ msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disab msgstr "Arithmetisches NaN des bitweise übertragenen BOZ bei %L. Diese Ãœberprüfung kann mit der Option -fno-range-check ausgeschaltet werden" #: fortran/expr.c:3235 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Change of value in conversion from %s to %s at %L" -msgstr "Erweiterung: Umwandlung von %s in %s bei %L" +msgstr "Wertänderung bei Umwandlung von %s in %s bei %L" #: fortran/expr.c:3243 fortran/intrinsic.c:4335 fortran/intrinsic.c:4347 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Possible change of value in conversion from %s to %s at %L" -msgstr "Erweiterung: Umwandlung von %s in %s bei %L" +msgstr "Mögliche Wertänderung bei Umwandlung von %s in %s bei %L" #: fortran/expr.c:3251 fortran/intrinsic.c:4330 fortran/intrinsic.c:4356 #, gcc-internal-format, gfc-internal-format @@ -37025,9 +37028,9 @@ msgid "Conversion from %s to %s at %L" msgstr "Umwandlung von %s in %s bei %L" #: fortran/expr.c:3272 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Incompatible types in DATA statement at %L; attempted conversion of %s to %s" -msgstr "Unverträgliche Typen in Zuweisung bei %L, %s an %s" +msgstr "Unverträgliche Typen in DATA-Anweisung bei %L; versuchte Umwandlung von %s an %s" #: fortran/expr.c:3308 #, gcc-internal-format, gfc-internal-format @@ -37040,74 +37043,74 @@ msgid "'%s' in the pointer assignment at %L cannot be an l-value since it is a p msgstr "»%s« in Zeigerzuweisung bei %L kann kein L-Wert sein, da es eine Prozedur ist" #: fortran/expr.c:3340 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Expected bounds specification for '%s' at %L" -msgstr "Doppelte Spezifikation %s bei %C" +msgstr "Grenzen für »%s« bei %L erwartet" #: fortran/expr.c:3345 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Fortran 2003: Bounds specification for '%s' in pointer assignment at %L" -msgstr "Fortran 2003: Funktion »%s« als Initialisierungsausdruck bei %L" +msgstr "Fortran 2003: Grenzenangabe für »%s« in Zeigerzuweisung bei %L" #: fortran/expr.c:3359 #, gcc-internal-format, gfc-internal-format msgid "Lower bound has to be present at %L" -msgstr "" +msgstr "Bei %L muss untere Grenze vorhanden sein" #: fortran/expr.c:3365 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Stride must not be present at %L" -msgstr "Stackgröße darf nicht größer als 64k sein" +msgstr "Bei %L darf kein Schritt vorhanden sein" #: fortran/expr.c:3377 #, gcc-internal-format, gfc-internal-format msgid "Either all or none of the upper bounds must be specified at %L" -msgstr "" +msgstr "Bei %L müssen entweder alle oberen Grenzen oder keine obere Grenze angegeben werden" #: fortran/expr.c:3403 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Pointer object at %L shall not have a coindex" -msgstr "Externes Objekt »%s« bei %L darf keine Initialisierung haben" +msgstr "Zeigerobjekt bei %L sollte keinen Koindex haben" #: fortran/expr.c:3424 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Invalid procedure pointer assignment at %L" -msgstr "Verschiedene Typen in Zeigerzuweisung bei %L" +msgstr "Ungültige Zuweisung eines Prozedurzeigers bei %L" #: fortran/expr.c:3430 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Abstract interface '%s' is invalid in procedure pointer assignment at %L" -msgstr "Parameter verschiedener Typen in Zeigerzuweisung bei %L" +msgstr "Abstrakte Schnittstelle »%s« ist in Zuweisung des Prozedurzeigers bei %L ungültig" #: fortran/expr.c:3440 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Statement function '%s' is invalid in procedure pointer assignment at %L" -msgstr "Anweisungsfunktion »%s« erfordert Argumentliste bei %C" +msgstr "Anweisungsfunktion »%s« ist in Zuweisung des Prozedurzeigers bei %L ungültig" #: fortran/expr.c:3446 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Internal procedure '%s' is invalid in procedure pointer assignment at %L" -msgstr "Interne Prozedur »%s« ist nicht als effektives Argument bei %L erlaubt" +msgstr "Interne Prozedur »%s« ist in Zuweisung des Prozedurzeigers bei %L ungültig" #: fortran/expr.c:3454 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Nonintrinsic elemental procedure '%s' is invalid in procedure pointer assigment at %L" -msgstr "Interne Prozedur »%s« ist nicht als effektives Argument bei %L erlaubt" +msgstr "Nichtintrinsische elementare Prozedur »%s« ist in Zuweisung des Prozedurzeigers bei %L ungültig" #: fortran/expr.c:3477 #, gcc-internal-format, gfc-internal-format msgid "Mismatch in the procedure pointer assignment at %L: mismatch in the calling convention" -msgstr "" +msgstr "Unpassende Zuweisung des Prozedurzeigers bei %L: Unpassende Aufrufkonvention" #: fortran/expr.c:3508 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Interface mismatch in procedure pointer assignment at %L: %s" -msgstr "Verschiedene Zeichenlängen in Zeigerzuweisung bei %L" +msgstr "Unpassende Schnittstellen bei Zuweisung des Prozedurzeigers bei %L: %s" #: fortran/expr.c:3518 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Different types in pointer assignment at %L; attempted assignment of %s to %s" -msgstr "Verschiedene Typen in Zeigerzuweisung bei %L" +msgstr "Verschiedene Typen in Zeigerzuweisung bei %L; Versuch der Zuweisung von %s an %s" #: fortran/expr.c:3526 #, gcc-internal-format, gfc-internal-format @@ -37122,22 +37125,22 @@ msgstr "Verschiedene Ränge in Zeigerzuweisung bei %L" #: fortran/expr.c:3552 #, gcc-internal-format, gfc-internal-format msgid "Rank remapping target is smaller than size of the pointer (%ld < %ld) at %L" -msgstr "" +msgstr "Ziel der Rang-Neuzuordnung ist kleiner als die Größe des Zeigers (%ld < %ld) bei %L" #: fortran/expr.c:3565 #, gcc-internal-format, gfc-internal-format msgid "Rank remapping target must be rank 1 or simply contiguous at %L" -msgstr "" +msgstr "Ziel der Rang-Neuzuordnung muss Rang 1 oder einfach fortlaufend bei %L sein" #: fortran/expr.c:3569 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Fortran 2008: Rank remapping target is not rank 1 at %L" -msgstr "Zeiger-Zuweisungziel ist kein POINTER bei %L" +msgstr "Fortran 2008: Ziel der Rang-Neuzuordnung ist nicht Rang 1 bei %L" #: fortran/expr.c:3594 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Target expression in pointer assignment at %L must deliver a pointer result" -msgstr "Auswahlausdruck in berechneter GOTO-Anweisung bei %L muss ein skalarer Ganzzahlausdruck sein" +msgstr "Zielausdruck in Zeigerzuweisung bei %L muss ein Zeigerergebnis liefern" #: fortran/expr.c:3602 #, gcc-internal-format, gfc-internal-format @@ -37155,104 +37158,104 @@ msgid "Pointer assignment with vector subscript on rhs at %L" msgstr "Zeigerzuweisung mit Vektorindex für rhs bei %L" #: fortran/expr.c:3627 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Pointer assignment target has PROTECTED attribute at %L" msgstr "Zeiger-Zuweisungziel hat PROTECTED-Attribut bei %L" #: fortran/expr.c:3640 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Data target at %L shall not have a coindex" -msgstr "Datenübertragungselement bei %L kann keine POINTER-Komponenten haben" +msgstr "Datenziel bei %L sollte keinen Koindex haben" #: fortran/expr.c:3688 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Pointer initialization target at %C must not be ALLOCATABLE " -msgstr "Zeigerinitialisierung bei %C benötigt »=>«, nicht »=«" +msgstr "Ziel der Zeigerinitialisierung bei %C darf nicht ALLOCATABLE sein" #: fortran/expr.c:3694 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Pointer initialization target at %C must have the TARGET attribute" -msgstr "Komponente bei %C muss ein POINTER-Attribut haben" +msgstr "Ziel der Zeigerinitialisierung bei %C muss das TARGET-Attribut haben" #: fortran/expr.c:3700 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Pointer initialization target at %C must have the SAVE attribute" -msgstr "Komponente bei %C muss ein POINTER-Attribut haben" +msgstr "Ziel der Zeigerinitialisierung bei %C muss das SAVE-Attribut haben" #: fortran/expr.c:3712 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Procedure pointer initialization target at %L may not be a procedure pointer" -msgstr "Zeigerinitialisierung bei %C benötigt »=>«, nicht »=«" +msgstr "Ziel der Zeigerinitialisierung für Prozedur bei %L darf kein Prozedurzeiger sein" #: fortran/expr.c:4587 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Fortran 2008: Pointer functions in variable definition context (%s) at %L" -msgstr "Fortran 2003: Nichtganzzahliger Exponent in einem Initialisierungsausdruck bei %L" +msgstr "Fortran 2008: Zeigerfunktionen in Variablen-Definitionskontext (%s) bei %L" #: fortran/expr.c:4595 #, gcc-internal-format, gfc-internal-format msgid "Non-variable expression in variable definition context (%s) at %L" -msgstr "" +msgstr "Nicht-variabler Ausdruck in Variablen-Definitionskontext (%s) bei %L" #: fortran/expr.c:4603 #, gcc-internal-format, gfc-internal-format msgid "Named constant '%s' in variable definition context (%s) at %L" -msgstr "" +msgstr "Benannte Konstante »%s« in Variablen-Definitionskontext (%s) bei %L" #: fortran/expr.c:4612 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "'%s' in variable definition context (%s) at %L is not a variable" -msgstr "Argument von »%s« bei %L ist keine Variable" +msgstr "»%s« in Variablen-Definitionskontext (%s) bei %L ist keine Variable" #: fortran/expr.c:4623 #, gcc-internal-format, gfc-internal-format msgid "Non-POINTER in pointer association context (%s) at %L" -msgstr "" +msgstr "Nicht-POINTER in Zeiger-Verbindungskontext (%s) bei %L" #: fortran/expr.c:4636 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "LOCK_TYPE in variable definition context (%s) at %L" -msgstr "Argument von »%s« bei %L ist keine Variable" +msgstr "LOCK_TYPE in Variablen-Definitionskontext (%s) bei %L" #: fortran/expr.c:4658 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Dummy argument '%s' with INTENT(IN) in pointer association context (%s) at %L" -msgstr "Scheinargument »%s« ist im Ausdruck bei %L nicht erlaubt" +msgstr "Scheinargument »%s« mit INTENT(IN) in Zeiger-Verbindungskontext (%s) bei %L" #: fortran/expr.c:4666 #, gcc-internal-format, gfc-internal-format msgid "Dummy argument '%s' with INTENT(IN) in variable definition context (%s) at %L" -msgstr "" +msgstr "Scheinargument »%s« mit INTENT(IN) in Variablen-Definitionskontext (%s) bei %L" #: fortran/expr.c:4679 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Variable '%s' is PROTECTED and can not appear in a pointer association context (%s) at %L" -msgstr "Variable »%s« kann nicht im Ausdruck bei %L auftreten" +msgstr "Variable »%s« ist PROTECTED und kann nicht in Zeiger-Verbindungskontext (%s) bei %L auftreten" #: fortran/expr.c:4687 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Variable '%s' is PROTECTED and can not appear in a variable definition context (%s) at %L" -msgstr "Variable »%s« kann nicht im Ausdruck bei %L auftreten" +msgstr "Variable »%s« ist PROTECTED und kann nicht in Variablen-Definitionskontext (%s) bei %L auftreten" #: fortran/expr.c:4699 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Variable '%s' can not appear in a variable definition context (%s) at %L in PURE procedure" -msgstr "Variable »%s« kann nicht im Ausdruck bei %L auftreten" +msgstr "Variable »%s« kann nicht in Variablen-Definitionskontext (%s) bei %L in PURE-Prozedur auftreten" #: fortran/expr.c:4758 #, gcc-internal-format, gfc-internal-format msgid "'%s' at %L associated to vector-indexed target can not be used in a variable definition context (%s)" -msgstr "" +msgstr "»%s« ist bei %L mit vektorindiziertem Ziel verbunden und kann nicht in Variablen-Definitionskontext (%s) verwendet werden" #: fortran/expr.c:4762 #, gcc-internal-format, gfc-internal-format msgid "'%s' at %L associated to expression can not be used in a variable definition context (%s)" -msgstr "" +msgstr "»%s« ist bei %L mit Ausdruck verbunden und kann nicht in Variablen-Definitionskontext (%s) verwendet werden" #: fortran/expr.c:4774 #, gcc-internal-format, gfc-internal-format msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either" -msgstr "" +msgstr "Verbundener Name »%s« kann nicht in Variablen-Definitionskontext (%s) bei %L auftreten, da sein Ziel bei %L es auch nicht kann" #: fortran/f95-lang.c:222 #, gcc-internal-format @@ -37267,19 +37270,19 @@ msgstr "Eingabedatei »%s« kann nicht geöffnet werden" #: fortran/frontend-passes.c:334 fortran/trans-array.c:1024 #: fortran/trans-array.c:5756 fortran/trans-array.c:7002 #: fortran/trans-intrinsic.c:5422 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Creating array temporary at %L" -msgstr "Feld von %qT wird erzeugt" +msgstr "Zwischenergebnis-Feld bei %L wird erzeugt" #: fortran/frontend-passes.c:357 fortran/frontend-passes.c:360 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Removing call to function '%s' at %L" -msgstr "Rückgabetyp der BIND(C)-Funktion »%s« bei %L kann kein Feld sein" +msgstr "Aufruf von Funktion »%s« bei %L wird entfernt" #: fortran/gfortranspec.c:170 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "overflowed output arg list for %qs" -msgstr "übergelaufene Ausgabeargumentliste für »%s«" +msgstr "übergelaufene Ausgabeargumentliste für %qs" #: fortran/gfortranspec.c:330 #, gcc-internal-format @@ -37327,9 +37330,9 @@ msgid "Expected 'END INTERFACE ASSIGNMENT (=)' at %C" msgstr "»END INTERFACE ASSIGNMENT (=)« bei %C erwartet" #: fortran/interface.c:350 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Expecting 'END INTERFACE OPERATOR (%s)' at %C, but got %s" -msgstr "»END INTERFACE OPERATOR (%s)« bei %C erwartet" +msgstr "»END INTERFACE OPERATOR (%s)« bei %C erwartet, aber %s erhalten" #: fortran/interface.c:364 #, gcc-internal-format, gfc-internal-format @@ -37372,9 +37375,9 @@ msgid "Intrinsic operator interface at %L must be a FUNCTION" msgstr "Schnittstelle des intrinsischen Operators bei %L muss eine FUNCTION sein" #: fortran/interface.c:689 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "First argument of defined assignment at %L must be INTENT(OUT) or INTENT(INOUT)" -msgstr "Erstes Argument der definierten Zuweisung bei %L muss INTENT(IN) oder INTENT(INOUT) sein" +msgstr "Erstes Argument der definierten Zuweisung bei %L muss INTENT(OUT) oder INTENT(INOUT) sein" #: fortran/interface.c:696 #, gcc-internal-format, gfc-internal-format @@ -37409,17 +37412,17 @@ msgstr "Prozedur »%s« in %s bei %L ist weder Funktion noch Subroutine" #: fortran/interface.c:1285 #, gcc-internal-format, gfc-internal-format msgid "In %s at %L procedures must be either all SUBROUTINEs or all FUNCTIONs" -msgstr "" +msgstr "In %s bei %L müssen alle Prozeduren entweder SUBROUTINE oder FUNCTION sein" #: fortran/interface.c:1289 #, gcc-internal-format, gfc-internal-format msgid "In %s at %L procedures must be all FUNCTIONs as the generic name is also the name of a derived type" -msgstr "" +msgstr "In %s bei %L müssen alle Prozeduren auch FUNCTIONs sein, da der allgemeine Name auch der Name des abgeleiteten Typs ist" #: fortran/interface.c:1296 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Extension: Internal procedure '%s' in %s at %L" -msgstr "Erweiterung: Umwandlung von %s in %s bei %L" +msgstr "Erweiterung: Interne Prozedur »%s« in %s bei %L" #: fortran/interface.c:1353 fortran/interface.c:1357 #, gcc-internal-format, gfc-internal-format @@ -37427,9 +37430,9 @@ msgid "Ambiguous interfaces '%s' and '%s' in %s at %L" msgstr "Mehrdeutige Schnittstellen »%s« und »%s« in %s bei %L" #: fortran/interface.c:1361 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Although not referenced, '%s' has ambiguous interfaces at %L" -msgstr "Obwohl nicht referenziert, »%s« bei %L hat mehrdeutige Schnittstellen" +msgstr "Obwohl nicht referenziert, »%s« hat mehrdeutige Schnittstellen bei %L" #: fortran/interface.c:1395 #, gcc-internal-format, gfc-internal-format @@ -37437,34 +37440,34 @@ msgid "'%s' at %L is not a module procedure" msgstr "»%s« bei %L ist keine Modulprozedur" #: fortran/interface.c:1605 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Rank mismatch in argument '%s' at %L (scalar and rank-%d)" -msgstr "Unpassender Rang in Argument »%s« bei %L (%d und %d)" +msgstr "Unpassender Rang in Argument »%s« bei %L (Skalar und Rang-%d)" #: fortran/interface.c:1610 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Rank mismatch in argument '%s' at %L (rank-%d and scalar)" -msgstr "Unpassender Rang in Argument »%s« bei %L (%d und %d)" +msgstr "Unpassender Rang in Argument »%s« bei %L (Rang-%d und Skalar)" #: fortran/interface.c:1615 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Rank mismatch in argument '%s' at %L (rank-%d and rank-%d)" -msgstr "Unpassender Rang in Argument »%s« bei %L (%d und %d)" +msgstr "Unpassender Rang in Argument »%s« bei %L (Rang-%d und Rang-%d)" #: fortran/interface.c:1657 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Invalid procedure argument at %L" -msgstr "Ungültiges drittes Argument von IBITS bei %L" +msgstr "Ungültiges Argument für Prozedur bei %L" #: fortran/interface.c:1665 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Interface mismatch in dummy procedure '%s' at %L: %s" -msgstr "Schnittstelle »%s« der Prozedur »%s« bei %L muss explizit sein" +msgstr "Schnittstelle in Scheinprozedur »%s« bei %L passt nicht: %s" #: fortran/interface.c:1690 #, gcc-internal-format, gfc-internal-format msgid "Actual argument to contiguous pointer dummy '%s' at %L must be simply contigous" -msgstr "" +msgstr "Effektives Argument für fortlaufenden Schein-Zeiger »%s« bei %L muss einfach fortlaufend sein" #: fortran/interface.c:1703 #, gcc-internal-format, gfc-internal-format @@ -37472,64 +37475,64 @@ msgid "Type mismatch in argument '%s' at %L; passed %s to %s" msgstr "Unpassender Typ in Argument »%s« bei %L; übergab %s an %s" #: fortran/interface.c:1717 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Actual argument to '%s' at %L must be polymorphic" -msgstr "Effektives Argument für »%s« muss ein Zeiger bei %L sein" +msgstr "Effektives Argument für »%s« bei %L muss polymorph sein" #: fortran/interface.c:1725 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Actual argument to '%s' at %L must have the same declared type" -msgstr "Argumente »%s« und »%s« des intrinsischen »%s« bei %L müssen den selben Typ haben" +msgstr "Effektives Argument für »%s« bei %L muss den selben deklarierten Typ haben" #: fortran/interface.c:1734 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Actual argument to '%s' at %L must be a coarray" -msgstr "Effektives Argument für »%s« muss ein Zeiger bei %L sein" +msgstr "Effektives Argument für »%s« bei %L sein muss Koarray sein" #: fortran/interface.c:1753 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Corank mismatch in argument '%s' at %L (%d and %d)" -msgstr "Unpassender Rang in Argument »%s« bei %L (%d und %d)" +msgstr "Unpassender Korang in Argument »%s« bei %L (%d und %d)" #: fortran/interface.c:1770 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Actual argument to '%s' at %L must be simply contiguous" -msgstr "Effektives Argument für »%s« muss ein Zeiger bei %L sein" +msgstr "Effektives Argument für »%s« bei %L muss einfach fortlaufend sein" #: fortran/interface.c:1784 #, gcc-internal-format, gfc-internal-format msgid "Actual argument to non-INTENT(INOUT) dummy '%s' at %L, which is LOCK_TYPE or has a LOCK_TYPE component" -msgstr "" +msgstr "Effektives Argument für Nicht-INTENT(INOUT)-Platzhalter »%s« bei %L mit Typ LOCK_TYPE oder einer Komponente LOCK_TYPE" #: fortran/interface.c:1801 #, gcc-internal-format, gfc-internal-format msgid "Dummy argument '%s' has to be a pointer or assumed-shape array without CONTIGUOUS attribute - as actual argument at %L is not simply contiguous and both are ASYNCHRONOUS or VOLATILE" -msgstr "" +msgstr "Scheinargument »%s« muss Zeiger oder Feld mit angenommener Form ohne CONTIGUOUS-Attribut sein - da das effektive Argument bei %L nicht einfach fortlaufend ist und beide ASYNCHRONOUS oder VOLATILE sind" #: fortran/interface.c:1814 #, gcc-internal-format, gfc-internal-format msgid "Passing coarray at %L to allocatable, noncoarray, INTENT(OUT) dummy argument '%s'" -msgstr "" +msgstr "Koarray bei %L wird an reservierbares, Nicht-Coarray, INTENT(OUT) Scheinargument »%s« übergeben" #: fortran/interface.c:1821 #, gcc-internal-format, gfc-internal-format msgid "Passing coarray at %L to allocatable, noncoarray dummy argument '%s', which is invalid if the allocation status is modified" -msgstr "" +msgstr "Koarray bei %L wird an reservierbares, Nicht-Coarray-Scheinargument »%s« übergeben, das ungültig wird, wenn der reservierungsstatus geändert wird" #: fortran/interface.c:1883 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Polymorphic scalar passed to array dummy argument '%s' at %L" -msgstr "Ungenutztes Scheinargument %s bei %L" +msgstr "Polymorphes Skalar wird an Feld-Scheinargument »%s« bei %L übergeben" #: fortran/interface.c:1892 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Element of assumed-shaped or pointer array passed to array dummy argument '%s' at %L" -msgstr "Element eines Feldes mit vermuteter Form an Scheinargument »%s« bei %L übergeben" +msgstr "Element eines Feldes mit vermuteter Form oder Zeigerfeld wird an Feld-Scheinargument »%s« bei %L übergeben" #: fortran/interface.c:1904 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Extension: Scalar non-default-kind, non-C_CHAR-kind CHARACTER actual argument with array dummy argument '%s' at %L" -msgstr "Fortran 2003: Skalares effektives CHARACTER-Argument mit Feld-Scheinargument »%s« bei %L" +msgstr "Erweiterung: Skalares effektives nicht-standardartiges, nicht-C_CHAR CHARACTER-Argument mit Feld-Scheinargument »%s« bei %L" #: fortran/interface.c:1912 #, gcc-internal-format, gfc-internal-format @@ -37564,12 +37567,12 @@ msgstr "Unerwartete alternative Rückgabespezifikation in Unterprogrammaufruf be #: fortran/interface.c:2260 #, gcc-internal-format, gfc-internal-format msgid "Unexpected NULL() intrinsic at %L to dummy '%s'" -msgstr "" +msgstr "Unerwartetes intrinsisches NULL() bei %L für Schein-»%s«" #: fortran/interface.c:2263 #, gcc-internal-format, gfc-internal-format msgid "Fortran 2008: Null pointer at %L to non-pointer dummy '%s'" -msgstr "" +msgstr "Fortran 2008: Nullzeiger bei %L an Nicht-Zeiger-Schein-»%s«" #: fortran/interface.c:2287 #, gcc-internal-format, gfc-internal-format @@ -37584,7 +37587,7 @@ msgstr "Zeichenlänge passt nicht (%ld/%ld) zwischen effektivem Argument und Sch #: fortran/interface.c:2308 #, gcc-internal-format, gfc-internal-format msgid "Actual argument argument at %L to allocatable or pointer dummy argument '%s' must have a deferred length type parameter if and only if the dummy has one" -msgstr "" +msgstr "Effektives Argument bei %L an reservierbares oder Zeiger-Scheinargument »%s« muss Parameter mit Typ aufgeschobener Länge haben, genau dann, wenn das Scheinargument einen solchen hat" #: fortran/interface.c:2325 #, gcc-internal-format, gfc-internal-format @@ -37597,9 +37600,9 @@ msgid "Actual argument contains too few elements for dummy argument '%s' (%lu/%l msgstr "Effektives Argument enthält zuwenige Elemente für Scheinargument »%s« (%lu/%lu) bei %L" #: fortran/interface.c:2349 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Expected a procedure pointer for argument '%s' at %L" -msgstr "Prozedur für Argument »%s« bei %L erwartet" +msgstr "Prozedurzeiger für Argument »%s« bei %L erwartet" #: fortran/interface.c:2361 #, gcc-internal-format, gfc-internal-format @@ -37619,17 +37622,17 @@ msgstr "Effektives Argument für »%s« muss ein Zeiger bei %L sein" #: fortran/interface.c:2394 #, gcc-internal-format, gfc-internal-format msgid "Fortran 2008: Non-pointer actual argument at %L to pointer dummy '%s'" -msgstr "" +msgstr "Fortran 2008: Effektives Nicht-Zeiger-Argument bei %L an Scheinzeiger »%s«" #: fortran/interface.c:2404 #, gcc-internal-format, gfc-internal-format msgid "Coindexed actual argument at %L to pointer dummy '%s'" -msgstr "" +msgstr "Koindiziertes effektives Argument bei %L an Scheinzeiger »%s«" #: fortran/interface.c:2417 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Coindexed actual argument at %L to allocatable dummy '%s' requires INTENT(IN)" -msgstr "Das effektive Argument bei %L muss definierbar sein, denn das Scheinargument »%s« ist INTENT = OUT/INOUT" +msgstr "Koindiziertes effektives Argument bei %L an scheinreservierbares »%s« erfordert INTENT(IN)" #: fortran/interface.c:2431 #, gcc-internal-format, gfc-internal-format @@ -38901,9 +38904,9 @@ msgid "Allocate-object at %L with a deferred type parameter requires either a ty msgstr "" #: fortran/match.c:3791 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "Pointer object at %C shall not be conindexed" -msgstr "Externes Objekt »%s« bei %L darf keine Initialisierung haben" +msgstr "Zeigerobjekt bei %C sollte nicht koindiziert sein" #: fortran/match.c:3874 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -39734,12 +39737,12 @@ msgstr "Höchste unterstützte Bezeichnerlänge ist %d" #: fortran/options.c:898 #, gcc-internal-format, gfc-internal-format msgid "Unrecognized option to -finit-logical: %s" -msgstr "Nicht erkannte Option für -finit-logical: %s" +msgstr "Unbekannte Option für -finit-logical: %s" #: fortran/options.c:914 #, gcc-internal-format, gfc-internal-format msgid "Unrecognized option to -finit-real: %s" -msgstr "Nicht erkannte Option für -finit-real: %s" +msgstr "Unbekannte Option für -finit-real: %s" #: fortran/options.c:930 #, gcc-internal-format diff --git a/gcc/po/sv.po b/gcc/po/sv.po index 40e5390e1be..9ff68b59428 100644 --- a/gcc/po/sv.po +++ b/gcc/po/sv.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: gcc 4.7-b20120128\n" "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" "POT-Creation-Date: 2012-01-27 16:13+0000\n" -"PO-Revision-Date: 2012-02-05 11:31+0100\n" +"PO-Revision-Date: 2012-02-12 20:39+0100\n" "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" "Language: sv\n" @@ -170,9 +170,9 @@ msgid "return not followed by barrier" msgstr "retur inte följt av en barriär" #: collect2.c:1691 -#, fuzzy, c-format +#, c-format msgid "collect2 version %s\n" -msgstr "collect2 version %s" +msgstr "collect2 version %s\n" #: collect2.c:1798 #, c-format @@ -462,7 +462,7 @@ msgid "" " -print-multi-lib Display the mapping between command line options and\n" " multiple library search directories\n" msgstr "" -" -print-multi-lib Visa mappningen mellan kommandoradsflaggor och\n" +" -print-multi-lib Visa avbildningen mellan kommandoradsflaggor och\n" " multipla biblioteks sökkataloger\n" #: gcc.c:2971 @@ -572,14 +572,12 @@ msgid " -o <file> Place the output into <file>\n" msgstr " -o <fil> Placera utdata i <fil>\n" #: gcc.c:2999 -#, fuzzy msgid " -pie Create a position independent executable\n" -msgstr "Skapa ett positionsoberoende körbart program" +msgstr " -pie Skapa ett positionsoberoende körbart program\n" #: gcc.c:3000 -#, fuzzy msgid " -shared Create a shared library\n" -msgstr "Skapa ett delat bibliotek" +msgstr " -shared Skapa ett delat bibliotek\n" #: gcc.c:3001 msgid "" @@ -607,9 +605,9 @@ msgstr "" "flaggor till dessa processer måste flaggan -W<bokstav> användas.\n" #: gcc.c:5233 -#, fuzzy, c-format +#, c-format msgid "Processing spec (%s), which is '%s'\n" -msgstr "Bearbetar specifikation %c%s%c, som är \"%s\"\n" +msgstr "Bearbetar specifikationen (%s), som är \"%s\"\n" #: gcc.c:6472 #, c-format @@ -724,12 +722,12 @@ msgid "" msgstr "Använd \"-Wa,FLAGGA\" för att skicka \"FLAGGA\" till assemblern.\n" #: gcov.c:458 -#, fuzzy, c-format +#, c-format msgid "" "Usage: gcov [OPTION]... SOURCE|OBJ...\n" "\n" msgstr "" -"Användning: gcov [FLAGGA]... KÄLLFIL...\n" +"Användning: gcov [FLAGGA]... KÄLLA|OBJ...\n" "\n" #: gcov.c:459 @@ -802,9 +800,9 @@ msgid " -s, --source-prefix DIR Source prefix to elide\n" msgstr " -s, --source-prefix DIR Källprefix att utelämna\n" #: gcov.c:472 -#, fuzzy, c-format +#, c-format msgid " -r, --relative-only Only show data for relative sources\n" -msgstr " -a, --all-blocks Visa information för varje grundblock\n" +msgstr " -r, --relative-only Visa endast data för relativa källor\n" #: gcov.c:473 #, c-format @@ -857,24 +855,24 @@ msgid "\n" msgstr "\n" #: gcov.c:720 -#, fuzzy, c-format +#, c-format msgid "Creating '%s'\n" -msgstr "%s:skapar \"%s\"\n" +msgstr "Skapar \"%s\"\n" #: gcov.c:723 -#, fuzzy, c-format +#, c-format msgid "Error writing output file '%s'\n" -msgstr "%s:fel när utdatafilen \"%s\" skrevs\n" +msgstr "Fel när utdatafilen \"%s\" skrevs\n" #: gcov.c:728 -#, fuzzy, c-format +#, c-format msgid "Could not open output file '%s'\n" -msgstr "%s:kunde inte öppna utdatafilen \"%s\"\n" +msgstr "Kunde inte öppna utdatafilen \"%s\"\n" #: gcov.c:734 -#, fuzzy, c-format +#, c-format msgid "Removing '%s'\n" -msgstr "[Lämnar %s]\n" +msgstr "Tar bort \"%s\"\n" #: gcov.c:976 #, c-format @@ -1047,9 +1045,9 @@ msgid "unconditional %2d never executed\n" msgstr "ovillkorligt hopp %2d aldrig utfört\n" #: gcov.c:2262 -#, fuzzy, c-format +#, c-format msgid "Cannot open source file %s\n" -msgstr "%s:kan inte öppna källkodsfil\n" +msgstr "Kan inte öppna källkodsfilen %s\n" #: gcse.c:2626 msgid "PRE disabled" @@ -1519,7 +1517,6 @@ msgstr "funktionen kan inte inline:as" #. Function is not overwritable. #: cif-code.def:52 -#, fuzzy msgid "function body can be overwritten at link time" msgstr "funktionskroppen kan inte skrivas över vid länkningstillfället" @@ -1587,9 +1584,8 @@ msgstr "personaliteten stämmer inte för undantagshanteringen" #. We can't inline if the callee can throw non-call exceptions but the #. caller cannot. #: cif-code.def:99 -#, fuzzy msgid "non-call exception handling mismatch" -msgstr "Aktivera undantagshantering" +msgstr "undantagshantering vid annat än anrop stämmer inte överens" #. We can't inline because of mismatched target specific options. #: cif-code.def:102 @@ -1681,7 +1677,6 @@ msgid "The maximum number of nested indirect inlining performed by early inliner msgstr "Det maximala antalet nästade indirekta inline:ingar som utförs av den tidiga inline:aren" #: params.def:114 -#, fuzzy msgid "Probability that COMDAT function will be shared with different compilation unit" msgstr "Sannolikheten att COMDAT-funktionen kommer att delas med en annan kompileringsenhet" @@ -1710,9 +1705,8 @@ msgid "The maximum length of scheduling's pending operations list" msgstr "Den maximala längden på schemaläggarens lista över väntande operationer" #: params.def:172 -#, fuzzy msgid "The maximum number of backtrack attempts the scheduler should make when modulo scheduling a loop" -msgstr "Det maximala antalet instruktioner för att överväga att rulla ut i en slinga" +msgstr "Det maximala antalet försök att gå tillbaka schemaläggaren skall göra vid moduloschemaläggning av en slinga" #: params.def:177 msgid "The size of function body to be considered large" @@ -2042,11 +2036,11 @@ msgstr "Övre gränsen för att dela heltalskonstanter" #: params.def:663 msgid "Minimum number of virtual mappings to consider switching to full virtual renames" -msgstr "Minsta antalet virtuella översättningar för att beakta övergång till fullständig virtuell omnamning" +msgstr "Minsta antalet virtuella avbildningar för att beakta övergång till fullständig virtuell omnamning" #: params.def:668 msgid "Ratio between virtual mappings and virtual symbols to do full virtual renames" -msgstr "Förhållande mellan virtuella översättningar och virtuella symboler för att göra fullständig virtuell omnamning" +msgstr "Förhållande mellan virtuella avbildningar och virtuella symboler för att göra fullständig virtuell omnamning" #: params.def:673 msgid "The lower bound for a buffer to be considered for stack smashing protection" @@ -2169,32 +2163,28 @@ msgid "Size in bytes after which thread-local aggregates should be instrumented msgstr "Storlek e byt efter vilken trådlokala aggregat skal instrumenteras med loggningsfunktioner istället för spara/återställ-par" #: params.def:890 -#, fuzzy msgid "Maximum size of a list of values associated with each parameter for interprocedural constant propagation" -msgstr "Maximal storlek för en typlista associerad med varje parameter för avvirtualisering" +msgstr "Maximal storlek för en lista på värden associerad med varje parameter för konstantpropagering mellan procedurer" #: params.def:896 msgid "Threshold ipa-cp opportunity evaluation that is still considered beneficial to clone." msgstr "Tröskelvärde för ipa-cp-tillfällesberäkning som fortfarande betraktas som fördelaktig att klona." #: params.def:904 -#, fuzzy msgid "Number of partitions the program should be split to" msgstr "Antal paritioner programmet skall delas upp i" #: params.def:909 -#, fuzzy msgid "Minimal size of a partition for LTO (in estimated instructions)" -msgstr "Storlek på minimal paritition för WHOPR (i uppskattade instruktioner)" +msgstr "Minimal storlek på en paritition för LTO (i uppskattade instruktioner)" #: params.def:916 msgid "Maximum number of namespaces to search for alternatives when name lookup fails" msgstr "Det maximala antalet namnrymder att söka i för alternativ när namnuppslagning misslyckas" #: params.def:923 -#, fuzzy msgid "Maximum number of conditional store pairs that can be sunk" -msgstr "Maximalt antal gånger som en instruktion kan schemaläggas" +msgstr "Maximalt antal villkorliga lagringspar som kan sänkas" #: params.def:931 msgid "The smallest number of different values for which it is best to use a jump-table instead of a tree of conditional branches, if 0, use the default for the machine" @@ -2209,14 +2199,12 @@ msgid "Allow new data races on stores to be introduced" msgstr "Tillåt att nya datakapplöpningar vid lagringar introduceras" #: params.def:949 -#, fuzzy msgid "Allow new data races on packed data loads to be introduced" -msgstr "Tillåt grenar att packas med andra instruktioner" +msgstr "Tillåt att nya datakapplöpningar vid laddning av packade data introduceras" #: params.def:954 -#, fuzzy msgid "Allow new data races on packed data stores to be introduced" -msgstr "Tillåt grenar att packas med andra instruktioner" +msgstr "Tillåt att nya datakapplöpningar vid lagring av packade data introduceras" #: params.def:960 msgid "Set the maximum number of instructions executed in parallel in reassociated tree. If 0, use the target dependent heuristic." @@ -2642,9 +2630,9 @@ msgid "predicated instruction in conditional sequence" msgstr "förutsade instruktion i villkorlig sekvens" #: config/arm/arm.c:17247 -#, fuzzy, c-format +#, c-format msgid "Unsupported operand for code '%c'" -msgstr "ogiltig operand för kod \"%c\"" +msgstr "Ej stödd operand för kod \"%c\"" #: config/arm/arm.c:17295 #, c-format @@ -2689,19 +2677,16 @@ msgid "address operand requires constraint for X, Y, or Z register" msgstr "adressoperander kräver begränsning för X-, Y- eller Z-register" #: config/avr/avr.c:1851 -#, fuzzy msgid "operands to %T/%t must be reg + const_int:" -msgstr "utdataoperand %d måste använda %<&%>-begränsning" +msgstr "operander till %T/%t måste vara reg + const_int:" #: config/avr/avr.c:1883 config/avr/avr.c:1938 -#, fuzzy msgid "bad address, not an I/O address:" -msgstr "felaktig adress, inte (reg+avst):" +msgstr "felaktig adress, inte en I/O-adress:" #: config/avr/avr.c:1892 -#, fuzzy msgid "bad address, not a constant:" -msgstr "felaktig adress, inte en konstant)" +msgstr "felaktig adress, inte en konstant:" #: config/avr/avr.c:1910 msgid "bad address, not (reg+disp):" @@ -3054,9 +3039,8 @@ msgid "Use native (MS) bitfield layout" msgstr "Använd inbyggd (MS) bitfältslayout" #: config/i386/i386-interix.h:79 -#, fuzzy msgid "Use gcc default bitfield layout" -msgstr "Använd inbyggd (MS) bitfältslayout" +msgstr "Använd gcc:s standardbitfältslayout" #. If the environment variable DJDIR is not defined, then DJGPP is not installed correctly and GCC will quickly become confused with the default prefix settings. Report the problem now so the user doesn't receive deceptive "file not found" error messages later. #. DJDIR is automatically defined by the DJGPP environment config file pointed to by the environment variable DJGPP. Examine DJGPP to try and figure out what's wrong. @@ -3551,14 +3535,14 @@ msgid "invalid %%B operand" msgstr "ogiltig %%B-operand" #: config/sparc/sparc.c:8232 -#, fuzzy, c-format +#, c-format msgid "invalid %%C operand" -msgstr "ogiltig %%P-operand" +msgstr "ogiltig %%C-operand" #: config/sparc/sparc.c:8249 -#, fuzzy, c-format +#, c-format msgid "invalid %%D operand" -msgstr "ogiltig %%P-operand" +msgstr "ogiltig %%D-operand" #: config/sparc/sparc.c:8265 #, c-format @@ -3737,9 +3721,8 @@ msgid "{anonymous}" msgstr "{anonym}" #: cp/error.c:1128 -#, fuzzy msgid "<template arguments error>" -msgstr "<mallparameterfel>" +msgstr "<mallargumentfel>" #: cp/error.c:1149 msgid "<enumerator>" @@ -3812,14 +3795,13 @@ msgid "In lambda function" msgstr "I lambdafunktion" #: cp/error.c:3003 -#, fuzzy, c-format +#, c-format msgid "%s: In substitution of %qS:\n" -msgstr "%s: I instansiering av %qs:\n" +msgstr "%s: Vid substituering av %qS:\n" #: cp/error.c:3004 -#, fuzzy msgid "%s: In instantiation of %q#D:\n" -msgstr "%s: I instansiering av %qs:\n" +msgstr "%s: Vid instansiering av %q#D:\n" #: cp/error.c:3027 #, c-format @@ -3842,24 +3824,20 @@ msgid "required by substitution of %qS\n" msgstr "krävs av substitution av %qS\n" #: cp/error.c:3044 -#, fuzzy msgid "recursively required from %q#D\n" -msgstr "%s:%d: rekursivt instansierad från %qs\n" +msgstr "rekursivt begärd från %q#D\n" #: cp/error.c:3045 -#, fuzzy msgid "required from %q#D\n" -msgstr "angivna till %q+D" +msgstr "begärs från %q#D\n" #: cp/error.c:3052 -#, fuzzy msgid "recursively required from here" -msgstr "%s:%d: rekursivt instansierad härifrån" +msgstr "rekursivt begärd härifrån" #: cp/error.c:3053 -#, fuzzy msgid "required from here" -msgstr "anropad härifrån" +msgstr "begärd härifrån" #: cp/error.c:3095 #, c-format @@ -4408,7 +4386,7 @@ msgstr "Aktuellt stränglängd är kortaren än den deklarerade för attrappargument #: fortran/trans-expr.c:5960 #, c-format msgid "Target of rank remapping is too small (%ld < %ld)" -msgstr "Målet för ordningsommappning är för litet (%ld < %ld)" +msgstr "Målet för återavbildning av ordning är för litet (%ld < %ld)" #: fortran/trans-intrinsic.c:895 #, c-format @@ -4416,9 +4394,9 @@ msgid "Unequal character lengths (%ld/%ld) in %s" msgstr "Olika teckenlängder (%ld/%ld) i %s" #: fortran/trans-intrinsic.c:6054 -#, fuzzy, c-format +#, c-format msgid "Argument NCOPIES of REPEAT intrinsic is negative (its value is %ld)" -msgstr "Argument NCOPIES till inbyggd REPEAT är negativt (dess värde är %lld)" +msgstr "Argument NCOPIES till inbyggd REPEAT är negativt (dess värde är %ld)" #: fortran/trans-intrinsic.c:6086 msgid "Argument NCOPIES of REPEAT intrinsic is too large" @@ -4484,9 +4462,8 @@ msgid "lseek failed while reading export data" msgstr "lseek missslyckades när exportdata lästes" #: go/go-backend.c:177 -#, fuzzy msgid "memory allocation failed while reading export data" -msgstr "Minnesallokering misslyckades" +msgstr "minnesallokering misslyckades när exportdata lästes" #: go/go-backend.c:185 msgid "read failed while reading export data" @@ -4645,9 +4622,8 @@ msgid "%s: Failed to close output file %s\n" msgstr "%s: Misslyckades med att stänga utfil %s\n" #: gcc.c:654 -#, fuzzy msgid "-fuse-linker-plugin is not supported in this configuration" -msgstr "ifunc stödjs inte i denna konfiguration" +msgstr "-fuse-linker-plugin stödjs inte i denna konfiguration" #: gcc.c:777 ada/gcc-interface/lang-specs.h:33 java/jvspec.c:80 msgid "-pg and -fomit-frame-pointer are incompatible" @@ -4723,9 +4699,8 @@ msgid "-c or -S required for Ada" msgstr "-c eller -S krävs för Ada" #: ada/gcc-interface/lang-specs.h:52 -#, fuzzy msgid "-c required for gnat2why" -msgstr "-c eller -S krävs för Ada" +msgstr "-c krävs för gnat2why" #: java/lang-specs.h:33 msgid "-fjni and -femit-class-files are incompatible" @@ -4748,9 +4723,8 @@ msgid "does not support multilib" msgstr "stödjer inte multilib" #: config/arm/arm.h:157 -#, fuzzy msgid "-mfloat-abi=soft and -mfloat-abi=hard may not be used together" -msgstr "-msoft-float och -mhard_float får inte användas tillsammans" +msgstr "-mfloat-abi=soft och -mfloat_abi=hard får inte användas tillsammans" #: config/arm/arm.h:159 msgid "-mbig-endian and -mlittle-endian may not be used together" @@ -4896,7 +4870,7 @@ msgstr "Leta alltid efter klassarkiv ej genererade av gcj" #: java/lang.opt:227 msgid "Assume the runtime uses a hash table to map an object to its synchronization structure" -msgstr "Anta att en hash-tabell används vid körning för att översätta ett objekt till dess synkroniseringsstruktur" +msgstr "Anta att en hash-tabell används vid körning för att avbilda ett objekt till dess synkroniseringsstruktur" #: java/lang.opt:231 msgid "Generate instances of Class at runtime" @@ -4947,18 +4921,16 @@ msgid "Set the target VM version" msgstr "Ange typen av mål-VM-version" #: ada/gcc-interface/lang.opt:51 -#, fuzzy msgid "-I <dir>.\tAdd <dir> to the end of the main source path" -msgstr "-I <kat>\tLägg till <kat> till slutet av huvudsökvägen" +msgstr "-I <kat>.\tLägg till <kat> till slutet av huvudkällkodssökvägen" #: ada/gcc-interface/lang.opt:55 c-family/c.opt:272 msgid "Enable most warning messages" msgstr "Aktivera de flesta varningsmeddelanden" #: ada/gcc-interface/lang.opt:59 -#, fuzzy msgid "Synonym of -gnatk8" -msgstr "Synonym för -Wcomment" +msgstr "Synonym för -gnatk8" #: ada/gcc-interface/lang.opt:63 msgid "Do not look for source files in standard path" @@ -4969,9 +4941,8 @@ msgid "Do not look for object files in standard path" msgstr "Titta inte efter objektfiler i standardsökvägen" #: ada/gcc-interface/lang.opt:71 -#, fuzzy msgid "Select the runtime" -msgstr "Välj kodmodell" +msgstr "Välj körtidssystem" #: ada/gcc-interface/lang.opt:75 msgid "Catch typos" @@ -5014,9 +4985,8 @@ msgid "Warn about most implicit conversions" msgstr "Varna för de flesta implicita konvertingar" #: fortran/lang.opt:227 -#, fuzzy msgid "Warn about function call elimination" -msgstr "Varna för implicita funktionsdeklarationer" +msgstr "Varna för eliminering av funktionsanrop" #: fortran/lang.opt:231 msgid "Warn about calls with implicit interface" @@ -5204,9 +5174,8 @@ msgid "-ffree-line-length-<n>\tUse n as character line width in free mode" msgstr "-ffree-line-length-<n>\tAnvänd radlängd med n tecken i fri form" #: fortran/lang.opt:431 -#, fuzzy msgid "Enable front end optimization" -msgstr "Aktivera länkningsoptimeringar" +msgstr "Aktivera framändesoptimeringar" #: fortran/lang.opt:435 msgid "Specify that no implicit typing is allowed, unless overridden by explicit IMPLICIT statements" @@ -5349,9 +5318,8 @@ msgid "Conform to the ISO Fortran 2008 standard" msgstr "Följ standarden ISO Fortran 2008" #: fortran/lang.opt:623 -#, fuzzy msgid "Conform to the ISO Fortran 2008 standard including TS 29113" -msgstr "Följ standarden ISO Fortran 2008" +msgstr "Följ standarden ISO Fortran 2008 inklusive TS 29113" #: fortran/lang.opt:627 msgid "Conform to the ISO Fortran 95 standard" @@ -5674,9 +5642,8 @@ msgid "Allow gcc to generate LIW instructions" msgstr "Tillåt gcc att generera LIW-instruktioner" #: config/mn10300/mn10300.opt:67 -#, fuzzy msgid "Allow gcc to generate the SETLB and Lcc instructions" -msgstr "Tillåt gcc att generera LIW-instruktioner" +msgstr "Tillåt gcc att generera instruktionerna SETLB och Lcc" #: config/s390/tpf.opt:23 msgid "Enable TPF-OS tracing code" @@ -5958,9 +5925,8 @@ msgid "Do not use hardware FP" msgstr "Använd inte hårdvaru-fp" #: config/sparc/sparc.opt:42 -#, fuzzy msgid "Use flat register window model" -msgstr "Använd alternativa registernamn" +msgstr "Använd platt registerfönstermodell" #: config/sparc/sparc.opt:46 msgid "Assume possible double misalignment" @@ -5983,29 +5949,24 @@ msgid "Compile for V8+ ABI" msgstr "Kompilera för V8+-ABI" #: config/sparc/sparc.opt:66 -#, fuzzy msgid "Use UltraSPARC Visual Instruction Set version 1.0 extensions" -msgstr "Utnyttja UltraSPARC-utökningarna Visual Instruction Set" +msgstr "Utnyttja UltraSPARC-utökningarna Visual Instruction Set version 1.0" #: config/sparc/sparc.opt:70 -#, fuzzy msgid "Use UltraSPARC Visual Instruction Set version 2.0 extensions" -msgstr "Utnyttja UltraSPARC-utökningarna Visual Instruction Set" +msgstr "Utnyttja UltraSPARC-utökningarna Visual Instruction Set version 2.0" #: config/sparc/sparc.opt:74 -#, fuzzy msgid "Use UltraSPARC Visual Instruction Set version 3.0 extensions" -msgstr "Utnyttja UltraSPARC-utökningarna Visual Instruction Set" +msgstr "Utnyttja UltraSPARC-utökningarna Visual Instruction Set version 3.0" #: config/sparc/sparc.opt:78 -#, fuzzy msgid "Use UltraSPARC Fused Multiply-Add extensions" -msgstr "Utnyttja UltraSPARC-utökningarna Visual Instruction Set" +msgstr "Utnyttja UltraSPARC-utökningen sammansmält multiplicera-addera" #: config/sparc/sparc.opt:82 -#, fuzzy msgid "Use UltraSPARC Population-Count instruction" -msgstr "Använd flyttalsinstruktioner i hårdvara" +msgstr "Utnyttja UltraSparc:s instruktion populeringsantals" #: config/sparc/sparc.opt:86 msgid "Pointers are 64-bit" @@ -6044,9 +6005,8 @@ msgid "Use given SPARC-V9 code model" msgstr "Använd angiven SPARC-V9-kodmodell" #: config/sparc/sparc.opt:189 -#, fuzzy msgid "Enable debug output" -msgstr "-mdebug=\tAktivera felsökningsutdata" +msgstr "Aktivera felsökningsutdata" #: config/sparc/sparc.opt:193 msgid "Enable strict 32-bit psABI struct return checking." @@ -6395,9 +6355,8 @@ msgid "Generate floating point mathematics using given instruction set" msgstr "Generera flyttalsmatematik med den angivna instruktionsuppsättningen" #: config/i386/i386.opt:183 -#, fuzzy msgid "Valid arguments to -mfpmath=:" -msgstr "giltiga argument till %qs är: %s" +msgstr "Giltiga argument till -mfpmath=:" #: config/i386/i386.opt:216 msgid "Inline all known string operations" @@ -6416,19 +6375,16 @@ msgid "Omit the frame pointer in leaf functions" msgstr "Utelämna rampekaren i lövfunktioner" #: config/i386/i386.opt:248 -#, fuzzy msgid "Set 80387 floating-point precision to 32-bit" -msgstr "Ange flyttalsprecision för 80387 (-mpc32, -mpc64, -mpc80)" +msgstr "Ange flyttalsprecision för 80387 till 32-bits" #: config/i386/i386.opt:252 -#, fuzzy msgid "Set 80387 floating-point precision to 64-bit" -msgstr "Ange flyttalsprecision för 80387 (-mpc32, -mpc64, -mpc80)" +msgstr "Ange flyttalsprecision för 80387 till 64-bits" #: config/i386/i386.opt:256 -#, fuzzy msgid "Set 80387 floating-point precision to 80-bit" -msgstr "Ange flyttalsprecision för 80387 (-mpc32, -mpc64, -mpc80)" +msgstr "Ange flyttalsprecision för 80387 till 80-bits" #: config/i386/i386.opt:260 msgid "Attempt to keep stack aligned to this power of 2" @@ -6471,9 +6427,8 @@ msgid "Chose strategy to generate stringop using" msgstr "Välj strategi för att generera stringop med" #: config/i386/i386.opt:304 -#, fuzzy msgid "Valid arguments to -mstringop-strategy=:" -msgstr "felaktigt värde (%s) till %sstringop-strategy=%s %s" +msgstr "Giltiga argument till -mstringop-strategy=:" #: config/i386/i386.opt:329 msgid "Use given thread-local storage dialect" @@ -6501,9 +6456,8 @@ msgid "Vector library ABI to use" msgstr "Vektorbiblioteks-ABI att använda" #: config/i386/i386.opt:369 -#, fuzzy msgid "Known vectorization library ABIs (for use with the -mveclibabi= option):" -msgstr "okänd ABI-typ (%s) till vektoriseringsbibliotek för flaggan -mveclibabi=" +msgstr "Kända ABI:er till vektoriseringsbibliotek (att användas med flaggan -mveclibabi=):" #: config/i386/i386.opt:379 msgid "Return 8-byte vectors in memory" @@ -6530,9 +6484,8 @@ msgstr "Generera vzeroupper-instruktion före en övergång av kontrollflödet ut ur # Det avbrutna meddelandet är felrapporterat: # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47103 #: config/i386/i386.opt:400 -#, fuzzy msgid "Do dispatch scheduling if processor is bdver1 or bdver2 and Haifa scheduling" -msgstr "Gör sändningsschemaläggning om processorn är bdver1 och Haifa-schemaläggning" +msgstr "Gör sändningsschemaläggning om processorn är bdver1 eller bdver2 och Haifa-schemaläggning" #: config/i386/i386.opt:405 msgid "Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer." @@ -6547,9 +6500,8 @@ msgid "Generate 64bit x86-64 code" msgstr "Generera 64-bitars x86-64-kod" #: config/i386/i386.opt:419 -#, fuzzy msgid "Generate 32bit x86-64 code" -msgstr "Generera 64-bitars x86-64-kod" +msgstr "Generera 32-bitars x86-64-kod" #: config/i386/i386.opt:423 msgid "Support MMX built-in functions" @@ -6600,9 +6552,8 @@ msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in func msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2- och AVX-funktioner och -kodgenerering" #: config/i386/i386.opt:475 -#, fuzzy msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation" -msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX- och FMA-funktioner och -kodgenerering" +msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX- och AVX2-funktioner och -kodgenerering" #: config/i386/i386.opt:479 msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation" @@ -6637,14 +6588,12 @@ msgid "Support BMI built-in functions and code generation" msgstr "Stöd inbyggda BMI-funktioner och -kodgenerering " #: config/i386/i386.opt:511 -#, fuzzy msgid "Support BMI2 built-in functions and code generation" -msgstr "Stöd inbyggda BMI-funktioner och -kodgenerering " +msgstr "Stöd inbyggda BMI2-funktioner och -kodgenerering " #: config/i386/i386.opt:515 -#, fuzzy msgid "Support LZCNT built-in function and code generation" -msgstr "Stöd inbyggda TBM-funktioner och -kodgenerering " +msgstr "Stöd inbyggda LZCNT-funktioner och -kodgenerering " #: config/i386/i386.opt:519 msgid "Support TBM built-in functions and code generation" @@ -6923,14 +6872,12 @@ msgid "Generate VRSAVE instructions when generating AltiVec code" msgstr "Generera VRSAVE-instruktioner när AltiVec-kod genereras" #: config/rs6000/rs6000.opt:326 -#, fuzzy msgid "Deprecated option. Use -mno-vrsave instead" -msgstr "-mvrsave=yes/no\tUndanbedd flagga. Använd -mvrsave/-mno-vrsave istället" +msgstr "Undanbedd flagga. Använd -mno-vrsave istället" #: config/rs6000/rs6000.opt:330 -#, fuzzy msgid "Deprecated option. Use -mvrsave instead" -msgstr "Undanbedes. Använd -Os istället" +msgstr "Undanbedd flagga. Använd -mvrsave istället" #: config/rs6000/rs6000.opt:334 msgid "Specify how many bytes should be moved inline before calling out to memcpy/memmove" @@ -6941,14 +6888,12 @@ msgid "Generate isel instructions" msgstr "Generera isel-instruktioner" #: config/rs6000/rs6000.opt:342 -#, fuzzy msgid "Deprecated option. Use -mno-isel instead" -msgstr "-misel=yes/no\tUndanbedd flagga. Använd -misel/-mno-isel istället" +msgstr "Undanbedd flagga. Använd -mno-isel istället" #: config/rs6000/rs6000.opt:346 -#, fuzzy msgid "Deprecated option. Use -misel instead" -msgstr "Undanbedes. Använd -Os istället" +msgstr "Undanbedd flagga. Använd -misel istället" #: config/rs6000/rs6000.opt:350 msgid "Generate SPE SIMD instructions on E500" @@ -6959,38 +6904,32 @@ msgid "Generate PPC750CL paired-single instructions" msgstr "Generera PPC750CL:s par-singel-instruktioner" #: config/rs6000/rs6000.opt:358 -#, fuzzy msgid "Deprecated option. Use -mno-spe instead" -msgstr "-mspe=yes/no\tUndanbedd flagga. Använd -mspe/-mno-spe istället" +msgstr "Undanbedd flagga. Använd -mno-spe istället" #: config/rs6000/rs6000.opt:362 -#, fuzzy msgid "Deprecated option. Use -mspe instead" -msgstr "Undanbedes. Använd -Os istället" +msgstr "Undanbedd flagga. Använd -mspe istället" #: config/rs6000/rs6000.opt:366 msgid "-mdebug=\tEnable debug output" msgstr "-mdebug=\tAktivera felsökningsutdata" #: config/rs6000/rs6000.opt:370 -#, fuzzy msgid "Use the AltiVec ABI extensions" -msgstr "Använd Cray-pekarutökningen" +msgstr "Använd ABI-utökningarna AltiVec" #: config/rs6000/rs6000.opt:374 -#, fuzzy msgid "Do not use the AltiVec ABI extensions" -msgstr "Använd inte bitfältsinstruktionerna" +msgstr "Använd inte ABI-utökningarna AltiVec" #: config/rs6000/rs6000.opt:378 -#, fuzzy msgid "Use the SPE ABI extensions" -msgstr "Använd Cray-pekarutökningen" +msgstr "Använd ABI-utökningarna SPE" #: config/rs6000/rs6000.opt:382 -#, fuzzy msgid "Do not use the SPE ABI extensions" -msgstr "Använd inte bitfältsinstruktionerna" +msgstr "Använd inte ABI-utökningarna SPE" #: config/rs6000/rs6000.opt:389 msgid "using darwin64 ABI" @@ -7041,9 +6980,8 @@ msgid "-mfloat-gprs=\tSelect GPR floating point method" msgstr "-mfloat-gprs=\tVälj GPR-flyttalsmetod" #: config/rs6000/rs6000.opt:446 -#, fuzzy msgid "Valid arguments to -mfloat-gprs=:" -msgstr "giltiga argument till %qs är: %s" +msgstr "Giltiga argument till -mfloat-gprs=:" #: config/rs6000/rs6000.opt:462 msgid "-mlong-double-<n>\tSpecify size of long double (64 or 128 bits)" @@ -7062,9 +7000,8 @@ msgid "Specify alignment of structure fields default/natural" msgstr "Ange justering av postfält till default/natural" #: config/rs6000/rs6000.opt:478 -#, fuzzy msgid "Valid arguments to -malign-:" -msgstr "giltiga argument till %qs är: %s" +msgstr "Giltiga argument till -malign-:" #: config/rs6000/rs6000.opt:488 msgid "Specify scheduling priority for dispatch slot restricted insns" @@ -7337,14 +7274,12 @@ msgid "Use simulator runtime" msgstr "Använd simulatorkörtider" #: config/c6x/c6x.opt:46 -#, fuzzy msgid "Valid arguments for the -msdata= option" -msgstr "okänt argument \"%s\" till flaggan --mcpu=" +msgstr "Giltiga argument till flaggan -msdata=" #: config/c6x/c6x.opt:59 -#, fuzzy msgid "Compile for the DSBT shared library ABI" -msgstr "Skapa ett delat bibliotek" +msgstr "Kompilara ABI:et DSBT för delade bibliotek" #: config/c6x/c6x.opt:63 config/bfin/bfin.opt:82 msgid "Avoid generating pc-relative calls; use indirection" @@ -7671,9 +7606,8 @@ msgid "Generate re-entrant, PIC code" msgstr "Generera återstartbar, PIC-kod" #: config/arm/arm.opt:90 -#, fuzzy msgid "Generate code in 32 bit ARM state." -msgstr "Generera kod för 32-bitars adressering" +msgstr "Generera kod i 32-bitars ARM-tillstånd." #: config/arm/arm.opt:94 msgid "Assume target CPU is configured as big endian" @@ -7708,9 +7642,8 @@ msgid "Specify the __fp16 floating-point format" msgstr "Ange flyttalsformatet __fp16" #: config/arm/arm.opt:141 -#, fuzzy msgid "Known __fp16 formats (for use with the -mfp16-format= option):" -msgstr "ogiltig __fp16-formatflagga: -mfp16-format=%s" +msgstr "Kända __fp16-format (att användas med flaggan -mfp16-format=):" #: config/arm/arm.opt:164 msgid "Specify the name of the target floating point hardware/format" @@ -7741,27 +7674,24 @@ msgid "Specify the minimum bit alignment of structures" msgstr "Ange den minsta justeringen i bitar för poster" #: config/arm/arm.opt:202 -#, fuzzy msgid "Generate code for Thumb state" -msgstr "Generera kod för GNU as" +msgstr "Generera kod för Thumb-tillstånd" #: config/arm/arm.opt:206 msgid "Support calls between Thumb and ARM instruction sets" msgstr "Stöd anrop mellan Thumb- och ARM-instruktionsuppsättningar" #: config/arm/arm.opt:210 -#, fuzzy msgid "Specify thread local storage scheme" -msgstr "Använd angiven trådlokal lagringsdialekt" +msgstr "Ange metod för trådlokal lagring" #: config/arm/arm.opt:214 msgid "Specify how to access the thread pointer" msgstr "Ange hur trådpekaren skall nås" #: config/arm/arm.opt:218 -#, fuzzy msgid "Valid arguments to -mtp=:" -msgstr "giltiga argument till %qs är: %s" +msgstr "Giltiga argument till -mtp=:" #: config/arm/arm.opt:231 msgid "Thumb: Generate (non-leaf) stack frames even if not needed" @@ -7772,18 +7702,16 @@ msgid "Thumb: Generate (leaf) stack frames even if not needed" msgstr "Thumb: Generera (löv)stackramar även om de inte behövs" #: config/arm/arm.opt:248 -#, fuzzy msgid "Assume big endian bytes, little endian words. This option is deprecated." -msgstr "Antag att byte har rak byteordning, ord har omvänd byteordning" +msgstr "Antag att byte har rak byteordning, ord har omvänd byteordning. Denna flagga bör undvikas." #: config/arm/arm.opt:252 msgid "Use Neon quad-word (rather than double-word) registers for vectorization" -msgstr "Använd Neons quad-ord- (snarare än dubbelord-)register för vektoriseringar" +msgstr "Använd Neons quad-ords- (snarare än dubbelords-)register för vektoriseringar" #: config/arm/arm.opt:256 -#, fuzzy msgid "Use Neon double-word (rather than quad-word) registers for vectorization" -msgstr "Använd Neons quad-ord- (snarare än dubbelord-)register för vektoriseringar" +msgstr "Använd Neons dubbelords- (snarare än quad-ords-)register för vektoriseringar" #: config/arm/arm.opt:260 msgid "Only generate absolute relocations on word sized values." @@ -8083,9 +8011,8 @@ msgid "-mcode-readable=SETTING\tSpecify when instructions are allowed to access msgstr "-code-readable=INSTÄLLNING\tAnge när instruktioner tillåts komma åt kod" #: config/mips/mips.opt:87 -#, fuzzy msgid "Valid arguments to -mcode-readable=:" -msgstr "ogiltigt argument %qs till -fdebug-prefix-map" +msgstr "Giltiga argument till -mcode-readable=:" #: config/mips/mips.opt:100 msgid "Use branch-and-break sequences to check for integer divide by zero" @@ -8124,9 +8051,8 @@ msgid "Use -G for data that is not defined by the current object" msgstr "Använd -G för data som inte är definierat av det aktuella objektet" #: config/mips/mips.opt:150 -#, fuzzy msgid "Work around certain 24K errata" -msgstr "Gå runt vissa fel i R4000" +msgstr "Gå runt vissa fel i 24K" #: config/mips/mips.opt:154 msgid "Work around certain R4000 errata" @@ -8273,9 +8199,8 @@ msgid "-mr10k-cache-barrier=SETTING\tSpecify when r10k cache barriers should be msgstr "-mr10k-cache-barrier=INSTÄLLNING\tAnge när r10k-cache-barriärer skall skjutas in" #: config/mips/mips.opt:298 -#, fuzzy msgid "Valid arguments to -mr10k-cache-barrier=:" -msgstr "giltiga argument till %qs är: %s" +msgstr "Giltiga argument till -mr10k-cache-barrier=:" #: config/mips/mips.opt:311 msgid "Try to allow the linker to turn PIC calls into direct calls" @@ -8708,24 +8633,20 @@ msgid "preferentially allocate registers that allow short instruction generation msgstr "allokera företrädesvis register som tillåter generering av korta instruktioner" #: config/epiphany/epiphany.opt:32 -#, fuzzy msgid "Set branch cost" -msgstr "Lätta på grenar" +msgstr "Sätt grenkostnad" #: config/epiphany/epiphany.opt:36 -#, fuzzy msgid "enable conditional move instruction usage." -msgstr "Använd alla valbara instruktioner" +msgstr "aktivera användning av villkorliga flyttinstruktioner." #: config/epiphany/epiphany.opt:40 -#, fuzzy msgid "set number of nops to emit before each insn pattern" -msgstr "Antalet instruktioner som körs före förhandshämtning (prefetch) är klar" +msgstr "sätt antalet nop:ar att mata ut före varje instruktionsmönster" #: config/epiphany/epiphany.opt:52 -#, fuzzy msgid "Use software floating point comparisons" -msgstr "Använd mjukvaruflyttal" +msgstr "Använd flyttalsjämförelser i programvara" #: config/epiphany/epiphany.opt:56 msgid "Enable split of 32 bit immediate loads into low / high part" @@ -8748,23 +8669,20 @@ msgid "Assume round to nearest is selected for purposes of scheduling." msgstr "Anta avrundning till närmaste är valt i schemaläggningssyfte." #: config/epiphany/epiphany.opt:76 -#, fuzzy msgid "Generate call insns as indirect calls" -msgstr "Generera anropsinstruktioner som indirekta anrop, om nödvändigt" +msgstr "Generera anropsinstruktioner som indirekta anrop" #: config/epiphany/epiphany.opt:80 -#, fuzzy msgid "Generate call insns as direct calls" -msgstr "Generera anropsinstruktioner som indirekta anrop, om nödvändigt" +msgstr "Generera anropsinstruktioner som indirekta anrop" #: config/epiphany/epiphany.opt:84 msgid "Assume labels and symbols can be addressed using 16 bit absolute addresses." msgstr "Anta att etiketter och symboler kan adresseras med 16-bitars absoluta adresser." #: config/epiphany/epiphany.opt:108 -#, fuzzy msgid "Vectorize for double-word operations." -msgstr "Använd starkare justering för poster för dubbelordkopieringar" +msgstr "Vektorisera för dubbelordsoperationer." #: config/epiphany/epiphany.opt:124 msgid "Split unaligned 8 byte vector moves before post-modify address generation." @@ -9131,18 +9049,18 @@ msgid "Use pattern compare instructions" msgstr "Använd mönsterjämförelseinstruktioner" #: config/microblaze/microblaze.opt:75 -#, fuzzy, c-format +#, c-format msgid "%qs is deprecated; use -fstack-check" -msgstr "-mxl_stack_check undanbedes, använd -fstack-check" +msgstr "%qs bör undvikas, använd -fstack-check" #: config/microblaze/microblaze.opt:76 msgid "Check for stack overflow at runtime" msgstr "Kontrollera stackspill vid körtillfället" #: config/microblaze/microblaze.opt:83 -#, fuzzy, c-format +#, c-format msgid "%qs is deprecated; use -fno-zero-initialized-in-bss" -msgstr "-mno-clearbss undanbedes, använd -fno-zero-initialized-in-bss" +msgstr "%qs bör undvikas, använd -fno-zero-initialized-in-bss" #: config/microblaze/microblaze.opt:84 msgid "Clear the BSS to zero and place zero initialized in BSS" @@ -9320,14 +9238,12 @@ msgid "Warn about C constructs that are not in the common subset of C and C++" msgstr "Varna för C-konstruktioner som inte är i den gemensamma delmängden av C och C++" #: c-family/c.opt:292 -#, fuzzy msgid "Deprecated in favor of -Wc++11-compat" -msgstr "Undanbedes till förmån för -std=c99" +msgstr "Bör undvikas till förmån för -Wc++11-compat" #: c-family/c.opt:296 -#, fuzzy msgid "Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 2011" -msgstr "Varna för C++-konstruktioner vars betydelse skiljer mellan ISO C++ 1998 och ISO C++ 200x" +msgstr "Varna för C++-konstruktioner vars betydelse skiljer mellan ISO C++ 1998 och ISO C++ 2011" #: c-family/c.opt:300 msgid "Warn about casts which discard qualifiers" @@ -9370,9 +9286,8 @@ msgid "Warn when a declaration is found after a statement" msgstr "Varna när en deklaration hittas efter en sats" #: c-family/c.opt:340 -#, fuzzy msgid "Warn about deleting polymorphic objects with non-virtual destructors" -msgstr "Varna för ickevirtuella destruerare" +msgstr "Varna för radering av polymorfa objekt med ickevirtuella destruerare" #: c-family/c.opt:344 msgid "Warn if a deprecated compiler feature, class, method, or field is used" @@ -9717,9 +9632,8 @@ msgid "Warn when a pointer differs in signedness in an assignment" msgstr "Varna när en pekare skiljer i teckenhet i en tilldelning" #: c-family/c.opt:698 -#, fuzzy msgid "Warn when a literal '0' is used as null pointer" -msgstr "Varna när en etikett är oanvänd" +msgstr "Varna när en ordagrann \"0\" används som en nollpekare" #: c-family/c.opt:702 msgid "A synonym for -std=c89 (for C) or -std=c++98 (for C++)" @@ -9740,9 +9654,8 @@ msgid "switch %qs is no longer supported" msgstr "flaggan %qs stödjs inte längre" #: c-family/c.opt:717 -#, fuzzy msgid "Allow variadic functions without named parameter" -msgstr "variadiska funktioner måsta använda bas-AAPCS-varianten" +msgstr "Tillåt variadiska funktioner utan namngiven parameter" #: c-family/c.opt:721 c-family/c.opt:839 c-family/c.opt:1078 #: c-family/c.opt:1082 c-family/c.opt:1098 @@ -9783,14 +9696,12 @@ msgid "-fconstexpr-depth=<number>\tSpecify maximum constexpr recursion depth" msgstr "-fconstexpr-depth=<antal>\tAnge maximalt rekursionsdjup för konstantuttryck" #: c-family/c.opt:760 -#, fuzzy msgid "Emit debug annotations during preprocessing" -msgstr "Aktivera traditionell preprocessning" +msgstr "Mata ut felsökningsannoteringar under preprocessning" #: c-family/c.opt:764 -#, fuzzy msgid "-fdeduce-init-list\tenable deduction of std::initializer_list for a template type parameter from a brace-enclosed initializer-list" -msgstr "-fno-deduce-init-list\tavaktivera härledning av std::initializer_list för en malltypparameter från en klammeromsluten initierarlista" +msgstr "-fdeduce-init-list\taktivera härledning av std::initializer_list för en malltypparameter från en klammeromsluten initierarlista" #: c-family/c.opt:768 c-family/c.opt:955 common.opt:937 common.opt:1115 #: common.opt:1393 common.opt:1647 common.opt:1683 common.opt:1768 @@ -10036,9 +9947,8 @@ msgid "Use __cxa_get_exception_ptr in exception handling" msgstr "Använd __cxa_get_exception_ptr i undantagshantering" #: c-family/c.opt:1070 -#, fuzzy msgid "Marks all inlined functions and methods as having hidden visibility" -msgstr "Markera alla inline:ade metoder att ha dold synlighet" +msgstr "Markerar alla inline:ade funktioner och metoder att ha dold synlighet" #: c-family/c.opt:1074 msgid "Changes visibility to match Microsoft Visual Studio by default" @@ -10137,24 +10047,20 @@ msgid "Conform to the ISO 1998 C++ standard revised by the 2003 technical corrig msgstr "Följ standarden ISO 1998 C++ reviderad av 2003 års tekniska rättelser" #: c-family/c.opt:1204 -#, fuzzy msgid "Conform to the ISO 2011 C++ standard (experimental and incomplete support)" -msgstr "Följ standardutkastet ISO 201X C (experimentellt och ofullständigt stöd)" +msgstr "Följ standarden ISO 2011 C++ (experimentellt och ofullständigt stöd)" #: c-family/c.opt:1208 -#, fuzzy msgid "Deprecated in favor of -std=c++11" -msgstr "Undanbedes till förmån för -std=c99" +msgstr "Undanbedes till förmån för -std=c++11" #: c-family/c.opt:1212 c-family/c.opt:1294 -#, fuzzy msgid "Conform to the ISO 2011 C standard (experimental and incomplete support)" -msgstr "Följ standardutkastet ISO 201X C (experimentellt och ofullständigt stöd)" +msgstr "Följ standarden ISO 2011 C (experimentellt och ofullständigt stöd)" #: c-family/c.opt:1216 -#, fuzzy msgid "Deprecated in favor of -std=c11" -msgstr "Undanbedes till förmån för -std=c99" +msgstr "Undanbedes till förmån för -std=c11" #: c-family/c.opt:1220 c-family/c.opt:1224 c-family/c.opt:1278 msgid "Conform to the ISO 1990 C standard" @@ -10169,29 +10075,24 @@ msgid "Deprecated in favor of -std=c99" msgstr "Undanbedes till förmån för -std=c99" #: c-family/c.opt:1236 c-family/c.opt:1241 -#, fuzzy msgid "Conform to the ISO 1998 C++ standard revised by the 2003 technical" msgstr "Följ standarden ISO 1998 C++ reviderad av 2003 års tekniska rättelser" #: c-family/c.opt:1246 -#, fuzzy msgid "Conform to the ISO 2011 C++ standard with GNU extensions (experimental and incomplete support)" -msgstr "Följ standardutkastet ISO 201X C med GNU-utökningar (experimetellt och ofullständigt stöd)" +msgstr "Följ standarden ISO 2011 C++ med GNU-utökningar (experimetellt och ofullständigt stöd)" #: c-family/c.opt:1250 -#, fuzzy msgid "Deprecated in favor of -std=gnu++11" -msgstr "Undanbedes till förmån för -std=gnu99" +msgstr "Undanbedes till förmån för -std=gnu++11" #: c-family/c.opt:1254 -#, fuzzy msgid "Conform to the ISO 2011 C standard with GNU extensions (experimental and incomplete support)" -msgstr "Följ standardutkastet ISO 201X C med GNU-utökningar (experimetellt och ofullständigt stöd)" +msgstr "Följ standarden ISO 2011 C med GNU-utökningar (experimetellt och ofullständigt stöd)" #: c-family/c.opt:1258 -#, fuzzy msgid "Deprecated in favor of -std=gnu11" -msgstr "Undanbedes till förmån för -std=gnu99" +msgstr "Undanbedes till förmån för -std=gnu11" #: c-family/c.opt:1262 c-family/c.opt:1266 msgid "Conform to the ISO 1990 C standard with GNU extensions" @@ -10338,9 +10239,8 @@ msgid "-Wframe-larger-than=<number>\tWarn if a function's stack frame requires m msgstr "-Wframe-larger-than=<antal>\tVarna om en funktions stackram kräver mer en <antal> byte" #: common.opt:548 -#, fuzzy msgid "Warn when attempting to free a non-heap object" -msgstr "%Kförsök att frigöra ett icke-heap-objekt" +msgstr "Varna vid försök att frigöra ett icke-heap-objekt" #: common.opt:552 msgid "Warn when an inlined function cannot be inlined" @@ -10431,9 +10331,8 @@ msgid "Warn about uninitialized automatic variables" msgstr "Varna för oinitierade automatiska variabler" #: common.opt:655 -#, fuzzy msgid "Warn about maybe uninitialized automatic variables" -msgstr "Varna för oinitierade automatiska variabler" +msgstr "Varna för eventuellt oinitierade automatiska variabler" #: common.opt:663 msgid "Enable all -Wunused- warnings" @@ -10668,9 +10567,8 @@ msgid "Suppress output of addresses in debugging dumps" msgstr "Undertryck utskrift av adresser i felsökningsutskrifter" #: common.opt:1035 -#, fuzzy msgid "Dump optimization passes" -msgstr "Gör det fullständiga registerförflyttningsoptimeringspasset" +msgstr "Dumpa optimeringspass" #: common.opt:1039 msgid "Suppress output of instruction numbers, line number notes and addresses in debugging dumps" @@ -11456,9 +11354,8 @@ msgid "Enable dominator optimizations" msgstr "Aktivera dominatoroptimeringar" #: common.opt:1962 -#, fuzzy msgid "Enable tail merging on trees" -msgstr "Aktivera slinghuvdkopiering av träd" +msgstr "Aktivera svanssammanslagning av träd" #: common.opt:1966 msgid "Enable dead store elimination" @@ -11473,9 +11370,8 @@ msgid "Enable Full Redundancy Elimination (FRE) on trees" msgstr "Aktivera fullständig överflödseliminering (FRE) i träd" #: common.opt:1978 -#, fuzzy msgid "Enable string length optimizations on trees" -msgstr "Aktivera SSA-CCP-optimering av träd" +msgstr "Aktivera stränglängdsoptimering av träd" #: common.opt:1982 msgid "Enable loop distribution on trees" @@ -11673,14 +11569,12 @@ msgid "Generate debug information in default extended format" msgstr "Generera felsökningsinformation i normalt utökat format" #: common.opt:2217 -#, fuzzy msgid "Don't record gcc command line switches in DWARF DW_AT_producer." -msgstr "Notera gcc:s kommandoradsflaggor i objektfilen." +msgstr "Notera inte gcc:s kommandoradsflaggor i DWARF DW_AT_producer." #: common.opt:2221 -#, fuzzy msgid "Record gcc command line switches in DWARF DW_AT_producer." -msgstr "Notera gcc:s kommandoradsflaggor i objektfilen." +msgstr "Notera gcc:s kommandoradsflaggor i DWARF DW_AT_producer." #: common.opt:2225 msgid "Generate debug information in STABS format" @@ -11813,9 +11707,8 @@ msgid "method type does not match object type" msgstr "metodtypen stämmer inte med objekttypen" #: go/gofrontend/expressions.cc:7553 -#, fuzzy msgid "invalid use of %<...%> with builtin function" -msgstr "ogiltigt argument inbyggd funktion" +msgstr "ogiltig användning av %<...%> med inbyggd funktion" #: go/gofrontend/expressions.cc:7615 go/gofrontend/expressions.cc:7669 #: go/gofrontend/expressions.cc:7714 go/gofrontend/expressions.cc:8421 @@ -11834,32 +11727,28 @@ msgid "too many arguments" msgstr "för många argument" #: go/gofrontend/expressions.cc:7673 -#, fuzzy msgid "argument 1 must be a map" -msgstr "argumentet måste vara en konstant" +msgstr "argument 1 måste vara en avbildning" #: go/gofrontend/expressions.cc:7740 msgid "invalid type for make function" msgstr "ogiltigt typ för make-funktion" #: go/gofrontend/expressions.cc:7750 -#, fuzzy msgid "length required when allocating a slice" -msgstr "felaktig längd när en skiva görs" +msgstr "en längd behövs när en skiva allokeras" #: go/gofrontend/expressions.cc:7764 -#, fuzzy msgid "bad size for make" -msgstr "felaktig storlek när en karta görs" +msgstr "felaktig storlek för make" #: go/gofrontend/expressions.cc:7776 msgid "bad capacity when making slice" msgstr "felaktig kapacitet när en skiva görs" #: go/gofrontend/expressions.cc:7784 -#, fuzzy msgid "too many arguments to make" -msgstr "för många argument till %qE" +msgstr "för många argument till make" #: go/gofrontend/expressions.cc:8467 msgid "argument must be array or slice or channel" @@ -11867,7 +11756,7 @@ msgstr "argumentet måste vara en vektor eller skiva eller kanal" #: go/gofrontend/expressions.cc:8477 msgid "argument must be string or array or slice or map or channel" -msgstr "argumentet måste vara en sträng eller vektor eller skiva eller karta eller kanal" +msgstr "argumentet måste vara en sträng eller vektor eller skiva eller avbildning eller kanal" #: go/gofrontend/expressions.cc:8523 msgid "unsupported argument type to builtin function" @@ -11878,9 +11767,8 @@ msgid "argument must be channel" msgstr "argumentet måste vara en kanal" #: go/gofrontend/expressions.cc:8536 -#, fuzzy msgid "cannot close receive-only channel" -msgstr "ogiltig send på kanal endast för mottagning" +msgstr "kan inte stänga en kanal endast för mottagning" #: go/gofrontend/expressions.cc:8556 msgid "argument must be a field reference" @@ -11895,14 +11783,12 @@ msgid "element types must be the same" msgstr "elementtyper måste vara samma" #: go/gofrontend/expressions.cc:8596 -#, fuzzy msgid "first argument must be []byte" -msgstr "vänstra argumentet måste vara en skiva" +msgstr "första argumentet måste vara []byte" #: go/gofrontend/expressions.cc:8599 -#, fuzzy msgid "second argument must be slice or string" -msgstr "högra argumentet måste vara en skiva eller sträng" +msgstr "andra argumentet måste vara en skiva eller sträng" #: go/gofrontend/expressions.cc:8632 msgid "arguments 1 and 2 have different types" @@ -11946,7 +11832,7 @@ msgstr "skiva av oadresserbart värde" #: go/gofrontend/expressions.cc:11175 msgid "incompatible type for map index" -msgstr "inkompatibel typ för kartindex" +msgstr "inkompatibel typ för avbildningsindex" #: go/gofrontend/expressions.cc:11523 msgid "expected interface or pointer to interface" @@ -11990,16 +11876,15 @@ msgstr "ogiltig vänsterhandssida i tilldelning" #: go/gofrontend/statements.cc:1105 msgid "expected map index on right hand side" -msgstr "kartaindex förväntades på högersidan" +msgstr "avbildningsindex förväntades på högersidan" #: go/gofrontend/statements.cc:1254 msgid "expected map index on left hand side" -msgstr "kartindex på vänster hands sida förväntades" +msgstr "avbildningsindex på vänster hands sida förväntades" #: go/gofrontend/statements.cc:2632 go/gofrontend/statements.cc:2661 -#, fuzzy msgid "not enough arguments to return" -msgstr "inte tillräckligt med argument" +msgstr "inte tillräckligt med argument att returnera" #: go/gofrontend/statements.cc:2640 msgid "return with value in function with no return type" @@ -12026,49 +11911,41 @@ msgid "too many variables for range clause with channel" msgstr "för många variabler för intervallklausul med kanal" #: go/gofrontend/statements.cc:5235 -#, fuzzy msgid "range clause must have array, slice, string, map, or channel type" -msgstr "en intervallklausul måste ha vektor-, skiv-, mängdring-, kart- eller kanaltyp" +msgstr "en intervallklausul måste ha vektor-, skiv-, sträng-, avbildnings- eller kanaltyp" #: go/gofrontend/types.cc:509 -#, fuzzy msgid "invalid comparison of non-ordered type" -msgstr "ogiltig jämförelsekod i gimple-villkor" +msgstr "ogiltig jämförelse av oordnad typ" #: go/gofrontend/types.cc:525 -#, fuzzy msgid "slice can only be compared to nil" -msgstr "dubblerad klass kommer endast att kompileras en gång" +msgstr "en skiva kan endast jämföras med nil" #: go/gofrontend/types.cc:527 -#, fuzzy msgid "map can only be compared to nil" -msgstr "dubblerad klass kommer endast att kompileras en gång" +msgstr "en avbildning kan endast att jämföras med nil" #: go/gofrontend/types.cc:529 -#, fuzzy msgid "func can only be compared to nil" -msgstr "dubblerad klass kommer endast att kompileras en gång" +msgstr "en funktion kan endast jämföras med nil" #: go/gofrontend/types.cc:535 -#, fuzzy, c-format +#, c-format msgid "invalid operation (%s)" -msgstr "ogiltig operand till %%R" +msgstr "ogiltig operation (%s)" #: go/gofrontend/types.cc:558 -#, fuzzy msgid "invalid comparison of non-comparable type" -msgstr "ogiltig jämförelsekod i gimple-villkor" +msgstr "ogiltig jämförelse av ojämförbar typ" #: go/gofrontend/types.cc:576 -#, fuzzy msgid "invalid comparison of non-comparable struct" -msgstr "ogiltig jämförelsekod i gimple-villkor" +msgstr "ogiltig jämförelse av ojämförbar post" #: go/gofrontend/types.cc:587 -#, fuzzy msgid "invalid comparison of non-comparable array" -msgstr "ogiltig användning av icke-l-värde-vektor" +msgstr "ogiltig jämförelse av ojämförbar vektor" #: go/gofrontend/types.cc:699 msgid "need explicit conversion" @@ -37272,17 +37149,17 @@ msgstr "Olika ordning i pekartilldelning vid %L" #: fortran/expr.c:3552 #, gcc-internal-format, gfc-internal-format msgid "Rank remapping target is smaller than size of the pointer (%ld < %ld) at %L" -msgstr "Ordningsommappningsmålet är mindre än storleken på pekaren (%ld < %ld) vid %L" +msgstr "Målet för översättning av ordningen är mindre än storleken på pekaren (%ld < %ld) vid %L" #: fortran/expr.c:3565 #, gcc-internal-format, gfc-internal-format msgid "Rank remapping target must be rank 1 or simply contiguous at %L" -msgstr "Ordningsommappningsmålet måste ha ording 1 eller vara enkelt sammanhängande vid %L" +msgstr "Målet för översättning av målet måste ha ording 1 eller vara enkelt sammanhängande vid %L" #: fortran/expr.c:3569 #, gcc-internal-format, gfc-internal-format msgid "Fortran 2008: Rank remapping target is not rank 1 at %L" -msgstr "Fortran 2008: Målet för ordningsommappning är inte av ordning 1 vid %L" +msgstr "Fortran 2008: Målet för översättning av ordning är inte av ordning 1 vid %L" #: fortran/expr.c:3594 #, gcc-internal-format, gfc-internal-format diff --git a/gcc/predict.c b/gcc/predict.c index 92365317905..c12b45f12de 100644 --- a/gcc/predict.c +++ b/gcc/predict.c @@ -1827,7 +1827,8 @@ tree_estimate_probability_driver (void) static void predict_paths_for_bb (basic_block cur, basic_block bb, enum br_predictor pred, - enum prediction taken) + enum prediction taken, + bitmap visited) { edge e; edge_iterator ei; @@ -1848,7 +1849,7 @@ predict_paths_for_bb (basic_block cur, basic_block bb, continue; gcc_assert (bb == cur || dominated_by_p (CDI_POST_DOMINATORS, cur, bb)); - /* See if there is how many edge from e->src that is not abnormal + /* See if there is an edge from e->src that is not abnormal and does not lead to BB. */ FOR_EACH_EDGE (e2, ei2, e->src->succs) if (e2 != e @@ -1861,16 +1862,20 @@ predict_paths_for_bb (basic_block cur, basic_block bb, /* If there is non-abnormal path leaving e->src, predict edge using predictor. Otherwise we need to look for paths - leading to e->src. */ + leading to e->src. + + The second may lead to infinite loop in the case we are predicitng + regions that are only reachable by abnormal edges. We simply + prevent visiting given BB twice. */ if (found) predict_edge_def (e, pred, taken); - else - predict_paths_for_bb (e->src, e->src, pred, taken); + else if (bitmap_set_bit (visited, e->src->index)) + predict_paths_for_bb (e->src, e->src, pred, taken, visited); } for (son = first_dom_son (CDI_POST_DOMINATORS, cur); son; son = next_dom_son (CDI_POST_DOMINATORS, son)) - predict_paths_for_bb (son, bb, pred, taken); + predict_paths_for_bb (son, bb, pred, taken, visited); } /* Sets branch probabilities according to PREDiction and @@ -1880,7 +1885,9 @@ static void predict_paths_leading_to (basic_block bb, enum br_predictor pred, enum prediction taken) { - predict_paths_for_bb (bb, bb, pred, taken); + bitmap visited = BITMAP_ALLOC (NULL); + predict_paths_for_bb (bb, bb, pred, taken, visited); + BITMAP_FREE (visited); } /* Like predict_paths_leading_to but take edge instead of basic block. */ @@ -1903,7 +1910,11 @@ predict_paths_leading_to_edge (edge e, enum br_predictor pred, break; } if (!has_nonloop_edge) - predict_paths_for_bb (bb, bb, pred, taken); + { + bitmap visited = BITMAP_ALLOC (NULL); + predict_paths_for_bb (bb, bb, pred, taken, visited); + BITMAP_FREE (visited); + } else predict_edge_def (e, pred, taken); } diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index da7fe729be9..ce29fdcaf83 100644 --- a/gcc/reg-stack.c +++ b/gcc/reg-stack.c @@ -1,6 +1,6 @@ /* Register to Stack convert for GNU compiler. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2012 Free Software Foundation, Inc. This file is part of GCC. @@ -1323,14 +1323,10 @@ compare_for_stack_reg (rtx insn, stack regstack, rtx pat_src) static int subst_stack_regs_in_debug_insn (rtx *loc, void *data) { - rtx *tloc = get_true_reg (loc); stack regstack = (stack)data; int hard_regno; - if (!STACK_REG_P (*tloc)) - return 0; - - if (tloc != loc) + if (!STACK_REG_P (*loc)) return 0; hard_regno = get_hard_regnum (regstack, *loc); diff --git a/gcc/reorg.c b/gcc/reorg.c index 3fa53939d5e..dfc9747c5f7 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -2937,6 +2937,7 @@ fill_slots_from_thread (rtx insn, rtx condition, rtx thread, if (delay_list == 0 && likely && new_thread && !ANY_RETURN_P (new_thread) && NONJUMP_INSN_P (new_thread) + && !RTX_FRAME_RELATED_P (new_thread) && GET_CODE (PATTERN (new_thread)) != ASM_INPUT && asm_noperands (PATTERN (new_thread)) < 0) { diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index 095bae8a956..33a6996fe4f 100644 --- a/gcc/sched-deps.c +++ b/gcc/sched-deps.c @@ -1728,7 +1728,8 @@ add_insn_mem_dependence (struct deps_desc *deps, bool read_p, if (sched_deps_info->use_cselib) { mem = shallow_copy_rtx (mem); - XEXP (mem, 0) = cselib_subst_to_values (XEXP (mem, 0), GET_MODE (mem)); + XEXP (mem, 0) = cselib_subst_to_values_from_insn (XEXP (mem, 0), + GET_MODE (mem), insn); } link = alloc_EXPR_LIST (VOIDmode, canon_rtx (mem), *mem_list); *mem_list = link; @@ -2449,7 +2450,9 @@ sched_analyze_1 (struct deps_desc *deps, rtx x, rtx insn) t = shallow_copy_rtx (dest); cselib_lookup_from_insn (XEXP (t, 0), address_mode, 1, GET_MODE (t), insn); - XEXP (t, 0) = cselib_subst_to_values (XEXP (t, 0), GET_MODE (t)); + XEXP (t, 0) + = cselib_subst_to_values_from_insn (XEXP (t, 0), GET_MODE (t), + insn); } t = canon_rtx (t); @@ -2609,7 +2612,9 @@ sched_analyze_2 (struct deps_desc *deps, rtx x, rtx insn) t = shallow_copy_rtx (t); cselib_lookup_from_insn (XEXP (t, 0), address_mode, 1, GET_MODE (t), insn); - XEXP (t, 0) = cselib_subst_to_values (XEXP (t, 0), GET_MODE (t)); + XEXP (t, 0) + = cselib_subst_to_values_from_insn (XEXP (t, 0), GET_MODE (t), + insn); } if (!DEBUG_INSN_P (insn)) diff --git a/gcc/target.h b/gcc/target.h index 38181989104..e3307e8ead2 100644 --- a/gcc/target.h +++ b/gcc/target.h @@ -145,7 +145,8 @@ enum vect_cost_for_stmt scalar_to_vec, cond_branch_not_taken, cond_branch_taken, - vec_perm + vec_perm, + vec_promote_demote }; /* The target structure. This holds all the backend hooks. */ diff --git a/gcc/targhooks.c b/gcc/targhooks.c index 2b4fd27bdfa..8e3d74ea356 100644 --- a/gcc/targhooks.c +++ b/gcc/targhooks.c @@ -514,6 +514,7 @@ default_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost, case scalar_to_vec: case cond_branch_not_taken: case vec_perm: + case vec_promote_demote: return 1; case unaligned_load: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7ccb66b1262..05a6af0e1bc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,94 @@ +2012-02-14 Walter Lee <walt@tilera.com> + + * g++.dg/other/PR23205.C: Disable test on tile. + * g++.dg/other/pr23205-2.C: Disable test on tile. + * gcc.dg/20020312-2.c: Add a condition for __tile__. + * gcc.dg/20040813-1.c: Disable test on tile. + * gcc.dg/lower-subreg-1.c: Disable test on tilegx. + * gcc.misc-tests/linkage.exp: Handle tilegx. + +2012-02-14 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/52210 + * gcc.dg/pr52210.c: New test. + +2012-02-14 Jason Merrill <jason@redhat.com> + + PR c++/39055 + * g++.dg/overload/defarg5.C: New. + +2012-02-14 Jakub Jelinek <jakub@redhat.com> + + PR c/52181 + * c-c++-common/pr52181.c: New test. + +2012-02-13 Jakub Jelinek <jakub@redhat.com> + + PR c++/52215 + * g++.dg/ext/atomic-1.C: New test. + +2012-02-13 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> + + * gcc.c-torture/execute/pr51933.c: Modify for s390 31 bit. + +2012-02-13 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/52209 + * gcc.c-torture/execute/pr52209.c: New test. + +2012-02-12 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/50981 + * gfortran.dg/elemental_optional_args_5.f03: New test. + +2012-02-12 Iain Sandoe <iains@gcc.gnu.org> + + PR testsuite/50076 + * c-c++-common/cxxbitfields-3.c: Adjust scan assembler for nonpic + cases. + +2012-02-11 Ian Lance Taylor <iant@google.com> + + PR go/51874 + * go.test/go-test.exp (go-gc-tests): Don't run nilptr test on + SPARC Solaris. Don't run the test at all on systems where it may + not work, rather than xfailing it. + +2012-02-11 Richard Sandiford <rdsandiford@googlemail.com> + + PR rtl-optimization/52175 + * gcc.c-torture/compile/pr52175.c: New test. + +2012-02-10 Jason Merrill <jason@redhat.com> + + PR c++/51910 + * g++.dg/template/repo10.C: New. + +2012-02-11 Jakub Jelinek <jakub@redhat.com> + + PR debug/52132 + * gcc.dg/pr52132.c: New test. + +2012-02-10 Eric Botcazou <ebotcazou@adacore.com> + + * gnat.dg/specs/aggr4.ads: New test. + * gnat.dg/specs/aggr4_pkg.ads: New helper. + +2012-02-10 H.J. Lu <hongjiu.lu@intel.com> + + PR target/52146 + * gcc.target/i386/pr52146.c: New. + +2012-02-10 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/52177 + * c-c++-common/pr52177.c: New test. + +2012-02-10 Jan Hubicka <jh@suse.cz> + + PR middle-end/48600 + * g++.dg/torture/pr48600.C: New testcase. + 2012-02-09 Peter Bergner <bergner@vnet.ibm.com> PR middle-end/52140 diff --git a/gcc/testsuite/c-c++-common/cxxbitfields-3.c b/gcc/testsuite/c-c++-common/cxxbitfields-3.c index 6fc4876f0ea..fc423ea8b29 100644 --- a/gcc/testsuite/c-c++-common/cxxbitfields-3.c +++ b/gcc/testsuite/c-c++-common/cxxbitfields-3.c @@ -18,4 +18,5 @@ void setit() var.j = 5; } -/* { dg-final { scan-assembler "movl.*, var" } } */ +/* { dg-final { scan-assembler "movl.*, _?var" { target nonpic } } } */ +/* { dg-final { scan-assembler "movl.*, (_?var|\\(%)" { target { ! nonpic } } } } */ diff --git a/gcc/testsuite/c-c++-common/pr52177.c b/gcc/testsuite/c-c++-common/pr52177.c new file mode 100644 index 00000000000..165acdef29c --- /dev/null +++ b/gcc/testsuite/c-c++-common/pr52177.c @@ -0,0 +1,23 @@ +/* PR middle-end/52177 */ +/* { dg-do compile } */ +/* { dg-options "-O -fno-tree-ccp" } */ + +int *s; + +static inline int +foo () +{ + return sizeof (int); +} + +int +bar () +{ + return __atomic_always_lock_free (foo (), s); +} + +int +baz () +{ + return __atomic_is_lock_free (foo (), s); +} diff --git a/gcc/testsuite/c-c++-common/pr52181.c b/gcc/testsuite/c-c++-common/pr52181.c new file mode 100644 index 00000000000..e09bc92fc6f --- /dev/null +++ b/gcc/testsuite/c-c++-common/pr52181.c @@ -0,0 +1,13 @@ +/* PR c/52181 */ +/* { dg-do compile } */ + +extern const int v1[]; +const int __attribute__((aligned(16))) v1[] = { 1 }; +extern const int __attribute__((aligned(16))) v2[]; +const int v2[] = { 1 }; +extern const int __attribute__((aligned(16))) v3[]; +const int __attribute__((aligned(16))) v3[] = { 1 }; +const int __attribute__((aligned(16))) v4[] = { 1 }; +int test[(__alignof__ (v4) != __alignof__ (v1) /* { dg-bogus "is negative" } */ + || __alignof__ (v4) != __alignof__ (v2) + || __alignof__ (v4) != __alignof__ (v3)) ? -1 : 0]; diff --git a/gcc/testsuite/g++.dg/ext/atomic-1.C b/gcc/testsuite/g++.dg/ext/atomic-1.C new file mode 100644 index 00000000000..58069c309cc --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/atomic-1.C @@ -0,0 +1,12 @@ +// PR c++/52215 +// { dg-do compile } + +enum E { ZERO }; + +int +main () +{ + E e = ZERO; + __atomic_compare_exchange_n (&e, &e, e, true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); +} diff --git a/gcc/testsuite/g++.dg/other/PR23205.C b/gcc/testsuite/g++.dg/other/PR23205.C index 338079fbd93..a31fc1d773d 100644 --- a/gcc/testsuite/g++.dg/other/PR23205.C +++ b/gcc/testsuite/g++.dg/other/PR23205.C @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-skip-if "No stabs" { mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-vxworks } { "*" } { "" } } */ +/* { dg-skip-if "No stabs" { mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* tile*-*-* *-*-vxworks } { "*" } { "" } } */ /* { dg-options "-gstabs+ -fno-eliminate-unused-debug-types" } */ const int foobar = 4; diff --git a/gcc/testsuite/g++.dg/other/pr23205-2.C b/gcc/testsuite/g++.dg/other/pr23205-2.C index a4333b38630..fbd16dfab58 100644 --- a/gcc/testsuite/g++.dg/other/pr23205-2.C +++ b/gcc/testsuite/g++.dg/other/pr23205-2.C @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-skip-if "No stabs" { mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* } { "*" } { "" } } */ +/* { dg-skip-if "No stabs" { mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* tile*-*-* } { "*" } { "" } } */ /* { dg-options "-gstabs+ -fno-eliminate-unused-debug-types -ftoplevel-reorder" } */ const int foobar = 4; diff --git a/gcc/testsuite/g++.dg/overload/defarg5.C b/gcc/testsuite/g++.dg/overload/defarg5.C new file mode 100644 index 00000000000..06ea6bf4500 --- /dev/null +++ b/gcc/testsuite/g++.dg/overload/defarg5.C @@ -0,0 +1,7 @@ +// PR c++/39055 + +struct A +{ + int i; + A() { void foo(int=i); } // { dg-error "this" } +}; diff --git a/gcc/testsuite/g++.dg/template/repo10.C b/gcc/testsuite/g++.dg/template/repo10.C new file mode 100644 index 00000000000..c92f7a52b60 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/repo10.C @@ -0,0 +1,16 @@ +// PR c++/51910 +// { dg-options -frepo } +// { dg-require-host-local "" } +// { dg-skip-if "dkms are not final links" { vxworks_kernel } } +// { dg-final cleanup-repo-files } + +template<typename T> +struct Foo +{ + virtual ~Foo() { } +}; + +int main( int, char*[] ) +{ + Foo<int> test; +} diff --git a/gcc/testsuite/g++.dg/torture/pr48600.C b/gcc/testsuite/g++.dg/torture/pr48600.C new file mode 100644 index 00000000000..b60a0a011ec --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr48600.C @@ -0,0 +1,16 @@ +/* { dg-do compile } */ + +class mx { +public: + mx(); +}; + +int main() +{ + while (true) { + mx *bar = new mx; + mx *baz = new mx; + continue; + } + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/compile/pr52175.c b/gcc/testsuite/gcc.c-torture/compile/pr52175.c new file mode 100644 index 00000000000..e0aed77044d --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr52175.c @@ -0,0 +1,25 @@ +void bad (void); +char *foo (char *src, char **last) +{ + char *dst; + int ch; + dst = src = (src ? src : *last); + + if (*src == 0) + return 0; + + while (src[0]) + { + if (!src[1]) + { + bad (); + break; + } + *dst = *src; + dst += 1; + src += 2; + } + *last = src; + *dst = 0; + return *last; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr51933.c b/gcc/testsuite/gcc.c-torture/execute/pr51933.c index a6556c94c11..24abc9f1b83 100644 --- a/gcc/testsuite/gcc.c-torture/execute/pr51933.c +++ b/gcc/testsuite/gcc.c-torture/execute/pr51933.c @@ -6,7 +6,15 @@ static unsigned char v2[256], v3[256]; __attribute__((noclone, noinline)) void foo (void) { +#if defined(__s390__) && !defined(__zarch__) + /* S/390 31 bit cannot deal with more than one literal pool + reference per insn. */ + asm volatile ("" : : "g" (&v1) : "memory"); + asm volatile ("" : : "g" (&v2[0])); + asm volatile ("" : : "g" (&v3[0])); +#else asm volatile ("" : : "g" (&v1), "g" (&v2[0]), "g" (&v3[0]) : "memory"); +#endif } __attribute__((noclone, noinline)) int diff --git a/gcc/testsuite/gcc.c-torture/execute/pr52209.c b/gcc/testsuite/gcc.c-torture/execute/pr52209.c new file mode 100644 index 00000000000..f1d5b1f9cd8 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr52209.c @@ -0,0 +1,14 @@ +/* PR middle-end/52209 */ + +extern void abort (void); +struct S0 { int f2 : 1; } c; +int b; + +int +main () +{ + b = -1 ^ c.f2; + if (b != -1) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/20020312-2.c b/gcc/testsuite/gcc.dg/20020312-2.c index 6e568eddb90..768e17e64cd 100644 --- a/gcc/testsuite/gcc.dg/20020312-2.c +++ b/gcc/testsuite/gcc.dg/20020312-2.c @@ -66,6 +66,8 @@ extern void abort (void); # define PIC_REG "12" #elif defined(__sparc__) # define PIC_REG "l7" +#elif defined(__tile__) +# define PIC_REG "r51" #elif defined(__TMS320C6X__) # define PIC_REG "B14" #elif defined(__v850) diff --git a/gcc/testsuite/gcc.dg/20040813-1.c b/gcc/testsuite/gcc.dg/20040813-1.c index bf87f4172cf..e16344164d5 100644 --- a/gcc/testsuite/gcc.dg/20040813-1.c +++ b/gcc/testsuite/gcc.dg/20040813-1.c @@ -2,7 +2,7 @@ /* Contributed by Devang Patel <dpatel@apple.com> */ /* { dg-do compile } */ -/* { dg-skip-if "No stabs" { mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-vxworks* } { "*" } { "" } } */ +/* { dg-skip-if "No stabs" { mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* tile*-*-* *-*-vxworks* } { "*" } { "" } } */ /* { dg-options "-gstabs" } */ int diff --git a/gcc/testsuite/gcc.dg/lower-subreg-1.c b/gcc/testsuite/gcc.dg/lower-subreg-1.c index 33be4c4eacc..12a20adfc38 100644 --- a/gcc/testsuite/gcc.dg/lower-subreg-1.c +++ b/gcc/testsuite/gcc.dg/lower-subreg-1.c @@ -1,4 +1,4 @@ -/* { dg-do compile { target { { { ! mips64 } && { ! ia64-*-* } } && { ! spu-*-* } } } } */ +/* { dg-do compile { target { { { ! mips64 } && { ! ia64-*-* } } && { ! spu-*-* } && { ! tilegx-*-* } } } } */ /* { dg-options "-O -fdump-rtl-subreg1" } */ /* { dg-skip-if "" { { i?86-*-* x86_64-*-* } && x32 } { "*" } { "" } } */ /* { dg-require-effective-target ilp32 } */ diff --git a/gcc/testsuite/gcc.dg/pr52132.c b/gcc/testsuite/gcc.dg/pr52132.c new file mode 100644 index 00000000000..8374994424a --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr52132.c @@ -0,0 +1,18 @@ +/* PR debug/52132 */ +/* { dg-do compile } */ +/* { dg-options "-std=c99 -O2 -g" } */ + +int l; +void bar (void); + +void +foo (int *x, float y) +{ + float b; + union { float f; int i; } u = { .f = y }; + u.i += 127 << 23; + u.f = ((-1.0f / 3) * u.f + 2) * u.f - 2.0f / 3; + b = 0.5 * (u.f + l); + if (b >= *x) + bar (); +} diff --git a/gcc/testsuite/gcc.dg/pr52210.c b/gcc/testsuite/gcc.dg/pr52210.c new file mode 100644 index 00000000000..c7ebeb60870 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr52210.c @@ -0,0 +1,12 @@ +/* PR tree-optimization/52210 */ +/* { dg-do compile } */ +/* { dg-options "-O3" } */ + +void +foo (long *x, long y, long z) +{ + long a = x[0]; + long b = x[1]; + x[0] = a & ~y; + x[1] = b & ~z; +} diff --git a/gcc/testsuite/gcc.misc-tests/linkage.exp b/gcc/testsuite/gcc.misc-tests/linkage.exp index f6702e4d024..887f31b21ac 100644 --- a/gcc/testsuite/gcc.misc-tests/linkage.exp +++ b/gcc/testsuite/gcc.misc-tests/linkage.exp @@ -88,6 +88,13 @@ if { [isnative] && ![is_remote host] } then { } elseif [ string match "*ppc" $file_string ] { set native_cflags "-m32" } + } elseif [istarget "tilegx-*-linux*"] { + set file_string [exec file "linkage-x.o"] + if [ string match "*64-bit*" $file_string ] { + set native_cflags "-m64" + } elseif [ string match "*32-bit*" $file_string ] { + set native_cflags "-m32" + } } elseif [istarget "*86*-*-darwin*"] { set file_string [exec file "linkage-x.o"] if [ string match "*64*" $file_string ] { diff --git a/gcc/testsuite/gcc.target/i386/pr52146.c b/gcc/testsuite/gcc.target/i386/pr52146.c new file mode 100644 index 00000000000..a4804e67797 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr52146.c @@ -0,0 +1,18 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-O2 -mx32" } */ + +void +test1 (void) +{ + int* apic_tpr_addr = (int *) 0xfee00080; + *apic_tpr_addr += 4; +} + +void +test2 (void) +{ + int* apic_tpr_addr = (int *) 0xfee00080; + *apic_tpr_addr = 0; +} + +/* { dg-final { scan-assembler-not "-18874240" } } */ diff --git a/gcc/testsuite/gfortran.dg/elemental_optional_args_5.f03 b/gcc/testsuite/gfortran.dg/elemental_optional_args_5.f03 new file mode 100644 index 00000000000..70a27d80cde --- /dev/null +++ b/gcc/testsuite/gfortran.dg/elemental_optional_args_5.f03 @@ -0,0 +1,86 @@ +! { dg-do run } +! +! PR fortran/50981 +! Test the handling of optional, polymorphic and non-polymorphic arguments +! to elemental procedures. +! +! Original testcase by Tobias Burnus <burnus@net-b.de> + +implicit none +type t + integer :: a +end type t + +type t2 + integer, allocatable :: a + integer, allocatable :: a2(:) + integer, pointer :: p => null() + integer, pointer :: p2(:) => null() +end type t2 + +type(t), allocatable :: ta, taa(:) +type(t), pointer :: tp, tpa(:) +class(t), allocatable :: ca, caa(:) +class(t), pointer :: cp, cpa(:) + +type(t2) :: x + +integer :: s, v(2) + +tp => null() +tpa => null() +cp => null() +cpa => null() + +! =============== sub1 ================== +! SCALAR COMPONENTS: Non alloc/assoc + +s = 3 +v = [9, 33] + +call sub1 (s, x%a, .false.) +call sub1 (v, x%a, .false.) +!print *, s, v +if (s /= 3) call abort() +if (any (v /= [9, 33])) call abort() + +call sub1 (s, x%p, .false.) +call sub1 (v, x%p, .false.) +!print *, s, v +if (s /= 3) call abort() +if (any (v /= [9, 33])) call abort() + + +! SCALAR COMPONENTS: alloc/assoc + +allocate (x%a, x%p) +x%a = 4 +x%p = 5 +call sub1 (s, x%a, .true.) +call sub1 (v, x%a, .true.) +!print *, s, v +if (s /= 4*2) call abort() +if (any (v /= [4*2, 4*2])) call abort() + +call sub1 (s, x%p, .true.) +call sub1 (v, x%p, .true.) +!print *, s, v +if (s /= 5*2) call abort() +if (any (v /= [5*2, 5*2])) call abort() + + + +contains + + elemental subroutine sub1 (x, y, alloc) + integer, intent(inout) :: x + integer, intent(in), optional :: y + logical, intent(in) :: alloc + if (alloc .neqv. present (y)) & + x = -99 + if (present(y)) & + x = y*2 + end subroutine sub1 + +end + diff --git a/gcc/testsuite/gnat.dg/specs/aggr4.ads b/gcc/testsuite/gnat.dg/specs/aggr4.ads new file mode 100644 index 00000000000..4cdf652ff2c --- /dev/null +++ b/gcc/testsuite/gnat.dg/specs/aggr4.ads @@ -0,0 +1,9 @@ +-- { dg-do compile } + +with Aggr4_Pkg; use Aggr4_Pkg; + +package Aggr4 is + + C : constant Rec3 := (Data => (D => One, Value => Zero)); + +end Aggr4; diff --git a/gcc/testsuite/gnat.dg/specs/aggr4_pkg.ads b/gcc/testsuite/gnat.dg/specs/aggr4_pkg.ads new file mode 100644 index 00000000000..c0f3c8c828a --- /dev/null +++ b/gcc/testsuite/gnat.dg/specs/aggr4_pkg.ads @@ -0,0 +1,26 @@ +-- { dg-excess-errors "cannot generate code" } + +package Aggr4_Pkg is + + function F return Integer; + + type Rec1 is tagged record + I : Integer; + end record; + + Zero : constant Rec1 := (I => F); + + type Enum is (One, Two); + + type Rec2 (D : Enum := One) is record + case D is + when One => Value : Rec1; + when others => null; + end case; + end record; + + type Rec3 is record + Data : Rec2; + end record; + +end Aggr4_Pkg; diff --git a/gcc/testsuite/go.test/go-test.exp b/gcc/testsuite/go.test/go-test.exp index 6f0cd389dac..3e51b19f424 100644 --- a/gcc/testsuite/go.test/go-test.exp +++ b/gcc/testsuite/go.test/go-test.exp @@ -302,9 +302,9 @@ proc go-gc-tests { } { } # Handle certain tests in a target-dependant way. - if [istarget "alpha*-*-*"] { + if { [istarget "alpha*-*-*"] || [istarget "sparc*-*-solaris*"] } { if { [string match "*go.test/test/nilptr.go" $test] } { - go-execute-xfail $test + untested $test continue } } diff --git a/gcc/tlink.c b/gcc/tlink.c index f0540478e72..67c7086ceb1 100644 --- a/gcc/tlink.c +++ b/gcc/tlink.c @@ -32,6 +32,7 @@ along with GCC; see the file COPYING3. If not see #include "collect2.h" #include "filenames.h" #include "diagnostic-core.h" +#include "vec.h" /* TARGET_64BIT may be defined to use driver specific functionality. */ #undef TARGET_64BIT @@ -67,10 +68,14 @@ typedef struct file_hash_entry int tweaking; } file; +typedef const char *str; +DEF_VEC_P(str); +DEF_VEC_ALLOC_P(str,heap); + typedef struct demangled_hash_entry { const char *key; - const char *mangled; + VEC(str,heap) *mangled; } demangled; /* Hash and comparison functions for these hash tables. */ @@ -435,9 +440,15 @@ maybe_tweak (char *line, file *f) sym->tweaked = 1; if (line[0] == 'O') - line[0] = 'C'; + { + line[0] = 'C'; + sym->chosen = 1; + } else - line[0] = 'O'; + { + line[0] = 'O'; + sym->chosen = 0; + } } } @@ -598,8 +609,32 @@ demangle_new_symbols (void) continue; dem = demangled_hash_lookup (p, true); - dem->mangled = sym->key; + VEC_safe_push (str, heap, dem->mangled, sym->key); + } +} + +/* We want to tweak symbol SYM. Return true if all is well, false on + error. */ + +static bool +start_tweaking (symbol *sym) +{ + if (sym && sym->tweaked) + { + error ("'%s' was assigned to '%s', but was not defined " + "during recompilation, or vice versa", + sym->key, sym->file->key); + return 0; + } + if (sym && !sym->tweaking) + { + if (tlink_verbose >= 2) + fprintf (stderr, _("collect: tweaking %s in %s\n"), + sym->key, sym->file->key); + sym->tweaking = 1; + file_push (sym->file); } + return true; } /* Step through the output of the linker, in the file named FNAME, and @@ -616,8 +651,11 @@ scan_linker_output (const char *fname) { char *p = line, *q; symbol *sym; + demangled *dem = 0; int end; int ok = 0; + unsigned ix; + str s; /* On darwin9, we might have to skip " in " lines as well. */ if (skip_next_in_line @@ -662,7 +700,6 @@ scan_linker_output (const char *fname) /* Try a mangled name in quotes. */ { char *oldq = q + 1; - demangled *dem = 0; q = 0; /* On darwin9, we look for "foo" referenced from:\n\(.* in .*\n\)* */ @@ -718,9 +755,7 @@ scan_linker_output (const char *fname) { *q = 0; dem = demangled_hash_lookup (p, false); - if (dem) - sym = symbol_hash_lookup (dem->mangled, false); - else + if (!dem) { if (!strncmp (p, USER_LABEL_PREFIX, strlen (USER_LABEL_PREFIX))) @@ -730,24 +765,43 @@ scan_linker_output (const char *fname) } } - if (sym && sym->tweaked) + if (dem) { - error ("'%s' was assigned to '%s', but was not defined " - "during recompilation, or vice versa", - sym->key, sym->file->key); - fclose (stream); - return 0; - } - if (sym && !sym->tweaking) - { - if (tlink_verbose >= 2) - fprintf (stderr, _("collect: tweaking %s in %s\n"), - sym->key, sym->file->key); - sym->tweaking = 1; - file_push (sym->file); + /* We found a demangled name. If this is the name of a + constructor or destructor, there can be several mangled names + that match it, so choose or unchoose all of them. If some are + chosen and some not, leave the later ones that don't match + alone for now; either this will cause the link to suceed, or + on the next attempt we will switch all of them the other way + and that will cause it to succeed. */ + int chosen = 0; + int len = VEC_length (str, dem->mangled); + ok = true; + FOR_EACH_VEC_ELT (str, dem->mangled, ix, s) + { + sym = symbol_hash_lookup (s, false); + if (ix == 0) + chosen = sym->chosen; + else if (sym->chosen != chosen) + /* Mismatch. */ + continue; + /* Avoid an error about re-tweaking when we guess wrong in + the case of mismatch. */ + if (len > 1) + sym->tweaked = false; + ok = start_tweaking (sym); + } } + else + ok = start_tweaking (sym); obstack_free (&temporary_obstack, temporary_firstobj); + + if (!ok) + { + fclose (stream); + return 0; + } } fclose (stream); diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c index ccdf14a1702..ace9ef9972d 100644 --- a/gcc/tree-ssa-dce.c +++ b/gcc/tree-ssa-dce.c @@ -965,6 +965,13 @@ propagate_necessity (struct edge_list *el) mark_aliased_reaching_defs_necessary (stmt, op); } } + else if (gimple_code (stmt) == GIMPLE_TRANSACTION) + { + /* The beginning of a transaction is a memory barrier. */ + /* ??? If we were really cool, we'd only be a barrier + for the memories touched within the transaction. */ + mark_all_reaching_defs_necessary (stmt); + } else gcc_unreachable (); diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c index 0045dd875ec..ed0d34de2df 100644 --- a/gcc/tree-ssa-operands.c +++ b/gcc/tree-ssa-operands.c @@ -1043,35 +1043,46 @@ static void parse_ssa_operands (gimple stmt) { enum gimple_code code = gimple_code (stmt); + size_t i, n, start = 0; - if (code == GIMPLE_ASM) - get_asm_expr_operands (stmt); - else if (is_gimple_debug (stmt)) + switch (code) { + case GIMPLE_ASM: + get_asm_expr_operands (stmt); + break; + + case GIMPLE_TRANSACTION: + /* The start of a transaction is a memory barrier. */ + add_virtual_operand (stmt, opf_def | opf_use); + break; + + case GIMPLE_DEBUG: if (gimple_debug_bind_p (stmt) && gimple_debug_bind_has_value_p (stmt)) get_expr_operands (stmt, gimple_debug_bind_get_value_ptr (stmt), opf_use | opf_no_vops); - } - else - { - size_t i, start = 0; + break; - if (code == GIMPLE_ASSIGN || code == GIMPLE_CALL) - { - get_expr_operands (stmt, gimple_op_ptr (stmt, 0), opf_def); - start = 1; - } - - for (i = start; i < gimple_num_ops (stmt); i++) - get_expr_operands (stmt, gimple_op_ptr (stmt, i), opf_use); + case GIMPLE_RETURN: + append_vuse (gimple_vop (cfun)); + goto do_default; + case GIMPLE_CALL: /* Add call-clobbered operands, if needed. */ - if (code == GIMPLE_CALL) - maybe_add_call_vops (stmt); + maybe_add_call_vops (stmt); + /* FALLTHRU */ - if (code == GIMPLE_RETURN) - append_vuse (gimple_vop (cfun)); + case GIMPLE_ASSIGN: + get_expr_operands (stmt, gimple_op_ptr (stmt, 0), opf_def); + start = 1; + /* FALLTHRU */ + + default: + do_default: + n = gimple_num_ops (stmt); + for (i = start; i < n; i++) + get_expr_operands (stmt, gimple_op_ptr (stmt, i), opf_use); + break; } } diff --git a/gcc/tree-streamer-in.c b/gcc/tree-streamer-in.c index c7215105233..cc6fae7d832 100644 --- a/gcc/tree-streamer-in.c +++ b/gcc/tree-streamer-in.c @@ -640,7 +640,7 @@ lto_input_ts_field_decl_tree_pointers (struct lto_input_block *ib, { DECL_FIELD_OFFSET (expr) = stream_read_tree (ib, data_in); DECL_BIT_FIELD_TYPE (expr) = stream_read_tree (ib, data_in); - DECL_QUALIFIER (expr) = stream_read_tree (ib, data_in); + /* Do not stream DECL_QUALIFIER, it is useless after gimplification. */ DECL_FIELD_BIT_OFFSET (expr) = stream_read_tree (ib, data_in); DECL_FCONTEXT (expr) = stream_read_tree (ib, data_in); } diff --git a/gcc/tree-streamer-out.c b/gcc/tree-streamer-out.c index ea5834e41ce..21689dfe5f2 100644 --- a/gcc/tree-streamer-out.c +++ b/gcc/tree-streamer-out.c @@ -552,7 +552,7 @@ write_ts_field_decl_tree_pointers (struct output_block *ob, tree expr, { stream_write_tree (ob, DECL_FIELD_OFFSET (expr), ref_p); stream_write_tree (ob, DECL_BIT_FIELD_TYPE (expr), ref_p); - stream_write_tree (ob, DECL_QUALIFIER (expr), ref_p); + /* Do not stream DECL_QUALIFIER, it is useless after gimplification. */ stream_write_tree (ob, DECL_FIELD_BIT_OFFSET (expr), ref_p); stream_write_tree (ob, DECL_FCONTEXT (expr), ref_p); } diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 051d340e2d8..7f42a7d88cd 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -2417,7 +2417,8 @@ vect_get_single_scalar_iteraion_cost (loop_vec_info loop_vinfo) if (stmt_info && !STMT_VINFO_RELEVANT_P (stmt_info) && (!STMT_VINFO_LIVE_P (stmt_info) - || STMT_VINFO_DEF_TYPE (stmt_info) != vect_reduction_def)) + || !VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_info))) + && !STMT_VINFO_IN_PATTERN_P (stmt_info)) continue; if (STMT_VINFO_DATA_REF (vinfo_for_stmt (stmt))) @@ -2564,15 +2565,46 @@ vect_estimate_min_profitable_iters (loop_vec_info loop_vinfo) { gimple stmt = gsi_stmt (si); stmt_vec_info stmt_info = vinfo_for_stmt (stmt); + + if (STMT_VINFO_IN_PATTERN_P (stmt_info)) + { + stmt = STMT_VINFO_RELATED_STMT (stmt_info); + stmt_info = vinfo_for_stmt (stmt); + } + /* Skip stmts that are not vectorized inside the loop. */ if (!STMT_VINFO_RELEVANT_P (stmt_info) && (!STMT_VINFO_LIVE_P (stmt_info) - || STMT_VINFO_DEF_TYPE (stmt_info) != vect_reduction_def)) + || !VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_info)))) continue; + vec_inside_cost += STMT_VINFO_INSIDE_OF_LOOP_COST (stmt_info) * factor; /* FIXME: for stmts in the inner-loop in outer-loop vectorization, some of the "outside" costs are generated inside the outer-loop. */ vec_outside_cost += STMT_VINFO_OUTSIDE_OF_LOOP_COST (stmt_info); + if (is_pattern_stmt_p (stmt_info) + && STMT_VINFO_PATTERN_DEF_SEQ (stmt_info)) + { + gimple_stmt_iterator gsi; + + for (gsi = gsi_start (STMT_VINFO_PATTERN_DEF_SEQ (stmt_info)); + !gsi_end_p (gsi); gsi_next (&gsi)) + { + gimple pattern_def_stmt = gsi_stmt (gsi); + stmt_vec_info pattern_def_stmt_info + = vinfo_for_stmt (pattern_def_stmt); + if (STMT_VINFO_RELEVANT_P (pattern_def_stmt_info) + || STMT_VINFO_LIVE_P (pattern_def_stmt_info)) + { + vec_inside_cost + += STMT_VINFO_INSIDE_OF_LOOP_COST + (pattern_def_stmt_info) * factor; + vec_outside_cost + += STMT_VINFO_OUTSIDE_OF_LOOP_COST + (pattern_def_stmt_info); + } + } + } } } diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index 1177816ab60..f21abb38bbf 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -321,10 +321,15 @@ vect_get_and_check_slp_defs (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo, vect_model_store_cost (stmt_info, ncopies_for_cost, false, dt, slp_node); else - /* Not memory operation (we don't call this function for - loads). */ - vect_model_simple_cost (stmt_info, ncopies_for_cost, &dt, - slp_node); + { + enum vect_def_type dts[2]; + dts[0] = dt; + dts[1] = vect_uninitialized_def; + /* Not memory operation (we don't call this function for + loads). */ + vect_model_simple_cost (stmt_info, ncopies_for_cost, dts, + slp_node); + } } } else diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index e854da58373..20f10f37437 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -811,6 +811,46 @@ vect_model_simple_cost (stmt_vec_info stmt_info, int ncopies, } +/* Model cost for type demotion and promotion operations. PWR is normally + zero for single-step promotions and demotions. It will be one if + two-step promotion/demotion is required, and so on. Each additional + step doubles the number of instructions required. */ + +static void +vect_model_promotion_demotion_cost (stmt_vec_info stmt_info, + enum vect_def_type *dt, int pwr) +{ + int i, tmp; + int inside_cost = 0, outside_cost = 0, single_stmt_cost; + + /* The SLP costs were already calculated during SLP tree build. */ + if (PURE_SLP_STMT (stmt_info)) + return; + + single_stmt_cost = vect_get_stmt_cost (vec_promote_demote); + for (i = 0; i < pwr + 1; i++) + { + tmp = (STMT_VINFO_TYPE (stmt_info) == type_promotion_vec_info_type) ? + (i + 1) : i; + inside_cost += vect_pow2 (tmp) * single_stmt_cost; + } + + /* FORNOW: Assuming maximum 2 args per stmts. */ + for (i = 0; i < 2; i++) + { + if (dt[i] == vect_constant_def || dt[i] == vect_external_def) + outside_cost += vect_get_stmt_cost (vector_stmt); + } + + if (vect_print_dump_info (REPORT_COST)) + fprintf (vect_dump, "vect_model_promotion_demotion_cost: inside_cost = %d, " + "outside_cost = %d .", inside_cost, outside_cost); + + /* Set the costs in STMT_INFO. */ + stmt_vinfo_set_inside_of_loop_cost (stmt_info, NULL, inside_cost); + stmt_vinfo_set_outside_of_loop_cost (stmt_info, NULL, outside_cost); +} + /* Function vect_cost_strided_group_size For strided load or store, return the group_size only if it is the first @@ -887,7 +927,6 @@ vect_model_store_cost (stmt_vec_info stmt_info, int ncopies, if (vect_print_dump_info (REPORT_COST)) fprintf (vect_dump, "vect_model_store_cost: strided group_size = %d .", group_size); - } /* Costs of the stores. */ @@ -1049,7 +1088,7 @@ vect_get_load_cost (struct data_reference *dr, int ncopies, case dr_explicit_realign: { *inside_cost += ncopies * (2 * vect_get_stmt_cost (vector_load) - + vect_get_stmt_cost (vector_stmt)); + + vect_get_stmt_cost (vec_perm)); /* FIXME: If the misalignment remains fixed across the iterations of the containing loop, the following cost should be added to the @@ -1057,6 +1096,9 @@ vect_get_load_cost (struct data_reference *dr, int ncopies, if (targetm.vectorize.builtin_mask_for_load) *inside_cost += vect_get_stmt_cost (vector_stmt); + if (vect_print_dump_info (REPORT_COST)) + fprintf (vect_dump, "vect_model_load_cost: explicit realign"); + break; } case dr_explicit_realign_optimized: @@ -1080,7 +1122,12 @@ vect_get_load_cost (struct data_reference *dr, int ncopies, } *inside_cost += ncopies * (vect_get_stmt_cost (vector_load) - + vect_get_stmt_cost (vector_stmt)); + + vect_get_stmt_cost (vec_perm)); + + if (vect_print_dump_info (REPORT_COST)) + fprintf (vect_dump, + "vect_model_load_cost: explicit realign optimized"); + break; } @@ -2392,16 +2439,19 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi, if (vect_print_dump_info (REPORT_DETAILS)) fprintf (vect_dump, "=== vectorizable_conversion ==="); if (code == FIX_TRUNC_EXPR || code == FLOAT_EXPR) - STMT_VINFO_TYPE (stmt_info) = type_conversion_vec_info_type; + { + STMT_VINFO_TYPE (stmt_info) = type_conversion_vec_info_type; + vect_model_simple_cost (stmt_info, ncopies, dt, NULL); + } else if (modifier == NARROW) { STMT_VINFO_TYPE (stmt_info) = type_demotion_vec_info_type; - vect_model_simple_cost (stmt_info, ncopies, dt, NULL); + vect_model_promotion_demotion_cost (stmt_info, dt, multi_step_cvt); } else { STMT_VINFO_TYPE (stmt_info) = type_promotion_vec_info_type; - vect_model_simple_cost (stmt_info, 2 * ncopies, dt, NULL); + vect_model_promotion_demotion_cost (stmt_info, dt, multi_step_cvt); } VEC_free (tree, heap, interm_types); return true; diff --git a/gcc/tree.c b/gcc/tree.c index 22f9d007826..fa01583a518 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -4596,7 +4596,10 @@ free_lang_data_in_decl (tree decl) free_lang_data_in_one_sizepos (&DECL_SIZE (decl)); free_lang_data_in_one_sizepos (&DECL_SIZE_UNIT (decl)); if (TREE_CODE (decl) == FIELD_DECL) - free_lang_data_in_one_sizepos (&DECL_FIELD_OFFSET (decl)); + { + free_lang_data_in_one_sizepos (&DECL_FIELD_OFFSET (decl)); + DECL_QUALIFIER (decl) = NULL_TREE; + } if (TREE_CODE (decl) == FUNCTION_DECL) { @@ -4800,7 +4803,6 @@ find_decls_types_r (tree *tp, int *ws, void *data) { fld_worklist_push (DECL_FIELD_OFFSET (t), fld); fld_worklist_push (DECL_BIT_FIELD_TYPE (t), fld); - fld_worklist_push (DECL_QUALIFIER (t), fld); fld_worklist_push (DECL_FIELD_BIT_OFFSET (t), fld); fld_worklist_push (DECL_FCONTEXT (t), fld); } diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 4fc1ec8728b..a8a949c7d91 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,8 @@ +2012-02-14 Walter Lee <walt@tilera.com> + + * configure.ac: Require 64-bit hwint for tilegx and tilepro. + * configure: Regenerate. + 2012-01-09 Richard Guenther <rguenther@suse.de> * macro.c (_cpp_builtin_macro_text): Remove unused variable map. diff --git a/libcpp/aclocal.m4 b/libcpp/aclocal.m4 index c3a9f037ae8..2b2d2a7eca0 100644 --- a/libcpp/aclocal.m4 +++ b/libcpp/aclocal.m4 @@ -1,7 +1,8 @@ -# generated automatically by aclocal 1.11.1 -*- Autoconf -*- +# generated automatically by aclocal 1.11.3 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, +# Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. diff --git a/libcpp/configure b/libcpp/configure index 7ea42c54787..fb5654de54d 100755 --- a/libcpp/configure +++ b/libcpp/configure @@ -7382,7 +7382,8 @@ case $target in s390*-*-* | \ sparc*-*-* | \ spu-*-* | \ - sh[123456789lbe]*-*-* | sh-*-*) + sh[123456789lbe]*-*-* | sh-*-* | \ + tilegx-*-* | tilepro-*-* ) need_64bit_hwint=yes ;; *) need_64bit_hwint=no ;; diff --git a/libcpp/configure.ac b/libcpp/configure.ac index 83d5bb6e827..070ab633d80 100644 --- a/libcpp/configure.ac +++ b/libcpp/configure.ac @@ -162,7 +162,8 @@ case $target in s390*-*-* | \ sparc*-*-* | \ spu-*-* | \ - sh[123456789lbe]*-*-* | sh-*-*) + sh[123456789lbe]*-*-* | sh-*-* | \ + tilegx-*-* | tilepro-*-* ) need_64bit_hwint=yes ;; *) need_64bit_hwint=no ;; diff --git a/libffi/ChangeLog b/libffi/ChangeLog index 47d31fa73c1..3b3167ae77b 100644 --- a/libffi/ChangeLog +++ b/libffi/ChangeLog @@ -1,3 +1,20 @@ +2012-02-13 Kai Tietz <ktietz@redhat.com> + + PR libffi/52221 + * src/x86/ffi.c (ffi_prep_raw_closure_loc): Add thiscall + support for X86_WIN32. + (FFI_INIT_TRAMPOLINE_THISCALL): Fix displacement. + +2012-02-11 Eric Botcazou <ebotcazou@adacore.com> + + * src/sparc/v9.S (STACKFRAME): Bump to 176. + +2012-02-10 Kai Tietz <ktietz@redhat.com> + + * configure.ac (AM_LTLDFLAGS): Add -no-undefine for x64 + windows target. + * configure: Regenerated. + 2012-02-08 Kai Tietz <ktietz@redhat.com> * src/prep_cif.c (ffi_prep_cif): Allow for X86_WIN32 diff --git a/libffi/configure b/libffi/configure index 7a7d24559c3..15914953909 100755 --- a/libffi/configure +++ b/libffi/configure @@ -11435,6 +11435,15 @@ case "$host" in x86_64-*-cygwin* | x86_64-*-mingw*) TARGET=X86_WIN64; TARGETDIR=x86 + # All mingw/cygwin/win32 builds require -no-undefined for sharedlib. + # We must also check with_cross_host to decide if this is a native + # or cross-build and select where to install dlls appropriately. + if test -n "$with_cross_host" && + test x"$with_cross_host" != x"no"; then + AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"'; + else + AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"'; + fi ;; x86_64-*-*) diff --git a/libffi/configure.ac b/libffi/configure.ac index 0788b3165dd..5036e25a288 100644 --- a/libffi/configure.ac +++ b/libffi/configure.ac @@ -166,6 +166,15 @@ case "$host" in x86_64-*-cygwin* | x86_64-*-mingw*) TARGET=X86_WIN64; TARGETDIR=x86 + # All mingw/cygwin/win32 builds require -no-undefined for sharedlib. + # We must also check with_cross_host to decide if this is a native + # or cross-build and select where to install dlls appropriately. + if test -n "$with_cross_host" && + test x"$with_cross_host" != x"no"; then + AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"'; + else + AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"'; + fi ;; x86_64-*-*) diff --git a/libffi/src/sparc/v9.S b/libffi/src/sparc/v9.S index 489ff0293f2..bf31a2b5110 100644 --- a/libffi/src/sparc/v9.S +++ b/libffi/src/sparc/v9.S @@ -32,7 +32,7 @@ /* Only compile this in for 64bit builds, because otherwise the object file will have inproper architecture due to used instructions. */ -#define STACKFRAME 128 /* Minimum stack framesize for SPARC */ +#define STACKFRAME 176 /* Minimum stack framesize for SPARC 64-bit */ #define STACK_BIAS 2047 #define ARGS (128) /* Offset of register area in frame */ diff --git a/libffi/src/x86/ffi.c b/libffi/src/x86/ffi.c index 7c01c57c4db..88edbc102f9 100644 --- a/libffi/src/x86/ffi.c +++ b/libffi/src/x86/ffi.c @@ -614,7 +614,7 @@ ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, void **avalue, { unsigned char *__tramp = (unsigned char*)(TRAMP); \ unsigned int __fun = (unsigned int)(FUN); \ unsigned int __ctx = (unsigned int)(CTX); \ - unsigned int __dis = __fun - (__ctx + 22); \ + unsigned int __dis = __fun - (__ctx + 49); \ unsigned short __size = (unsigned short)(SIZE); \ *(unsigned int *) &__tramp[0] = 0x8324048b; /* mov (%esp), %eax */ \ *(unsigned int *) &__tramp[4] = 0x4c890cec; /* sub $12, %esp */ \ @@ -720,6 +720,9 @@ ffi_prep_raw_closure_loc (ffi_raw_closure* closure, int i; if (cif->abi != FFI_SYSV) { +#ifdef X86_WIN32 + if (cif->abi != FFI_THISCALL) +#endif return FFI_BAD_ABI; } @@ -734,10 +737,20 @@ ffi_prep_raw_closure_loc (ffi_raw_closure* closure, FFI_ASSERT (cif->arg_types[i]->type != FFI_TYPE_LONGDOUBLE); } - +#ifdef X86_WIN32 + if (cif->abi == FFI_SYSV) + { +#endif FFI_INIT_TRAMPOLINE (&closure->tramp[0], &ffi_closure_raw_SYSV, codeloc); - +#ifdef X86_WIN32 + } + else if (cif->abi == FFI_THISCALL) + { + FFI_INIT_TRAMPOLINE_THISCALL (&closure->tramp[0], &ffi_closure_raw_SYSV, + codeloc, cif->bytes); + } +#endif closure->cif = cif; closure->user_data = user_data; closure->fun = fun; diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 4a974401d68..85b39cf7dfa 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,21 @@ +2012-02-14 Walter Lee <walt@tilera.com> + + * config.host: Handle tilegx and tilepro. + * config/tilegx/sfp-machine.h: New file. + * config/tilegx/sfp-machine32.h: New file. + * config/tilegx/sfp-machine64.h: New file. + * config/tilegx/t-crtstuff: New file. + * config/tilegx/t-softfp: New file. + * config/tilegx/t-tilegx: New file. + * config/tilepro/atomic.c: New file. + * config/tilepro/atomic.h: New file. + * config/tilepro/linux-unwind.h: New file. + * config/tilepro/sfp-machine.h: New file. + * config/tilepro/softdivide.c: New file. + * config/tilepro/softmpy.S: New file. + * config/tilepro/t-crtstuff: New file. + * config/tilepro/t-tilepro: New file. + 2012-02-07 Jonathan Wakely <jwakely.gcc@gmail.com> PR libstdc++/51296 diff --git a/libgcc/config.host b/libgcc/config.host index da845b91743..5ad27caa172 100644 --- a/libgcc/config.host +++ b/libgcc/config.host @@ -1090,6 +1090,14 @@ tic6x-*-elf) extra_parts="$extra_parts crtbeginS.o crtendS.o crti.o crtn.o" unwind_header=config/c6x/unwind-c6x.h ;; +tilegx-*-linux*) + tmake_file="${tmake_file} tilegx/t-crtstuff t-softfp-sfdf tilegx/t-softfp t-softfp tilegx/t-tilegx" + md_unwind_header=tilepro/linux-unwind.h + ;; +tilepro-*-linux*) + tmake_file="${tmake_file} tilepro/t-crtstuff t-softfp-sfdf t-softfp tilepro/t-tilepro" + md_unwind_header=tilepro/linux-unwind.h + ;; v850*-*-*) tmake_file="v850/t-v850 t-fdpbit" ;; diff --git a/libgcc/config/tilegx/sfp-machine.h b/libgcc/config/tilegx/sfp-machine.h new file mode 100644 index 00000000000..1ce84e10943 --- /dev/null +++ b/libgcc/config/tilegx/sfp-machine.h @@ -0,0 +1,5 @@ +#ifdef __tilegx32__ +#include "config/tilegx/sfp-machine32.h" +#else +#include "config/tilegx/sfp-machine64.h" +#endif diff --git a/libgcc/config/tilegx/sfp-machine32.h b/libgcc/config/tilegx/sfp-machine32.h new file mode 100644 index 00000000000..37841000167 --- /dev/null +++ b/libgcc/config/tilegx/sfp-machine32.h @@ -0,0 +1,61 @@ +#define _FP_W_TYPE_SIZE 32 +#define _FP_W_TYPE unsigned long +#define _FP_WS_TYPE signed long +#define _FP_I_TYPE long + +typedef int TItype __attribute__ ((mode (TI))); +typedef unsigned int UTItype __attribute__ ((mode (TI))); + +#define TI_BITS (__CHAR_BIT__ * (int)sizeof(TItype)) + +/* The type of the result of a floating point comparison. This must + match `__libgcc_cmp_return__' in GCC for the target. */ +typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__))); +#define CMPtype __gcc_CMPtype + +#define _FP_MUL_MEAT_S(R,X,Y) \ + _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm) +#define _FP_MUL_MEAT_D(R,X,Y) \ + _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) +#define _FP_MUL_MEAT_Q(R,X,Y) \ + _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) + +#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y) +#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y) +#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y) + +#define _FP_NANFRAC_S _FP_QNANBIT_S +#define _FP_NANFRAC_D _FP_QNANBIT_D, 0 +#define _FP_NANFRAC_Q _FP_QNANBIT_Q, 0, 0, 0 +#define _FP_NANSIGN_S 1 +#define _FP_NANSIGN_D 1 +#define _FP_NANSIGN_Q 1 + +#define _FP_KEEPNANFRACP 1 + +#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ + do { \ + if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \ + && !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \ + { \ + R##_s = Y##_s; \ + _FP_FRAC_COPY_##wc(R,Y); \ + } \ + else \ + { \ + R##_s = X##_s; \ + _FP_FRAC_COPY_##wc(R,X); \ + } \ + R##_c = FP_CLS_NAN; \ + } while (0) + +#define __LITTLE_ENDIAN 1234 +#define __BIG_ENDIAN 4321 + +#define __BYTE_ORDER __LITTLE_ENDIAN + +/* Define ALIASNAME as a strong alias for NAME. */ +# define strong_alias(name, aliasname) _strong_alias(name, aliasname) +# define _strong_alias(name, aliasname) \ + extern __typeof (name) aliasname __attribute__ ((alias (#name))); + diff --git a/libgcc/config/tilegx/sfp-machine64.h b/libgcc/config/tilegx/sfp-machine64.h new file mode 100644 index 00000000000..88bdcf5a318 --- /dev/null +++ b/libgcc/config/tilegx/sfp-machine64.h @@ -0,0 +1,61 @@ +#define _FP_W_TYPE_SIZE 64 +#define _FP_W_TYPE unsigned long +#define _FP_WS_TYPE signed long +#define _FP_I_TYPE long + +typedef int TItype __attribute__ ((mode (TI))); +typedef unsigned int UTItype __attribute__ ((mode (TI))); + +#define TI_BITS (__CHAR_BIT__ * (int)sizeof(TItype)) + +/* The type of the result of a floating point comparison. This must + match `__libgcc_cmp_return__' in GCC for the target. */ +typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__))); +#define CMPtype __gcc_CMPtype + +#define _FP_MUL_MEAT_S(R,X,Y) \ + _FP_MUL_MEAT_1_imm(_FP_WFRACBITS_S,R,X,Y) +#define _FP_MUL_MEAT_D(R,X,Y) \ + _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) +#define _FP_MUL_MEAT_Q(R,X,Y) \ + _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) + +#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_imm(S,R,X,Y,_FP_DIV_HELP_imm) +#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_1_udiv_norm(D,R,X,Y) +#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_2_udiv(Q,R,X,Y) + +#define _FP_NANFRAC_S _FP_QNANBIT_S +#define _FP_NANFRAC_D _FP_QNANBIT_D +#define _FP_NANFRAC_Q _FP_QNANBIT_Q, 0 +#define _FP_NANSIGN_S 1 +#define _FP_NANSIGN_D 1 +#define _FP_NANSIGN_Q 1 + +#define _FP_KEEPNANFRACP 1 + +#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ + do { \ + if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \ + && !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \ + { \ + R##_s = Y##_s; \ + _FP_FRAC_COPY_##wc(R,Y); \ + } \ + else \ + { \ + R##_s = X##_s; \ + _FP_FRAC_COPY_##wc(R,X); \ + } \ + R##_c = FP_CLS_NAN; \ + } while (0) + +#define __LITTLE_ENDIAN 1234 +#define __BIG_ENDIAN 4321 + +#define __BYTE_ORDER __LITTLE_ENDIAN + +/* Define ALIASNAME as a strong alias for NAME. */ +# define strong_alias(name, aliasname) _strong_alias(name, aliasname) +# define _strong_alias(name, aliasname) \ + extern __typeof (name) aliasname __attribute__ ((alias (#name))); + diff --git a/libgcc/config/tilegx/t-crtstuff b/libgcc/config/tilegx/t-crtstuff new file mode 100644 index 00000000000..eddc45ce9d8 --- /dev/null +++ b/libgcc/config/tilegx/t-crtstuff @@ -0,0 +1,4 @@ +# crtend*.o cannot be compiled without -fno-asynchronous-unwind-tables, +# because then __FRAME_END__ might not be the last thing in .eh_frame +# section. +CRTSTUFF_T_CFLAGS += -fno-asynchronous-unwind-tables diff --git a/libgcc/config/tilegx/t-softfp b/libgcc/config/tilegx/t-softfp new file mode 100644 index 00000000000..a1e3513e288 --- /dev/null +++ b/libgcc/config/tilegx/t-softfp @@ -0,0 +1 @@ +softfp_int_modes += ti diff --git a/libgcc/config/tilegx/t-tilegx b/libgcc/config/tilegx/t-tilegx new file mode 100644 index 00000000000..2fb64454c36 --- /dev/null +++ b/libgcc/config/tilegx/t-tilegx @@ -0,0 +1,26 @@ +LIB2ADD += \ + $(srcdir)/config/tilepro/atomic.c + +SOFTDIVIDE_FUNCS := \ + _tile_udivsi3 \ + _tile_divsi3 \ + _tile_udivdi3 \ + _tile_divdi3 \ + _tile_umodsi3 \ + _tile_modsi3 \ + _tile_umoddi3 \ + _tile_moddi3 + +softdivide-o = $(patsubst %,%$(objext),$(SOFTDIVIDE_FUNCS)) +$(softdivide-o): %$(objext): $(srcdir)/config/tilepro/softdivide.c + $(gcc_compile) -ffunction-sections -DMAYBE_STATIC= -DL$* -c $< \ + $(vis_hide) +libgcc-objects += $(softdivide-o) + +ifeq ($(enable_shared),yes) +softdivide-s-o = $(patsubst %,%_s$(objext),$(SOFTDIVIDE_FUNCS)) +$(softdivide-s-o): %_s$(objext): $(srcdir)/config/tilepro/softdivide.c + $(gcc_s_compile) -ffunction-sections -DMAYBE_STATIC= -DL$* -c $< +libgcc-s-objects += $(softdivide-s-o) +libgcc-eh-objects += _tile_divdi3.o _tile_umoddi3.o +endif diff --git a/libgcc/config/tilepro/atomic.c b/libgcc/config/tilepro/atomic.c new file mode 100644 index 00000000000..cafbde8abee --- /dev/null +++ b/libgcc/config/tilepro/atomic.c @@ -0,0 +1,232 @@ +/* TILE atomics. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file 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. + + This file 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. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + <http://www.gnu.org/licenses/>. */ + +#include "system.h" +#include "coretypes.h" +#include "atomic.h" + +/* This code should be inlined by the compiler, but for now support + it as out-of-line methods in libgcc. */ + +static void +pre_atomic_barrier (int model) +{ + switch ((enum memmodel) model) + { + case MEMMODEL_RELEASE: + case MEMMODEL_ACQ_REL: + case MEMMODEL_SEQ_CST: + __atomic_thread_fence (model); + break; + default: + break; + } + return; +} + +static void +post_atomic_barrier (int model) +{ + switch ((enum memmodel) model) + { + case MEMMODEL_ACQUIRE: + case MEMMODEL_ACQ_REL: + case MEMMODEL_SEQ_CST: + __atomic_thread_fence (model); + break; + default: + break; + } + return; +} + +#define __unused __attribute__((unused)) + +/* Provide additional methods not implemented by atomic.h. */ +#define atomic_xor(mem, mask) \ + __atomic_update_cmpxchg(mem, mask, __old ^ __value) +#define atomic_nand(mem, mask) \ + __atomic_update_cmpxchg(mem, mask, ~(__old & __value)) + +#define __atomic_fetch_and_do(type, size, opname) \ +type \ +__atomic_fetch_##opname##_##size(type* p, type i, int model) \ +{ \ + pre_atomic_barrier(model); \ + type rv = atomic_##opname(p, i); \ + post_atomic_barrier(model); \ + return rv; \ +} + +__atomic_fetch_and_do (int, 4, add) +__atomic_fetch_and_do (int, 4, sub) +__atomic_fetch_and_do (int, 4, or) +__atomic_fetch_and_do (int, 4, and) +__atomic_fetch_and_do (int, 4, xor) +__atomic_fetch_and_do (int, 4, nand) +__atomic_fetch_and_do (long long, 8, add) +__atomic_fetch_and_do (long long, 8, sub) +__atomic_fetch_and_do (long long, 8, or) +__atomic_fetch_and_do (long long, 8, and) +__atomic_fetch_and_do (long long, 8, xor) +__atomic_fetch_and_do (long long, 8, nand) +#define __atomic_do_and_fetch(type, size, opname, op) \ +type \ +__atomic_##opname##_fetch_##size(type* p, type i, int model) \ +{ \ + pre_atomic_barrier(model); \ + type rv = atomic_##opname(p, i) op i; \ + post_atomic_barrier(model); \ + return rv; \ +} +__atomic_do_and_fetch (int, 4, add, +) +__atomic_do_and_fetch (int, 4, sub, -) +__atomic_do_and_fetch (int, 4, or, |) +__atomic_do_and_fetch (int, 4, and, &) +__atomic_do_and_fetch (int, 4, xor, |) +__atomic_do_and_fetch (int, 4, nand, &) +__atomic_do_and_fetch (long long, 8, add, +) +__atomic_do_and_fetch (long long, 8, sub, -) +__atomic_do_and_fetch (long long, 8, or, |) +__atomic_do_and_fetch (long long, 8, and, &) +__atomic_do_and_fetch (long long, 8, xor, |) +__atomic_do_and_fetch (long long, 8, nand, &) +#define __atomic_exchange_methods(type, size) \ +bool \ +__atomic_compare_exchange_##size(volatile type* ptr, type* oldvalp, \ + type newval, bool weak __unused, \ + int models, int modelf __unused) \ +{ \ + type oldval = *oldvalp; \ + pre_atomic_barrier(models); \ + type retval = atomic_val_compare_and_exchange(ptr, oldval, newval); \ + post_atomic_barrier(models); \ + bool success = (retval == oldval); \ + *oldvalp = retval; \ + return success; \ +} \ + \ +type \ +__atomic_exchange_##size(volatile type* ptr, type val, int model) \ +{ \ + pre_atomic_barrier(model); \ + type retval = atomic_exchange(ptr, val); \ + post_atomic_barrier(model); \ + return retval; \ +} +__atomic_exchange_methods (int, 4) +__atomic_exchange_methods (long long, 8) + +/* Subword methods require the same approach for both TILEPro and + TILE-Gx. We load the background data for the word, insert the + desired subword piece, then compare-and-exchange it into place. */ +#define u8 unsigned char +#define u16 unsigned short +#define __atomic_subword_cmpxchg(type, size) \ + \ +bool \ +__atomic_compare_exchange_##size(volatile type* ptr, type* guess, \ + type val, bool weak __unused, int models, \ + int modelf __unused) \ +{ \ + pre_atomic_barrier(models); \ + unsigned int *p = (unsigned int *)((unsigned long)ptr & ~3UL); \ + const int shift = ((unsigned long)ptr & 3UL) * 8; \ + const unsigned int valmask = (1 << (sizeof(type) * 8)) - 1; \ + const unsigned int bgmask = ~(valmask << shift); \ + unsigned int oldword = *p; \ + type oldval = (oldword >> shift) & valmask; \ + if (__builtin_expect((oldval == *guess), 1)) { \ + unsigned int word = (oldword & bgmask) | ((val & valmask) << shift); \ + oldword = atomic_val_compare_and_exchange(p, oldword, word); \ + oldval = (oldword >> shift) & valmask; \ + } \ + post_atomic_barrier(models); \ + bool success = (oldval == *guess); \ + *guess = oldval; \ + return success; \ +} +__atomic_subword_cmpxchg (u8, 1) +__atomic_subword_cmpxchg (u16, 2) +/* For the atomic-update subword methods, we use the same approach as + above, but we retry until we succeed if the compare-and-exchange + fails. */ +#define __atomic_subword(type, proto, top, expr, bottom) \ +proto \ +{ \ + top \ + unsigned int *p = (unsigned int *)((unsigned long)ptr & ~3UL); \ + const int shift = ((unsigned long)ptr & 3UL) * 8; \ + const unsigned int valmask = (1 << (sizeof(type) * 8)) - 1; \ + const unsigned int bgmask = ~(valmask << shift); \ + unsigned int oldword, xword = *p; \ + type val, oldval; \ + do { \ + oldword = xword; \ + oldval = (oldword >> shift) & valmask; \ + val = expr; \ + unsigned int word = (oldword & bgmask) | ((val & valmask) << shift); \ + xword = atomic_val_compare_and_exchange(p, oldword, word); \ + } while (__builtin_expect(xword != oldword, 0)); \ + bottom \ +} +#define __atomic_subword_fetch(type, funcname, expr, retval) \ + __atomic_subword(type, \ + type __atomic_ ## funcname(volatile type *ptr, type i, int model), \ + pre_atomic_barrier(model);, \ + expr, \ + post_atomic_barrier(model); return retval;) +__atomic_subword_fetch (u8, fetch_add_1, oldval + i, oldval) +__atomic_subword_fetch (u8, fetch_sub_1, oldval - i, oldval) +__atomic_subword_fetch (u8, fetch_or_1, oldval | i, oldval) +__atomic_subword_fetch (u8, fetch_and_1, oldval & i, oldval) +__atomic_subword_fetch (u8, fetch_xor_1, oldval ^ i, oldval) +__atomic_subword_fetch (u8, fetch_nand_1, ~(oldval & i), oldval) +__atomic_subword_fetch (u16, fetch_add_2, oldval + i, oldval) +__atomic_subword_fetch (u16, fetch_sub_2, oldval - i, oldval) +__atomic_subword_fetch (u16, fetch_or_2, oldval | i, oldval) +__atomic_subword_fetch (u16, fetch_and_2, oldval & i, oldval) +__atomic_subword_fetch (u16, fetch_xor_2, oldval ^ i, oldval) +__atomic_subword_fetch (u16, fetch_nand_2, ~(oldval & i), oldval) +__atomic_subword_fetch (u8, add_fetch_1, oldval + i, val) +__atomic_subword_fetch (u8, sub_fetch_1, oldval - i, val) +__atomic_subword_fetch (u8, or_fetch_1, oldval | i, val) +__atomic_subword_fetch (u8, and_fetch_1, oldval & i, val) +__atomic_subword_fetch (u8, xor_fetch_1, oldval ^ i, val) +__atomic_subword_fetch (u8, nand_fetch_1, ~(oldval & i), val) +__atomic_subword_fetch (u16, add_fetch_2, oldval + i, val) +__atomic_subword_fetch (u16, sub_fetch_2, oldval - i, val) +__atomic_subword_fetch (u16, or_fetch_2, oldval | i, val) +__atomic_subword_fetch (u16, and_fetch_2, oldval & i, val) +__atomic_subword_fetch (u16, xor_fetch_2, oldval ^ i, val) +__atomic_subword_fetch (u16, nand_fetch_2, ~(oldval & i), val) +#define __atomic_subword_lock(type, size) \ + \ +__atomic_subword(type, \ + type __atomic_exchange_##size(volatile type* ptr, type nval, int model), \ + pre_atomic_barrier(model);, \ + nval, \ + post_atomic_barrier(model); return oldval;) +__atomic_subword_lock (u8, 1) +__atomic_subword_lock (u16, 2) diff --git a/libgcc/config/tilepro/atomic.h b/libgcc/config/tilepro/atomic.h new file mode 100644 index 00000000000..16306fe0e76 --- /dev/null +++ b/libgcc/config/tilepro/atomic.h @@ -0,0 +1,428 @@ +/* Macros for atomic functionality for tile. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file 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. + + This file 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. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + <http://www.gnu.org/licenses/>. */ + + +/* Provides macros for common atomic functionality. */ + +#ifndef _ATOMIC_H_ +#define _ATOMIC_H_ + +#ifdef __tilegx__ +/* Atomic instruction macros + + The macros provided by atomic.h simplify access to the TILE-Gx + architecture's atomic instructions. The architecture provides a + variety of atomic instructions, including "exchange", "compare and + exchange", "fetch and ADD", "fetch and AND", "fetch and OR", and + "fetch and ADD if greater than or equal to zero". + + No barrier or fence semantics are implied by any of the atomic + instructions for manipulating memory; you must specify the barriers + that you wish explicitly, using the provided macros. + + Any integral 32- or 64-bit value can be used as the argument + to these macros, such as "int", "long long", "unsigned long", etc. + The pointers must be aligned to 4 or 8 bytes for 32- or 64-bit data. + The "exchange" and "compare and exchange" macros may also take + pointer values. We use the pseudo-type "VAL" in the documentation + to indicate the use of an appropriate type. */ +#else +/* Atomic instruction macros + + The macros provided by atomic.h simplify access to the Tile + architecture's atomic instructions. Since the architecture + supports test-and-set as its only in-silicon atomic operation, many + of the operations provided by this header are implemented as + fast-path calls to Linux emulation routines. + + Using the kernel for atomic operations allows userspace to take + advantage of the kernel's existing atomic-integer support (managed + by a distributed array of locks). The kernel provides proper + ordering among simultaneous atomic operations on different cores, + and guarantees a process can not be context-switched part way + through an atomic operation. By virtue of sharing the kernel + atomic implementation, the userspace atomic operations + are compatible with the atomic methods provided by the kernel's + futex() syscall API. Note that these operations never cause Linux + kernel scheduling, and are in fact invisible to the kernel; they + simply act as regular function calls but with an elevated privilege + level. Note that the kernel's distributed lock array is hashed by + using only VA bits from the atomic value's address (to avoid the + performance hit of page table locking and multiple page-table + lookups to get the PA) and only the VA bits that are below page + granularity (to properly lock simultaneous accesses to the same + page mapped at different VAs). As a result, simultaneous atomic + operations on values whose addresses are at the same offset on a + page will contend in the kernel for the same lock array element. + + No barrier or fence semantics are implied by any of the atomic + instructions for manipulating memory; you must specify the barriers + that you wish explicitly, using the provided macros. + + Any integral 32- or 64-bit value can be used as the argument + to these macros, such as "int", "long long", "unsigned long", etc. + The pointers must be aligned to 4 or 8 bytes for 32- or 64-bit data. + The "exchange" and "compare and exchange" macros may also take + pointer values. We use the pseudo-type "VAL" in the documentation + to indicate the use of an appropriate type. + + The 32-bit routines are implemented using a single kernel fast + syscall, as is the 64-bit compare-and-exchange. The other 64-bit + routines are implemented by looping over the 64-bit + compare-and-exchange routine, so may be potentially less efficient. */ +#endif + +#include <stdint.h> +#include <features.h> +#ifdef __tilegx__ +#include <arch/spr_def.h> +#else +#include <asm/unistd.h> +#endif + + +/* 32-bit integer compare-and-exchange. */ +static __inline __attribute__ ((always_inline)) + int atomic_val_compare_and_exchange_4 (volatile int *mem, + int oldval, int newval) +{ +#ifdef __tilegx__ + __insn_mtspr (SPR_CMPEXCH_VALUE, oldval); + return __insn_cmpexch4 (mem, newval); +#else + int result; + __asm__ __volatile__ ("swint1":"=R00" (result), + "=m" (*mem):"R10" (__NR_FAST_cmpxchg), "R00" (mem), + "R01" (oldval), "R02" (newval), "m" (*mem):"r20", + "r21", "r22", "r23", "r24", "r25", "r26", "r27", + "r28", "r29", "memory"); + return result; +#endif +} + +/* 64-bit integer compare-and-exchange. */ +static __inline __attribute__ ((always_inline)) + int64_t atomic_val_compare_and_exchange_8 (volatile int64_t * mem, + int64_t oldval, + int64_t newval) +{ +#ifdef __tilegx__ + __insn_mtspr (SPR_CMPEXCH_VALUE, oldval); + return __insn_cmpexch (mem, newval); +#else + unsigned int result_lo, result_hi; + unsigned int oldval_lo = oldval & 0xffffffffu, oldval_hi = oldval >> 32; + unsigned int newval_lo = newval & 0xffffffffu, newval_hi = newval >> 32; + __asm__ __volatile__ ("swint1":"=R00" (result_lo), "=R01" (result_hi), + "=m" (*mem):"R10" (__NR_FAST_cmpxchg64), "R00" (mem), + "R02" (oldval_lo), "R03" (oldval_hi), + "R04" (newval_lo), "R05" (newval_hi), + "m" (*mem):"r20", "r21", "r22", "r23", "r24", "r25", + "r26", "r27", "r28", "r29", "memory"); + return ((uint64_t) result_hi) << 32 | result_lo; +#endif +} + +/* This non-existent symbol is called for sizes other than "4" and "8", + indicating a bug in the caller. */ +extern int __atomic_error_bad_argument_size (void) + __attribute__ ((warning ("sizeof atomic argument not 4 or 8"))); + + +#define atomic_val_compare_and_exchange(mem, o, n) \ + ({ \ + (__typeof(*(mem)))(__typeof(*(mem)-*(mem))) \ + ((sizeof(*(mem)) == 8) ? \ + atomic_val_compare_and_exchange_8( \ + (volatile int64_t*)(mem), (__typeof((o)-(o)))(o), \ + (__typeof((n)-(n)))(n)) : \ + (sizeof(*(mem)) == 4) ? \ + atomic_val_compare_and_exchange_4( \ + (volatile int*)(mem), (__typeof((o)-(o)))(o), \ + (__typeof((n)-(n)))(n)) : \ + __atomic_error_bad_argument_size()); \ + }) + +#define atomic_bool_compare_and_exchange(mem, o, n) \ + ({ \ + __typeof(o) __o = (o); \ + __builtin_expect( \ + __o == atomic_val_compare_and_exchange((mem), __o, (n)), 1); \ + }) + + +/* Loop with compare_and_exchange until we guess the correct value. + Normally "expr" will be an expression using __old and __value. */ +#define __atomic_update_cmpxchg(mem, value, expr) \ + ({ \ + __typeof(value) __value = (value); \ + __typeof(*(mem)) *__mem = (mem), __old = *__mem, __guess; \ + do { \ + __guess = __old; \ + __old = atomic_val_compare_and_exchange(__mem, __old, (expr)); \ + } while (__builtin_expect(__old != __guess, 0)); \ + __old; \ + }) + +#ifdef __tilegx__ + +/* Generic atomic op with 8- or 4-byte variant. + The _mask, _addend, and _expr arguments are ignored on tilegx. */ +#define __atomic_update(mem, value, op, _mask, _addend, _expr) \ + ({ \ + ((__typeof(*(mem))) \ + ((sizeof(*(mem)) == 8) ? (__typeof(*(mem)-*(mem)))__insn_##op( \ + (void *)(mem), (int64_t)(__typeof((value)-(value)))(value)) : \ + (sizeof(*(mem)) == 4) ? (int)__insn_##op##4( \ + (void *)(mem), (int32_t)(__typeof((value)-(value)))(value)) : \ + __atomic_error_bad_argument_size())); \ + }) + +#else + +/* This uses TILEPro's fast syscall support to atomically compute: + + int old = *ptr; + *ptr = (old & mask) + addend; + return old; + + This primitive can be used for atomic exchange, add, or, and. + Only 32-bit support is provided. */ +static __inline __attribute__ ((always_inline)) + int + __atomic_update_4 (volatile int *mem, int mask, int addend) +{ + int result; + __asm__ __volatile__ ("swint1":"=R00" (result), + "=m" (*mem):"R10" (__NR_FAST_atomic_update), + "R00" (mem), "R01" (mask), "R02" (addend), + "m" (*mem):"r20", "r21", "r22", "r23", "r24", "r25", + "r26", "r27", "r28", "r29", "memory"); + return result; +} + +/* Generic atomic op with 8- or 4-byte variant. + The _op argument is ignored on tilepro. */ +#define __atomic_update(mem, value, _op, mask, addend, expr) \ + ({ \ + (__typeof(*(mem)))(__typeof(*(mem)-*(mem))) \ + ((sizeof(*(mem)) == 8) ? \ + __atomic_update_cmpxchg((mem), (value), (expr)) : \ + (sizeof(*(mem)) == 4) ? \ + __atomic_update_4((volatile int*)(mem), (__typeof((mask)-(mask)))(mask), \ + (__typeof((addend)-(addend)))(addend)) : \ + __atomic_error_bad_argument_size()); \ + }) + +#endif /* __tilegx__ */ + + +#define atomic_exchange(mem, newvalue) \ + __atomic_update(mem, newvalue, exch, 0, newvalue, __value) + +#define atomic_add(mem, value) \ + __atomic_update(mem, value, fetchadd, -1, value, __old + __value) + +#define atomic_sub(mem, value) atomic_add((mem), -(value)) + +#define atomic_increment(mem) atomic_add((mem), 1) + +#define atomic_decrement(mem) atomic_add((mem), -1) + +#define atomic_and(mem, mask) \ + __atomic_update(mem, mask, fetchand, mask, 0, __old & __value) + +#define atomic_or(mem, mask) \ + __atomic_update(mem, mask, fetchor, ~mask, mask, __old | __value) + +#define atomic_bit_set(mem, bit) \ + ({ \ + __typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit); \ + __mask & atomic_or((mem), __mask); \ + }) + +#define atomic_bit_clear(mem, bit) \ + ({ \ + __typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit); \ + __mask & atomic_and((mem), ~__mask); \ + }) + +#ifdef __tilegx__ +/* Atomically store a new value to memory. + Note that you can freely use types of any size here, unlike the + other atomic routines, which require 32- or 64-bit types. + This accessor is provided for compatibility with TILEPro, which + required an explicit atomic operation for stores that needed + to be atomic with respect to other atomic methods in this header. */ +#define atomic_write(mem, value) ((void) (*(mem) = (value))) +#else +#define atomic_write(mem, value) \ + do { \ + __typeof(mem) __aw_mem = (mem); \ + __typeof(value) __aw_val = (value); \ + unsigned int *__aw_mem32, __aw_intval, __aw_val32, __aw_off, __aw_mask; \ + __aw_intval = (__typeof((value) - (value)))__aw_val; \ + switch (sizeof(*__aw_mem)) { \ + case 8: \ + __atomic_update_cmpxchg(__aw_mem, __aw_val, __value); \ + break; \ + case 4: \ + __atomic_update_4((int *)__aw_mem, 0, __aw_intval); \ + break; \ + case 2: \ + __aw_off = 8 * ((long)__aw_mem & 0x2); \ + __aw_mask = 0xffffU << __aw_off; \ + __aw_mem32 = (unsigned int *)((long)__aw_mem & ~0x2); \ + __aw_val32 = (__aw_intval << __aw_off) & __aw_mask; \ + __atomic_update_cmpxchg(__aw_mem32, __aw_val32, \ + (__old & ~__aw_mask) | __value); \ + break; \ + case 1: \ + __aw_off = 8 * ((long)__aw_mem & 0x3); \ + __aw_mask = 0xffU << __aw_off; \ + __aw_mem32 = (unsigned int *)((long)__aw_mem & ~0x3); \ + __aw_val32 = (__aw_intval << __aw_off) & __aw_mask; \ + __atomic_update_cmpxchg(__aw_mem32, __aw_val32, \ + (__old & ~__aw_mask) | __value); \ + break; \ + } \ + } while (0) +#endif + +/* Compiler barrier. + + This macro prevents loads or stores from being moved by the compiler + across the macro. Any loaded value that was loaded before this + macro must then be reloaded by the compiler. */ +#define atomic_compiler_barrier() __asm__ __volatile__("" ::: "memory") + +/* Full memory barrier. + + This macro has the semantics of atomic_compiler_barrer(), but also + ensures that previous stores are visible to other cores, and that + all previous loaded values have been placed into their target + register on this core. */ +#define atomic_full_barrier() __insn_mf() + +/* Read memory barrier. + + Ensure that all reads by this processor that occurred prior to the + read memory barrier have completed, and that no reads that occur + after the read memory barrier on this processor are initiated + before the barrier. + + On current TILE chips a read barrier is implemented as a full barrier, + but this may not be true in later versions of the architecture. + + See also atomic_acquire_barrier() for the appropriate idiom to use + to ensure no reads are lifted above an atomic lock instruction. */ +#define atomic_read_barrier() atomic_full_barrier() + +/* Write memory barrier. + + Ensure that all writes by this processor that occurred prior to the + write memory barrier have completed, and that no writes that occur + after the write memory barrier on this processor are initiated + before the barrier. + + On current TILE chips a write barrier is implemented as a full barrier, + but this may not be true in later versions of the architecture. + + See also atomic_release_barrier() for the appropriate idiom to use + to ensure all writes are complete prior to an atomic unlock instruction. */ +#define atomic_write_barrier() atomic_full_barrier() + +/* Lock acquisition barrier. + + Ensure that no load operations that follow this macro in the + program can issue prior to the barrier. Without such a barrier, + the compiler can reorder them to issue earlier, or the hardware can + issue them speculatively. The latter is not currently done in the + Tile microarchitecture, but using this operation improves + portability to future implementations. + + This operation is intended to be used as part of the "acquire" + path for locking, that is, when entering a critical section. + This should be done after the atomic operation that actually + acquires the lock, and in conjunction with a "control dependency" + that checks the atomic operation result to see if the lock was + in fact acquired. See the atomic_read_barrier() macro + for a heavier-weight barrier to use in certain unusual constructs, + or atomic_acquire_barrier_value() if no control dependency exists. */ +#define atomic_acquire_barrier() atomic_compiler_barrier() + +/* Lock release barrier. + + Ensure that no store operations that precede this macro in the + program complete subsequent to the barrier. Without such a + barrier, the compiler can reorder stores to issue later, or stores + can be still outstanding in the memory network. + + This operation is intended to be used as part of the "release" path + for locking, that is, when leaving a critical section. This should + be done before the operation (such as a store of zero) that + actually releases the lock. */ +#define atomic_release_barrier() atomic_write_barrier() + +/* Barrier until the read of a particular value is complete. + + This is occasionally useful when constructing certain locking + scenarios. For example, you might write a routine that issues an + atomic instruction to enter a critical section, then reads one or + more values within the critical section without checking to see if + the critical section was in fact acquired, and only later checks + the atomic instruction result to see if the lock was acquired. If + so the routine could properly release the lock and know that the + values that were read were valid. + + In this scenario, it is required to wait for the result of the + atomic instruction, even if the value itself is not checked. This + guarantees that if the atomic instruction succeeded in taking the lock, + the lock was held before any reads in the critical section issued. */ +#define atomic_acquire_barrier_value(val) \ + __asm__ __volatile__("move %0, %0" :: "r"(val)) + +/* Access the given variable in memory exactly once. + + In some contexts, an algorithm may need to force access to memory, + since otherwise the compiler may think it can optimize away a + memory load or store; for example, in a loop when polling memory to + see if another cpu has updated it yet. Generally this is only + required for certain very carefully hand-tuned algorithms; using it + unnecessarily may result in performance losses. + + A related use of this macro is to ensure that the compiler does not + rematerialize the value of "x" by reloading it from memory + unexpectedly; the "volatile" marking will prevent the compiler from + being able to rematerialize. This is helpful if an algorithm needs + to read a variable without locking, but needs it to have the same + value if it ends up being used several times within the algorithm. + + Note that multiple uses of this macro are guaranteed to be ordered, + i.e. the compiler will not reorder stores or loads that are wrapped + in atomic_access_once(). */ +#define atomic_access_once(x) (*(volatile __typeof(x) *)&(x)) + + +#endif /* !_ATOMIC_H_ */ diff --git a/libgcc/config/tilepro/linux-unwind.h b/libgcc/config/tilepro/linux-unwind.h new file mode 100644 index 00000000000..0ed662c6598 --- /dev/null +++ b/libgcc/config/tilepro/linux-unwind.h @@ -0,0 +1,100 @@ +/* DWARF2 EH unwinding support for TILEPro. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#ifndef inhibit_libc + +#include <arch/abi.h> +#include <signal.h> +#include <sys/ucontext.h> +#include <linux/unistd.h> + +/* Macro to define a copy of the kernel's __rt_sigreturn function + (in arch/tile/kernel/entry.S). If that function is changed, + this one needs to be changed to match it. */ +#define _sigreturn_asm(REG, NR) asm( \ + ".pushsection .text.__rt_sigreturn,\"a\"\n" \ + ".global __rt_sigreturn\n" \ + ".type __rt_sigreturn,@function\n" \ + "__rt_sigreturn:\n" \ + "moveli " #REG ", " #NR "\n" \ + "swint1\n" \ + ".size __rt_sigreturn, . - __rt_sigreturn\n" \ + ".popsection") +#define sigreturn_asm(REG, NR) _sigreturn_asm(REG, NR) +sigreturn_asm (TREG_SYSCALL_NR_NAME, __NR_rt_sigreturn); +#define SIGRETURN_LEN 16 +extern char __rt_sigreturn[]; + +#define MD_FALLBACK_FRAME_STATE_FOR tile_fallback_frame_state + +static _Unwind_Reason_Code +tile_fallback_frame_state (struct _Unwind_Context *context, + _Unwind_FrameState *fs) +{ + unsigned char *pc = context->ra; + struct sigcontext *sc; + long new_cfa; + int i; + + struct rt_sigframe { + unsigned char save_area[C_ABI_SAVE_AREA_SIZE]; + struct siginfo info; + struct ucontext uc; + } *rt_; + + /* Return if this is not a signal handler. */ + if (memcmp (pc, __rt_sigreturn, SIGRETURN_LEN) != 0) + return _URC_END_OF_STACK; + + /* It was a signal handler; update the reported PC to point to our + copy, since that will be findable with dladdr() and therefore + somewhat easier to help understand what actually happened. */ + context->ra = __rt_sigreturn; + + rt_ = context->cfa; + sc = &rt_->uc.uc_mcontext; + + new_cfa = sc->sp; + fs->regs.cfa_how = CFA_REG_OFFSET; + fs->regs.cfa_reg = STACK_POINTER_REGNUM; + fs->regs.cfa_offset = new_cfa - (long) context->cfa; + + for (i = 0; i < 56; ++i) + { + fs->regs.reg[i].how = REG_SAVED_OFFSET; + fs->regs.reg[i].loc.offset + = (long)&sc->gregs[i] - new_cfa; + } + + fs->regs.reg[56].how = REG_SAVED_OFFSET; + fs->regs.reg[56].loc.offset = (long)&sc->pc - new_cfa; + fs->retaddr_column = 56; + fs->signal_frame = 1; + + return _URC_NO_REASON; +} + +#endif /* ifdef inhibit_libc */ diff --git a/libgcc/config/tilepro/sfp-machine.h b/libgcc/config/tilepro/sfp-machine.h new file mode 100644 index 00000000000..ac5b8285e2e --- /dev/null +++ b/libgcc/config/tilepro/sfp-machine.h @@ -0,0 +1,56 @@ +#define _FP_W_TYPE_SIZE 32 +#define _FP_W_TYPE unsigned long +#define _FP_WS_TYPE signed long +#define _FP_I_TYPE long + +/* The type of the result of a floating point comparison. This must + match `__libgcc_cmp_return__' in GCC for the target. */ +typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__))); +#define CMPtype __gcc_CMPtype + +#define _FP_MUL_MEAT_S(R,X,Y) \ + _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm) +#define _FP_MUL_MEAT_D(R,X,Y) \ + _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) +#define _FP_MUL_MEAT_Q(R,X,Y) \ + _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) + +#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y) +#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y) +#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y) + +#define _FP_NANFRAC_S _FP_QNANBIT_S +#define _FP_NANFRAC_D _FP_QNANBIT_D, 0 +#define _FP_NANFRAC_Q _FP_QNANBIT_Q, 0, 0, 0 +#define _FP_NANSIGN_S 1 +#define _FP_NANSIGN_D 1 +#define _FP_NANSIGN_Q 1 + +#define _FP_KEEPNANFRACP 1 + +#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ + do { \ + if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \ + && !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \ + { \ + R##_s = Y##_s; \ + _FP_FRAC_COPY_##wc(R,Y); \ + } \ + else \ + { \ + R##_s = X##_s; \ + _FP_FRAC_COPY_##wc(R,X); \ + } \ + R##_c = FP_CLS_NAN; \ + } while (0) + +#define __LITTLE_ENDIAN 1234 +#define __BIG_ENDIAN 4321 + +#define __BYTE_ORDER __LITTLE_ENDIAN + +/* Define ALIASNAME as a strong alias for NAME. */ +# define strong_alias(name, aliasname) _strong_alias(name, aliasname) +# define _strong_alias(name, aliasname) \ + extern __typeof (name) aliasname __attribute__ ((alias (#name))); + diff --git a/libgcc/config/tilepro/softdivide.c b/libgcc/config/tilepro/softdivide.c new file mode 100644 index 00000000000..f09b9a29406 --- /dev/null +++ b/libgcc/config/tilepro/softdivide.c @@ -0,0 +1,354 @@ +/* Division and remainder routines for Tile. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file 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. + + This file 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. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + <http://www.gnu.org/licenses/>. */ + +typedef int int32_t; +typedef unsigned uint32_t; +typedef long long int64_t; +typedef unsigned long long uint64_t; + +/* Raise signal 8 (SIGFPE) with code 1 (FPE_INTDIV). */ +static inline void +raise_intdiv (void) +{ + asm ("{ raise; moveli zero, 8 + (1 << 6) }"); +} + + +#ifndef __tilegx__ +/*__udivsi3 - 32 bit integer unsigned divide */ +static inline uint32_t __attribute__ ((always_inline)) +__udivsi3_inline (uint32_t dividend, uint32_t divisor) +{ + /* Divide out any power of two factor from dividend and divisor. + Note that when dividing by zero the divisor will remain zero, + which is all we need to detect that case below. */ + const int power_of_two_factor = __insn_ctz (divisor); + divisor >>= power_of_two_factor; + dividend >>= power_of_two_factor; + + /* Checks for division by power of two or division by zero. */ + if (divisor <= 1) + { + if (divisor == 0) + { + raise_intdiv (); + return 0; + } + return dividend; + } + + /* Compute (a / b) by repeatedly finding the largest N + such that (b << N) <= a. For each such N, set bit N in the + quotient, subtract (b << N) from a, and keep going. Think of this as + the reverse of the "shift-and-add" that a multiply does. The values + of N are precisely those shift counts. + + Finding N is easy. First, use clz(b) - clz(a) to find the N + that lines up the high bit of (b << N) with the high bit of a. + Any larger value of N would definitely make (b << N) > a, + which is too big. + + Then, if (b << N) > a (because it has larger low bits), decrement + N by one. This adjustment will definitely make (b << N) less + than a, because a's high bit is now one higher than b's. */ + + /* Precomputing the max_ values allows us to avoid a subtract + in the inner loop and just right shift by clz(remainder). */ + const int divisor_clz = __insn_clz (divisor); + const uint32_t max_divisor = divisor << divisor_clz; + const uint32_t max_qbit = 1 << divisor_clz; + + uint32_t quotient = 0; + uint32_t remainder = dividend; + + while (remainder >= divisor) + { + int shift = __insn_clz (remainder); + uint32_t scaled_divisor = max_divisor >> shift; + uint32_t quotient_bit = max_qbit >> shift; + + int too_big = (scaled_divisor > remainder); + scaled_divisor >>= too_big; + quotient_bit >>= too_big; + remainder -= scaled_divisor; + quotient |= quotient_bit; + } + return quotient; +} +#endif /* !__tilegx__ */ + + +/* __udivdi3 - 64 bit integer unsigned divide */ +static inline uint64_t __attribute__ ((always_inline)) +__udivdi3_inline (uint64_t dividend, uint64_t divisor) +{ + /* Divide out any power of two factor from dividend and divisor. + Note that when dividing by zero the divisor will remain zero, + which is all we need to detect that case below. */ + const int power_of_two_factor = __builtin_ctzll (divisor); + divisor >>= power_of_two_factor; + dividend >>= power_of_two_factor; + + /* Checks for division by power of two or division by zero. */ + if (divisor <= 1) + { + if (divisor == 0) + { + raise_intdiv (); + return 0; + } + return dividend; + } + +#ifndef __tilegx__ + if (((uint32_t) (dividend >> 32) | ((uint32_t) (divisor >> 32))) == 0) + { + /* Operands both fit in 32 bits, so use faster 32 bit algorithm. */ + return __udivsi3_inline ((uint32_t) dividend, (uint32_t) divisor); + } +#endif /* !__tilegx__ */ + + /* See algorithm description in __udivsi3 */ + + const int divisor_clz = __builtin_clzll (divisor); + const uint64_t max_divisor = divisor << divisor_clz; + const uint64_t max_qbit = 1ULL << divisor_clz; + + uint64_t quotient = 0; + uint64_t remainder = dividend; + + while (remainder >= divisor) + { + int shift = __builtin_clzll (remainder); + uint64_t scaled_divisor = max_divisor >> shift; + uint64_t quotient_bit = max_qbit >> shift; + + int too_big = (scaled_divisor > remainder); + scaled_divisor >>= too_big; + quotient_bit >>= too_big; + remainder -= scaled_divisor; + quotient |= quotient_bit; + } + return quotient; +} + + +#ifndef __tilegx__ +/* __umodsi3 - 32 bit integer unsigned modulo */ +static inline uint32_t __attribute__ ((always_inline)) +__umodsi3_inline (uint32_t dividend, uint32_t divisor) +{ + /* Shortcircuit mod by a power of two (and catch mod by zero). */ + const uint32_t mask = divisor - 1; + if ((divisor & mask) == 0) + { + if (divisor == 0) + { + raise_intdiv (); + return 0; + } + return dividend & mask; + } + + /* We compute the remainder (a % b) by repeatedly subtracting off + multiples of b from a until a < b. The key is that subtracting + off a multiple of b does not affect the result mod b. + + To make the algorithm run efficiently, we need to subtract + off a large multiple of b at each step. We subtract the largest + (b << N) that is <= a. + + Finding N is easy. First, use clz(b) - clz(a) to find the N + that lines up the high bit of (b << N) with the high bit of a. + Any larger value of N would definitely make (b << N) > a, + which is too big. + + Then, if (b << N) > a (because it has larger low bits), decrement + N by one. This adjustment will definitely make (b << N) less + than a, because a's high bit is now one higher than b's. */ + const uint32_t max_divisor = divisor << __insn_clz (divisor); + + uint32_t remainder = dividend; + while (remainder >= divisor) + { + const int shift = __insn_clz (remainder); + uint32_t scaled_divisor = max_divisor >> shift; + scaled_divisor >>= (scaled_divisor > remainder); + remainder -= scaled_divisor; + } + + return remainder; +} +#endif /* !__tilegx__ */ + + +/* __umoddi3 - 64 bit integer unsigned modulo */ +static inline uint64_t __attribute__ ((always_inline)) +__umoddi3_inline (uint64_t dividend, uint64_t divisor) +{ +#ifndef __tilegx__ + if (((uint32_t) (dividend >> 32) | ((uint32_t) (divisor >> 32))) == 0) + { + /* Operands both fit in 32 bits, so use faster 32 bit algorithm. */ + return __umodsi3_inline ((uint32_t) dividend, (uint32_t) divisor); + } +#endif /* !__tilegx__ */ + + /* Shortcircuit mod by a power of two (and catch mod by zero). */ + const uint64_t mask = divisor - 1; + if ((divisor & mask) == 0) + { + if (divisor == 0) + { + raise_intdiv (); + return 0; + } + return dividend & mask; + } + + /* See algorithm description in __umodsi3 */ + const uint64_t max_divisor = divisor << __builtin_clzll (divisor); + + uint64_t remainder = dividend; + while (remainder >= divisor) + { + const int shift = __builtin_clzll (remainder); + uint64_t scaled_divisor = max_divisor >> shift; + scaled_divisor >>= (scaled_divisor > remainder); + remainder -= scaled_divisor; + } + + return remainder; +} + + +uint32_t __udivsi3 (uint32_t dividend, uint32_t divisor); +#ifdef L_tile_udivsi3 +uint32_t +__udivsi3 (uint32_t dividend, uint32_t divisor) +{ +#ifndef __tilegx__ + return __udivsi3_inline (dividend, divisor); +#else /* !__tilegx__ */ + uint64_t n = __udivdi3_inline (((uint64_t) dividend), ((uint64_t) divisor)); + return (uint32_t) n; +#endif /* !__tilegx__ */ +} +#endif + +#define ABS(x) ((x) >= 0 ? (x) : -(x)) + +int32_t __divsi3 (int32_t dividend, int32_t divisor); +#ifdef L_tile_divsi3 +/* __divsi3 - 32 bit integer signed divide */ +int32_t +__divsi3 (int32_t dividend, int32_t divisor) +{ +#ifndef __tilegx__ + uint32_t n = __udivsi3_inline (ABS (dividend), ABS (divisor)); +#else /* !__tilegx__ */ + uint64_t n = + __udivdi3_inline (ABS ((int64_t) dividend), ABS ((int64_t) divisor)); +#endif /* !__tilegx__ */ + if ((dividend ^ divisor) < 0) + n = -n; + return (int32_t) n; +} +#endif + + +uint64_t __udivdi3 (uint64_t dividend, uint64_t divisor); +#ifdef L_tile_udivdi3 +uint64_t +__udivdi3 (uint64_t dividend, uint64_t divisor) +{ + return __udivdi3_inline (dividend, divisor); +} +#endif + +/*__divdi3 - 64 bit integer signed divide */ +int64_t __divdi3 (int64_t dividend, int64_t divisor); +#ifdef L_tile_divdi3 +int64_t +__divdi3 (int64_t dividend, int64_t divisor) +{ + uint64_t n = __udivdi3_inline (ABS (dividend), ABS (divisor)); + if ((dividend ^ divisor) < 0) + n = -n; + return (int64_t) n; +} +#endif + + +uint32_t __umodsi3 (uint32_t dividend, uint32_t divisor); +#ifdef L_tile_umodsi3 +uint32_t +__umodsi3 (uint32_t dividend, uint32_t divisor) +{ +#ifndef __tilegx__ + return __umodsi3_inline (dividend, divisor); +#else /* !__tilegx__ */ + return __umoddi3_inline ((uint64_t) dividend, (uint64_t) divisor); +#endif /* !__tilegx__ */ +} +#endif + + +/* __modsi3 - 32 bit integer signed modulo */ +int32_t __modsi3 (int32_t dividend, int32_t divisor); +#ifdef L_tile_modsi3 +int32_t +__modsi3 (int32_t dividend, int32_t divisor) +{ +#ifndef __tilegx__ + uint32_t remainder = __umodsi3_inline (ABS (dividend), ABS (divisor)); +#else /* !__tilegx__ */ + uint64_t remainder = + __umoddi3_inline (ABS ((int64_t) dividend), ABS ((int64_t) divisor)); +#endif /* !__tilegx__ */ + return (int32_t) ((dividend >= 0) ? remainder : -remainder); +} +#endif + + +uint64_t __umoddi3 (uint64_t dividend, uint64_t divisor); +#ifdef L_tile_umoddi3 +uint64_t +__umoddi3 (uint64_t dividend, uint64_t divisor) +{ + return __umoddi3_inline (dividend, divisor); +} +#endif + + +/* __moddi3 - 64 bit integer signed modulo */ +int64_t __moddi3 (int64_t dividend, int64_t divisor); +#ifdef L_tile_moddi3 +int64_t +__moddi3 (int64_t dividend, int64_t divisor) +{ + uint64_t remainder = __umoddi3_inline (ABS (dividend), ABS (divisor)); + return (int64_t) ((dividend >= 0) ? remainder : -remainder); +} +#endif diff --git a/libgcc/config/tilepro/softmpy.S b/libgcc/config/tilepro/softmpy.S new file mode 100644 index 00000000000..eb571f65a74 --- /dev/null +++ b/libgcc/config/tilepro/softmpy.S @@ -0,0 +1,95 @@ +/* 64-bit multiplication support for TILEPro. + Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file 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. + + This file 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. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + <http://www.gnu.org/licenses/>. */ + +/* 64-bit multiplication support. */ + + .file "softmpy.S" + +/* Parameters */ +#define lo0 r9 /* low 32 bits of n0 */ +#define hi0 r1 /* high 32 bits of n0 */ +#define lo1 r2 /* low 32 bits of n1 */ +#define hi1 r3 /* high 32 bits of n1 */ + +/* temps */ +#define result1_a r4 +#define result1_b r5 + +#define tmp0 r6 +#define tmp0_left_16 r7 +#define tmp1 r8 + + .section .text.__muldi3, "ax" + .align 8 + .globl __muldi3 + .type __muldi3, @function +__muldi3: + { + move lo0, r0 /* so we can write "out r0" while "in r0" alive */ + mulhl_uu tmp0, lo1, r0 + } + { + mulll_uu result1_a, lo1, hi0 + } + { + move tmp1, tmp0 + mulhla_uu tmp0, lo0, lo1 + } + { + mulhlsa_uu result1_a, lo1, hi0 + } + { + mulll_uu result1_b, lo0, hi1 + slt_u tmp1, tmp0, tmp1 + } + { + mulhlsa_uu result1_a, lo0, hi1 + shli r0, tmp0, 16 + } + { + move tmp0_left_16, r0 + mulhha_uu result1_b, lo0, lo1 + } + { + mullla_uu r0, lo1, lo0 + shli tmp1, tmp1, 16 + } + { + mulhlsa_uu result1_b, hi0, lo1 + inthh tmp1, tmp1, tmp0 + } + { + mulhlsa_uu result1_a, hi1, lo0 + slt_u tmp0, r0, tmp0_left_16 + } + /* NOTE: this will stall for a cycle here. Oh well. */ + { + add r1, tmp0, tmp1 + add result1_a, result1_a, result1_b + } + { + add r1, r1, result1_a + jrp lr + } + .size __muldi3,.-__muldi3 diff --git a/libgcc/config/tilepro/t-crtstuff b/libgcc/config/tilepro/t-crtstuff new file mode 100644 index 00000000000..eddc45ce9d8 --- /dev/null +++ b/libgcc/config/tilepro/t-crtstuff @@ -0,0 +1,4 @@ +# crtend*.o cannot be compiled without -fno-asynchronous-unwind-tables, +# because then __FRAME_END__ might not be the last thing in .eh_frame +# section. +CRTSTUFF_T_CFLAGS += -fno-asynchronous-unwind-tables diff --git a/libgcc/config/tilepro/t-tilepro b/libgcc/config/tilepro/t-tilepro new file mode 100644 index 00000000000..eb6894ce115 --- /dev/null +++ b/libgcc/config/tilepro/t-tilepro @@ -0,0 +1,33 @@ +LIB2ADD += \ + $(srcdir)/config/tilepro/softmpy.S \ + $(srcdir)/config/tilepro/atomic.c + +LIB2FUNCS_EXCLUDE += \ + _divdi3 \ + _moddi3 \ + _muldi3 \ + _udivdi3 \ + _umoddi3 + +SOFTDIVIDE_FUNCS := \ + _tile_udivsi3 \ + _tile_divsi3 \ + _tile_udivdi3 \ + _tile_divdi3 \ + _tile_umodsi3 \ + _tile_modsi3 \ + _tile_umoddi3 \ + _tile_moddi3 + +softdivide-o = $(patsubst %,%$(objext),$(SOFTDIVIDE_FUNCS)) +$(softdivide-o): %$(objext): $(srcdir)/config/tilepro/softdivide.c + $(gcc_compile) -ffunction-sections -DMAYBE_STATIC= -DL$* -c $< \ + $(vis_hide) +libgcc-objects += $(softdivide-o) + +ifeq ($(enable_shared),yes) +softdivide-s-o = $(patsubst %,%_s$(objext),$(SOFTDIVIDE_FUNCS)) +$(softdivide-s-o): %_s$(objext): $(srcdir)/config/tilepro/softdivide.c + $(gcc_s_compile) -ffunction-sections -DMAYBE_STATIC= -DL$* -c $< +libgcc-s-objects += $(softdivide-s-o) +endif diff --git a/libgo/config.h.in b/libgo/config.h.in index 44ae4282e18..ae81ff45b47 100644 --- a/libgo/config.h.in +++ b/libgo/config.h.in @@ -105,10 +105,18 @@ /* Define to 1 if <math.h> defines struct exception */ #undef HAVE_STRUCT_EXCEPTION +/* Define to 1 if the compiler provides the __sync_add_and_fetch function for + uint64 */ +#undef HAVE_SYNC_ADD_AND_FETCH_8 + /* Define to 1 if the compiler provides the __sync_bool_compare_and_swap function for uint32 */ #undef HAVE_SYNC_BOOL_COMPARE_AND_SWAP_4 +/* Define to 1 if the compiler provides the __sync_bool_compare_and_swap + function for uint64 */ +#undef HAVE_SYNC_BOOL_COMPARE_AND_SWAP_8 + /* Define to 1 if the compiler provides the __sync_fetch_and_add function for uint32 */ #undef HAVE_SYNC_FETCH_AND_ADD_4 @@ -198,6 +206,9 @@ /* Define if setcontext clobbers TLS variables */ #undef SETCONTEXT_CLOBBERS_TLS +/* The size of `void *', as computed by sizeof. */ +#undef SIZEOF_VOID_P + /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS diff --git a/libgo/configure b/libgo/configure index a93b0515dd9..1ce89d22360 100755 --- a/libgo/configure +++ b/libgo/configure @@ -14667,6 +14667,35 @@ $as_echo "#define HAVE_SYNC_BOOL_COMPARE_AND_SWAP_4 1" >>confdefs.h fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __sync_bool_compare_and_swap_8" >&5 +$as_echo_n "checking for __sync_bool_compare_and_swap_8... " >&6; } +if test "${libgo_cv_func___sync_bool_compare_and_swap_8+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +typedef unsigned int uint64 __attribute__ ((mode (DI))); +uint64 i; +int main() { return __sync_bool_compare_and_swap (&i, 0, 1); } + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + libgo_cv_func___sync_bool_compare_and_swap_8=yes +else + libgo_cv_func___sync_bool_compare_and_swap_8=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgo_cv_func___sync_bool_compare_and_swap_8" >&5 +$as_echo "$libgo_cv_func___sync_bool_compare_and_swap_8" >&6; } +if test "$libgo_cv_func___sync_bool_compare_and_swap_8" = "yes"; then + +$as_echo "#define HAVE_SYNC_BOOL_COMPARE_AND_SWAP_8 1" >>confdefs.h + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __sync_fetch_and_add_4" >&5 $as_echo_n "checking for __sync_fetch_and_add_4... " >&6; } if test "${libgo_cv_func___sync_fetch_and_add_4+set}" = set; then : @@ -14696,6 +14725,35 @@ $as_echo "#define HAVE_SYNC_FETCH_AND_ADD_4 1" >>confdefs.h fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __sync_add_and_fetch_8" >&5 +$as_echo_n "checking for __sync_add_and_fetch_8... " >&6; } +if test "${libgo_cv_func___sync_add_and_fetch_8+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +typedef unsigned int uint64 __attribute__ ((mode (DI))); +uint64 i; +int main() { return __sync_add_and_fetch (&i, 1); } + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + libgo_cv_func___sync_add_and_fetch_8=yes +else + libgo_cv_func___sync_add_and_fetch_8=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgo_cv_func___sync_add_and_fetch_8" >&5 +$as_echo "$libgo_cv_func___sync_add_and_fetch_8" >&6; } +if test "$libgo_cv_func___sync_add_and_fetch_8" = "yes"; then + +$as_echo "#define HAVE_SYNC_ADD_AND_FETCH_8 1" >>confdefs.h + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports -minline-all-stringops" >&5 $as_echo_n "checking whether compiler supports -minline-all-stringops... " >&6; } if test "${libgo_cv_c_stringops+set}" = set; then : @@ -14818,12 +14876,51 @@ $as_echo_n "checking whether setcontext clobbers TLS variables... " >&6; } if test "${libgo_cv_lib_setcontext_clobbers_tls+set}" = set; then : $as_echo_n "(cached) " >&6 else - LIBS_hold="$LIBS" + CFLAGS_hold="$CFLAGS" +CFLAGS="$PTHREAD_CFLAGS" +LIBS_hold="$LIBS" LIBS="$LIBS $PTHREAD_LIBS" +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 +$as_echo_n "checking size of void *... " >&6; } +if test "${ac_cv_sizeof_void_p+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_void_p" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "cannot compute sizeof (void *) +See \`config.log' for more details." "$LINENO" 5; }; } + else + ac_cv_sizeof_void_p=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 +$as_echo "$ac_cv_sizeof_void_p" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_VOID_P $ac_cv_sizeof_void_p +_ACEOF + + +as_fn_arith $ac_cv_sizeof_void_p \* 8 && ptr_type_size=$as_val if test "$cross_compiling" = yes; then : - case "$target" in - x86_64*-*-solaris2.10) libgo_cv_lib_setcontext_clobbers_tls=yes ;; - *) libgo_cv_lib_setcontext_clobbers_tls=no ;; + case "$target:$ptr_type_size" in + i?86-*-solaris2.1[01]:64 | x86_64*-*-solaris2.1[01]:64) + libgo_cv_lib_setcontext_clobbers_tls=yes ;; + *) + libgo_cv_lib_setcontext_clobbers_tls=no ;; esac else @@ -14900,6 +14997,7 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi +CFLAGS="$CFLAGS_hold" LIBS="$LIBS_hold" fi diff --git a/libgo/configure.ac b/libgo/configure.ac index 67789032868..c3c1f5e9452 100644 --- a/libgo/configure.ac +++ b/libgo/configure.ac @@ -497,6 +497,20 @@ if test "$libgo_cv_func___sync_bool_compare_and_swap_4" = "yes"; then [Define to 1 if the compiler provides the __sync_bool_compare_and_swap function for uint32]) fi +AC_CACHE_CHECK([for __sync_bool_compare_and_swap_8], +[libgo_cv_func___sync_bool_compare_and_swap_8], +[AC_LINK_IFELSE([ +typedef unsigned int uint64 __attribute__ ((mode (DI))); +uint64 i; +int main() { return __sync_bool_compare_and_swap (&i, 0, 1); } +], +[libgo_cv_func___sync_bool_compare_and_swap_8=yes], +[libgo_cv_func___sync_bool_compare_and_swap_8=no])]) +if test "$libgo_cv_func___sync_bool_compare_and_swap_8" = "yes"; then + AC_DEFINE(HAVE_SYNC_BOOL_COMPARE_AND_SWAP_8, 1, + [Define to 1 if the compiler provides the __sync_bool_compare_and_swap function for uint64]) +fi + AC_CACHE_CHECK([for __sync_fetch_and_add_4], [libgo_cv_func___sync_fetch_and_add_4], [AC_LINK_IFELSE([ @@ -511,6 +525,20 @@ if test "$libgo_cv_func___sync_fetch_and_add_4" = "yes"; then [Define to 1 if the compiler provides the __sync_fetch_and_add function for uint32]) fi +AC_CACHE_CHECK([for __sync_add_and_fetch_8], +[libgo_cv_func___sync_add_and_fetch_8], +[AC_LINK_IFELSE([ +typedef unsigned int uint64 __attribute__ ((mode (DI))); +uint64 i; +int main() { return __sync_add_and_fetch (&i, 1); } +], +[libgo_cv_func___sync_add_and_fetch_8=yes], +[libgo_cv_func___sync_add_and_fetch_8=no])]) +if test "$libgo_cv_func___sync_add_and_fetch_8" = "yes"; then + AC_DEFINE(HAVE_SYNC_ADD_AND_FETCH_8, 1, + [Define to 1 if the compiler provides the __sync_add_and_fetch function for uint64]) +fi + dnl For x86 we want to use the -minline-all-stringops option to avoid dnl forcing a stack split when calling memcpy and friends. AC_CACHE_CHECK([whether compiler supports -minline-all-stringops], @@ -584,8 +612,12 @@ fi dnl See whether setcontext changes the value of TLS variables. AC_CACHE_CHECK([whether setcontext clobbers TLS variables], [libgo_cv_lib_setcontext_clobbers_tls], -[LIBS_hold="$LIBS" +[CFLAGS_hold="$CFLAGS" +CFLAGS="$PTHREAD_CFLAGS" +LIBS_hold="$LIBS" LIBS="$LIBS $PTHREAD_LIBS" +AC_CHECK_SIZEOF([void *]) +AS_VAR_ARITH([ptr_type_size], [$ac_cv_sizeof_void_p \* 8]) AC_RUN_IFELSE( [AC_LANG_SOURCE([ #include <pthread.h> @@ -650,11 +682,14 @@ main () ])], [libgo_cv_lib_setcontext_clobbers_tls=no], [libgo_cv_lib_setcontext_clobbers_tls=yes], -[case "$target" in - x86_64*-*-solaris2.10) libgo_cv_lib_setcontext_clobbers_tls=yes ;; - *) libgo_cv_lib_setcontext_clobbers_tls=no ;; +[case "$target:$ptr_type_size" in + i?86-*-solaris2.1[[01]]:64 | x86_64*-*-solaris2.1[[01]]:64) + libgo_cv_lib_setcontext_clobbers_tls=yes ;; + *) + libgo_cv_lib_setcontext_clobbers_tls=no ;; esac ]) +CFLAGS="$CFLAGS_hold" LIBS="$LIBS_hold" ]) if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then diff --git a/libgo/go/net/multicast_test.go b/libgo/go/net/multicast_test.go index bf0fe4d8d0a..f62580de66e 100644 --- a/libgo/go/net/multicast_test.go +++ b/libgo/go/net/multicast_test.go @@ -33,7 +33,7 @@ func TestListenMulticastUDP(t *testing.T) { case "netbsd", "openbsd", "plan9", "windows": return case "linux": - if runtime.GOARCH == "arm" { + if runtime.GOARCH == "arm" || runtime.GOARCH == "alpha" { return } } diff --git a/libgo/go/sync/atomic/atomic_test.go b/libgo/go/sync/atomic/atomic_test.go index ad7557650f6..a06c85c3a9e 100644 --- a/libgo/go/sync/atomic/atomic_test.go +++ b/libgo/go/sync/atomic/atomic_test.go @@ -636,6 +636,7 @@ func init() { // 64-bit system; clear uintptr tests hammer32[2].f = nil hammer32[5].f = nil + hammer32[6].f = nil } } @@ -760,6 +761,7 @@ func init() { // 32-bit system; clear uintptr tests hammer64[2].f = nil hammer64[5].f = nil + hammer64[6].f = nil } } diff --git a/libgo/runtime/chan.c b/libgo/runtime/chan.c index 4fc2d603659..24be9500a8b 100644 --- a/libgo/runtime/chan.c +++ b/libgo/runtime/chan.c @@ -409,11 +409,20 @@ closed: void __go_send_small(ChanType *t, Hchan* c, uint64 val) { - byte b[sizeof(uint64)]; - - runtime_memclr(b, sizeof(uint64)); - __builtin_memcpy(b, &val, t->__element_type->__size); - runtime_chansend(t, c, b, nil); + union + { + byte b[sizeof(uint64)]; + uint64 v; + } u; + byte *p; + + u.v = val; +#ifndef WORDS_BIGENDIAN + p = u.b; +#else + p = u.b + sizeof(uint64) - t->__element_type->__size; +#endif + runtime_chansend(t, c, p, nil); } // The compiler generates a call to __go_send_big to send a value @@ -433,9 +442,15 @@ __go_receive_small(ChanType *t, Hchan* c) byte b[sizeof(uint64)]; uint64 v; } u; + byte *p; u.v = 0; - runtime_chanrecv(t, c, u.b, nil, nil); +#ifndef WORDS_BIGENDIAN + p = u.b; +#else + p = u.b + sizeof(uint64) - t->__element_type->__size; +#endif + runtime_chanrecv(t, c, p, nil, nil); return u.v; } @@ -654,8 +669,8 @@ newselect(int32 size, Select **selp) sel->tcase = size; sel->ncase = 0; - sel->pollorder = (void*)(sel->scase + size); - sel->lockorder = (void*)(sel->pollorder + size); + sel->lockorder = (void*)(sel->scase + size); + sel->pollorder = (void*)(sel->lockorder + size); *selp = sel; if(debug) diff --git a/libgo/runtime/go-recover.c b/libgo/runtime/go-recover.c index 7101d518ade..d6403e00d39 100644 --- a/libgo/runtime/go-recover.c +++ b/libgo/runtime/go-recover.c @@ -43,6 +43,14 @@ __go_can_recover (const void* retaddr) such as an instruction to adjust the stack pointer. */ ret = (const char *) retaddr; + +#ifdef __sparc__ + /* On SPARC the address we get, from __builtin_return_address, is + the address of the call instruction. Adjust forward, also + skipping the delayed instruction following the call. */ + ret += 8; +#endif + dret = (const char *) d->__retaddr; return ret <= dret && ret + 16 >= dret; } diff --git a/libgo/runtime/go-reflect-call.c b/libgo/runtime/go-reflect-call.c index 27177e2fc73..a818dba438e 100644 --- a/libgo/runtime/go-reflect-call.c +++ b/libgo/runtime/go-reflect-call.c @@ -5,6 +5,7 @@ license that can be found in the LICENSE file. */ #include <stdio.h> +#include <stdint.h> #include <stdlib.h> #include "ffi.h" @@ -326,6 +327,28 @@ go_results_size (const struct __go_func_type *func) types = (const struct __go_type_descriptor **) func->__out.__values; + /* A single integer return value is always promoted to a full + word. */ + if (count == 1) + { + switch (types[0]->__code & GO_CODE_MASK) + { + case GO_BOOL: + case GO_INT8: + case GO_INT16: + case GO_INT32: + case GO_UINT8: + case GO_UINT16: + case GO_UINT32: + case GO_INT: + case GO_UINT: + return sizeof (ffi_arg); + + default: + break; + } + } + off = 0; maxalign = 0; for (i = 0; i < count; ++i) @@ -362,6 +385,81 @@ go_set_results (const struct __go_func_type *func, unsigned char *call_result, types = (const struct __go_type_descriptor **) func->__out.__values; + /* A single integer return value is always promoted to a full + word. */ + if (count == 1) + { + switch (types[0]->__code & GO_CODE_MASK) + { + case GO_BOOL: + case GO_INT8: + case GO_INT16: + case GO_INT32: + case GO_UINT8: + case GO_UINT16: + case GO_UINT32: + case GO_INT: + case GO_UINT: + { + union + { + unsigned char buf[sizeof (ffi_arg)]; + ffi_arg v; + } u; + ffi_arg v; + + __builtin_memcpy (&u.buf, call_result, sizeof (ffi_arg)); + v = u.v; + + switch (types[0]->__size) + { + case 1: + { + uint8_t b; + + b = (uint8_t) v; + __builtin_memcpy (results[0], &b, 1); + } + break; + + case 2: + { + uint16_t s; + + s = (uint16_t) v; + __builtin_memcpy (results[0], &s, 2); + } + break; + + case 4: + { + uint32_t w; + + w = (uint32_t) v; + __builtin_memcpy (results[0], &w, 4); + } + break; + + case 8: + { + uint64_t d; + + d = (uint64_t) v; + __builtin_memcpy (results[0], &d, 8); + } + break; + + default: + abort (); + } + } + return; + + default: + break; + } + } + off = 0; for (i = 0; i < count; ++i) { @@ -388,7 +486,7 @@ reflect_call (const struct __go_func_type *func_type, const void *func_addr, ffi_cif cif; unsigned char *call_result; - __go_assert (func_type->__common.__code == GO_FUNC); + __go_assert ((func_type->__common.__code & GO_CODE_MASK) == GO_FUNC); go_func_to_cif (func_type, is_interface, is_method, &cif); call_result = (unsigned char *) malloc (go_results_size (func_type)); diff --git a/libgo/runtime/mgc0.c b/libgo/runtime/mgc0.c index bd634d533e9..73c399df239 100644 --- a/libgo/runtime/mgc0.c +++ b/libgo/runtime/mgc0.c @@ -936,6 +936,10 @@ runtime_gc(int32 force) const byte *p; bool extra; + // Make sure all registers are saved on stack so that + // scanstack sees them. + __builtin_unwind_init(); + // The gc is turned off (via enablegc) until // the bootstrap has completed. // Also, malloc gets called in the guts diff --git a/libgo/runtime/proc.c b/libgo/runtime/proc.c index 42a5779bc99..609920a5619 100644 --- a/libgo/runtime/proc.c +++ b/libgo/runtime/proc.c @@ -309,6 +309,8 @@ static void runtime_mcall(void (*)(G*)) __attribute__ ((noinline)); static void runtime_mcall(void (*pfn)(G*)) { + M *mp; + G *gp; #ifndef USING_SPLIT_STACK int i; #endif @@ -317,28 +319,45 @@ runtime_mcall(void (*pfn)(G*)) // collector. __builtin_unwind_init(); - if(g == m->g0) + mp = m; + gp = g; + if(gp == mp->g0) runtime_throw("runtime: mcall called on m->g0 stack"); - if(g != nil) { + if(gp != nil) { #ifdef USING_SPLIT_STACK __splitstack_getcontext(&g->stack_context[0]); #else - g->gcnext_sp = &i; + gp->gcnext_sp = &i; #endif - g->fromgogo = false; - getcontext(&g->context); + gp->fromgogo = false; + getcontext(&gp->context); + + // When we return from getcontext, we may be running + // in a new thread. That means that m and g may have + // changed. They are global variables so we will + // reload them, but the addresses of m and g may be + // cached in our local stack frame, and those + // addresses may be wrong. Call functions to reload + // the values for this thread. + mp = runtime_m(); + gp = runtime_g(); } - if (g == nil || !g->fromgogo) { + if (gp == nil || !gp->fromgogo) { #ifdef USING_SPLIT_STACK - __splitstack_setcontext(&m->g0->stack_context[0]); + __splitstack_setcontext(&mp->g0->stack_context[0]); #endif - m->g0->entry = (byte*)pfn; - m->g0->param = g; - g = m->g0; - fixcontext(&m->g0->context); - setcontext(&m->g0->context); + mp->g0->entry = (byte*)pfn; + mp->g0->param = gp; + + // It's OK to set g directly here because this case + // can not occur if we got here via a setcontext to + // the getcontext call just above. + g = mp->g0; + + fixcontext(&mp->g0->context); + setcontext(&mp->g0->context); runtime_throw("runtime: mcall function returned"); } } @@ -909,7 +928,9 @@ runtime_mstart(void* mp) __splitstack_getcontext(&g->stack_context[0]); #else g->gcinitial_sp = ∓ - g->gcstack_size = StackMin; + // Setting gcstack_size to 0 is a marker meaning that gcinitial_sp + // is the top of the stack, not the bottom. + g->gcstack_size = 0; g->gcnext_sp = ∓ #endif getcontext(&g->context); @@ -1267,6 +1288,8 @@ __go_go(void (*fn)(void*), void* arg) #else sp = newg->gcinitial_sp; spsize = newg->gcstack_size; + if(spsize == 0) + runtime_throw("bad spsize in __go_go"); newg->gcnext_sp = sp; #endif } else { diff --git a/libgo/runtime/thread.c b/libgo/runtime/thread.c index d43e224ffb2..748a62d59f5 100644 --- a/libgo/runtime/thread.c +++ b/libgo/runtime/thread.c @@ -11,7 +11,7 @@ /* For targets which don't have the required sync support. Really these should be provided by gcc itself. FIXME. */ -#if !defined (HAVE_SYNC_BOOL_COMPARE_AND_SWAP_4) || !defined (HAVE_SYNC_FETCH_AND_ADD_4) +#if !defined (HAVE_SYNC_BOOL_COMPARE_AND_SWAP_4) || !defined (HAVE_SYNC_BOOL_COMPARE_AND_SWAP_8) || !defined (HAVE_SYNC_FETCH_AND_ADD_4) || !defined (HAVE_SYNC_ADD_AND_FETCH_8) static pthread_mutex_t sync_lock = PTHREAD_MUTEX_INITIALIZER; @@ -48,6 +48,37 @@ __sync_bool_compare_and_swap_4 (uint32* ptr, uint32 old, uint32 new) #endif +#ifndef HAVE_SYNC_BOOL_COMPARE_AND_SWAP_8 + +_Bool +__sync_bool_compare_and_swap_8 (uint64*, uint64, uint64) + __attribute__ ((visibility ("hidden"))); + +_Bool +__sync_bool_compare_and_swap_8 (uint64* ptr, uint64 old, uint64 new) +{ + int i; + _Bool ret; + + i = pthread_mutex_lock (&sync_lock); + __go_assert (i == 0); + + if (*ptr != old) + ret = 0; + else + { + *ptr = new; + ret = 1; + } + + i = pthread_mutex_unlock (&sync_lock); + __go_assert (i == 0); + + return ret; +} + +#endif + #ifndef HAVE_SYNC_FETCH_AND_ADD_4 uint32 @@ -74,6 +105,32 @@ __sync_fetch_and_add_4 (uint32* ptr, uint32 add) #endif +#ifndef HAVE_SYNC_ADD_AND_FETCH_8 + +uint64 +__sync_add_and_fetch_8 (uint64*, uint64) + __attribute__ ((visibility ("hidden"))); + +uint64 +__sync_add_and_fetch_8 (uint64* ptr, uint64 add) +{ + int i; + uint64 ret; + + i = pthread_mutex_lock (&sync_lock); + __go_assert (i == 0); + + *ptr += add; + ret = *ptr; + + i = pthread_mutex_unlock (&sync_lock); + __go_assert (i == 0); + + return ret; +} + +#endif + // Called to initialize a new m (including the bootstrap m). void runtime_minit(void) diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index daebf23e69e..95a6303738e 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,8 @@ +2012-02-14 Walter Lee <walt@tilera.com> + + * configure.tgt: Handle tilegx and tilepro. + * config/linux/tile/futex.h: New file. + 2012-02-08 Richard Guenther <rguenther@suse.de> PR tree-optimization/46886 diff --git a/libgomp/config/linux/tile/futex.h b/libgomp/config/linux/tile/futex.h new file mode 100644 index 00000000000..2e733a74018 --- /dev/null +++ b/libgomp/config/linux/tile/futex.h @@ -0,0 +1,73 @@ +/* Copyright (C) 2011, 2012 + Free Software Foundation, Inc. + Contributed by Walter Lee (walt@tilera.com) + + This file is part of the GNU OpenMP Library (libgomp). + + Libgomp 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. + + Libgomp 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. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + <http://www.gnu.org/licenses/>. */ + +/* Provide target-specific access to the futex system call. */ + +#include <sys/syscall.h> +#include <linux/futex.h> + +static inline void +sys_futex0 (int *addr, int op, int val) +{ + long _sys_result; + long _clobber_r2, _clobber_r3, _clobber_r4, _clobber_r5, _clobber_r10; + int err; + + __asm__ __volatile__ ( + "swint1" + : "=R00" (_sys_result), "=R01" (err), "=R02" (_clobber_r2), + "=R03" (_clobber_r3), "=R04" (_clobber_r4), "=R05" (_clobber_r5), + "=R10" (_clobber_r10) + : "R10" (SYS_futex), "R00" (addr), "R01" (op), "R02" (val), + "R03" (0) + : "r6", "r7", + "r8", "r9", "r11", "r12", "r13", "r14", "r15", + "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", + "r24", "r25", "r26", "r27", "r28", "r29", "memory"); +} + +static inline void +futex_wait (int *addr, int val) +{ + sys_futex0 (addr, FUTEX_WAIT, val); +} + +static inline void +futex_wake (int *addr, int count) +{ + sys_futex0 (addr, FUTEX_WAKE, count); +} + +static inline void +cpu_relax (void) +{ + __asm volatile ("" : : : "memory"); +} + +static inline void +atomic_write_barrier (void) +{ + __sync_synchronize (); +} diff --git a/libgomp/configure.tgt b/libgomp/configure.tgt index ce8b9c2f929..210dd5da348 100644 --- a/libgomp/configure.tgt +++ b/libgomp/configure.tgt @@ -51,6 +51,10 @@ if test $enable_linux_futex = yes; then config_path="linux/s390 linux posix" ;; + tile*-*-linux*) + config_path="linux/tile linux posix" + ;; + # Note that bare i386 is not included here. We need cmpxchg. i[456]86-*-linux*) config_path="linux/x86 linux posix" diff --git a/libitm/ChangeLog b/libitm/ChangeLog index 2bcb5ebaeb6..decdad3c68c 100644 --- a/libitm/ChangeLog +++ b/libitm/ChangeLog @@ -1,8 +1,30 @@ +2012-02-14 Eric Botcazou <ebotcazou@adacore.com> + + * config/sparc/target.h (cpu_relax): Read from CC register. + * config/sparc/sjlj.S (GTM_longjmp): Restore %fp atomically. + +2012-02-14 Uros Bizjak <ubizjak@gmail.com> + + * config/x86/target.h (GTM_longjmp): Jump indirect from memory address. + +2012-02-13 Eric Botcazou <ebotcazou@adacore.com> + + * configure.tgt (target_cpu): Handle sparc and sparc64/sparcv9. + * config/sparc/cacheline.h: New file. + * config/sparc/target.h: Likewise. + * config/sparc/sjlj.S: Likewise. + * config/linux/sparc/futex_bits.h: Likewise. + +2012-02-13 Eric Botcazou <ebotcazou@adacore.com> + + * configure.ac (link_itm): Fix comment. + * configure: Regenerate. + * testsuite/lib/libitm.exp: Do not pass -litm for the link. + 2012-01-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> PR libitm/51822 - * testsuite/libitm.c++/c++.exp (lang_link_flags): Add - -shared-libgcc. + * testsuite/libitm.c++/c++.exp (lang_link_flags): Add -shared-libgcc. Correct libgomp references. 2012-01-24 Torvald Riegel <triegel@redhat.com> diff --git a/libitm/Makefile.in b/libitm/Makefile.in index d39c804cdf6..c0f72e3f5e9 100644 --- a/libitm/Makefile.in +++ b/libitm/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.2 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -184,9 +184,11 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ - { test ! -d "$(distdir)" \ - || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr "$(distdir)"; }; } + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ @@ -497,7 +499,7 @@ clean-toolexeclibLTLIBRARIES: echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done -libitm.la: $(libitm_la_OBJECTS) $(libitm_la_DEPENDENCIES) +libitm.la: $(libitm_la_OBJECTS) $(libitm_la_DEPENDENCIES) $(EXTRA_libitm_la_DEPENDENCIES) $(libitm_la_LINK) -rpath $(toolexeclibdir) $(libitm_la_OBJECTS) $(libitm_la_LIBADD) $(LIBS) mostlyclean-compile: @@ -949,6 +951,10 @@ dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__remove_distdir) +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__remove_distdir) + dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) @@ -985,6 +991,8 @@ distcheck: dist bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ @@ -1268,8 +1276,8 @@ uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \ all all-am all-local all-multi am--refresh check check-am \ clean clean-aminfo clean-generic clean-libtool clean-multi \ clean-toolexeclibLTLIBRARIES ctags ctags-recursive dist \ - dist-all dist-bzip2 dist-gzip dist-info dist-lzma dist-shar \ - dist-tarZ dist-xz dist-zip distcheck distclean \ + dist-all dist-bzip2 dist-gzip dist-info dist-lzip dist-lzma \ + dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ distclean-compile distclean-generic distclean-hdr \ distclean-libtool distclean-multi distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am html \ diff --git a/libitm/aclocal.m4 b/libitm/aclocal.m4 index 783a6a4e968..2ea447d735d 100644 --- a/libitm/aclocal.m4 +++ b/libitm/aclocal.m4 @@ -1,4 +1,4 @@ -# generated automatically by aclocal 1.11.2 -*- Autoconf -*- +# generated automatically by aclocal 1.11.3 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, @@ -38,7 +38,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.2], [], +m4_if([$1], [1.11.3], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -54,7 +54,7 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.2])dnl +[AM_AUTOMAKE_VERSION([1.11.3])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) @@ -915,7 +915,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -937,10 +937,11 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) diff --git a/libitm/config/linux/sparc/futex_bits.h b/libitm/config/linux/sparc/futex_bits.h new file mode 100644 index 00000000000..5881de4fcea --- /dev/null +++ b/libitm/config/linux/sparc/futex_bits.h @@ -0,0 +1,62 @@ +/* Copyright (C) 2012 Free Software Foundation, Inc. + + This file is part of the GNU Transactional Memory Library (libitm). + + Libitm 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 of the License, or + (at your option) any later version. + + Libitm 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. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <sys/syscall.h> + +static inline long +sys_futex0 (std::atomic<int> *addr, int op, int val) +{ + register long int g1 __asm__ ("g1"); + register long int o0 __asm__ ("o0"); + register long int o1 __asm__ ("o1"); + register long int o2 __asm__ ("o2"); + register long int o3 __asm__ ("o3"); + long res; + + g1 = SYS_futex; + o0 = (long) addr; + o1 = op; + o2 = val; + o3 = 0; + +#ifdef __arch64__ + __asm volatile ("ta 0x6d" +#else + __asm volatile ("ta 0x10" +#endif + : "=r"(g1), "=r"(o0) + : "0"(g1), "1"(o0), "r"(o1), "r"(o2), "r"(o3) + : "g2", "g3", "g4", "g5", "g6", + "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", + "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", + "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", + "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", + "f32", "f34", "f36", "f38", "f40", "f42", "f44", "f46", + "f48", "f50", "f52", "f54", "f56", "f58", "f60", "f62", + "cc", "memory"); + + res = o0; + if (__builtin_expect ((unsigned long) res >= -515UL, 0)) + res =- res; + return res; +} diff --git a/libitm/config/sparc/cacheline.h b/libitm/config/sparc/cacheline.h new file mode 100644 index 00000000000..e5aa773d90c --- /dev/null +++ b/libitm/config/sparc/cacheline.h @@ -0,0 +1,41 @@ +/* Copyright (C) 2012 Free Software Foundation, Inc. + + This file is part of the GNU Transactional Memory Library (libitm). + + Libitm 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 of the License, or + (at your option) any later version. + + Libitm 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. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef LIBITM_SPARC_CACHELINE_H +#define LIBITM_SPARC_CACHELINE_H 1 + +// A cacheline is the smallest unit with which locks are associated. +// The current implementation of the _ITM_[RW] barriers assumes that +// all data types can fit (aligned) within a cachline, which means +// in practice sizeof(complex long double) is the smallest cacheline size. +// It ought to be small enough for efficient manipulation of the +// modification mask, below. +#ifdef __arch64__ +# define CACHELINE_SIZE 64 +#else +# define CACHELINE_SIZE 32 +#endif + +#include "config/generic/cacheline.h" + +#endif // LIBITM_SPARC_CACHELINE_H diff --git a/libitm/config/sparc/sjlj.S b/libitm/config/sparc/sjlj.S new file mode 100644 index 00000000000..71f4837a035 --- /dev/null +++ b/libitm/config/sparc/sjlj.S @@ -0,0 +1,97 @@ +/* Copyright (C) 2012 Free Software Foundation, Inc. + + This file is part of the GNU Transactional Memory Library (libitm). + + Libitm 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 of the License, or + (at your option) any later version. + + Libitm 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. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + <http://www.gnu.org/licenses/>. */ + +#include "asmcfi.h" + +#ifdef __arch64__ +# define WORD_SIZE 8 +# define MIN_FRAME_SIZE 176 +# define STACK_BIAS 2047 +# define load ldx +# define store stx +#else +# define WORD_SIZE 4 +# define MIN_FRAME_SIZE 96 +# define STACK_BIAS 0 +# define load ld +# define store st +#endif + +/* Fields of the JmpBuf structure. */ +#define JB_CFA 0 +#define JB_PC 1 +#define OFFSET(FIELD) ((FIELD) * WORD_SIZE) + +/* The frame size must be a multiple of the double-word size. */ +#define FRAME_SIZE (MIN_FRAME_SIZE + 2 * WORD_SIZE) +#define JB_OFFSET (STACK_BIAS + MIN_FRAME_SIZE) + + .text + .align 4 + .globl _ITM_beginTransaction + .type _ITM_beginTransaction, #function + .proc 016 +_ITM_beginTransaction: + cfi_startproc + add %sp, STACK_BIAS, %g1 + sub %sp, FRAME_SIZE, %sp + cfi_def_cfa_offset(STACK_BIAS + FRAME_SIZE) + store %g1, [%sp + JB_OFFSET + OFFSET (JB_CFA)] + store %o7, [%sp + JB_OFFSET + OFFSET (JB_PC)] + /* ??? This triggers an internal error in GDB. */ + cfi_offset(%o7, -WORD_SIZE) + call GTM_begin_transaction + add %sp, JB_OFFSET, %o1 + load [%sp + JB_OFFSET + OFFSET (JB_PC)], %o7 + jmp %o7+8 + add %sp, FRAME_SIZE, %sp + cfi_def_cfa_offset(STACK_BIAS) + cfi_endproc + .size _ITM_beginTransaction, . - _ITM_beginTransaction + + .align 4 + .globl GTM_longjmp +#ifdef HAVE_ATTRIBUTE_VISIBILITY + .hidden GTM_longjmp +#endif + .type GTM_longjmp, #function + .proc 016 +GTM_longjmp: + cfi_startproc + flushw +#if STACK_BIAS + load [%o1 + OFFSET (JB_CFA)], %g1 + sub %g1, STACK_BIAS, %fp +#else + load [%o1 + OFFSET (JB_CFA)], %fp +#endif + cfi_def_cfa(%fp, STACK_BIAS) + load [%o1 + OFFSET (JB_PC)], %o7 + jmp %o7+8 + restore %g0, %o0, %o0 + cfi_endproc + .size GTM_longjmp, . - GTM_longjmp + +#ifdef __linux__ + .section .note.GNU-stack, "", @progbits +#endif diff --git a/libitm/config/sparc/target.h b/libitm/config/sparc/target.h new file mode 100644 index 00000000000..12eb821ec08 --- /dev/null +++ b/libitm/config/sparc/target.h @@ -0,0 +1,46 @@ +/* Copyright (C) 2012 Free Software Foundation, Inc. + + This file is part of the GNU Transactional Memory Library (libitm). + + Libitm 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 of the License, or + (at your option) any later version. + + Libitm 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. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + <http://www.gnu.org/licenses/>. */ + +namespace GTM HIDDEN { + +typedef struct gtm_jmpbuf +{ + void *cfa; + unsigned long pc; +} gtm_jmpbuf; + +/* UltraSPARC processors generally use a fixed page size of 8K. */ +#define PAGE_SIZE 8192 +#define FIXED_PAGE_SIZE 1 + +/* The size of one line in hardware caches (in bytes). We use the primary + cache line size documented for the UltraSPARC T1/T2. */ +#define HW_CACHELINE_SIZE 16 + +static inline void +cpu_relax (void) +{ + __asm volatile ("rd %%ccr, %%g0" : : : "memory"); +} + +} // namespace GTM diff --git a/libitm/config/x86/sjlj.S b/libitm/config/x86/sjlj.S index 0571a4ab658..9a74d97f76f 100644 --- a/libitm/config/x86/sjlj.S +++ b/libitm/config/x86/sjlj.S @@ -119,23 +119,21 @@ SYM(GTM_longjmp): movq 32(%rsi), %r13 movq 40(%rsi), %r14 movq 48(%rsi), %r15 - movq 56(%rsi), %rdx movl %edi, %eax + cfi_offset(%rip, 56) cfi_def_cfa(%rcx, 0) - cfi_register(%rip, %rdx) movq %rcx, %rsp - jmp *%rdx + jmp *56(%rsi) #else movl (%edx), %ecx movl 4(%edx), %ebx movl 8(%edx), %esi movl 12(%edx), %edi movl 16(%edx), %ebp - movl 20(%edx), %edx + cfi_offset(%eip, 20) cfi_def_cfa(%ecx, 0) - cfi_register(%eip, %edx) movl %ecx, %esp - jmp *%edx + jmp *20(%edx) #endif cfi_endproc diff --git a/libitm/configure b/libitm/configure index 573e36c1916..18a920ea030 100644 --- a/libitm/configure +++ b/libitm/configure @@ -3318,11 +3318,11 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. -# Always define AMTAR for backward compatibility. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' -AMTAR=${AMTAR-"${am_missing_run}tar"} - -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' @@ -17468,7 +17468,7 @@ else fi # Set up the set of libraries that we need to link against for libitm. -# Note that the GOMP_SELF_SPEC in gcc.c will force -pthread for -fopenmp, +# Note that the GTM_SELF_SPECS in gcc.c will force -pthread for -fgnu-tm, # which will force linkage against -lpthread (or equivalent for the system). # That's not 100% ideal, but about the best we can do easily. if test $enable_shared = yes; then diff --git a/libitm/configure.ac b/libitm/configure.ac index 7b54371fa88..2cce2b102f5 100644 --- a/libitm/configure.ac +++ b/libitm/configure.ac @@ -268,7 +268,7 @@ else fi # Set up the set of libraries that we need to link against for libitm. -# Note that the GOMP_SELF_SPEC in gcc.c will force -pthread for -fopenmp, +# Note that the GTM_SELF_SPECS in gcc.c will force -pthread for -fgnu-tm, # which will force linkage against -lpthread (or equivalent for the system). # That's not 100% ideal, but about the best we can do easily. if test $enable_shared = yes; then diff --git a/libitm/configure.tgt b/libitm/configure.tgt index e20349a1f84..b68c86b05f4 100644 --- a/libitm/configure.tgt +++ b/libitm/configure.tgt @@ -66,6 +66,34 @@ case "${target_cpu}" in sh*) ARCH=sh ;; + sparc) + case " ${CC} ${CFLAGS} " in + *" -m64 "*) + ;; + *) + if test -z "$with_cpu"; then + XCFLAGS="${XCFLAGS} -mcpu=v9" + fi + esac + ARCH=sparc + ;; + + sparc64|sparcv9) + case " ${CC} ${CFLAGS} " in + *" -m32 "*) + XCFLAGS="${XCFLAGS} -mcpu=v9" + ;; + *" -m64 "*) + ;; + *) + if test "x$with_cpu" = xv8; then + XCFLAGS="${XCFLAGS} -mcpu=v9" + fi + ;; + esac + ARCH=sparc + ;; + x86_64) case " ${CC} ${CFLAGS} " in *" -m32 "*) diff --git a/libitm/testsuite/Makefile.in b/libitm/testsuite/Makefile.in index 5f2e291cf34..26b524b11b2 100644 --- a/libitm/testsuite/Makefile.in +++ b/libitm/testsuite/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.2 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, diff --git a/libitm/testsuite/lib/libitm.exp b/libitm/testsuite/lib/libitm.exp index 74f7f80859a..b2556d14091 100644 --- a/libitm/testsuite/lib/libitm.exp +++ b/libitm/testsuite/lib/libitm.exp @@ -140,7 +140,6 @@ proc libitm_init { args } { lappend ALWAYS_CFLAGS "ldflags=-L${blddir}/.libs" } lappend ALWAYS_CFLAGS "additional_flags=-I${srcdir}/.." - lappend ALWAYS_CFLAGS "ldflags=-litm" # We use atomic operations in the testcases to validate results. if { ([istarget i?86-*-*] || [istarget x86_64-*-*]) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index c7b4fe9de70..ba294659b87 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,51 @@ +2012-02-13 Benjamin Kosnik <bkoz@redhat.com> + + * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust line numbers. + * testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: Same. + +2012-02-13 Richard Henderson <rth@redhat.com> + + PR libstdc++/51798 continued. + * include/bits/shared_ptr_base.h + (_Sp_counted_base<_S_atomic>::_M_add_ref_lock): Hoist initial load + outside compare_exchange loop. + * include/tr1/shared_ptr.h: Same. + * include/parallel/compatibility.h (__compare_and_swap_32): Use strong + version of compare_exchange. + (__compare_and_swap_64): Same. + * include/profile/impl/profiler_state.h (__gnu_profile::__turn): Same. + * libsupc++/guard.cc (__cxa_guard_acquire): Same. + +2012-02-10 Benjamin Kosnik <bkoz@redhat.com> + Jonathan Wakely <jwakely.gcc@gmail.com> + + PR libstdc++/51798 continued. + * acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Use __atomic_* + builtins instead of __sync_* builtins for atomic functionality. + * include/bits/shared_ptr_base.h: Same. + * include/parallel/compatibility.h: Same. + * include/profile/impl/profiler_state.h: Same. + * include/tr1/shared_ptr.h: Same. + * libsupc++/eh_ptr.cc: Same. + * libsupc++/eh_throw.cc: Same. + * libsupc++/eh_tm.cc: Same. + * libsupc++/guard.cc: Same. + * configure: Regenerated. + * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust line numbers. + * testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: Same. + +2012-02-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + PR libstdc++/51296 + * config/os/osf/ctype_base.h, + config/os/osf/ctype_configure_char.cc, + config/os/osf/ctype_inline.h, config/os/osf/error_constants.h: + Copy from config/os/generic. + * config/os/osf/os_defines.h: Likewise. + (_GTHREAD_USE_MUTEX_INIT_FUNC, _GTHREAD_USE_COND_INIT_FUNC): + Define. + * configure.host <osf*>: Use os/osf for os_include_dir. + 2012-02-10 Uros Bizjak <ubizjak@gmail.com> * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Regenerated. diff --git a/libstdc++-v3/Makefile.in b/libstdc++-v3/Makefile.in index c2220ec3612..a6b15e2f312 100644 --- a/libstdc++-v3/Makefile.in +++ b/libstdc++-v3/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.2 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -401,6 +401,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/fragment.am: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 529532e5260..e089b20dd4f 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -2685,7 +2685,7 @@ AC_DEFUN([GLIBCXX_ENABLE_PCH], [ dnl dnl Check for atomic builtins. dnl See: -dnl http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html#Atomic-Builtins +dnl http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html dnl dnl This checks to see if the host supports the compiler-generated dnl builtins for atomic operations for various integral sizes. Note, this @@ -2726,12 +2726,13 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [ [typedef bool atomic_type; atomic_type c1; atomic_type c2; - const atomic_type c3(0); - __sync_fetch_and_add(&c1, c2); - __sync_val_compare_and_swap(&c1, c3, c2); - __sync_lock_test_and_set(&c1, c3); - __sync_lock_release(&c1); - __sync_synchronize();], + atomic_type c3(0); + __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); + __atomic_test_and_set(&c1, __ATOMIC_RELAXED); + __atomic_load_n(&c1, __ATOMIC_RELAXED); + ], [glibcxx_cv_atomic_bool=yes], [glibcxx_cv_atomic_bool=no]) ]) @@ -2744,12 +2745,13 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [ [typedef short atomic_type; atomic_type c1; atomic_type c2; - const atomic_type c3(0); - __sync_fetch_and_add(&c1, c2); - __sync_val_compare_and_swap(&c1, c3, c2); - __sync_lock_test_and_set(&c1, c3); - __sync_lock_release(&c1); - __sync_synchronize();], + atomic_type c3(0); + __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); + __atomic_test_and_set(&c1, __ATOMIC_RELAXED); + __atomic_load_n(&c1, __ATOMIC_RELAXED); + ], [glibcxx_cv_atomic_short=yes], [glibcxx_cv_atomic_short=no]) ]) @@ -2762,12 +2764,13 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [ [typedef int atomic_type; atomic_type c1; atomic_type c2; - const atomic_type c3(0); - __sync_fetch_and_add(&c1, c2); - __sync_val_compare_and_swap(&c1, c3, c2); - __sync_lock_test_and_set(&c1, c3); - __sync_lock_release(&c1); - __sync_synchronize();], + atomic_type c3(0); + __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); + __atomic_test_and_set(&c1, __ATOMIC_RELAXED); + __atomic_load_n(&c1, __ATOMIC_RELAXED); + ], [glibcxx_cv_atomic_int=yes], [glibcxx_cv_atomic_int=no]) ]) @@ -2780,12 +2783,13 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [ [typedef long long atomic_type; atomic_type c1; atomic_type c2; - const atomic_type c3(0); - __sync_fetch_and_add(&c1, c2); - __sync_val_compare_and_swap(&c1, c3, c2); - __sync_lock_test_and_set(&c1, c3); - __sync_lock_release(&c1); - __sync_synchronize();], + atomic_type c3(0); + __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); + __atomic_test_and_set(&c1, __ATOMIC_RELAXED); + __atomic_load_n(&c1, __ATOMIC_RELAXED); + ], [glibcxx_cv_atomic_long_long=yes], [glibcxx_cv_atomic_long_long=no]) ]) @@ -2807,12 +2811,13 @@ int main() typedef bool atomic_type; atomic_type c1; atomic_type c2; - const atomic_type c3(0); - __sync_fetch_and_add(&c1, c2); - __sync_val_compare_and_swap(&c1, c3, c2); - __sync_lock_test_and_set(&c1, c3); - __sync_lock_release(&c1); - __sync_synchronize(); + atomic_type c3(0); + __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); + __atomic_test_and_set(&c1, __ATOMIC_RELAXED); + __atomic_load_n(&c1, __ATOMIC_RELAXED); + return 0; } EOF @@ -2835,12 +2840,13 @@ int main() typedef short atomic_type; atomic_type c1; atomic_type c2; - const atomic_type c3(0); - __sync_fetch_and_add(&c1, c2); - __sync_val_compare_and_swap(&c1, c3, c2); - __sync_lock_test_and_set(&c1, c3); - __sync_lock_release(&c1); - __sync_synchronize(); + atomic_type c3(0); + __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); + __atomic_test_and_set(&c1, __ATOMIC_RELAXED); + __atomic_load_n(&c1, __ATOMIC_RELAXED); + return 0; } EOF @@ -2864,12 +2870,13 @@ int main() typedef int atomic_type; atomic_type c1; atomic_type c2; - const atomic_type c3(0); - __sync_fetch_and_add(&c1, c2); - __sync_val_compare_and_swap(&c1, c3, c2); - __sync_lock_test_and_set(&c1, c3); - __sync_lock_release(&c1); - __sync_synchronize(); + atomic_type c3(0); + __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); + __atomic_test_and_set(&c1, __ATOMIC_RELAXED); + __atomic_load_n(&c1, __ATOMIC_RELAXED); + return 0; } EOF @@ -2892,12 +2899,13 @@ int main() typedef long long atomic_type; atomic_type c1; atomic_type c2; - const atomic_type c3(0); - __sync_fetch_and_add(&c1, c2); - __sync_val_compare_and_swap(&c1, c3, c2); - __sync_lock_test_and_set(&c1, c3); - __sync_lock_release(&c1); - __sync_synchronize(); + atomic_type c3(0); + __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); + __atomic_test_and_set(&c1, __ATOMIC_RELAXED); + __atomic_load_n(&c1, __ATOMIC_RELAXED); + return 0; } EOF @@ -2918,8 +2926,11 @@ EOF CXXFLAGS="$old_CXXFLAGS" AC_LANG_RESTORE - # Set atomicity_dir to builtins if either of above tests pass. - if test $glibcxx_cv_atomic_int = yes || test $glibcxx_cv_atomic_bool = yes ; then + # Set atomicity_dir to builtins if all of above tests pass. + if test $glibcxx_cv_atomic_bool = yes \ + && test $glibcxx_cv_atomic_short = yes \ + && test $glibcxx_cv_atomic_int = yes \ + && test $glibcxx_cv_atomic_long_long = yes ; then AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS, 1, [Define if the compiler supports C++11 atomics.]) atomicity_dir=cpu/generic/atomicity_builtins diff --git a/libstdc++-v3/aclocal.m4 b/libstdc++-v3/aclocal.m4 index 7f4a4676505..8a0ec9e3886 100644 --- a/libstdc++-v3/aclocal.m4 +++ b/libstdc++-v3/aclocal.m4 @@ -1,4 +1,4 @@ -# generated automatically by aclocal 1.11.2 -*- Autoconf -*- +# generated automatically by aclocal 1.11.3 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, @@ -38,7 +38,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.2], [], +m4_if([$1], [1.11.3], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -54,7 +54,7 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.2])dnl +[AM_AUTOMAKE_VERSION([1.11.3])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) @@ -575,7 +575,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -597,10 +597,11 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) diff --git a/libstdc++-v3/config/os/osf/ctype_base.h b/libstdc++-v3/config/os/osf/ctype_base.h new file mode 100644 index 00000000000..72aa6f2ccb0 --- /dev/null +++ b/libstdc++-v3/config/os/osf/ctype_base.h @@ -0,0 +1,59 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 1997, 1998, 1999, 2003, 2009, 2010 +// Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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. + +// This library 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. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// <http://www.gnu.org/licenses/>. + +// +// ISO C++ 14882: 22.1 Locales +// + +// Default information, may not be appropriate for specific host. + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype<char>::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef unsigned int mask; + static const mask upper = 1 << 0; + static const mask lower = 1 << 1; + static const mask alpha = 1 << 2; + static const mask digit = 1 << 3; + static const mask xdigit = 1 << 4; + static const mask space = 1 << 5; + static const mask print = 1 << 6; + static const mask graph = (1 << 2) | (1 << 3) | (1 << 9); // alnum|punct + static const mask cntrl = 1 << 8; + static const mask punct = 1 << 9; + static const mask alnum = (1 << 2) | (1 << 3); // alpha|digit + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/libstdc++-v3/config/os/osf/ctype_configure_char.cc b/libstdc++-v3/config/os/osf/ctype_configure_char.cc new file mode 100644 index 00000000000..0daedf54356 --- /dev/null +++ b/libstdc++-v3/config/os/osf/ctype_configure_char.cc @@ -0,0 +1,99 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2011 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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. + +// This library 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. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// <http://www.gnu.org/licenses/>. + +/** @file ctype_configure_char.cc */ + +// +// ISO C++ 14882: 22.1 Locales +// + +#include <locale> +#include <cstdlib> +#include <cstring> + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +// Information as gleaned from /usr/include/ctype.h + + const ctype_base::mask* + ctype<char>::classic_table() throw() + { return 0; } + + ctype<char>::ctype(__c_locale, const mask* __table, bool __del, + size_t __refs) + : facet(__refs), _M_del(__table != 0 && __del), + _M_toupper(NULL), _M_tolower(NULL), + _M_table(__table ? __table : classic_table()) + { + memset(_M_widen, 0, sizeof(_M_widen)); + _M_widen_ok = 0; + memset(_M_narrow, 0, sizeof(_M_narrow)); + _M_narrow_ok = 0; + } + + ctype<char>::ctype(const mask* __table, bool __del, size_t __refs) + : facet(__refs), _M_del(__table != 0 && __del), + _M_toupper(NULL), _M_tolower(NULL), + _M_table(__table ? __table : classic_table()) + { + memset(_M_widen, 0, sizeof(_M_widen)); + _M_widen_ok = 0; + memset(_M_narrow, 0, sizeof(_M_narrow)); + _M_narrow_ok = 0; + } + + char + ctype<char>::do_toupper(char __c) const + { return ::toupper((int) __c); } + + const char* + ctype<char>::do_toupper(char* __low, const char* __high) const + { + while (__low < __high) + { + *__low = ::toupper((int) *__low); + ++__low; + } + return __high; + } + + char + ctype<char>::do_tolower(char __c) const + { return ::tolower((int) __c); } + + const char* + ctype<char>::do_tolower(char* __low, const char* __high) const + { + while (__low < __high) + { + *__low = ::tolower((int) *__low); + ++__low; + } + return __high; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/libstdc++-v3/config/os/osf/ctype_inline.h b/libstdc++-v3/config/os/osf/ctype_inline.h new file mode 100644 index 00000000000..ae54f2968be --- /dev/null +++ b/libstdc++-v3/config/os/osf/ctype_inline.h @@ -0,0 +1,168 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000, 2003, 2009, 2010 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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. + +// This library 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. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// <http://www.gnu.org/licenses/>. + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +// The following definitions are portable, but insanely slow. If one +// cares at all about performance, then specialized ctype +// functionality should be added for the native os in question: see +// the config/os/bits/ctype_*.h files. + +// Constructing a synthetic "C" table should be seriously considered... + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype<char>:: + is(mask __m, char __c) const + { + if (_M_table) + return _M_table[static_cast<unsigned char>(__c)] & __m; + else + { + bool __ret = false; + const size_t __bitmasksize = 15; + size_t __bitcur = 0; // Lowest bitmask in ctype_base == 0 + for (; __bitcur <= __bitmasksize; ++__bitcur) + { + const mask __bit = static_cast<mask>(1 << __bitcur); + if (__m & __bit) + { + bool __testis; + switch (__bit) + { + case space: + __testis = isspace(__c); + break; + case print: + __testis = isprint(__c); + break; + case cntrl: + __testis = iscntrl(__c); + break; + case upper: + __testis = isupper(__c); + break; + case lower: + __testis = islower(__c); + break; + case alpha: + __testis = isalpha(__c); + break; + case digit: + __testis = isdigit(__c); + break; + case punct: + __testis = ispunct(__c); + break; + case xdigit: + __testis = isxdigit(__c); + break; + case alnum: + __testis = isalnum(__c); + break; + case graph: + __testis = isgraph(__c); + break; + default: + __testis = false; + break; + } + __ret |= __testis; + } + } + return __ret; + } + } + + const char* + ctype<char>:: + is(const char* __low, const char* __high, mask* __vec) const + { + if (_M_table) + while (__low < __high) + *__vec++ = _M_table[static_cast<unsigned char>(*__low++)]; + else + { + // Highest bitmask in ctype_base == 10. + const size_t __bitmasksize = 15; + for (;__low < __high; ++__vec, ++__low) + { + mask __m = 0; + // Lowest bitmask in ctype_base == 0 + size_t __i = 0; + for (;__i <= __bitmasksize; ++__i) + { + const mask __bit = static_cast<mask>(1 << __i); + if (this->is(__bit, *__low)) + __m |= __bit; + } + *__vec = __m; + } + } + return __high; + } + + const char* + ctype<char>:: + scan_is(mask __m, const char* __low, const char* __high) const + { + if (_M_table) + while (__low < __high + && !(_M_table[static_cast<unsigned char>(*__low)] & __m)) + ++__low; + else + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype<char>:: + scan_not(mask __m, const char* __low, const char* __high) const + { + if (_M_table) + while (__low < __high + && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0) + ++__low; + else + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/libstdc++-v3/config/os/osf/error_constants.h b/libstdc++-v3/config/os/osf/error_constants.h new file mode 100644 index 00000000000..88ea56506c2 --- /dev/null +++ b/libstdc++-v3/config/os/osf/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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. + +// This library 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. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// <http://www.gnu.org/licenses/>. + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include <bits/c++config.h> +#include <cerrno> + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/libstdc++-v3/config/os/osf/os_defines.h b/libstdc++-v3/config/os/osf/os_defines.h new file mode 100644 index 00000000000..68c278d87bc --- /dev/null +++ b/libstdc++-v3/config/os/osf/os_defines.h @@ -0,0 +1,41 @@ +// Specific definitions for Tru64 UNIX -*- C++ -*- + +// Copyright (C) 2000, 2009, 2010, 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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. + +// This library 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. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// <http://www.gnu.org/licenses/>. + +/** @file bits/os_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_OS_DEFINES +#define _GLIBCXX_OS_DEFINES 1 + +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. + +// Tru64 UNIX requires using pthread_mutex_init()/pthread_cond_init() to +// initialized non-statically allocated mutexes/condvars. +#define _GTHREAD_USE_MUTEX_INIT_FUNC +#define _GTHREAD_USE_COND_INIT_FUNC + +#endif diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 5c1c4bbe639..4755149c731 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -3512,11 +3512,11 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. -# Always define AMTAR for backward compatibility. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' -AMTAR=${AMTAR-"${am_missing_run}tar"} - -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' @@ -15125,12 +15125,13 @@ main () typedef bool atomic_type; atomic_type c1; atomic_type c2; - const atomic_type c3(0); - __sync_fetch_and_add(&c1, c2); - __sync_val_compare_and_swap(&c1, c3, c2); - __sync_lock_test_and_set(&c1, c3); - __sync_lock_release(&c1); - __sync_synchronize(); + atomic_type c3(0); + __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); + __atomic_test_and_set(&c1, __ATOMIC_RELAXED); + __atomic_load_n(&c1, __ATOMIC_RELAXED); + ; return 0; } @@ -15166,12 +15167,13 @@ main () typedef short atomic_type; atomic_type c1; atomic_type c2; - const atomic_type c3(0); - __sync_fetch_and_add(&c1, c2); - __sync_val_compare_and_swap(&c1, c3, c2); - __sync_lock_test_and_set(&c1, c3); - __sync_lock_release(&c1); - __sync_synchronize(); + atomic_type c3(0); + __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); + __atomic_test_and_set(&c1, __ATOMIC_RELAXED); + __atomic_load_n(&c1, __ATOMIC_RELAXED); + ; return 0; } @@ -15207,12 +15209,13 @@ main () typedef int atomic_type; atomic_type c1; atomic_type c2; - const atomic_type c3(0); - __sync_fetch_and_add(&c1, c2); - __sync_val_compare_and_swap(&c1, c3, c2); - __sync_lock_test_and_set(&c1, c3); - __sync_lock_release(&c1); - __sync_synchronize(); + atomic_type c3(0); + __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); + __atomic_test_and_set(&c1, __ATOMIC_RELAXED); + __atomic_load_n(&c1, __ATOMIC_RELAXED); + ; return 0; } @@ -15248,12 +15251,13 @@ main () typedef long long atomic_type; atomic_type c1; atomic_type c2; - const atomic_type c3(0); - __sync_fetch_and_add(&c1, c2); - __sync_val_compare_and_swap(&c1, c3, c2); - __sync_lock_test_and_set(&c1, c3); - __sync_lock_release(&c1); - __sync_synchronize(); + atomic_type c3(0); + __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); + __atomic_test_and_set(&c1, __ATOMIC_RELAXED); + __atomic_load_n(&c1, __ATOMIC_RELAXED); + ; return 0; } @@ -15281,18 +15285,19 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; } # Fake what AC_TRY_COMPILE does. cat > conftest.$ac_ext << EOF -#line 15284 "configure" +#line 15288 "configure" int main() { typedef bool atomic_type; atomic_type c1; atomic_type c2; - const atomic_type c3(0); - __sync_fetch_and_add(&c1, c2); - __sync_val_compare_and_swap(&c1, c3, c2); - __sync_lock_test_and_set(&c1, c3); - __sync_lock_release(&c1); - __sync_synchronize(); + atomic_type c3(0); + __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); + __atomic_test_and_set(&c1, __ATOMIC_RELAXED); + __atomic_load_n(&c1, __ATOMIC_RELAXED); + return 0; } EOF @@ -15315,18 +15320,19 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15318 "configure" +#line 15323 "configure" int main() { typedef short atomic_type; atomic_type c1; atomic_type c2; - const atomic_type c3(0); - __sync_fetch_and_add(&c1, c2); - __sync_val_compare_and_swap(&c1, c3, c2); - __sync_lock_test_and_set(&c1, c3); - __sync_lock_release(&c1); - __sync_synchronize(); + atomic_type c3(0); + __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); + __atomic_test_and_set(&c1, __ATOMIC_RELAXED); + __atomic_load_n(&c1, __ATOMIC_RELAXED); + return 0; } EOF @@ -15349,19 +15355,20 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15352 "configure" +#line 15358 "configure" int main() { // NB: _Atomic_word not necessarily int. typedef int atomic_type; atomic_type c1; atomic_type c2; - const atomic_type c3(0); - __sync_fetch_and_add(&c1, c2); - __sync_val_compare_and_swap(&c1, c3, c2); - __sync_lock_test_and_set(&c1, c3); - __sync_lock_release(&c1); - __sync_synchronize(); + atomic_type c3(0); + __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); + __atomic_test_and_set(&c1, __ATOMIC_RELAXED); + __atomic_load_n(&c1, __ATOMIC_RELAXED); + return 0; } EOF @@ -15384,18 +15391,19 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15387 "configure" +#line 15394 "configure" int main() { typedef long long atomic_type; atomic_type c1; atomic_type c2; - const atomic_type c3(0); - __sync_fetch_and_add(&c1, c2); - __sync_val_compare_and_swap(&c1, c3, c2); - __sync_lock_test_and_set(&c1, c3); - __sync_lock_release(&c1); - __sync_synchronize(); + atomic_type c3(0); + __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); + __atomic_test_and_set(&c1, __ATOMIC_RELAXED); + __atomic_load_n(&c1, __ATOMIC_RELAXED); + return 0; } EOF @@ -15427,8 +15435,11 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu - # Set atomicity_dir to builtins if either of above tests pass. - if test $glibcxx_cv_atomic_int = yes || test $glibcxx_cv_atomic_bool = yes ; then + # Set atomicity_dir to builtins if all of above tests pass. + if test $glibcxx_cv_atomic_bool = yes \ + && test $glibcxx_cv_atomic_short = yes \ + && test $glibcxx_cv_atomic_int = yes \ + && test $glibcxx_cv_atomic_long_long = yes ; then $as_echo "#define _GLIBCXX_ATOMIC_BUILTINS 1" >>confdefs.h @@ -15460,7 +15471,7 @@ $as_echo "$as_me: WARNING: Performance of certain classes will degrade as a resu # unnecessary for this test. cat > conftest.$ac_ext << EOF -#line 15463 "configure" +#line 15474 "configure" int main() { _Decimal32 d1; @@ -15502,7 +15513,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # unnecessary for this test. cat > conftest.$ac_ext << EOF -#line 15505 "configure" +#line 15516 "configure" template<typename T1, typename T2> struct same { typedef T2 type; }; @@ -15536,7 +15547,7 @@ $as_echo "$enable_int128" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15539 "configure" +#line 15550 "configure" template<typename T1, typename T2> struct same { typedef T2 type; }; diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host index 715d549546f..ca4d81957b6 100644 --- a/libstdc++-v3/configure.host +++ b/libstdc++-v3/configure.host @@ -280,7 +280,7 @@ case "${host_os}" in os_include_dir="os/bsd/netbsd" ;; osf*) - os_include_dir="os/generic" + os_include_dir="os/osf" # libstdc++.so relies on emutls on Tru64 UNIX, which only works with the # real functions implemented in libpthread.so, not with the dummies in # libgcc, so always pass -lpthread. diff --git a/libstdc++-v3/doc/Makefile.in b/libstdc++-v3/doc/Makefile.in index 5cb5593c9c7..2aafe215825 100644 --- a/libstdc++-v3/doc/Makefile.in +++ b/libstdc++-v3/doc/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.2 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -583,6 +583,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/fragment.am: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in index 2b60a2976d5..b6f71c54b0b 100644 --- a/libstdc++-v3/include/Makefile.in +++ b/libstdc++-v3/include/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.2 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -1172,6 +1172,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/fragment.am: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh diff --git a/libstdc++-v3/include/bits/shared_ptr_base.h b/libstdc++-v3/include/bits/shared_ptr_base.h index c024b70fb50..c48c18eaee9 100644 --- a/libstdc++-v3/include/bits/shared_ptr_base.h +++ b/libstdc++-v3/include/bits/shared_ptr_base.h @@ -1,6 +1,7 @@ // shared_ptr and weak_ptr implementation details -*- C++ -*- -// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +// Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012 +// Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -193,7 +194,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { // No memory barrier is used here so there is no synchronization // with other threads. - return const_cast<const volatile _Atomic_word&>(_M_use_count); + return __atomic_load_n(&_M_use_count, __ATOMIC_RELAXED); } private: @@ -235,18 +236,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _M_add_ref_lock() { // Perform lock-free add-if-not-zero operation. - _Atomic_word __count; + _Atomic_word __count = _M_use_count; do { - __count = _M_use_count; if (__count == 0) __throw_bad_weak_ptr(); - // Replace the current counter value with the old value + 1, as // long as it's not changed meanwhile. } - while (!__sync_bool_compare_and_swap(&_M_use_count, __count, - __count + 1)); + while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1, + true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED)); } diff --git a/libstdc++-v3/include/parallel/compatibility.h b/libstdc++-v3/include/parallel/compatibility.h index 9fffd8e012c..ed75215ceaf 100644 --- a/libstdc++-v3/include/parallel/compatibility.h +++ b/libstdc++-v3/include/parallel/compatibility.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +// Copyright (C) 2007, 2008, 2009, 2010, 2012 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the terms @@ -102,7 +102,7 @@ namespace __gnu_parallel return _InterlockedExchangeAdd(reinterpret_cast<volatile long*>(__ptr), __addend); #elif defined(__GNUC__) - return __sync_fetch_and_add(__ptr, __addend); + return __atomic_fetch_add(__ptr, __addend, __ATOMIC_ACQ_REL); #elif defined(__SUNPRO_CC) && defined(__sparc) volatile int32_t __before, __after; do @@ -145,11 +145,11 @@ namespace __gnu_parallel return _InterlockedExchangeAdd64(__ptr, __addend); #endif #elif defined(__GNUC__) && defined(__x86_64) - return __sync_fetch_and_add(__ptr, __addend); + return __atomic_fetch_add(__ptr, __addend, __ATOMIC_ACQ_REL); #elif defined(__GNUC__) && defined(__i386) && \ (defined(__i686) || defined(__pentium4) || defined(__athlon) \ || defined(__k8) || defined(__core2)) - return __sync_fetch_and_add(__ptr, __addend); + return __atomic_fetch_add(__ptr, __addend, __ATOMIC_ACQ_REL); #elif defined(__SUNPRO_CC) && defined(__sparc) volatile int64_t __before, __after; do @@ -252,7 +252,9 @@ namespace __gnu_parallel __replacement, __comparand) == __comparand; #elif defined(__GNUC__) - return __sync_bool_compare_and_swap(__ptr, __comparand, __replacement); + return __atomic_compare_exchange_n(__ptr, &__comparand, __replacement, + false, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); #elif defined(__SUNPRO_CC) && defined(__sparc) return atomic_cas_32((volatile unsigned int*)__ptr, __comparand, __replacement) == __comparand; @@ -298,11 +300,15 @@ namespace __gnu_parallel #endif #elif defined(__GNUC__) && defined(__x86_64) - return __sync_bool_compare_and_swap(__ptr, __comparand, __replacement); + return __atomic_compare_exchange_n(__ptr, &__comparand, __replacement, + false, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); #elif defined(__GNUC__) && defined(__i386) && \ (defined(__i686) || defined(__pentium4) || defined(__athlon) \ || defined(__k8) || defined(__core2)) - return __sync_bool_compare_and_swap(__ptr, __comparand, __replacement); + return __atomic_compare_exchange_n(__ptr, &__comparand, __replacement, + false, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); #elif defined(__SUNPRO_CC) && defined(__sparc) return atomic_cas_64((volatile unsigned long long*)__ptr, __comparand, __replacement) == __comparand; diff --git a/libstdc++-v3/include/profile/impl/profiler_state.h b/libstdc++-v3/include/profile/impl/profiler_state.h index 111b97e0eca..d48801ab561 100644 --- a/libstdc++-v3/include/profile/impl/profiler_state.h +++ b/libstdc++-v3/include/profile/impl/profiler_state.h @@ -1,6 +1,6 @@ // -*- C++ -*- // -// Copyright (C) 2009, 2010 Free Software Foundation, Inc. +// Copyright (C) 2009, 2010, 2012 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the terms @@ -45,9 +45,12 @@ namespace __gnu_profile inline bool __turn(__state_type __s) - { return (_GLIBCXX_PROFILE_DATA(__state) - == __sync_val_compare_and_swap(&_GLIBCXX_PROFILE_DATA(__state), - __INVALID, __s)); } + { + __state_type inv(__INVALID); + return __atomic_compare_exchange_n(&_GLIBCXX_PROFILE_DATA(__state), + &inv, __s, false, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED); + } inline bool __turn_on() diff --git a/libstdc++-v3/include/tr1/shared_ptr.h b/libstdc++-v3/include/tr1/shared_ptr.h index c42084c9539..5a1eb038a38 100644 --- a/libstdc++-v3/include/tr1/shared_ptr.h +++ b/libstdc++-v3/include/tr1/shared_ptr.h @@ -1,6 +1,7 @@ // <tr1/shared_ptr.h> -*- C++ -*- -// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +// Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012 +// Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -236,19 +237,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _M_add_ref_lock() { // Perform lock-free add-if-not-zero operation. - _Atomic_word __count; + _Atomic_word __count = _M_use_count; do { - __count = _M_use_count; if (__count == 0) __throw_bad_weak_ptr(); - // Replace the current counter value with the old value + 1, as // long as it's not changed meanwhile. } - while (!__sync_bool_compare_and_swap(&_M_use_count, __count, - __count + 1)); - } + while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1, + true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED)); + } template<typename _Ptr, typename _Deleter, _Lock_policy _Lp> class _Sp_counted_base_impl diff --git a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile.in index cd54e0de4c7..1153530a8c1 100644 --- a/libstdc++-v3/libsupc++/Makefile.in +++ b/libstdc++-v3/libsupc++/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.2 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -509,6 +509,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/fragment.am: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -558,9 +559,9 @@ clean-toolexeclibLTLIBRARIES: echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done -libsupc++.la: $(libsupc___la_OBJECTS) $(libsupc___la_DEPENDENCIES) +libsupc++.la: $(libsupc___la_OBJECTS) $(libsupc___la_DEPENDENCIES) $(EXTRA_libsupc___la_DEPENDENCIES) $(CXXLINK) -rpath $(toolexeclibdir) $(libsupc___la_OBJECTS) $(libsupc___la_LIBADD) $(LIBS) -libsupc++convenience.la: $(libsupc__convenience_la_OBJECTS) $(libsupc__convenience_la_DEPENDENCIES) +libsupc++convenience.la: $(libsupc__convenience_la_OBJECTS) $(libsupc__convenience_la_DEPENDENCIES) $(EXTRA_libsupc__convenience_la_DEPENDENCIES) $(CXXLINK) $(libsupc__convenience_la_OBJECTS) $(libsupc__convenience_la_LIBADD) $(LIBS) mostlyclean-compile: diff --git a/libstdc++-v3/libsupc++/eh_ptr.cc b/libstdc++-v3/libsupc++/eh_ptr.cc index 684580f413e..82ebb0b173b 100644 --- a/libstdc++-v3/libsupc++/eh_ptr.cc +++ b/libstdc++-v3/libsupc++/eh_ptr.cc @@ -1,5 +1,5 @@ // -*- C++ -*- Implement the members of exception_ptr. -// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +// Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. // // This file is part of GCC. // @@ -75,7 +75,7 @@ std::__exception_ptr::exception_ptr::_M_addref() _GLIBCXX_USE_NOEXCEPT { __cxa_refcounted_exception *eh = __get_refcounted_exception_header_from_obj (_M_exception_object); - __sync_add_and_fetch (&eh->referenceCount, 1); + __atomic_add_fetch (&eh->referenceCount, 1, __ATOMIC_ACQ_REL); } } @@ -87,7 +87,7 @@ std::__exception_ptr::exception_ptr::_M_release() _GLIBCXX_USE_NOEXCEPT { __cxa_refcounted_exception *eh = __get_refcounted_exception_header_from_obj (_M_exception_object); - if (__sync_sub_and_fetch (&eh->referenceCount, 1) == 0) + if (__atomic_sub_fetch (&eh->referenceCount, 1, __ATOMIC_ACQ_REL) == 0) { if (eh->exc.exceptionDestructor) eh->exc.exceptionDestructor (_M_exception_object); @@ -191,7 +191,7 @@ __gxx_dependent_exception_cleanup(_Unwind_Reason_Code code, __cxa_free_dependent_exception (dep); - if (__sync_sub_and_fetch (&header->referenceCount, 1) == 0) + if (__atomic_sub_fetch (&header->referenceCount, 1, __ATOMIC_ACQ_REL) == 0) { if (header->exc.exceptionDestructor) header->exc.exceptionDestructor (header + 1); @@ -210,7 +210,7 @@ std::rethrow_exception(std::exception_ptr ep) __cxa_dependent_exception *dep = __cxa_allocate_dependent_exception (); dep->primaryException = obj; - __sync_add_and_fetch (&eh->referenceCount, 1); + __atomic_add_fetch (&eh->referenceCount, 1, __ATOMIC_ACQ_REL); dep->unexpectedHandler = __unexpected_handler; dep->terminateHandler = __terminate_handler; diff --git a/libstdc++-v3/libsupc++/eh_throw.cc b/libstdc++-v3/libsupc++/eh_throw.cc index a3d2b0d24b2..de00602cdea 100644 --- a/libstdc++-v3/libsupc++/eh_throw.cc +++ b/libstdc++-v3/libsupc++/eh_throw.cc @@ -1,6 +1,6 @@ // -*- C++ -*- Exception handling routines for throwing. // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, -// 2011 Free Software Foundation, Inc. +// 2011, 2012 Free Software Foundation, Inc. // // This file is part of GCC. // @@ -44,7 +44,7 @@ __gxx_exception_cleanup (_Unwind_Reason_Code code, _Unwind_Exception *exc) __terminate (header->exc.terminateHandler); #if ATOMIC_INT_LOCK_FREE > 1 - if (__sync_sub_and_fetch (&header->referenceCount, 1) == 0) + if (__atomic_sub_fetch (&header->referenceCount, 1, __ATOMIC_ACQ_REL) == 0) { #endif if (header->exc.exceptionDestructor) diff --git a/libstdc++-v3/libsupc++/eh_tm.cc b/libstdc++-v3/libsupc++/eh_tm.cc index 1df8644ea0c..bd9de6c60e4 100644 --- a/libstdc++-v3/libsupc++/eh_tm.cc +++ b/libstdc++-v3/libsupc++/eh_tm.cc @@ -1,5 +1,5 @@ // -*- C++ -*- Exception handling routines for Transactional Memory. -// Copyright (C) 2009, 2011 Free Software Foundation, Inc. +// Copyright (C) 2009, 2011, 2012 Free Software Foundation, Inc. // // This file is part of GCC. // @@ -46,7 +46,7 @@ free_any_cxa_exception (_Unwind_Exception *eo) } #if __GCC_ATOMIC_INT_LOCK_FREE > 1 - if (__sync_sub_and_fetch (&h->referenceCount, 1) == 0) + if (__atomic_sub_fetch (&h->referenceCount, 1, __ATOMIC_ACQ_REL) == 0) #endif __cxa_free_exception (h + 1); } diff --git a/libstdc++-v3/libsupc++/guard.cc b/libstdc++-v3/libsupc++/guard.cc index 643ecd703a1..adc96086108 100644 --- a/libstdc++-v3/libsupc++/guard.cc +++ b/libstdc++-v3/libsupc++/guard.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2002, 2004, 2006, 2008, 2009, 2010, 2011 +// Copyright (C) 2002, 2004, 2006, 2008, 2009, 2010, 2011, 2012 // Free Software Foundation, Inc. // // This file is part of GCC. @@ -239,34 +239,43 @@ namespace __cxxabiv1 return 0; # ifdef _GLIBCXX_USE_FUTEX - // If __sync_* and futex syscall are supported, don't use any global + // If __atomic_* and futex syscall are supported, don't use any global // mutex. if (__gthread_active_p ()) { int *gi = (int *) (void *) g; + int expected(0); const int guard_bit = _GLIBCXX_GUARD_BIT; const int pending_bit = _GLIBCXX_GUARD_PENDING_BIT; const int waiting_bit = _GLIBCXX_GUARD_WAITING_BIT; while (1) { - int old = __sync_val_compare_and_swap (gi, 0, pending_bit); - if (old == 0) - return 1; // This thread should do the initialization. - - if (old == guard_bit) - return 0; // Already initialized. - - if (old == pending_bit) + if (__atomic_compare_exchange_n(gi, &expected, pending_bit, false, + __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED)) { - int newv = old | waiting_bit; - if (__sync_val_compare_and_swap (gi, old, newv) != old) - continue; - - old = newv; + // This thread should do the initialization. + return 1; } - - syscall (SYS_futex, gi, _GLIBCXX_FUTEX_WAIT, old, 0); + + if (expected == guard_bit) + { + // Already initialized. + return 0; + } + if (expected == pending_bit) + { + int newv = expected | waiting_bit; + if (!__atomic_compare_exchange_n(gi, &expected, newv, false, + __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED)) + continue; + + expected = newv; + } + + syscall (SYS_futex, gi, _GLIBCXX_FUTEX_WAIT, expected, 0); } } # else @@ -316,13 +325,13 @@ namespace __cxxabiv1 void __cxa_guard_abort (__guard *g) throw () { #ifdef _GLIBCXX_USE_FUTEX - // If __sync_* and futex syscall are supported, don't use any global + // If __atomic_* and futex syscall are supported, don't use any global // mutex. if (__gthread_active_p ()) { int *gi = (int *) (void *) g; const int waiting_bit = _GLIBCXX_GUARD_WAITING_BIT; - int old = __sync_lock_test_and_set (gi, 0); + int old = __atomic_exchange_n (gi, 0, __ATOMIC_ACQ_REL); if ((old & waiting_bit) != 0) syscall (SYS_futex, gi, _GLIBCXX_FUTEX_WAKE, INT_MAX); @@ -355,14 +364,14 @@ namespace __cxxabiv1 void __cxa_guard_release (__guard *g) throw () { #ifdef _GLIBCXX_USE_FUTEX - // If __sync_* and futex syscall are supported, don't use any global + // If __atomic_* and futex syscall are supported, don't use any global // mutex. if (__gthread_active_p ()) { int *gi = (int *) (void *) g; const int guard_bit = _GLIBCXX_GUARD_BIT; const int waiting_bit = _GLIBCXX_GUARD_WAITING_BIT; - int old = __sync_lock_test_and_set (gi, guard_bit); + int old = __atomic_exchange_n (gi, guard_bit, __ATOMIC_ACQ_REL); if ((old & waiting_bit) != 0) syscall (SYS_futex, gi, _GLIBCXX_FUTEX_WAKE, INT_MAX); diff --git a/libstdc++-v3/po/Makefile.in b/libstdc++-v3/po/Makefile.in index 8c2a15392b2..f4cfa0eecbe 100644 --- a/libstdc++-v3/po/Makefile.in +++ b/libstdc++-v3/po/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.2 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -314,6 +314,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/fragment.am: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh diff --git a/libstdc++-v3/python/Makefile.in b/libstdc++-v3/python/Makefile.in index db4ba30c2cb..d2f8ecd471a 100644 --- a/libstdc++-v3/python/Makefile.in +++ b/libstdc++-v3/python/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.2 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -333,6 +333,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/fragment.am: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in index 94131389a4e..da74cb69b71 100644 --- a/libstdc++-v3/src/Makefile.in +++ b/libstdc++-v3/src/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.2 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -449,6 +449,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/fragment.am: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -489,7 +490,7 @@ clean-toolexeclibLTLIBRARIES: echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done -libstdc++.la: $(libstdc___la_OBJECTS) $(libstdc___la_DEPENDENCIES) +libstdc++.la: $(libstdc___la_OBJECTS) $(libstdc___la_DEPENDENCIES) $(EXTRA_libstdc___la_DEPENDENCIES) $(libstdc___la_LINK) -rpath $(toolexeclibdir) $(libstdc___la_OBJECTS) $(libstdc___la_LIBADD) $(LIBS) mostlyclean-compile: diff --git a/libstdc++-v3/src/c++11/Makefile.in b/libstdc++-v3/src/c++11/Makefile.in index bcdaa58bd35..360cba44554 100644 --- a/libstdc++-v3/src/c++11/Makefile.in +++ b/libstdc++-v3/src/c++11/Makefile.in @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -401,6 +401,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/fragment.am: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -419,7 +420,7 @@ clean-noinstLTLIBRARIES: echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done -libc++11convenience.la: $(libc__11convenience_la_OBJECTS) $(libc__11convenience_la_DEPENDENCIES) +libc++11convenience.la: $(libc__11convenience_la_OBJECTS) $(libc__11convenience_la_DEPENDENCIES) $(EXTRA_libc__11convenience_la_DEPENDENCIES) $(CXXLINK) $(libc__11convenience_la_OBJECTS) $(libc__11convenience_la_LIBADD) $(LIBS) mostlyclean-compile: @@ -508,10 +509,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: diff --git a/libstdc++-v3/src/c++98/Makefile.in b/libstdc++-v3/src/c++98/Makefile.in index 33222f2e724..58e93cdf9d9 100644 --- a/libstdc++-v3/src/c++98/Makefile.in +++ b/libstdc++-v3/src/c++98/Makefile.in @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -483,6 +483,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/fragment.am: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -501,7 +502,7 @@ clean-noinstLTLIBRARIES: echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done -libc++98convenience.la: $(libc__98convenience_la_OBJECTS) $(libc__98convenience_la_DEPENDENCIES) +libc++98convenience.la: $(libc__98convenience_la_OBJECTS) $(libc__98convenience_la_DEPENDENCIES) $(EXTRA_libc__98convenience_la_DEPENDENCIES) $(CXXLINK) $(libc__98convenience_la_OBJECTS) $(libc__98convenience_la_LIBADD) $(LIBS) mostlyclean-compile: @@ -590,10 +591,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc index 4276c406269..39f9ce3b42e 100644 --- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc +++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc @@ -1,7 +1,7 @@ // { dg-options "-std=gnu++0x" } // { dg-do compile } -// Copyright (C) 2010, 2011 Free Software Foundation +// Copyright (C) 2010, 2011, 2012 Free Software Foundation // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the diff --git a/libstdc++-v3/testsuite/Makefile.in b/libstdc++-v3/testsuite/Makefile.in index 9e389d5420e..5520cf017b3 100644 --- a/libstdc++-v3/testsuite/Makefile.in +++ b/libstdc++-v3/testsuite/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.2 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -345,6 +345,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/fragment.am: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh diff --git a/libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc b/libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc index 0b86e8eeb92..0309f8fc6be 100644 --- a/libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc +++ b/libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc @@ -1,6 +1,6 @@ // { dg-do compile } -// Copyright (C) 2010 Free Software Foundation +// Copyright (C) 2010, 2012 Free Software Foundation // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the |