From 47cc7deb0bd4e625791d2db9246152466595aabd Mon Sep 17 00:00:00 2001 From: Feiyang Chen Date: Fri, 16 Dec 2022 09:22:08 +0800 Subject: [PATCH] Add LOONGARCH64/Linux support --- Makefile.all.am | 7 + Makefile.in | 52 +- Makefile.tool.am | 12 + Makefile.vex.am | 14 +- Makefile.vex.in | 215 +- README | 1 + VEX/auxprogs/genoffsets.c | 36 + VEX/priv/guest_loongarch64_defs.h | 130 + VEX/priv/guest_loongarch64_helpers.c | 870 + VEX/priv/guest_loongarch64_toIR.c | 9694 +++ VEX/priv/host_loongarch64_defs.c | 3015 + VEX/priv/host_loongarch64_defs.h | 685 + VEX/priv/host_loongarch64_isel.c | 2782 + VEX/priv/ir_defs.c | 35 +- VEX/priv/main_main.c | 109 + VEX/pub/libvex.h | 22 + VEX/pub/libvex_basictypes.h | 4 + VEX/pub/libvex_guest_loongarch64.h | 171 + VEX/pub/libvex_guest_offsets.h | 33 + VEX/pub/libvex_ir.h | 28 +- VEX/pub/libvex_trc_values.h | 1 + aclocal.m4 | 83 +- auxprogs/Makefile.in | 18 +- cachegrind/Makefile.in | 30 +- cachegrind/cg_arch.c | 7 + cachegrind/cg_branchpred.c | 2 +- cachegrind/tests/Makefile.in | 18 +- cachegrind/tests/x86/Makefile.in | 18 +- callgrind/Makefile.in | 30 +- callgrind/tests/Makefile.in | 18 +- compile | 6 +- config.guess | 1440 +- config.h | 17 +- config.h.in | 13 +- config.sub | 708 +- configure | 8828 +-- configure.ac | 28 +- coregrind/Makefile.am | 12 +- coregrind/Makefile.in | 265 +- coregrind/launcher-linux.c | 11 +- coregrind/m_aspacemgr/aspacemgr-common.c | 9 +- coregrind/m_aspacemgr/aspacemgr-linux.c | 3 +- coregrind/m_cache.c | 233 + coregrind/m_coredump/coredump-elf.c | 42 + coregrind/m_debuginfo/d3basics.c | 3 + coregrind/m_debuginfo/debuginfo.c | 30 +- coregrind/m_debuginfo/priv_storage.h | 19 +- coregrind/m_debuginfo/readdwarf.c | 47 +- coregrind/m_debuginfo/readelf.c | 4 +- coregrind/m_debuginfo/storage.c | 9 + coregrind/m_debuglog.c | 35 + .../m_dispatch/dispatch-loongarch64-linux.S | 314 + .../loongarch-base64-valgrind-s1.xml | 45 + .../loongarch-base64-valgrind-s2.xml | 45 + coregrind/m_gdbserver/loongarch-base64.xml | 45 + .../loongarch64-linux-valgrind.xml | 15 + coregrind/m_gdbserver/loongarch64-linux.xml | 13 + coregrind/m_gdbserver/target.c | 2 + .../m_gdbserver/valgrind-low-loongarch64.c | 195 + coregrind/m_gdbserver/valgrind_low.h | 1 + coregrind/m_initimg/initimg-linux.c | 17 +- coregrind/m_libcassert.c | 20 + coregrind/m_libcfile.c | 48 +- coregrind/m_libcproc.c | 12 +- coregrind/m_libcsetjmp.c | 66 + coregrind/m_machine.c | 194 +- coregrind/m_main.c | 37 +- coregrind/m_options.c | 3 +- coregrind/m_redir.c | 17 + coregrind/m_scheduler/scheduler.c | 8 + .../m_sigframe/sigframe-loongarch64-linux.c | 285 + coregrind/m_signals.c | 76 +- coregrind/m_stacktrace.c | 94 + coregrind/m_syscall.c | 32 + coregrind/m_syswrap/priv_syswrap-linux.h | 7 + coregrind/m_syswrap/priv_types_n_macros.h | 3 +- .../m_syswrap/syscall-loongarch64-linux.S | 143 + coregrind/m_syswrap/syswrap-generic.c | 2 +- coregrind/m_syswrap/syswrap-linux.c | 36 +- .../m_syswrap/syswrap-loongarch64-linux.c | 644 + coregrind/m_syswrap/syswrap-main.c | 86 +- coregrind/m_trampoline.S | 48 + coregrind/m_translate.c | 5 + coregrind/m_vki.c | 6 +- coregrind/pub_core_aspacemgr.h | 3 +- coregrind/pub_core_basics.h | 8 +- coregrind/pub_core_debuginfo.h | 4 + coregrind/pub_core_machine.h | 13 + coregrind/pub_core_mallocfree.h | 1 + coregrind/pub_core_signals.h | 1 + coregrind/pub_core_syscall.h | 1 + coregrind/pub_core_trampoline.h | 6 + coregrind/pub_core_transtab.h | 3 +- coregrind/pub_core_transtab_asm.h | 2 +- coregrind/vgdb-invoker-ptrace.c | 31 +- depcomp | 2 +- dhat/Makefile.in | 30 +- dhat/tests/Makefile.in | 18 +- docs/Makefile.in | 9 +- docs/callgrind_annotate.1 | 4 +- docs/callgrind_control.1 | 4 +- docs/cg_annotate.1 | 4 +- docs/cg_diff.1 | 4 +- docs/cg_merge.1 | 4 +- docs/html/FAQ.html | 2 +- docs/html/QuickStart.html | 2 +- docs/html/dh-manual.html | 28 +- docs/html/dist.html | 2 +- docs/html/dist.readme.html | 1 + docs/html/faq.html | 4 +- docs/html/index.html | 2 +- docs/html/manual.html | 10 +- docs/html/tech-docs.html | 2 +- docs/ms_print.1 | 4 +- docs/valgrind-di-server.1 | 4 +- docs/valgrind-listener.1 | 4 +- docs/valgrind.1 | 4 +- docs/vgdb.1 | 4 +- drd/Makefile.in | 30 +- drd/drd_bitmap.h | 2 +- drd/drd_load_store.c | 4 + drd/tests/Makefile.in | 18 +- drd/tests/pth_barrier_thr_cr.supp | 11 + exp-bbv/Makefile.in | 30 +- exp-bbv/tests/Makefile.in | 18 +- exp-bbv/tests/amd64-linux/Makefile.in | 18 +- exp-bbv/tests/arm-linux/Makefile.in | 18 +- exp-bbv/tests/ppc32-linux/Makefile.in | 18 +- exp-bbv/tests/x86-linux/Makefile.in | 18 +- exp-bbv/tests/x86/Makefile.in | 18 +- gdbserver_tests/Makefile.am | 1 + gdbserver_tests/Makefile.in | 19 +- gdbserver_tests/filter_helgrind_monitor | 2 + .../filter_helgrind_monitor_loongarch64 | 43 + gdbserver_tests/solaris/Makefile.in | 16 +- helgrind/Makefile.in | 30 +- helgrind/hg_main.c | 1 + helgrind/tests/Makefile.am | 7 +- helgrind/tests/Makefile.in | 25 +- helgrind/tests/annotate_hbefore.c | 30 + helgrind/tests/supported_pthread_tunable | 17 + helgrind/tests/tc07_hbl1.c | 17 + helgrind/tests/tc08_hbl2.c | 17 + helgrind/tests/tc11_XCHG.c | 18 + helgrind/tests/tls_threads.vgtest | 1 + helgrind/tests/tls_threads_tunable.stderr.exp | 2 + helgrind/tests/tls_threads_tunable.stdout.exp | 0 helgrind/tests/tls_threads_tunable.vgtest | 4 + include/Makefile.am | 3 + include/Makefile.in | 14 +- include/pub_tool_basics.h | 6 +- include/pub_tool_guest.h | 3 + include/pub_tool_libcsetjmp.h | 8 + include/pub_tool_machine.h | 6 + include/pub_tool_redir.h | 2 + include/pub_tool_vkiscnums_asm.h | 4 + include/valgrind.h | 526 +- include/vgversion_dist.h | 2 +- include/vki/vki-linux.h | 5 + include/vki/vki-loongarch64-linux.h | 827 + .../vki/vki-posixtypes-loongarch64-linux.h | 76 + include/vki/vki-scnums-loongarch64-linux.h | 356 + install-sh | 161 +- lackey/Makefile.in | 30 +- lackey/tests/Makefile.in | 9 +- massif/Makefile.in | 30 +- massif/tests/Makefile.am | 1 + massif/tests/Makefile.in | 19 +- massif/tests/big-alloc.post.exp-loongarch64 | 54 + memcheck/Makefile.in | 30 +- memcheck/mc_machine.c | 119 + memcheck/mc_translate.c | 13 + memcheck/tests/Makefile.am | 4 + memcheck/tests/Makefile.in | 53 +- memcheck/tests/amd64-linux/Makefile.in | 18 +- memcheck/tests/amd64-solaris/Makefile.in | 18 +- memcheck/tests/amd64/Makefile.in | 18 +- memcheck/tests/arm64-linux/Makefile.in | 18 +- memcheck/tests/atomic_incs.c | 84 +- memcheck/tests/common/Makefile.in | 16 +- memcheck/tests/darwin/Makefile.in | 18 +- memcheck/tests/leak-segv-jmp.c | 15 +- memcheck/tests/leak-segv-jmp.stderr.exp | 20 +- memcheck/tests/leak.h | 21 + memcheck/tests/linux/Makefile.in | 18 +- memcheck/tests/loongarch64-linux/Makefile.am | 17 + memcheck/tests/loongarch64-linux/Makefile.in | 965 + .../tests/loongarch64-linux/filter_stderr | 3 + memcheck/tests/loongarch64-linux/scalar.c | 1296 + memcheck/tests/loongarch64-linux/scalar.h | 62 + .../tests/loongarch64-linux/scalar.stderr.exp | 2716 + .../tests/loongarch64-linux/scalar.vgtest | 3 + memcheck/tests/mips32/Makefile.in | 18 +- memcheck/tests/mips64/Makefile.in | 18 +- memcheck/tests/ppc32/Makefile.in | 18 +- memcheck/tests/ppc64/Makefile.in | 18 +- memcheck/tests/s390x/Makefile.in | 18 +- memcheck/tests/solaris/Makefile.in | 18 +- memcheck/tests/unit_libcbase.c | 4 +- memcheck/tests/vbit-test/Makefile.in | 18 +- memcheck/tests/vbit-test/irops.c | 510 +- memcheck/tests/vbit-test/vtest.h | 19 +- memcheck/tests/x86-linux/Makefile.in | 18 +- memcheck/tests/x86-solaris/Makefile.in | 18 +- memcheck/tests/x86/Makefile.in | 18 +- missing | 2 +- mpi/Makefile.in | 16 +- none/Makefile.in | 30 +- none/tests/Makefile.am | 8 +- none/tests/Makefile.in | 59 +- none/tests/allexec_prepare_prereq | 13 +- none/tests/amd64-darwin/Makefile.in | 18 +- none/tests/amd64-linux/Makefile.in | 18 +- none/tests/amd64-solaris/Makefile.in | 18 +- none/tests/amd64/Makefile.in | 18 +- none/tests/arm/Makefile.in | 18 +- none/tests/arm64/Makefile.in | 18 +- none/tests/darwin/Makefile.in | 18 +- none/tests/libvex_test.c | 7 +- none/tests/linux/Makefile.in | 18 +- none/tests/loongarch64/Makefile.am | 39 + none/tests/loongarch64/Makefile.in | 1123 + none/tests/loongarch64/allexec.c | 56 + none/tests/loongarch64/atomic.c | 75 + none/tests/loongarch64/atomic.stderr.exp | 0 none/tests/loongarch64/atomic.stdout.exp | 72 + none/tests/loongarch64/atomic.vgtest | 3 + none/tests/loongarch64/branch.c | 148 + none/tests/loongarch64/branch.stderr.exp | 0 none/tests/loongarch64/branch.stdout.exp | 64 + none/tests/loongarch64/branch.vgtest | 2 + none/tests/loongarch64/cpucfg.c | 24 + none/tests/loongarch64/cpucfg.stderr.exp | 0 none/tests/loongarch64/cpucfg.stdout.exp | 72 + none/tests/loongarch64/cpucfg.vgtest | 3 + none/tests/loongarch64/fault.c | 234 + none/tests/loongarch64/fault.stderr.exp | 138 + none/tests/loongarch64/fault.stdout.exp | 267 + none/tests/loongarch64/fault.vgtest | 2 + none/tests/loongarch64/fault_fp.c | 163 + none/tests/loongarch64/fault_fp.stderr.exp | 64 + none/tests/loongarch64/fault_fp.stdout.exp | 189 + none/tests/loongarch64/fault_fp.vgtest | 3 + none/tests/loongarch64/filter_stderr | 3 + none/tests/loongarch64/float.c | 804 + none/tests/loongarch64/float.stderr.exp | 0 none/tests/loongarch64/float.stdout.exp | 54240 ++++++++++++++++ none/tests/loongarch64/float.vgtest | 3 + none/tests/loongarch64/integer.c | 1311 + none/tests/loongarch64/integer.stderr.exp | 0 none/tests/loongarch64/integer.stdout.exp | 2748 + none/tests/loongarch64/integer.vgtest | 2 + none/tests/loongarch64/llsc.c | 69 + none/tests/loongarch64/llsc.stderr.exp | 0 none/tests/loongarch64/llsc.stdout.exp | 6 + none/tests/loongarch64/llsc.vgtest | 2 + none/tests/loongarch64/memory.c | 345 + none/tests/loongarch64/memory.stderr.exp | 0 none/tests/loongarch64/memory.stdout.exp | 109 + none/tests/loongarch64/memory.vgtest | 2 + none/tests/loongarch64/move.c | 112 + none/tests/loongarch64/move.stderr.exp | 0 none/tests/loongarch64/move.stdout.exp | 156 + none/tests/loongarch64/move.vgtest | 3 + none/tests/loongarch64/pc.c | 66 + none/tests/loongarch64/pc.stderr.exp | 0 none/tests/loongarch64/pc.stdout.exp | 28 + none/tests/loongarch64/pc.vgtest | 2 + none/tests/loongarch64/special.c | 112 + none/tests/loongarch64/special.stderr.exp | 0 none/tests/loongarch64/special.stdout.exp | 48 + none/tests/loongarch64/special.vgtest | 2 + none/tests/mips32/Makefile.in | 18 +- none/tests/mips64/Makefile.in | 18 +- none/tests/nanomips/Makefile.in | 18 +- none/tests/ppc32/Makefile.in | 18 +- none/tests/ppc64/Makefile.in | 18 +- none/tests/s390x/Makefile.in | 18 +- none/tests/scripts/Makefile.in | 16 +- none/tests/solaris/Makefile.in | 18 +- none/tests/x86-darwin/Makefile.in | 18 +- none/tests/x86-linux/Makefile.in | 18 +- none/tests/x86-solaris/Makefile.in | 18 +- none/tests/x86/Makefile.in | 18 +- perf/Makefile.in | 18 +- shared/Makefile.in | 9 +- solaris/Makefile.in | 9 +- tests/Makefile.am | 3 +- tests/Makefile.in | 45 +- tests/arch_test.c | 5 + tests/loongarch64_features.c | 81 + tests/platform_test | 1 + 292 files changed, 99402 insertions(+), 5720 deletions(-) create mode 100644 VEX/priv/guest_loongarch64_defs.h create mode 100644 VEX/priv/guest_loongarch64_helpers.c create mode 100644 VEX/priv/guest_loongarch64_toIR.c create mode 100644 VEX/priv/host_loongarch64_defs.c create mode 100644 VEX/priv/host_loongarch64_defs.h create mode 100644 VEX/priv/host_loongarch64_isel.c create mode 100644 VEX/pub/libvex_guest_loongarch64.h create mode 100644 coregrind/m_dispatch/dispatch-loongarch64-linux.S create mode 100644 coregrind/m_gdbserver/loongarch-base64-valgrind-s1.xml create mode 100644 coregrind/m_gdbserver/loongarch-base64-valgrind-s2.xml create mode 100644 coregrind/m_gdbserver/loongarch-base64.xml create mode 100644 coregrind/m_gdbserver/loongarch64-linux-valgrind.xml create mode 100644 coregrind/m_gdbserver/loongarch64-linux.xml create mode 100644 coregrind/m_gdbserver/valgrind-low-loongarch64.c create mode 100644 coregrind/m_sigframe/sigframe-loongarch64-linux.c create mode 100644 coregrind/m_syswrap/syscall-loongarch64-linux.S create mode 100644 coregrind/m_syswrap/syswrap-loongarch64-linux.c create mode 100755 gdbserver_tests/filter_helgrind_monitor_loongarch64 create mode 100755 helgrind/tests/supported_pthread_tunable create mode 100644 helgrind/tests/tls_threads_tunable.stderr.exp create mode 100644 helgrind/tests/tls_threads_tunable.stdout.exp create mode 100644 helgrind/tests/tls_threads_tunable.vgtest create mode 100644 include/vki/vki-loongarch64-linux.h create mode 100644 include/vki/vki-posixtypes-loongarch64-linux.h create mode 100644 include/vki/vki-scnums-loongarch64-linux.h create mode 100644 massif/tests/big-alloc.post.exp-loongarch64 create mode 100644 memcheck/tests/loongarch64-linux/Makefile.am create mode 100644 memcheck/tests/loongarch64-linux/Makefile.in create mode 100755 memcheck/tests/loongarch64-linux/filter_stderr create mode 100644 memcheck/tests/loongarch64-linux/scalar.c create mode 100644 memcheck/tests/loongarch64-linux/scalar.h create mode 100644 memcheck/tests/loongarch64-linux/scalar.stderr.exp create mode 100644 memcheck/tests/loongarch64-linux/scalar.vgtest create mode 100644 none/tests/loongarch64/Makefile.am create mode 100644 none/tests/loongarch64/Makefile.in create mode 100644 none/tests/loongarch64/allexec.c create mode 100644 none/tests/loongarch64/atomic.c create mode 100644 none/tests/loongarch64/atomic.stderr.exp create mode 100644 none/tests/loongarch64/atomic.stdout.exp create mode 100644 none/tests/loongarch64/atomic.vgtest create mode 100644 none/tests/loongarch64/branch.c create mode 100644 none/tests/loongarch64/branch.stderr.exp create mode 100644 none/tests/loongarch64/branch.stdout.exp create mode 100644 none/tests/loongarch64/branch.vgtest create mode 100644 none/tests/loongarch64/cpucfg.c create mode 100644 none/tests/loongarch64/cpucfg.stderr.exp create mode 100644 none/tests/loongarch64/cpucfg.stdout.exp create mode 100644 none/tests/loongarch64/cpucfg.vgtest create mode 100644 none/tests/loongarch64/fault.c create mode 100644 none/tests/loongarch64/fault.stderr.exp create mode 100644 none/tests/loongarch64/fault.stdout.exp create mode 100644 none/tests/loongarch64/fault.vgtest create mode 100644 none/tests/loongarch64/fault_fp.c create mode 100644 none/tests/loongarch64/fault_fp.stderr.exp create mode 100644 none/tests/loongarch64/fault_fp.stdout.exp create mode 100644 none/tests/loongarch64/fault_fp.vgtest create mode 100755 none/tests/loongarch64/filter_stderr create mode 100644 none/tests/loongarch64/float.c create mode 100644 none/tests/loongarch64/float.stderr.exp create mode 100644 none/tests/loongarch64/float.stdout.exp create mode 100644 none/tests/loongarch64/float.vgtest create mode 100644 none/tests/loongarch64/integer.c create mode 100644 none/tests/loongarch64/integer.stderr.exp create mode 100644 none/tests/loongarch64/integer.stdout.exp create mode 100644 none/tests/loongarch64/integer.vgtest create mode 100644 none/tests/loongarch64/llsc.c create mode 100644 none/tests/loongarch64/llsc.stderr.exp create mode 100644 none/tests/loongarch64/llsc.stdout.exp create mode 100644 none/tests/loongarch64/llsc.vgtest create mode 100644 none/tests/loongarch64/memory.c create mode 100644 none/tests/loongarch64/memory.stderr.exp create mode 100644 none/tests/loongarch64/memory.stdout.exp create mode 100644 none/tests/loongarch64/memory.vgtest create mode 100644 none/tests/loongarch64/move.c create mode 100644 none/tests/loongarch64/move.stderr.exp create mode 100644 none/tests/loongarch64/move.stdout.exp create mode 100644 none/tests/loongarch64/move.vgtest create mode 100644 none/tests/loongarch64/pc.c create mode 100644 none/tests/loongarch64/pc.stderr.exp create mode 100644 none/tests/loongarch64/pc.stdout.exp create mode 100644 none/tests/loongarch64/pc.vgtest create mode 100644 none/tests/loongarch64/special.c create mode 100644 none/tests/loongarch64/special.stderr.exp create mode 100644 none/tests/loongarch64/special.stdout.exp create mode 100644 none/tests/loongarch64/special.vgtest create mode 100644 tests/loongarch64_features.c diff --git a/Makefile.all.am b/Makefile.all.am index 6d88670..5234303 100644 --- a/Makefile.all.am +++ b/Makefile.all.am @@ -257,6 +257,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g + AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -315,6 +321,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ diff --git a/Makefile.in b/Makefile.in index ec4875c..ff9a4f7 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -190,8 +190,8 @@ am__recursive_targets = \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir distdir-am dist dist-all distcheck -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ - $(LISP)config.h.in +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ + config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. @@ -208,9 +208,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -CSCOPE = cscope am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/glibc-2.X.supp.in $(srcdir)/valgrind.pc.in \ $(srcdir)/valgrind.spec.in $(top_srcdir)/Makefile.all.am \ @@ -255,6 +252,8 @@ am__relativize = \ DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 GZIP_ENV = --best DIST_TARGETS = dist-bzip2 dist-gzip +# Exists only to be overridden by the user if desired. +AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' @@ -278,6 +277,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -291,6 +292,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -436,6 +438,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -576,6 +579,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -621,6 +630,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ TOOLS = \ @@ -943,7 +953,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am @@ -1029,6 +1038,10 @@ dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) +dist-zstd: distdir + tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst + $(am__post_remove_distdir) + dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @@ -1071,6 +1084,8 @@ distcheck: dist eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ + *.tar.zst*) \ + zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) @@ -1086,7 +1101,7 @@ distcheck: dist $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ @@ -1148,7 +1163,8 @@ installdirs-am: done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-recursive -install-exec: install-exec-recursive +install-exec: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive @@ -1251,19 +1267,19 @@ uninstall-am: uninstall-pkgconfigDATA uninstall-pkgincludeHEADERS \ uninstall-vglibDATA .MAKE: $(am__recursive_targets) all check install install-am \ - install-strip + install-exec install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \ am--refresh check check-am clean clean-cscope clean-generic \ clean-local cscope cscopelist-am ctags ctags-am dist dist-all \ dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar dist-tarZ \ - dist-xz dist-zip distcheck distclean distclean-generic \ - distclean-hdr distclean-tags distcleancheck distdir \ - distuninstallcheck dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgconfigDATA \ + dist-xz dist-zip dist-zstd distcheck distclean \ + distclean-generic distclean-hdr distclean-tags distcleancheck \ + distdir distuninstallcheck dvi dvi-am html html-am info \ + info-am install install-am install-data install-data-am \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-pkgconfigDATA \ install-pkgincludeHEADERS install-ps install-ps-am \ install-strip install-vglibDATA installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ diff --git a/Makefile.tool.am b/Makefile.tool.am index 2bf90de..833638f 100644 --- a/Makefile.tool.am +++ b/Makefile.tool.am @@ -84,6 +84,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ @FLAG_M64@ +TOOL_LDFLAGS_LOONGARCH64_LINUX = \ + -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ + @FLAG_M64@ + TOOL_LDFLAGS_X86_SOLARIS = \ $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ @@ -146,6 +150,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ LIBREPLACEMALLOC_MIPS64_LINUX = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a +LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a + LIBREPLACEMALLOC_X86_SOLARIS = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a @@ -208,6 +215,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ $(LIBREPLACEMALLOC_MIPS64_LINUX) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ + -Wl,--no-whole-archive + LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_SOLARIS) \ diff --git a/Makefile.vex.am b/Makefile.vex.am index 98d8483..009d93b 100644 --- a/Makefile.vex.am +++ b/Makefile.vex.am @@ -26,6 +26,7 @@ pkginclude_HEADERS = \ pub/libvex_guest_s390x.h \ pub/libvex_guest_mips32.h \ pub/libvex_guest_mips64.h \ + pub/libvex_guest_loongarch64.h \ pub/libvex_s390x_common.h \ pub/libvex_ir.h \ pub/libvex_trc_values.h \ @@ -49,6 +50,7 @@ noinst_HEADERS = \ priv/guest_mips_defs.h \ priv/mips_defs.h \ priv/guest_nanomips_defs.h \ + priv/guest_loongarch64_defs.h \ priv/host_generic_regs.h \ priv/host_generic_simd64.h \ priv/host_generic_simd128.h \ @@ -64,7 +66,8 @@ noinst_HEADERS = \ priv/s390_defs.h \ priv/host_mips_defs.h \ priv/host_nanomips_defs.h \ - priv/common_nanomips_defs.h + priv/common_nanomips_defs.h \ + priv/host_loongarch64_defs.h BUILT_SOURCES = pub/libvex_guest_offsets.h CLEANFILES = pub/libvex_guest_offsets.h @@ -93,7 +96,8 @@ pub/libvex_guest_offsets.h: auxprogs/genoffsets.c \ pub/libvex_guest_arm64.h \ pub/libvex_guest_s390x.h \ pub/libvex_guest_mips32.h \ - pub/libvex_guest_mips64.h + pub/libvex_guest_mips64.h \ + pub/libvex_guest_loongarch64.h rm -f auxprogs/genoffsets.s $(mkdir_p) auxprogs pub $(CC) $(CFLAGS_FOR_GENOFFSETS) \ @@ -151,6 +155,8 @@ LIBVEX_SOURCES_COMMON = \ priv/guest_mips_toIR.c \ priv/guest_nanomips_helpers.c \ priv/guest_nanomips_toIR.c \ + priv/guest_loongarch64_helpers.c \ + priv/guest_loongarch64_toIR.c \ priv/host_generic_regs.c \ priv/host_generic_simd64.c \ priv/host_generic_simd128.c \ @@ -174,7 +180,9 @@ LIBVEX_SOURCES_COMMON = \ priv/host_mips_defs.c \ priv/host_nanomips_defs.c \ priv/host_mips_isel.c \ - priv/host_nanomips_isel.c + priv/host_nanomips_isel.c \ + priv/host_loongarch64_defs.c \ + priv/host_loongarch64_isel.c LIBVEXMULTIARCH_SOURCES = priv/multiarch_main_main.c diff --git a/Makefile.vex.in b/Makefile.vex.in index f32a5e9..5a91d57 100644 --- a/Makefile.vex.in +++ b/Makefile.vex.in @@ -1,7 +1,7 @@ -# Makefile.vex.in generated by automake 1.16.1 from Makefile.vex.am. +# Makefile.vex.in generated by automake 1.16.5 from Makefile.vex.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -187,6 +187,8 @@ am__objects_1 = priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-main_globals.$(OBJEX priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_toIR.$(OBJEXT) \ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_nanomips_helpers.$(OBJEXT) \ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_nanomips_toIR.$(OBJEXT) \ + priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.$(OBJEXT) \ + priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.$(OBJEXT) \ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.$(OBJEXT) \ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd64.$(OBJEXT) \ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd128.$(OBJEXT) \ @@ -210,7 +212,9 @@ am__objects_1 = priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-main_globals.$(OBJEX priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_defs.$(OBJEXT) \ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_defs.$(OBJEXT) \ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_isel.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_isel.$(OBJEXT) + priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_isel.$(OBJEXT) \ + priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.$(OBJEXT) \ + priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.$(OBJEXT) am_libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS = $(am__objects_1) libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS = \ $(am_libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS) @@ -228,7 +232,8 @@ am__libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST = \ priv/guest_s390_helpers.c priv/guest_s390_toIR.c \ priv/guest_mips_helpers.c priv/guest_mipsdsp_toIR.c \ priv/guest_mips_toIR.c priv/guest_nanomips_helpers.c \ - priv/guest_nanomips_toIR.c priv/host_generic_regs.c \ + priv/guest_nanomips_toIR.c priv/guest_loongarch64_helpers.c \ + priv/guest_loongarch64_toIR.c priv/host_generic_regs.c \ priv/host_generic_simd64.c priv/host_generic_simd128.c \ priv/host_generic_simd256.c priv/host_generic_maddf.c \ priv/host_generic_reg_alloc2.c priv/host_generic_reg_alloc3.c \ @@ -239,7 +244,8 @@ am__libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST = \ priv/host_arm64_isel.c priv/host_s390_defs.c \ priv/host_s390_isel.c priv/s390_disasm.c priv/host_mips_defs.c \ priv/host_nanomips_defs.c priv/host_mips_isel.c \ - priv/host_nanomips_isel.c + priv/host_nanomips_isel.c priv/host_loongarch64_defs.c \ + priv/host_loongarch64_isel.c am__objects_2 = priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.$(OBJEXT) \ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_main.$(OBJEXT) \ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_util.$(OBJEXT) \ @@ -266,6 +272,8 @@ am__objects_2 = priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.$(OBJEX priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_toIR.$(OBJEXT) \ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_nanomips_helpers.$(OBJEXT) \ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_nanomips_toIR.$(OBJEXT) \ + priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.$(OBJEXT) \ + priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.$(OBJEXT) \ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.$(OBJEXT) \ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd64.$(OBJEXT) \ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd128.$(OBJEXT) \ @@ -289,7 +297,9 @@ am__objects_2 = priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.$(OBJEX priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_defs.$(OBJEXT) \ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_defs.$(OBJEXT) \ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_isel.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_isel.$(OBJEXT) + priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_isel.$(OBJEXT) \ + priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.$(OBJEXT) \ + priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.$(OBJEXT) @VGCONF_HAVE_PLATFORM_SEC_TRUE@am_libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_OBJECTS = \ @VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(am__objects_2) libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_OBJECTS = \ @@ -333,6 +343,8 @@ am__depfiles_remade = priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-gues priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_arm_toIR.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_bb_to_IR.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_x87.Po \ + priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po \ + priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_helpers.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_toIR.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mipsdsp_toIR.Po \ @@ -357,6 +369,8 @@ am__depfiles_remade = priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-gues priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd128.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd256.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd64.Po \ + priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Po \ + priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_defs.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_isel.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_defs.Po \ @@ -383,6 +397,8 @@ am__depfiles_remade = priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-gues priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_arm_toIR.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_bb_to_IR.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_x87.Po \ + priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po \ + priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_helpers.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_toIR.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mipsdsp_toIR.Po \ @@ -407,6 +423,8 @@ am__depfiles_remade = priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-gues priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd128.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd256.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd64.Po \ + priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Po \ + priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_defs.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_isel.Po \ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_defs.Po \ @@ -475,8 +493,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.vex.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -501,6 +517,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -514,6 +532,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -659,6 +678,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -798,6 +818,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -843,6 +869,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ @@ -869,6 +896,7 @@ pkginclude_HEADERS = \ pub/libvex_guest_s390x.h \ pub/libvex_guest_mips32.h \ pub/libvex_guest_mips64.h \ + pub/libvex_guest_loongarch64.h \ pub/libvex_s390x_common.h \ pub/libvex_ir.h \ pub/libvex_trc_values.h \ @@ -892,6 +920,7 @@ noinst_HEADERS = \ priv/guest_mips_defs.h \ priv/mips_defs.h \ priv/guest_nanomips_defs.h \ + priv/guest_loongarch64_defs.h \ priv/host_generic_regs.h \ priv/host_generic_simd64.h \ priv/host_generic_simd128.h \ @@ -907,7 +936,8 @@ noinst_HEADERS = \ priv/s390_defs.h \ priv/host_mips_defs.h \ priv/host_nanomips_defs.h \ - priv/common_nanomips_defs.h + priv/common_nanomips_defs.h \ + priv/host_loongarch64_defs.h BUILT_SOURCES = pub/libvex_guest_offsets.h CLEANFILES = pub/libvex_guest_offsets.h @@ -951,6 +981,8 @@ LIBVEX_SOURCES_COMMON = \ priv/guest_mips_toIR.c \ priv/guest_nanomips_helpers.c \ priv/guest_nanomips_toIR.c \ + priv/guest_loongarch64_helpers.c \ + priv/guest_loongarch64_toIR.c \ priv/host_generic_regs.c \ priv/host_generic_simd64.c \ priv/host_generic_simd128.c \ @@ -974,7 +1006,9 @@ LIBVEX_SOURCES_COMMON = \ priv/host_mips_defs.c \ priv/host_nanomips_defs.c \ priv/host_mips_isel.c \ - priv/host_nanomips_isel.c + priv/host_nanomips_isel.c \ + priv/host_loongarch64_defs.c \ + priv/host_loongarch64_isel.c LIBVEXMULTIARCH_SOURCES = priv/multiarch_main_main.c LIBVEX_CFLAGS_NO_LTO = \ @@ -1140,6 +1174,10 @@ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_nanomips_helpers.$(OBJEXT): \ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_nanomips_toIR.$(OBJEXT): \ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) +priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.$(OBJEXT): \ + priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) +priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.$(OBJEXT): \ + priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.$(OBJEXT): \ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd64.$(OBJEXT): \ @@ -1188,6 +1226,10 @@ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_isel.$(OBJEXT): \ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_isel.$(OBJEXT): \ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) +priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.$(OBJEXT): \ + priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) +priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.$(OBJEXT): \ + priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) libvex-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a: $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_DEPENDENCIES) $(EXTRA_libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_DEPENDENCIES) $(AM_V_at)-rm -f libvex-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a @@ -1245,6 +1287,10 @@ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_nanomips_helpers.$(OBJEXT): \ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_nanomips_toIR.$(OBJEXT): \ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) +priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.$(OBJEXT): \ + priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) +priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.$(OBJEXT): \ + priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.$(OBJEXT): \ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd64.$(OBJEXT): \ @@ -1293,6 +1339,10 @@ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_isel.$(OBJEXT): \ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_isel.$(OBJEXT): \ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) +priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.$(OBJEXT): \ + priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) +priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.$(OBJEXT): \ + priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) libvex-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a: $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_OBJECTS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_DEPENDENCIES) $(EXTRA_libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_DEPENDENCIES) $(AM_V_at)-rm -f libvex-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a @@ -1328,6 +1378,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_arm_toIR.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_bb_to_IR.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_x87.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_helpers.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_toIR.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mipsdsp_toIR.Po@am__quote@ # am--include-marker @@ -1352,6 +1404,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd128.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd256.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd64.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_defs.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_isel.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_defs.Po@am__quote@ # am--include-marker @@ -1378,6 +1432,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_arm_toIR.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_bb_to_IR.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_x87.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_helpers.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_toIR.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mipsdsp_toIR.Po@am__quote@ # am--include-marker @@ -1402,6 +1458,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd128.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd256.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd64.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_defs.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_isel.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_defs.Po@am__quote@ # am--include-marker @@ -1809,6 +1867,34 @@ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_nanomips_toIR.obj: priv/guest_ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_nanomips_toIR.obj `if test -f 'priv/guest_nanomips_toIR.c'; then $(CYGPATH_W) 'priv/guest_nanomips_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_nanomips_toIR.c'; fi` +priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.o: priv/guest_loongarch64_helpers.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.o `test -f 'priv/guest_loongarch64_helpers.c' || echo '$(srcdir)/'`priv/guest_loongarch64_helpers.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/guest_loongarch64_helpers.c' object='priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.o `test -f 'priv/guest_loongarch64_helpers.c' || echo '$(srcdir)/'`priv/guest_loongarch64_helpers.c + +priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj: priv/guest_loongarch64_helpers.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj `if test -f 'priv/guest_loongarch64_helpers.c'; then $(CYGPATH_W) 'priv/guest_loongarch64_helpers.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_loongarch64_helpers.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/guest_loongarch64_helpers.c' object='priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj `if test -f 'priv/guest_loongarch64_helpers.c'; then $(CYGPATH_W) 'priv/guest_loongarch64_helpers.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_loongarch64_helpers.c'; fi` + +priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.o: priv/guest_loongarch64_toIR.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.o `test -f 'priv/guest_loongarch64_toIR.c' || echo '$(srcdir)/'`priv/guest_loongarch64_toIR.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/guest_loongarch64_toIR.c' object='priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.o `test -f 'priv/guest_loongarch64_toIR.c' || echo '$(srcdir)/'`priv/guest_loongarch64_toIR.c + +priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj: priv/guest_loongarch64_toIR.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj `if test -f 'priv/guest_loongarch64_toIR.c'; then $(CYGPATH_W) 'priv/guest_loongarch64_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_loongarch64_toIR.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/guest_loongarch64_toIR.c' object='priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj `if test -f 'priv/guest_loongarch64_toIR.c'; then $(CYGPATH_W) 'priv/guest_loongarch64_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_loongarch64_toIR.c'; fi` + priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.o: priv/host_generic_regs.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.o `test -f 'priv/host_generic_regs.c' || echo '$(srcdir)/'`priv/host_generic_regs.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.Po @@ -2145,6 +2231,34 @@ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_isel.obj: priv/host_na @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_isel.obj `if test -f 'priv/host_nanomips_isel.c'; then $(CYGPATH_W) 'priv/host_nanomips_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_nanomips_isel.c'; fi` +priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.o: priv/host_loongarch64_defs.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.o `test -f 'priv/host_loongarch64_defs.c' || echo '$(srcdir)/'`priv/host_loongarch64_defs.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/host_loongarch64_defs.c' object='priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.o `test -f 'priv/host_loongarch64_defs.c' || echo '$(srcdir)/'`priv/host_loongarch64_defs.c + +priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.obj: priv/host_loongarch64_defs.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.obj -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.obj `if test -f 'priv/host_loongarch64_defs.c'; then $(CYGPATH_W) 'priv/host_loongarch64_defs.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_loongarch64_defs.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/host_loongarch64_defs.c' object='priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.obj `if test -f 'priv/host_loongarch64_defs.c'; then $(CYGPATH_W) 'priv/host_loongarch64_defs.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_loongarch64_defs.c'; fi` + +priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.o: priv/host_loongarch64_isel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.o `test -f 'priv/host_loongarch64_isel.c' || echo '$(srcdir)/'`priv/host_loongarch64_isel.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/host_loongarch64_isel.c' object='priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.o `test -f 'priv/host_loongarch64_isel.c' || echo '$(srcdir)/'`priv/host_loongarch64_isel.c + +priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.obj: priv/host_loongarch64_isel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.obj -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.obj `if test -f 'priv/host_loongarch64_isel.c'; then $(CYGPATH_W) 'priv/host_loongarch64_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_loongarch64_isel.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/host_loongarch64_isel.c' object='priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.obj `if test -f 'priv/host_loongarch64_isel.c'; then $(CYGPATH_W) 'priv/host_loongarch64_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_loongarch64_isel.c'; fi` + priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.o: priv/main_globals.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.o `test -f 'priv/main_globals.c' || echo '$(srcdir)/'`priv/main_globals.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.Po @@ -2509,6 +2623,34 @@ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_nanomips_toIR.obj: priv/guest_ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_nanomips_toIR.obj `if test -f 'priv/guest_nanomips_toIR.c'; then $(CYGPATH_W) 'priv/guest_nanomips_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_nanomips_toIR.c'; fi` +priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.o: priv/guest_loongarch64_helpers.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.o `test -f 'priv/guest_loongarch64_helpers.c' || echo '$(srcdir)/'`priv/guest_loongarch64_helpers.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/guest_loongarch64_helpers.c' object='priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.o `test -f 'priv/guest_loongarch64_helpers.c' || echo '$(srcdir)/'`priv/guest_loongarch64_helpers.c + +priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj: priv/guest_loongarch64_helpers.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj `if test -f 'priv/guest_loongarch64_helpers.c'; then $(CYGPATH_W) 'priv/guest_loongarch64_helpers.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_loongarch64_helpers.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/guest_loongarch64_helpers.c' object='priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj `if test -f 'priv/guest_loongarch64_helpers.c'; then $(CYGPATH_W) 'priv/guest_loongarch64_helpers.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_loongarch64_helpers.c'; fi` + +priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.o: priv/guest_loongarch64_toIR.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.o `test -f 'priv/guest_loongarch64_toIR.c' || echo '$(srcdir)/'`priv/guest_loongarch64_toIR.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/guest_loongarch64_toIR.c' object='priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.o `test -f 'priv/guest_loongarch64_toIR.c' || echo '$(srcdir)/'`priv/guest_loongarch64_toIR.c + +priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj: priv/guest_loongarch64_toIR.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj `if test -f 'priv/guest_loongarch64_toIR.c'; then $(CYGPATH_W) 'priv/guest_loongarch64_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_loongarch64_toIR.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/guest_loongarch64_toIR.c' object='priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj `if test -f 'priv/guest_loongarch64_toIR.c'; then $(CYGPATH_W) 'priv/guest_loongarch64_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_loongarch64_toIR.c'; fi` + priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.o: priv/host_generic_regs.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.o `test -f 'priv/host_generic_regs.c' || echo '$(srcdir)/'`priv/host_generic_regs.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.Po @@ -2845,6 +2987,34 @@ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_isel.obj: priv/host_na @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_isel.obj `if test -f 'priv/host_nanomips_isel.c'; then $(CYGPATH_W) 'priv/host_nanomips_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_nanomips_isel.c'; fi` +priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.o: priv/host_loongarch64_defs.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.o `test -f 'priv/host_loongarch64_defs.c' || echo '$(srcdir)/'`priv/host_loongarch64_defs.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/host_loongarch64_defs.c' object='priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.o `test -f 'priv/host_loongarch64_defs.c' || echo '$(srcdir)/'`priv/host_loongarch64_defs.c + +priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.obj: priv/host_loongarch64_defs.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.obj -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.obj `if test -f 'priv/host_loongarch64_defs.c'; then $(CYGPATH_W) 'priv/host_loongarch64_defs.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_loongarch64_defs.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/host_loongarch64_defs.c' object='priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.obj `if test -f 'priv/host_loongarch64_defs.c'; then $(CYGPATH_W) 'priv/host_loongarch64_defs.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_loongarch64_defs.c'; fi` + +priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.o: priv/host_loongarch64_isel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.o `test -f 'priv/host_loongarch64_isel.c' || echo '$(srcdir)/'`priv/host_loongarch64_isel.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/host_loongarch64_isel.c' object='priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.o `test -f 'priv/host_loongarch64_isel.c' || echo '$(srcdir)/'`priv/host_loongarch64_isel.c + +priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.obj: priv/host_loongarch64_isel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.obj -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.obj `if test -f 'priv/host_loongarch64_isel.c'; then $(CYGPATH_W) 'priv/host_loongarch64_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_loongarch64_isel.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/host_loongarch64_isel.c' object='priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.obj `if test -f 'priv/host_loongarch64_isel.c'; then $(CYGPATH_W) 'priv/host_loongarch64_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_loongarch64_isel.c'; fi` + priv/libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-multiarch_main_main.o: priv/multiarch_main_main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-multiarch_main_main.o -MD -MP -MF priv/$(DEPDIR)/libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-multiarch_main_main.Tpo -c -o priv/libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-multiarch_main_main.o `test -f 'priv/multiarch_main_main.c' || echo '$(srcdir)/'`priv/multiarch_main_main.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-multiarch_main_main.Tpo priv/$(DEPDIR)/libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-multiarch_main_main.Po @@ -2945,7 +3115,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am @@ -2989,7 +3158,8 @@ installdirs: done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am -install-exec: install-exec-am +install-exec: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data: install-data-am uninstall: uninstall-am @@ -3035,6 +3205,8 @@ distclean: distclean-am -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_arm_toIR.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_bb_to_IR.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_x87.Po + -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po + -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_helpers.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_toIR.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mipsdsp_toIR.Po @@ -3059,6 +3231,8 @@ distclean: distclean-am -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd128.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd256.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd64.Po + -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Po + -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_defs.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_isel.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_defs.Po @@ -3085,6 +3259,8 @@ distclean: distclean-am -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_arm_toIR.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_bb_to_IR.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_x87.Po + -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po + -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_helpers.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_toIR.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mipsdsp_toIR.Po @@ -3109,6 +3285,8 @@ distclean: distclean-am -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd128.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd256.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd64.Po + -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Po + -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_defs.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_isel.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_defs.Po @@ -3182,6 +3360,8 @@ maintainer-clean: maintainer-clean-am -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_arm_toIR.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_bb_to_IR.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_x87.Po + -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po + -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_helpers.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_toIR.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mipsdsp_toIR.Po @@ -3206,6 +3386,8 @@ maintainer-clean: maintainer-clean-am -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd128.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd256.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd64.Po + -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Po + -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_defs.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_isel.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_defs.Po @@ -3232,6 +3414,8 @@ maintainer-clean: maintainer-clean-am -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_arm_toIR.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_bb_to_IR.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_x87.Po + -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po + -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_helpers.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_toIR.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mipsdsp_toIR.Po @@ -3256,6 +3440,8 @@ maintainer-clean: maintainer-clean-am -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd128.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd256.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd64.Po + -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Po + -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_defs.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_isel.Po -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_defs.Po @@ -3293,7 +3479,7 @@ ps-am: uninstall-am: uninstall-pkgincludeHEADERS uninstall-pkglibLIBRARIES -.MAKE: all check install install-am install-strip +.MAKE: all check install install-am install-exec install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-pkglibLIBRARIES cscopelist-am ctags \ @@ -3406,7 +3592,8 @@ pub/libvex_guest_offsets.h: auxprogs/genoffsets.c \ pub/libvex_guest_arm64.h \ pub/libvex_guest_s390x.h \ pub/libvex_guest_mips32.h \ - pub/libvex_guest_mips64.h + pub/libvex_guest_mips64.h \ + pub/libvex_guest_loongarch64.h rm -f auxprogs/genoffsets.s $(mkdir_p) auxprogs pub $(CC) $(CFLAGS_FOR_GENOFFSETS) \ diff --git a/README b/README index 511027a..64b5ecb 100644 --- a/README +++ b/README @@ -44,6 +44,7 @@ platforms: - MIPS32/Linux - MIPS64/Linux - nanoMIPS/Linux +- LOONGARCH64/Linux - X86/Solaris - AMD64/Solaris diff --git a/VEX/auxprogs/genoffsets.c b/VEX/auxprogs/genoffsets.c index 54376dc..89edf52 100644 --- a/VEX/auxprogs/genoffsets.c +++ b/VEX/auxprogs/genoffsets.c @@ -53,6 +53,7 @@ #include "../pub/libvex_guest_s390x.h" #include "../pub/libvex_guest_mips32.h" #include "../pub/libvex_guest_mips64.h" +#include "../pub/libvex_guest_loongarch64.h" #define VG_STRINGIFZ(__str) #__str #define VG_STRINGIFY(__str) VG_STRINGIFZ(__str) @@ -262,6 +263,41 @@ void foo ( void ) GENOFFSET(MIPS64,mips64,PC); GENOFFSET(MIPS64,mips64,HI); GENOFFSET(MIPS64,mips64,LO); + + // LOONGARCH64 + GENOFFSET(LOONGARCH64,loongarch64,R0); + GENOFFSET(LOONGARCH64,loongarch64,R1); + GENOFFSET(LOONGARCH64,loongarch64,R2); + GENOFFSET(LOONGARCH64,loongarch64,R3); + GENOFFSET(LOONGARCH64,loongarch64,R4); + GENOFFSET(LOONGARCH64,loongarch64,R5); + GENOFFSET(LOONGARCH64,loongarch64,R6); + GENOFFSET(LOONGARCH64,loongarch64,R7); + GENOFFSET(LOONGARCH64,loongarch64,R8); + GENOFFSET(LOONGARCH64,loongarch64,R9); + GENOFFSET(LOONGARCH64,loongarch64,R10); + GENOFFSET(LOONGARCH64,loongarch64,R11); + GENOFFSET(LOONGARCH64,loongarch64,R12); + GENOFFSET(LOONGARCH64,loongarch64,R13); + GENOFFSET(LOONGARCH64,loongarch64,R14); + GENOFFSET(LOONGARCH64,loongarch64,R15); + GENOFFSET(LOONGARCH64,loongarch64,R16); + GENOFFSET(LOONGARCH64,loongarch64,R17); + GENOFFSET(LOONGARCH64,loongarch64,R18); + GENOFFSET(LOONGARCH64,loongarch64,R19); + GENOFFSET(LOONGARCH64,loongarch64,R20); + GENOFFSET(LOONGARCH64,loongarch64,R21); + GENOFFSET(LOONGARCH64,loongarch64,R22); + GENOFFSET(LOONGARCH64,loongarch64,R23); + GENOFFSET(LOONGARCH64,loongarch64,R24); + GENOFFSET(LOONGARCH64,loongarch64,R25); + GENOFFSET(LOONGARCH64,loongarch64,R26); + GENOFFSET(LOONGARCH64,loongarch64,R27); + GENOFFSET(LOONGARCH64,loongarch64,R28); + GENOFFSET(LOONGARCH64,loongarch64,R29); + GENOFFSET(LOONGARCH64,loongarch64,R30); + GENOFFSET(LOONGARCH64,loongarch64,R31); + GENOFFSET(LOONGARCH64,loongarch64,PC); } /*--------------------------------------------------------------------*/ diff --git a/VEX/priv/guest_loongarch64_defs.h b/VEX/priv/guest_loongarch64_defs.h new file mode 100644 index 0000000..867d859 --- /dev/null +++ b/VEX/priv/guest_loongarch64_defs.h @@ -0,0 +1,130 @@ + +/*---------------------------------------------------------------*/ +/*--- begin guest_loongarch64_defs.h ---*/ +/*---------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2021-2022 Loongson Technology Corporation Limited + + This program 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 2 of the + License, or (at your option) any later version. + + This program 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 this program; if not, see . + + The GNU General Public License is contained in the file COPYING. +*/ + +/* Only to be used within the guest-loongarch64 directory. */ + +#ifndef __VEX_GUEST_LOONGARCH64_DEFS_H +#define __VEX_GUEST_LOONGARCH64_DEFS_H + +#include "libvex_basictypes.h" +#include "guest_generic_bb_to_IR.h" /* DisResult */ + + +/*---------------------------------------------------------*/ +/*--- loongarch64 to IR conversion ---*/ +/*---------------------------------------------------------*/ + +/* Convert one LOONGARCH64 insn to IR. See the type DisOneInstrFn in + guest_generic_bb_to_IR.h. */ +extern DisResult disInstr_LOONGARCH64 ( IRSB* irsb_IN, + const UChar* guest_code_IN, + Long delta, + Addr guest_IP, + VexArch guest_arch, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo, + VexEndness host_endness_IN, + Bool sigill_diag_IN ); + +/* Used by the optimiser to specialise calls to helpers. */ +extern IRExpr* guest_loongarch64_spechelper ( const HChar* function_name, + IRExpr** args, + IRStmt** precedingStmts, + Int n_precedingStmts ); + +/* Describes to the optimser which part of the guest state require + precise memory exceptions. This is logically part of the guest + state description. */ +extern Bool guest_loongarch64_state_requires_precise_mem_exns ( Int minoff, + Int maxoff, + VexRegisterUpdates pxControl ); + +extern VexGuestLayout loongarch64Guest_layout; + + +/*---------------------------------------------------------*/ +/*--- loongarch64 guest helpers ---*/ +/*---------------------------------------------------------*/ + +enum fpop { + FADD_S, FADD_D, FSUB_S, FSUB_D, + FMUL_S, FMUL_D, FDIV_S, FDIV_D, + FMADD_S, FMADD_D, FMSUB_S, FMSUB_D, + FNMADD_S, FNMADD_D, FNMSUB_S, FNMSUB_D, + FMAX_S, FMAX_D, FMIN_S, FMIN_D, + FMAXA_S, FMAXA_D, FMINA_S, FMINA_D, + FABS_S, FABS_D, FNEG_S, FNEG_D, + FSQRT_S, FSQRT_D, + FRECIP_S, FRECIP_D, + FRSQRT_S, FRSQRT_D, + FSCALEB_S, FSCALEB_D, + FLOGB_S, FLOGB_D, + FCMP_CAF_S, FCMP_CAF_D, FCMP_SAF_S, FCMP_SAF_D, + FCMP_CLT_S, FCMP_CLT_D, FCMP_SLT_S, FCMP_SLT_D, + FCMP_CEQ_S, FCMP_CEQ_D, FCMP_SEQ_S, FCMP_SEQ_D, + FCMP_CLE_S, FCMP_CLE_D, FCMP_SLE_S, FCMP_SLE_D, + FCMP_CUN_S, FCMP_CUN_D, FCMP_SUN_S, FCMP_SUN_D, + FCMP_CULT_S, FCMP_CULT_D, FCMP_SULT_S, FCMP_SULT_D, + FCMP_CUEQ_S, FCMP_CUEQ_D, FCMP_SUEQ_S, FCMP_SUEQ_D, + FCMP_CULE_S, FCMP_CULE_D, FCMP_SULE_S, FCMP_SULE_D, + FCMP_CNE_S, FCMP_CNE_D, FCMP_SNE_S, FCMP_SNE_D, + FCMP_COR_S, FCMP_COR_D, FCMP_SOR_S, FCMP_SOR_D, + FCMP_CUNE_S, FCMP_CUNE_D, FCMP_SUNE_S, FCMP_SUNE_D, + FCVT_S_D, FCVT_D_S, + FTINTRM_W_S, FTINTRM_W_D, FTINTRM_L_S, FTINTRM_L_D, + FTINTRP_W_S, FTINTRP_W_D, FTINTRP_L_S, FTINTRP_L_D, + FTINTRZ_W_S, FTINTRZ_W_D, FTINTRZ_L_S, FTINTRZ_L_D, + FTINTRNE_W_S, FTINTRNE_W_D, FTINTRNE_L_S, FTINTRNE_L_D, + FTINT_W_S, FTINT_W_D, FTINT_L_S, FTINT_L_D, + FFINT_S_W, FFINT_D_W, FFINT_S_L, FFINT_D_L, + FRINT_S, FRINT_D +}; + +extern ULong loongarch64_calculate_cpucfg ( ULong src ); +extern ULong loongarch64_calculate_revb_2h ( ULong src ); +extern ULong loongarch64_calculate_revb_4h ( ULong src ); +extern ULong loongarch64_calculate_revb_2w ( ULong src ); +extern ULong loongarch64_calculate_revb_d ( ULong src ); +extern ULong loongarch64_calculate_revh_2w ( ULong src ); +extern ULong loongarch64_calculate_revh_d ( ULong src ); +extern ULong loongarch64_calculate_bitrev_4b ( ULong src ); +extern ULong loongarch64_calculate_bitrev_8b ( ULong src ); +extern ULong loongarch64_calculate_bitrev_w ( ULong src ); +extern ULong loongarch64_calculate_bitrev_d ( ULong src ); +extern ULong loongarch64_calculate_crc ( ULong old, ULong msg, ULong len ); +extern ULong loongarch64_calculate_crcc ( ULong old, ULong msg, ULong len ); +extern ULong loongarch64_calculate_fclass_s ( ULong src ); +extern ULong loongarch64_calculate_fclass_d ( ULong src ); +extern ULong loongarch64_calculate_FCSR ( enum fpop op, ULong src1, + ULong src2, ULong src3 ); + +#endif /* ndef __VEX_GUEST_LOONGARCH64_DEFS_H */ + + +/*---------------------------------------------------------------*/ +/*--- end guest_loongarch64_defs.h ---*/ +/*---------------------------------------------------------------*/ diff --git a/VEX/priv/guest_loongarch64_helpers.c b/VEX/priv/guest_loongarch64_helpers.c new file mode 100644 index 0000000..d65cf70 --- /dev/null +++ b/VEX/priv/guest_loongarch64_helpers.c @@ -0,0 +1,870 @@ + +/*---------------------------------------------------------------*/ +/*--- begin guest_loongarch64_helpers.c ---*/ +/*---------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2021-2022 Loongson Technology Corporation Limited + + This program 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 2 of the + License, or (at your option) any later version. + + This program 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 this program; if not, see . + + The GNU General Public License is contained in the file COPYING. +*/ + +#include "libvex_basictypes.h" +#include "libvex_emnote.h" +#include "libvex_guest_loongarch64.h" +#include "libvex_ir.h" +#include "libvex.h" + +#include "main_util.h" +#include "main_globals.h" +#include "guest_generic_bb_to_IR.h" +#include "guest_loongarch64_defs.h" + + +/* This file contains helper functions for loongarch64 guest code. + Calls to these functions are generated by the back end. */ + +IRExpr* guest_loongarch64_spechelper ( const HChar * function_name, + IRExpr ** args, + IRStmt ** precedingStmts, + Int n_precedingStmts ) +{ + return NULL; +} + +/* VISIBLE TO LIBVEX CLIENT */ +void LibVEX_GuestLOONGARCH64_initialise ( /*OUT*/ + VexGuestLOONGARCH64State* vex_state ) +{ + /* Event check fail addr and counter. */ + vex_state->host_EvC_FAILADDR = 0; + vex_state->host_EvC_COUNTER = 0; + + /* CPU Registers */ + vex_state->guest_R0 = 0; /* Constant zero */ + vex_state->guest_R1 = 0; /* Return address */ + vex_state->guest_R2 = 0; /* Thread pointer */ + vex_state->guest_R3 = 0; /* Stack pointer */ + vex_state->guest_R4 = 0; /* Argument registers / Return value */ + vex_state->guest_R5 = 0; + vex_state->guest_R6 = 0; /* Argument registers */ + vex_state->guest_R7 = 0; + vex_state->guest_R8 = 0; + vex_state->guest_R9 = 0; + vex_state->guest_R10 = 0; + vex_state->guest_R11 = 0; + vex_state->guest_R12 = 0; /* Temporary registers */ + vex_state->guest_R13 = 0; + vex_state->guest_R14 = 0; + vex_state->guest_R15 = 0; + vex_state->guest_R16 = 0; + vex_state->guest_R17 = 0; + vex_state->guest_R18 = 0; + vex_state->guest_R19 = 0; + vex_state->guest_R20 = 0; + vex_state->guest_R21 = 0; /* Reserved */ + vex_state->guest_R22 = 0; /* Frame pointer / Static register */ + vex_state->guest_R23 = 0; /* Static registers */ + vex_state->guest_R24 = 0; + vex_state->guest_R25 = 0; + vex_state->guest_R26 = 0; + vex_state->guest_R27 = 0; + vex_state->guest_R28 = 0; + vex_state->guest_R29 = 0; + vex_state->guest_R30 = 0; + vex_state->guest_R31 = 0; + + vex_state->guest_PC = 0; /* Program counter */ + + /* FPU Registers */ + vex_state->guest_F0 = 0xffffffffffffffffUL; /* Argument registers / Return value */ + vex_state->guest_F1 = 0xffffffffffffffffUL; + vex_state->guest_F2 = 0xffffffffffffffffUL; /* Argument registers */ + vex_state->guest_F3 = 0xffffffffffffffffUL; + vex_state->guest_F4 = 0xffffffffffffffffUL; + vex_state->guest_F5 = 0xffffffffffffffffUL; + vex_state->guest_F6 = 0xffffffffffffffffUL; + vex_state->guest_F7 = 0xffffffffffffffffUL; + vex_state->guest_F8 = 0xffffffffffffffffUL; /* Temporary registers */ + vex_state->guest_F9 = 0xffffffffffffffffUL; + vex_state->guest_F10 = 0xffffffffffffffffUL; + vex_state->guest_F11 = 0xffffffffffffffffUL; + vex_state->guest_F12 = 0xffffffffffffffffUL; + vex_state->guest_F13 = 0xffffffffffffffffUL; + vex_state->guest_F14 = 0xffffffffffffffffUL; + vex_state->guest_F15 = 0xffffffffffffffffUL; + vex_state->guest_F16 = 0xffffffffffffffffUL; + vex_state->guest_F17 = 0xffffffffffffffffUL; + vex_state->guest_F18 = 0xffffffffffffffffUL; + vex_state->guest_F19 = 0xffffffffffffffffUL; + vex_state->guest_F20 = 0xffffffffffffffffUL; + vex_state->guest_F21 = 0xffffffffffffffffUL; + vex_state->guest_F22 = 0xffffffffffffffffUL; + vex_state->guest_F23 = 0xffffffffffffffffUL; + vex_state->guest_F24 = 0xffffffffffffffffUL; /* Static registers */ + vex_state->guest_F25 = 0xffffffffffffffffUL; + vex_state->guest_F26 = 0xffffffffffffffffUL; + vex_state->guest_F27 = 0xffffffffffffffffUL; + vex_state->guest_F28 = 0xffffffffffffffffUL; + vex_state->guest_F29 = 0xffffffffffffffffUL; + vex_state->guest_F30 = 0xffffffffffffffffUL; + vex_state->guest_F31 = 0xffffffffffffffffUL; + + vex_state->guest_FCC0 = 0; /* Condition Flag Registers */ + vex_state->guest_FCC1 = 0; + vex_state->guest_FCC2 = 0; + vex_state->guest_FCC3 = 0; + vex_state->guest_FCC4 = 0; + vex_state->guest_FCC5 = 0; + vex_state->guest_FCC6 = 0; + vex_state->guest_FCC7 = 0; + vex_state->guest_FCSR = 0; /* FP Control and Status Register */ + + /* Various pseudo-regs mandated by Vex or Valgrind. */ + /* Emulation notes */ + vex_state->guest_EMNOTE = 0; + + /* For clflush: record start and length of area to invalidate */ + vex_state->guest_CMSTART = 0; + vex_state->guest_CMLEN = 0; + + /* Used to record the unredirected guest address at the start of + a translation whose start has been redirected. By reading + this pseudo-register shortly afterwards, the translation can + find out what the corresponding no-redirection address was. + Note, this is only set for wrap-style redirects, not for + replace-style ones. */ + vex_state->guest_NRADDR = 0; +} + + +/*-----------------------------------------------------------*/ +/*--- Describing the loongarch64 guest state, for the ---*/ +/*--- benefit of iropt and instrumenters ---*/ +/*-----------------------------------------------------------*/ + +/* Figure out if any part of the guest state contained in minoff + .. maxoff requires precise memory exceptions. If in doubt return + True (but this generates significantly slower code). + + We enforce precise exns for guest SP, PC and FP. + + Only SP is needed in mode VexRegUpdSpAtMemAccess. +*/ + +Bool guest_loongarch64_state_requires_precise_mem_exns ( Int minoff, + Int maxoff, + VexRegisterUpdates pxControl ) +{ + Int sp_min = offsetof(VexGuestLOONGARCH64State, guest_R3); + Int sp_max = sp_min + 8 - 1; + if ( maxoff < sp_min || minoff > sp_max ) { + /* no overlap with sp */ + if (pxControl == VexRegUpdSpAtMemAccess) + return False; /* We only need to check stack pointer. */ + } else { + return True; + } + + Int pc_min = offsetof(VexGuestLOONGARCH64State, guest_PC); + Int pc_max = pc_min + 8 - 1; + if ( maxoff < pc_min || minoff > pc_max ) { + /* no overlap with pc */ + } else { + return True; + } + + Int fp_min = offsetof(VexGuestLOONGARCH64State, guest_R22); + Int fp_max = fp_min + 8 - 1; + if ( maxoff < fp_min || minoff > fp_max ) { + /* no overlap with fp */ + } else { + return True; + } + + return False; +} + +#define ALWAYSDEFD64(field) \ + { offsetof(VexGuestLOONGARCH64State, field), \ + (sizeof ((VexGuestLOONGARCH64State*)0)->field) } + +VexGuestLayout loongarch64Guest_layout = { + /* Total size of the guest state, in bytes. */ + .total_sizeB = sizeof(VexGuestLOONGARCH64State), + /* Describe the stack pointer. */ + .offset_SP = offsetof(VexGuestLOONGARCH64State, guest_R3), + .sizeof_SP = 8, + /* Describe the frame pointer. */ + .offset_FP = offsetof(VexGuestLOONGARCH64State, guest_R22), + .sizeof_FP = 8, + /* Describe the instruction pointer. */ + .offset_IP = offsetof(VexGuestLOONGARCH64State, guest_PC), + .sizeof_IP = 8, + /* Describe any sections to be regarded by Memcheck as + 'always-defined'. */ + .n_alwaysDefd = 6, + /* ? :( */ + .alwaysDefd = { + /* 0 */ ALWAYSDEFD64(guest_R0), + /* 1 */ ALWAYSDEFD64(guest_PC), + /* 2 */ ALWAYSDEFD64(guest_EMNOTE), + /* 3 */ ALWAYSDEFD64(guest_CMSTART), + /* 4 */ ALWAYSDEFD64(guest_CMLEN), + /* 5 */ ALWAYSDEFD64(guest_NRADDR), + } +}; + + +/*-----------------------------------------------------------*/ +/*--- loongarch64 guest helpers ---*/ +/*-----------------------------------------------------------*/ + +/* Claim to be the following CPU, which is probably representative of + the earliest loongarch64 offerings. + + CPU Family : Loongson-64bit + Model Name : Loongson-3A5000LL + CPU Revision : 0x10 + FPU Revision : 0x00 + CPU MHz : 2300.00 + BogoMIPS : 4600.00 + TLB Entries : 2112 + Address Sizes : 48 bits physical, 48 bits virtual + ISA : loongarch32 loongarch64 + Features : cpucfg lam ual fpu lsx lasx complex crypto lvz + Hardware Watchpoint : yes, iwatch count: 8, dwatch count: 8 +*/ +ULong loongarch64_calculate_cpucfg ( ULong src ) +{ + ULong res; + switch (src) { + case 0x0: + res = 0x0014c010; + break; + case 0x1: + res = 0x03f2f2fe; + break; + case 0x2: + res = 0x007ccfc7; + break; + case 0x3: + res = 0x0000fcff; + break; + case 0x4: + res = 0x05f5e100; + break; + case 0x5: + res = 0x00010001; + break; + case 0x6: + res = 0x00007f33; + break; + case 0x10: + res = 0x00002c3d; + break; + case 0x11: + res = 0x06080003; + break; + case 0x12: + res = 0x06080003; + break; + case 0x13: + res = 0x0608000f; + break; + case 0x14: + res = 0x060e000f; + break; + default: + res = 0x00000000; + break; + } + return (ULong)(Long)(Int)res; +} + +static void swap_UChar ( UChar* a, UChar* b ) +{ + UChar t = *a; + *a = *b; + *b = t; +} + +ULong loongarch64_calculate_revb_2h ( ULong src ) +{ + UChar* s = (UChar*)&src; + swap_UChar(&s[0], &s[1]); + swap_UChar(&s[2], &s[3]); + return (ULong)(Long)(Int)src; +} + +ULong loongarch64_calculate_revb_4h ( ULong src ) +{ + UChar* s = (UChar*)&src; + swap_UChar(&s[0], &s[1]); + swap_UChar(&s[2], &s[3]); + swap_UChar(&s[4], &s[5]); + swap_UChar(&s[6], &s[7]); + return src; +} + +ULong loongarch64_calculate_revb_2w ( ULong src ) +{ + UChar* s = (UChar*)&src; + swap_UChar(&s[0], &s[3]); + swap_UChar(&s[1], &s[2]); + swap_UChar(&s[4], &s[7]); + swap_UChar(&s[5], &s[6]); + return src; +} + +ULong loongarch64_calculate_revb_d ( ULong src ) +{ + UChar* s = (UChar*)&src; + swap_UChar(&s[0], &s[7]); + swap_UChar(&s[1], &s[6]); + swap_UChar(&s[2], &s[5]); + swap_UChar(&s[3], &s[4]); + return src; +} + +static void swap_UShort ( UShort* a, UShort* b ) +{ + UShort t = *a; + *a = *b; + *b = t; +} + +ULong loongarch64_calculate_revh_2w ( ULong src ) +{ + UShort* s = (UShort*)&src; + swap_UShort(&s[0], &s[1]); + swap_UShort(&s[2], &s[3]); + return src; +} + +ULong loongarch64_calculate_revh_d ( ULong src ) +{ + UShort* s = (UShort*)&src; + swap_UShort(&s[0], &s[3]); + swap_UShort(&s[1], &s[2]); + return src; +} + +static ULong bitrev ( ULong src, ULong start, ULong end ) +{ + int i, j; + ULong res = 0; + for (i = start, j = 1; i < end; i++, j++) + res |= ((src >> i) & 1) << (end - j); + return res; +} + +ULong loongarch64_calculate_bitrev_4b ( ULong src ) +{ + ULong res = bitrev(src, 0, 8); + res |= bitrev(src, 8, 16); + res |= bitrev(src, 16, 24); + res |= bitrev(src, 24, 32); + return (ULong)(Long)(Int)res; +} + +ULong loongarch64_calculate_bitrev_8b ( ULong src ) +{ + ULong res = bitrev(src, 0, 8); + res |= bitrev(src, 8, 16); + res |= bitrev(src, 16, 24); + res |= bitrev(src, 24, 32); + res |= bitrev(src, 32, 40); + res |= bitrev(src, 40, 48); + res |= bitrev(src, 48, 56); + res |= bitrev(src, 56, 64); + return res; +} + +ULong loongarch64_calculate_bitrev_w ( ULong src ) +{ + ULong res = bitrev(src, 0, 32); + return (ULong)(Long)(Int)res; +} + +ULong loongarch64_calculate_bitrev_d ( ULong src ) +{ + return bitrev(src, 0, 64); +} + +static ULong crc32 ( ULong old, ULong msg, ULong width, ULong poly ) +{ + int i; + ULong new; + if (width == 8) + msg &= 0xff; + else if (width == 16) + msg &= 0xffff; + else if (width == 32) + msg &= 0xffffffff; + new = (old & 0xffffffff) ^ msg; + for (i = 0; i < width; i++) { + if (new & 1) + new = (new >> 1) ^ poly; + else + new >>= 1; + } + return new; +} + +ULong loongarch64_calculate_crc ( ULong old, ULong msg, ULong len ) +{ + ULong res = crc32(old, msg, len, 0xedb88320); + return (ULong)(Long)(Int)res; +} + +ULong loongarch64_calculate_crcc ( ULong old, ULong msg, ULong len ) +{ + ULong res = crc32(old, msg, len, 0x82f63b78); + return (ULong)(Long)(Int)res; +} + +ULong loongarch64_calculate_fclass_s ( ULong src ) +{ + UInt f = src; + Bool sign = toBool(f >> 31); + if ((f & 0x7fffffff) == 0x7f800000) { + return sign ? 1 << 2 : 1 << 6; + } else if ((f & 0x7fffffff) == 0) { + return sign ? 1 << 5 : 1 << 9; + } else if ((f & 0x7f800000) == 0) { + return sign ? 1 << 4 : 1 << 8; + } else if ((f & ~(1 << 31)) > 0x7f800000) { + return ((UInt)(f << 1) >= 0xff800000) ? 1 << 1 : 1 << 0; + } else { + return sign ? 1 << 3 : 1 << 7; + } +} + +ULong loongarch64_calculate_fclass_d ( ULong src ) +{ + ULong f = src; + Bool sign = toBool(f >> 63); + if ((f & 0x7fffffffffffffffUL) == 0x7ff0000000000000UL) { + return sign ? 1 << 2 : 1 << 6; + } else if ((f & 0x7fffffffffffffffUL) == 0) { + return sign ? 1 << 5 : 1 << 9; + } else if ((f & 0x7ff0000000000000UL) == 0) { + return sign ? 1 << 4 : 1 << 8; + } else if ((f & ~(1UL << 63)) > 0x7ff0000000000000UL) { + return ((f << 1) >= 0xfff0000000000000UL) ? 1 << 1 : 1 << 0; + } else { + return sign ? 1 << 3 : 1 << 7; + } +} + +#if defined(__loongarch__) +#define ASM_VOLATILE_UNARY(inst) \ + __asm__ volatile("movfcsr2gr $s0, $r0 \n\t" \ + "movgr2fcsr $r2, $zero \n\t" \ + #inst" $f24, %1 \n\t" \ + "movfcsr2gr %0, $r2 \n\t" \ + "movgr2fcsr $r0, $s0 \n\t" \ + : "=r" (fcsr2) \ + : "f" (src1) \ + : "$s0", "$f24" \ + ) + +#define ASM_VOLATILE_BINARY(inst) \ + __asm__ volatile("movfcsr2gr $s0, $r0 \n\t" \ + "movgr2fcsr $r2, $zero \n\t" \ + #inst" $f24, %1, %2 \n\t" \ + "movfcsr2gr %0, $r2 \n\t" \ + "movgr2fcsr $r0, $s0 \n\t" \ + : "=r" (fcsr2) \ + : "f" (src1), "f" (src2) \ + : "$s0", "$f24" \ + ) + +#define ASM_VOLATILE_TRINARY(inst) \ + __asm__ volatile("movfcsr2gr $s0, $r0 \n\t" \ + "movgr2fcsr $r2, $zero \n\t" \ + #inst" $f24, %1, %2, %3 \n\t" \ + "movfcsr2gr %0, $r2 \n\t" \ + "movgr2fcsr $r0, $s0 \n\t" \ + : "=r" (fcsr2) \ + : "f" (src1), "f" (src2), "f" (src3) \ + : "$s0", "$f24" \ + ) + +#define ASM_VOLATILE_FCMP(inst) \ + __asm__ volatile("movfcsr2gr $s0, $r0 \n\t" \ + "movgr2fcsr $r2, $zero \n\t" \ + #inst" $fcc0, %1, %2 \n\t" \ + "movfcsr2gr %0, $r0 \n\t" \ + "movgr2fcsr $r0, $s0 \n\t" \ + : "=r" (fcsr2) \ + : "f" (src1), "f" (src2) \ + : "$s0", "$fcc0" \ + ) +#endif + +/* Calculate FCSR and return whether an exception needs to be thrown */ +ULong loongarch64_calculate_FCSR ( enum fpop op, ULong src1, + ULong src2, ULong src3 ) +{ + UInt fcsr2 = 0; +#if defined(__loongarch__) + switch (op) { + case FADD_S: + ASM_VOLATILE_BINARY(fadd.s); + break; + case FADD_D: + ASM_VOLATILE_BINARY(fadd.d); + break; + case FSUB_S: + ASM_VOLATILE_BINARY(fsub.s); + break; + case FSUB_D: + ASM_VOLATILE_BINARY(fsub.d); + break; + case FMUL_S: + ASM_VOLATILE_BINARY(fmul.s); + break; + case FMUL_D: + ASM_VOLATILE_BINARY(fmul.d); + break; + case FDIV_S: + ASM_VOLATILE_BINARY(fdiv.s); + break; + case FDIV_D: + ASM_VOLATILE_BINARY(fdiv.d); + break; + case FMADD_S: + ASM_VOLATILE_TRINARY(fmadd.s); + break; + case FMADD_D: + ASM_VOLATILE_TRINARY(fmadd.d); + break; + case FMSUB_S: + ASM_VOLATILE_TRINARY(fmsub.s); + break; + case FMSUB_D: + ASM_VOLATILE_TRINARY(fmsub.d); + break; + case FNMADD_S: + ASM_VOLATILE_TRINARY(fnmadd.s); + break; + case FNMADD_D: + ASM_VOLATILE_TRINARY(fnmadd.d); + break; + case FNMSUB_S: + ASM_VOLATILE_TRINARY(fnmsub.s); + break; + case FNMSUB_D: + ASM_VOLATILE_TRINARY(fnmsub.s); + break; + case FMAX_S: + ASM_VOLATILE_BINARY(fmax.s); + break; + case FMAX_D: + ASM_VOLATILE_BINARY(fmax.d); + break; + case FMIN_S: + ASM_VOLATILE_BINARY(fmin.s); + break; + case FMIN_D: + ASM_VOLATILE_BINARY(fmin.d); + break; + case FMAXA_S: + ASM_VOLATILE_BINARY(fmaxa.s); + break; + case FMAXA_D: + ASM_VOLATILE_BINARY(fmaxa.d); + break; + case FMINA_S: + ASM_VOLATILE_BINARY(fmina.s); + break; + case FMINA_D: + ASM_VOLATILE_BINARY(fmina.s); + break; + case FABS_S: + ASM_VOLATILE_UNARY(fabs.s); + break; + case FABS_D: + ASM_VOLATILE_UNARY(fabs.d); + break; + case FNEG_S: + ASM_VOLATILE_UNARY(fneg.s); + break; + case FNEG_D: + ASM_VOLATILE_UNARY(fneg.d); + break; + case FSQRT_S: + ASM_VOLATILE_UNARY(fsqrt.s); + break; + case FSQRT_D: + ASM_VOLATILE_UNARY(fsqrt.d); + break; + case FRECIP_S: + ASM_VOLATILE_UNARY(frecip.s); + break; + case FRECIP_D: + ASM_VOLATILE_UNARY(frecip.d); + break; + case FRSQRT_S: + ASM_VOLATILE_UNARY(frsqrt.s); + break; + case FRSQRT_D: + ASM_VOLATILE_UNARY(frsqrt.d); + break; + case FSCALEB_S: + ASM_VOLATILE_BINARY(fscaleb.s); + break; + case FSCALEB_D: + ASM_VOLATILE_BINARY(fscaleb.d); + break; + case FLOGB_S: + ASM_VOLATILE_UNARY(flogb.s); + break; + case FLOGB_D: + ASM_VOLATILE_UNARY(flogb.d); + break; + case FCMP_CAF_S: + ASM_VOLATILE_FCMP(fcmp.caf.s); + break; + case FCMP_CAF_D: + ASM_VOLATILE_FCMP(fcmp.caf.d); + break; + case FCMP_SAF_S: + ASM_VOLATILE_FCMP(fcmp.saf.s); + break; + case FCMP_SAF_D: + ASM_VOLATILE_FCMP(fcmp.saf.d); + break; + case FCMP_CLT_S: + ASM_VOLATILE_FCMP(fcmp.clt.s); + break; + case FCMP_CLT_D: + ASM_VOLATILE_FCMP(fcmp.clt.d); + break; + case FCMP_SLT_S: + ASM_VOLATILE_FCMP(fcmp.slt.s); + break; + case FCMP_SLT_D: + ASM_VOLATILE_FCMP(fcmp.slt.d); + break; + case FCMP_CEQ_S: + ASM_VOLATILE_FCMP(fcmp.ceq.s); + break; + case FCMP_CEQ_D: + ASM_VOLATILE_FCMP(fcmp.ceq.d); + break; + case FCMP_SEQ_S: + ASM_VOLATILE_FCMP(fcmp.seq.s); + break; + case FCMP_SEQ_D: + ASM_VOLATILE_FCMP(fcmp.seq.d); + break; + case FCMP_CLE_S: + ASM_VOLATILE_FCMP(fcmp.cle.s); + break; + case FCMP_CLE_D: + ASM_VOLATILE_FCMP(fcmp.cle.d); + break; + case FCMP_SLE_S: + ASM_VOLATILE_FCMP(fcmp.sle.s); + break; + case FCMP_SLE_D: + ASM_VOLATILE_FCMP(fcmp.sle.d); + break; + case FCMP_CUN_S: + ASM_VOLATILE_FCMP(fcmp.cun.s); + break; + case FCMP_CUN_D: + ASM_VOLATILE_FCMP(fcmp.cun.d); + break; + case FCMP_SUN_S: + ASM_VOLATILE_FCMP(fcmp.sun.s); + break; + case FCMP_SUN_D: + ASM_VOLATILE_FCMP(fcmp.sun.d); + break; + case FCMP_CULT_S: + ASM_VOLATILE_FCMP(fcmp.cult.s); + break; + case FCMP_CULT_D: + ASM_VOLATILE_FCMP(fcmp.cult.d); + break; + case FCMP_SULT_S: + ASM_VOLATILE_FCMP(fcmp.sult.s); + break; + case FCMP_SULT_D: + ASM_VOLATILE_FCMP(fcmp.sult.d); + break; + case FCMP_CUEQ_S: + ASM_VOLATILE_FCMP(fcmp.cueq.s); + break; + case FCMP_CUEQ_D: + ASM_VOLATILE_FCMP(fcmp.cueq.d); + break; + case FCMP_SUEQ_S: + ASM_VOLATILE_FCMP(fcmp.sueq.s); + break; + case FCMP_SUEQ_D: + ASM_VOLATILE_FCMP(fcmp.sueq.d); + break; + case FCMP_CULE_S: + ASM_VOLATILE_FCMP(fcmp.cule.s); + break; + case FCMP_CULE_D: + ASM_VOLATILE_FCMP(fcmp.cule.d); + break; + case FCMP_SULE_S: + ASM_VOLATILE_FCMP(fcmp.sule.s); + break; + case FCMP_SULE_D: + ASM_VOLATILE_FCMP(fcmp.sule.d); + break; + case FCMP_CNE_S: + ASM_VOLATILE_FCMP(fcmp.cne.s); + break; + case FCMP_CNE_D: + ASM_VOLATILE_FCMP(fcmp.cne.d); + break; + case FCMP_SNE_S: + ASM_VOLATILE_FCMP(fcmp.sne.s); + break; + case FCMP_SNE_D: + ASM_VOLATILE_FCMP(fcmp.sne.d); + break; + case FCMP_COR_S: + ASM_VOLATILE_FCMP(fcmp.cor.s); + break; + case FCMP_COR_D: + ASM_VOLATILE_FCMP(fcmp.cor.d); + break; + case FCMP_SOR_S: + ASM_VOLATILE_FCMP(fcmp.sor.s); + break; + case FCMP_SOR_D: + ASM_VOLATILE_FCMP(fcmp.sor.d); + break; + case FCMP_CUNE_S: + ASM_VOLATILE_FCMP(fcmp.cune.s); + break; + case FCMP_CUNE_D: + ASM_VOLATILE_FCMP(fcmp.cune.d); + break; + case FCMP_SUNE_S: + ASM_VOLATILE_FCMP(fcmp.sune.s); + break; + case FCMP_SUNE_D: + ASM_VOLATILE_FCMP(fcmp.sune.d); + break; + case FCVT_S_D: + ASM_VOLATILE_UNARY(fcvt.s.d); + break; + case FCVT_D_S: + ASM_VOLATILE_UNARY(fcvt.d.s); + break; + case FTINTRM_W_S: + ASM_VOLATILE_UNARY(ftintrm.w.s); + break; + case FTINTRM_W_D: + ASM_VOLATILE_UNARY(ftintrm.w.d); + break; + case FTINTRM_L_S: + ASM_VOLATILE_UNARY(ftintrm.l.s); + break; + case FTINTRM_L_D: + ASM_VOLATILE_UNARY(ftintrm.l.d); + break; + case FTINTRP_W_S: + ASM_VOLATILE_UNARY(ftintrp.w.s); + break; + case FTINTRP_W_D: + ASM_VOLATILE_UNARY(ftintrp.w.d); + break; + case FTINTRP_L_S: + ASM_VOLATILE_UNARY(ftintrp.l.s); + break; + case FTINTRP_L_D: + ASM_VOLATILE_UNARY(ftintrp.l.d); + break; + case FTINTRZ_W_S: + ASM_VOLATILE_UNARY(ftintrz.w.s); + break; + case FTINTRZ_W_D: + ASM_VOLATILE_UNARY(ftintrz.w.d); + break; + case FTINTRZ_L_S: + ASM_VOLATILE_UNARY(ftintrz.l.s); + break; + case FTINTRZ_L_D: + ASM_VOLATILE_UNARY(ftintrz.l.d); + break; + case FTINTRNE_W_S: + ASM_VOLATILE_UNARY(ftintrne.w.s); + break; + case FTINTRNE_W_D: + ASM_VOLATILE_UNARY(ftintrne.w.d); + break; + case FTINTRNE_L_S: + ASM_VOLATILE_UNARY(ftintrne.l.s); + break; + case FTINTRNE_L_D: + ASM_VOLATILE_UNARY(ftintrne.l.d); + break; + case FTINT_W_S: + ASM_VOLATILE_UNARY(ftint.w.s); + break; + case FTINT_W_D: + ASM_VOLATILE_UNARY(ftint.w.d); + break; + case FTINT_L_S: + ASM_VOLATILE_UNARY(ftint.l.s); + break; + case FTINT_L_D: + ASM_VOLATILE_UNARY(ftint.l.d); + break; + case FFINT_S_W: + ASM_VOLATILE_UNARY(ffint.s.w); + break; + case FFINT_D_W: + ASM_VOLATILE_UNARY(ffint.d.w); + break; + case FFINT_S_L: + ASM_VOLATILE_UNARY(ffint.s.l); + break; + case FFINT_D_L: + ASM_VOLATILE_UNARY(ffint.d.l); + break; + case FRINT_S: + ASM_VOLATILE_UNARY(frint.s); + break; + case FRINT_D: + ASM_VOLATILE_UNARY(frint.d); + break; + default: + break; + } +#endif + return (ULong)fcsr2; +} + + +/*---------------------------------------------------------------*/ +/*--- end guest_loongarch64_helpers.c ---*/ +/*---------------------------------------------------------------*/ diff --git a/VEX/priv/guest_loongarch64_toIR.c b/VEX/priv/guest_loongarch64_toIR.c new file mode 100644 index 0000000..1a9a2c0 --- /dev/null +++ b/VEX/priv/guest_loongarch64_toIR.c @@ -0,0 +1,9694 @@ + +/*--------------------------------------------------------------------*/ +/*--- begin guest_loongarch64_toIR.c ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2021-2022 Loongson Technology Corporation Limited + + This program 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 2 of the + License, or (at your option) any later version. + + This program 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 this program; if not, see . + + The GNU General Public License is contained in the file COPYING. +*/ + +/* "Special" instructions. + + This instruction decoder can decode four special instructions + which mean nothing natively (are no-ops as far as regs/mem are + concerned) but have meaning for supporting Valgrind. A special + instruction is flagged by a 16-byte preamble: + + 00450c00 (srli.d $zero, $zero, 3 + 00453400 srli.d $zero, $zero, 13 + 00457400 srli.d $zero, $zero, 29 + 00454c00 srli.d $zero, $zero, 19) + + Following that, one of the following 3 are allowed + (standard interpretation in parentheses): + + 001535ad (or $t1, $t1, $t1) $a7 = client_request ( $t0 ) + 001539ce (or $t2, $t2, $t2) $a7 = guest_NRADDR + 00153def (or $t3, $t3, $t3) call-noredir $t8 + 00154210 (or $t4, $t4, $t4) IR injection + + Any other bytes following the 16-byte preamble are illegal and + constitute a failure in instruction decoding. This all assumes + that the preamble will never occur except in specific code + fragments designed for Valgrind to catch. +*/ + +/* Translates LOONGARCH64 code to IR. */ + +#include "libvex_basictypes.h" +#include "libvex_ir.h" +#include "libvex.h" +#include "libvex_guest_loongarch64.h" + +#include "main_util.h" +#include "main_globals.h" +#include "guest_generic_bb_to_IR.h" +#include "guest_loongarch64_defs.h" + + +/*------------------------------------------------------------*/ +/*--- Globals ---*/ +/*------------------------------------------------------------*/ + +/* These are set at the start of the translation of a instruction, so + that we don't have to pass them around endlessly. CONST means does + not change during translation of the instruction. */ + +/* CONST: what is the host's endianness? We need to know this in + order to do sub-register accesses to the SIMD/FP registers + correctly. */ +static VexEndness host_endness; + +/* CONST: The guest address for the instruction currently being + translated. */ +static Addr64 guest_PC_curr_instr; + +/* MOD: The IRSB* into which we're generating code. */ +static IRSB* irsb; + + +/*------------------------------------------------------------*/ +/*--- Debugging output ---*/ +/*------------------------------------------------------------*/ + +#define DIP(format, args...) \ + if (vex_traceflags & VEX_TRACE_FE) \ + vex_printf(format, ## args) + +static const HChar* nameIReg( UInt reg ) +{ + vassert(reg < 32); + static const HChar* reg_names[32] = { + "$zero", + "$ra", + "$tp", + "$sp", + "$a0", "$a1", "$a2", "$a3", "$a4", "$a5", "$a6", "$a7", + "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8", + "$r21", /* Reserved */ + "$fp", + "$s0", "$s1", "$s2", "$s3", "$s4", "$s5", "$s6", "$s7", "$s8" + }; + return reg_names[reg]; +} + +static const HChar* nameFReg( UInt reg ) +{ + vassert(reg < 32); + static const HChar* reg_names[32] = { + "$fa0", "$fa1", "$fa2", "$fa3", "$fa4", "$fa5", "$fa6", "$fa7", + "$ft0", "$ft1", "$ft2", "$ft3", "$ft4", "$ft5", "$ft6", "$ft7", + "$ft8", "$ft9", "$ft10", "$ft11", "$ft12", "$ft13", "$ft14", "$ft15", + "$fs0", "$fs1", "$fs2", "$fs3", "$fs4", "$fs5", "$fs6", "$fs7" + }; + return reg_names[reg]; +} + +static const HChar* nameFCC( UInt reg ) +{ + vassert(reg < 8); + static const HChar* reg_names[8] = { + "$fcc0", "$fcc1", "$fcc2", "$fcc3", "$fcc4", "$fcc5", "$fcc6", "$fcc7" + }; + return reg_names[reg]; +} + +static const HChar* nameFCSR( UInt reg ) +{ + vassert(reg < 4); + static const HChar* reg_names[4] = { + "$fcsr0", "$fcsr1", "$fcsr2", "$fcsr3" + }; + return reg_names[reg]; +} + + +/*------------------------------------------------------------*/ +/*--- Helper bits and pieces for deconstructing the ---*/ +/*--- loongarch64 insn stream. ---*/ +/*------------------------------------------------------------*/ + +/* Get insn[max:min] */ +#define SLICE(insn, max, min) \ + ((((UInt)(insn)) >> (min)) & (UInt)((1ULL << ((max) - (min) + 1)) - 1ULL)) + +/* Do a little-endian load of a 32-bit word, regardless of the + endianness of the underlying host. */ +static inline UInt getUInt ( const UChar* p ) +{ + UInt w = 0; + w = (w << 8) | p[3]; + w = (w << 8) | p[2]; + w = (w << 8) | p[1]; + w = (w << 8) | p[0]; + return w; +} + +/* Sign extend to 32-bit */ +static inline UInt extend32 ( UInt imm, UInt size ) +{ + UInt shift = 32 - size; + return (UInt)(((Int)imm << shift) >> shift); +} + +/* Sign extend to 64-bit */ +static inline ULong extend64 ( ULong imm, UInt size ) +{ + UInt shift = 64 - size; + return (ULong)(((Long)imm << shift) >> shift); +} + +static inline UInt get_rd ( UInt insn ) +{ + return SLICE(insn, 4, 0); +} + +static inline UInt get_rj ( UInt insn ) +{ + return SLICE(insn, 9, 5); +} + +static inline UInt get_rk ( UInt insn ) +{ + return SLICE(insn, 14, 10); +} + +static inline UInt get_code ( UInt insn ) +{ + return SLICE(insn, 14, 0); +} + +static inline UInt get_ui5 ( UInt insn ) +{ + return SLICE(insn, 14, 10); +} + +static inline UInt get_ui6 ( UInt insn ) +{ + return SLICE(insn, 15, 10); +} + +static inline UInt get_sa2 ( UInt insn ) +{ + return SLICE(insn, 16, 15); +} + +static inline UInt get_sa3 ( UInt insn ) +{ + return SLICE(insn, 17, 15); +} + +static inline UInt get_lsbw ( UInt insn ) +{ + return SLICE(insn, 14, 10); +} + +static inline UInt get_msbw ( UInt insn ) +{ + return SLICE(insn, 20, 16); +} + +static inline UInt get_lsbd ( UInt insn ) +{ + return SLICE(insn, 15, 10); +} + +static inline UInt get_msbd ( UInt insn ) +{ + return SLICE(insn, 21, 16); +} + +static inline UInt get_si12 ( UInt insn ) +{ + return SLICE(insn, 21, 10); +} + +static inline UInt get_ui12 ( UInt insn ) +{ + return SLICE(insn, 21, 10); +} + +static inline UInt get_si14 ( UInt insn ) +{ + return SLICE(insn, 23, 10); +} + +static inline UInt get_si16 ( UInt insn ) +{ + return SLICE(insn, 25, 10); +} + +static inline UInt get_si20 ( UInt insn ) +{ + return SLICE(insn, 24, 5); +} + +static inline UInt get_hint5 ( UInt insn ) +{ + return SLICE(insn, 4, 0); +} + +static inline UInt get_hint15 ( UInt insn ) +{ + return SLICE(insn, 14, 0); +} + +static inline UInt get_offs16 ( UInt insn ) +{ + return SLICE(insn, 25, 10); +} + +static inline UInt get_offs21 ( UInt insn ) +{ + return (SLICE(insn, 4, 0) << 16) | SLICE(insn, 25, 10); +} + +static inline UInt get_offs26 ( UInt insn ) +{ + return (SLICE(insn, 9, 0) << 16) | SLICE(insn, 25, 10); +} + +static inline UInt get_fd ( UInt insn ) +{ + return SLICE(insn, 4, 0); +} + +static inline UInt get_fj ( UInt insn ) +{ + return SLICE(insn, 9, 5); +} + +static inline UInt get_fk ( UInt insn ) +{ + return SLICE(insn, 14, 10); +} + +static inline UInt get_fa ( UInt insn ) +{ + return SLICE(insn, 19, 15); +} + +static inline UInt get_cond ( UInt insn ) +{ + return SLICE(insn, 19, 15); +} + +static inline UInt get_fcsrl ( UInt insn ) +{ + return SLICE(insn, 4, 0); +} + +static inline UInt get_fcsrh ( UInt insn ) +{ + return SLICE(insn, 9, 5); +} + +static inline UInt get_cd ( UInt insn ) +{ + return SLICE(insn, 2, 0); +} + +static inline UInt get_cj ( UInt insn ) +{ + return SLICE(insn, 7, 5); +} + +static inline UInt get_ca ( UInt insn ) +{ + return SLICE(insn, 17, 15); +} + + +/*------------------------------------------------------------*/ +/*--- Helper bits and pieces for creating IR fragments. ---*/ +/*------------------------------------------------------------*/ + +static inline IRExpr* mkU64 ( ULong i ) +{ + return IRExpr_Const(IRConst_U64(i)); +} + +static inline IRExpr* mkU32 ( UInt i ) +{ + return IRExpr_Const(IRConst_U32(i)); +} + +static inline IRExpr* mkU16 ( UInt i ) +{ + vassert(i < 65536); + return IRExpr_Const(IRConst_U16(i)); +} + +static inline IRExpr* mkU8 ( UInt i ) +{ + vassert(i < 256); + return IRExpr_Const(IRConst_U8((UChar)i)); +} + +static inline IRExpr* mkU1 ( UInt i ) +{ + vassert(i == 0 || i == 1); + return IRExpr_Const(IRConst_U1((Bool)i)); +} + +static inline IRExpr* mkF64i ( ULong i ) +{ + return IRExpr_Const(IRConst_F64i(i)); +} + +static inline IRExpr* mkF32i ( UInt i ) +{ + return IRExpr_Const(IRConst_F32i(i)); +} + +static inline IRExpr* mkexpr ( IRTemp tmp ) +{ + return IRExpr_RdTmp(tmp); +} + +static inline IRExpr* unop ( IROp op, IRExpr* a ) +{ + return IRExpr_Unop(op, a); +} + +static inline IRExpr* binop ( IROp op, IRExpr* a1, IRExpr* a2 ) +{ + return IRExpr_Binop(op, a1, a2); +} + +static inline IRExpr* triop ( IROp op, IRExpr* a1, IRExpr* a2, IRExpr* a3 ) +{ + return IRExpr_Triop(op, a1, a2, a3); +} + +static inline IRExpr* qop ( IROp op, IRExpr* a1, IRExpr* a2, + IRExpr* a3, IRExpr* a4 ) +{ + return IRExpr_Qop(op, a1, a2, a3, a4); +} + +static inline IRExpr* load ( IRType ty, IRExpr* addr ) +{ + return IRExpr_Load(Iend_LE, ty, addr); +} + +/* Add a statement to the list held by "irbb". */ +static inline void stmt ( IRStmt* st ) +{ + addStmtToIRSB(irsb, st); +} + +static inline void store ( IRExpr* addr, IRExpr* data ) +{ + stmt(IRStmt_Store(Iend_LE, addr, data)); +} + +static inline void assign ( IRTemp dst, IRExpr* e ) +{ + stmt(IRStmt_WrTmp(dst, e)); +} + +static inline void exit ( IRExpr* e, IRJumpKind jk, ULong offs ) +{ + stmt(IRStmt_Exit(e, jk, IRConst_U64(guest_PC_curr_instr + offs), + offsetof(VexGuestLOONGARCH64State, guest_PC))); +} + +/* Generate an expression to check if addr is aligned. */ +static inline IRExpr* check_align ( IRExpr* addr, IRExpr* align ) +{ + return binop(Iop_CmpNE64, binop(Iop_And64, addr, align), + IRExpr_Get(offsetof(VexGuestLOONGARCH64State, guest_R0), + Ity_I64)); +} + +/* Generate a SIGSYS if the expression evaluates to true. */ +static inline void gen_SIGSYS ( IRExpr* cond ) +{ + exit(cond, Ijk_SigSYS, 4); +} + +/* Generate a SIGBUS if the expression evaluates to true. */ +static inline void gen_SIGBUS ( IRExpr* cond ) +{ + exit(cond, Ijk_SigBUS, 4); +} + +static inline void cas ( IRTemp old, IRExpr* addr, IRExpr* expd, IRExpr* new ) +{ + IRCAS* c = mkIRCAS(IRTemp_INVALID, old, Iend_LE, addr, + NULL, expd, NULL, new); + stmt(IRStmt_CAS(c)); +} + +/* Generate a new temporary of the given type. */ +static inline IRTemp newTemp ( IRType ty ) +{ + vassert(isPlausibleIRType(ty)); + return newIRTemp(irsb->tyenv, ty); +} + +/* S-extend 8/16/32 bit int expr to 64. */ +static IRExpr* extendS ( IRType ty, IRExpr* e ) +{ + switch (ty) { + case Ity_I1: return unop(Iop_1Sto64, e); + case Ity_I8: return unop(Iop_8Sto64, e); + case Ity_I16: return unop(Iop_16Sto64, e); + case Ity_I32: return unop(Iop_32Sto64, e); + default: vassert(0); + } +} + +/* Z-extend 8/16/32 bit int expr to 64. */ +static IRExpr* extendU ( IRType ty, IRExpr* e ) +{ + switch (ty) { + case Ity_I1: return unop(Iop_1Uto64, e); + case Ity_I8: return unop(Iop_8Uto64, e); + case Ity_I16: return unop(Iop_16Uto64, e); + case Ity_I32: return unop(Iop_32Uto64, e); + default: vassert(0); + } +} + + +/*------------------------------------------------------------*/ +/*--- Helpers for accessing guest registers. ---*/ +/*------------------------------------------------------------*/ + +/* ---------------- Integer registers ---------------- */ + +static Int offsetIReg ( UInt iregNo ) +{ + switch (iregNo) { + case 0: return offsetof(VexGuestLOONGARCH64State, guest_R0); + case 1: return offsetof(VexGuestLOONGARCH64State, guest_R1); + case 2: return offsetof(VexGuestLOONGARCH64State, guest_R2); + case 3: return offsetof(VexGuestLOONGARCH64State, guest_R3); + case 4: return offsetof(VexGuestLOONGARCH64State, guest_R4); + case 5: return offsetof(VexGuestLOONGARCH64State, guest_R5); + case 6: return offsetof(VexGuestLOONGARCH64State, guest_R6); + case 7: return offsetof(VexGuestLOONGARCH64State, guest_R7); + case 8: return offsetof(VexGuestLOONGARCH64State, guest_R8); + case 9: return offsetof(VexGuestLOONGARCH64State, guest_R9); + case 10: return offsetof(VexGuestLOONGARCH64State, guest_R10); + case 11: return offsetof(VexGuestLOONGARCH64State, guest_R11); + case 12: return offsetof(VexGuestLOONGARCH64State, guest_R12); + case 13: return offsetof(VexGuestLOONGARCH64State, guest_R13); + case 14: return offsetof(VexGuestLOONGARCH64State, guest_R14); + case 15: return offsetof(VexGuestLOONGARCH64State, guest_R15); + case 16: return offsetof(VexGuestLOONGARCH64State, guest_R16); + case 17: return offsetof(VexGuestLOONGARCH64State, guest_R17); + case 18: return offsetof(VexGuestLOONGARCH64State, guest_R18); + case 19: return offsetof(VexGuestLOONGARCH64State, guest_R19); + case 20: return offsetof(VexGuestLOONGARCH64State, guest_R20); + case 21: return offsetof(VexGuestLOONGARCH64State, guest_R21); + case 22: return offsetof(VexGuestLOONGARCH64State, guest_R22); + case 23: return offsetof(VexGuestLOONGARCH64State, guest_R23); + case 24: return offsetof(VexGuestLOONGARCH64State, guest_R24); + case 25: return offsetof(VexGuestLOONGARCH64State, guest_R25); + case 26: return offsetof(VexGuestLOONGARCH64State, guest_R26); + case 27: return offsetof(VexGuestLOONGARCH64State, guest_R27); + case 28: return offsetof(VexGuestLOONGARCH64State, guest_R28); + case 29: return offsetof(VexGuestLOONGARCH64State, guest_R29); + case 30: return offsetof(VexGuestLOONGARCH64State, guest_R30); + case 31: return offsetof(VexGuestLOONGARCH64State, guest_R31); + default: vassert(0); + } +} + +static IRExpr* getIReg8 ( UInt iregNo ) +{ + return IRExpr_Get(offsetIReg(iregNo), Ity_I8); +} + +static IRExpr* getIReg16 ( UInt iregNo ) +{ + return IRExpr_Get(offsetIReg(iregNo), Ity_I16); +} + +static IRExpr* getIReg32 ( UInt iregNo ) +{ + return IRExpr_Get(offsetIReg(iregNo), Ity_I32); +} + +static IRExpr* getIReg64 ( UInt iregNo ) +{ + return IRExpr_Get(offsetIReg(iregNo), Ity_I64); +} + +static void putIReg ( UInt iregNo, IRExpr* e ) +{ + vassert(typeOfIRExpr(irsb->tyenv, e) == Ity_I64); + if (iregNo != 0) /* $r0 - constant zero */ + stmt(IRStmt_Put(offsetIReg(iregNo), e)); +} + +static void putPC ( IRExpr* e ) +{ + vassert(typeOfIRExpr(irsb->tyenv, e) == Ity_I64); + stmt(IRStmt_Put(offsetof(VexGuestLOONGARCH64State, guest_PC), e)); +} + +/* ---------------- Floating point registers ---------------- */ + +static Int offsetFReg ( UInt iregNo ) +{ + switch (iregNo) { + case 0: return offsetof(VexGuestLOONGARCH64State, guest_F0); + case 1: return offsetof(VexGuestLOONGARCH64State, guest_F1); + case 2: return offsetof(VexGuestLOONGARCH64State, guest_F2); + case 3: return offsetof(VexGuestLOONGARCH64State, guest_F3); + case 4: return offsetof(VexGuestLOONGARCH64State, guest_F4); + case 5: return offsetof(VexGuestLOONGARCH64State, guest_F5); + case 6: return offsetof(VexGuestLOONGARCH64State, guest_F6); + case 7: return offsetof(VexGuestLOONGARCH64State, guest_F7); + case 8: return offsetof(VexGuestLOONGARCH64State, guest_F8); + case 9: return offsetof(VexGuestLOONGARCH64State, guest_F9); + case 10: return offsetof(VexGuestLOONGARCH64State, guest_F10); + case 11: return offsetof(VexGuestLOONGARCH64State, guest_F11); + case 12: return offsetof(VexGuestLOONGARCH64State, guest_F12); + case 13: return offsetof(VexGuestLOONGARCH64State, guest_F13); + case 14: return offsetof(VexGuestLOONGARCH64State, guest_F14); + case 15: return offsetof(VexGuestLOONGARCH64State, guest_F15); + case 16: return offsetof(VexGuestLOONGARCH64State, guest_F16); + case 17: return offsetof(VexGuestLOONGARCH64State, guest_F17); + case 18: return offsetof(VexGuestLOONGARCH64State, guest_F18); + case 19: return offsetof(VexGuestLOONGARCH64State, guest_F19); + case 20: return offsetof(VexGuestLOONGARCH64State, guest_F20); + case 21: return offsetof(VexGuestLOONGARCH64State, guest_F21); + case 22: return offsetof(VexGuestLOONGARCH64State, guest_F22); + case 23: return offsetof(VexGuestLOONGARCH64State, guest_F23); + case 24: return offsetof(VexGuestLOONGARCH64State, guest_F24); + case 25: return offsetof(VexGuestLOONGARCH64State, guest_F25); + case 26: return offsetof(VexGuestLOONGARCH64State, guest_F26); + case 27: return offsetof(VexGuestLOONGARCH64State, guest_F27); + case 28: return offsetof(VexGuestLOONGARCH64State, guest_F28); + case 29: return offsetof(VexGuestLOONGARCH64State, guest_F29); + case 30: return offsetof(VexGuestLOONGARCH64State, guest_F30); + case 31: return offsetof(VexGuestLOONGARCH64State, guest_F31); + default: vassert(0); + } +} + +static Int offsetFCC ( UInt iregNo ) +{ + switch (iregNo) { + case 0: return offsetof(VexGuestLOONGARCH64State, guest_FCC0); + case 1: return offsetof(VexGuestLOONGARCH64State, guest_FCC1); + case 2: return offsetof(VexGuestLOONGARCH64State, guest_FCC2); + case 3: return offsetof(VexGuestLOONGARCH64State, guest_FCC3); + case 4: return offsetof(VexGuestLOONGARCH64State, guest_FCC4); + case 5: return offsetof(VexGuestLOONGARCH64State, guest_FCC5); + case 6: return offsetof(VexGuestLOONGARCH64State, guest_FCC6); + case 7: return offsetof(VexGuestLOONGARCH64State, guest_FCC7); + default: vassert(0); + } +} + +static IRExpr* getFReg64 ( UInt iregNo ) +{ + return IRExpr_Get(offsetFReg(iregNo), Ity_F64); +} + +static IRExpr* getFReg32 ( UInt iregNo ) +{ + /* Get FReg32 from FReg64. + We could probably use IRExpr_Get(offsetFReg(iregNo), Ity_F32), + but that would cause Memcheck to report some errors. + */ + IRExpr* i = unop(Iop_ReinterpF64asI64, getFReg64(iregNo)); + return unop(Iop_ReinterpI32asF32, unop(Iop_64to32, i)); +} + +static IRExpr* getFCC ( UInt iregNo ) +{ + return IRExpr_Get(offsetFCC(iregNo), Ity_I8); +} + +static IRExpr* getFCSR ( UInt iregNo ) +{ + /* + bits | name + --------------- + 4:0 | Enables + 7:5 | 0 + 9:8 | RM + 15:10 | 0 + 20:16 | Flags + 23:21 | 0 + 28:24 | Cause + 31:29 | 0 + */ + Int offs = offsetof(VexGuestLOONGARCH64State, guest_FCSR); + IRExpr* fcsr0 = IRExpr_Get(offs, Ity_I32); + switch (iregNo) { + case 0: + return fcsr0; + case 1: + /* FCSR1 is Enables of FCSR0. It seems that the hardware + implementation is that the 7th bit belongs to FCSR1. */ + return binop(Iop_And32, fcsr0, mkU32(0x0000009f)); + case 2: + /* FCSR2 is Cause and Flags of FCSR0. */ + return binop(Iop_And32, fcsr0, mkU32(0x1f1f0000)); + case 3: + /* FCSR3 is RM of FCSR0. */ + return binop(Iop_And32, fcsr0, mkU32(0x00000300)); + default: + vassert(0); + } +} + +static void putFReg32 ( UInt iregNo, IRExpr* e ) +{ + vassert(typeOfIRExpr(irsb->tyenv, e) == Ity_F32); + stmt(IRStmt_Put(offsetFReg(iregNo), e)); +} + +static void putFReg64 ( UInt iregNo, IRExpr* e ) +{ + vassert(typeOfIRExpr(irsb->tyenv, e) == Ity_F64); + stmt(IRStmt_Put(offsetFReg(iregNo), e)); +} + +static void putFCC ( UInt iregNo, IRExpr* e ) +{ + vassert(typeOfIRExpr(irsb->tyenv, e) == Ity_I8); + stmt(IRStmt_Put(offsetFCC(iregNo), e)); +} + +static void putFCSR ( UInt iregNo, IRExpr* e ) +{ + vassert(typeOfIRExpr(irsb->tyenv, e) == Ity_I32); + IRExpr* fcsr0 = getFCSR(0); + IRExpr* and1; + IRExpr* and2; + switch (iregNo) { + case 0: + /* It seems that the hardware implementation allows the 6th + bit and the 7th bit to be non-zero. */ + and1 = getIReg32(0); + and2 = binop(Iop_And32, e, mkU32(0x1f1f03df)); + break; + case 1: + /* FCSR1 is Enables of FCSR0. It seems that the hardware + implementation is that the 7th bit belongs to FCSR1. */ + and1 = binop(Iop_And32, fcsr0, mkU32(0xffffff60)); + and2 = binop(Iop_And32, e, mkU32(0x0000009f)); + break; + case 2: + /* FCSR2 is Cause and Flags of FCSR0. */ + and1 = binop(Iop_And32, fcsr0, mkU32(0xe0e0ffff)); + and2 = binop(Iop_And32, e, mkU32(0x1f1f0000)); + break; + case 3: + /* FCSR3 is RM of FCSR0. */ + and1 = binop(Iop_And32, fcsr0, mkU32(0xfffffcff)); + and2 = binop(Iop_And32, e, mkU32(0x00000300)); + break; + default: + vassert(0); + } + Int offs = offsetof(VexGuestLOONGARCH64State, guest_FCSR); + stmt(IRStmt_Put(offs, binop(Iop_Or32, and1, and2))); +} + +static IRExpr* get_rounding_mode ( void ) +{ + /* + rounding mode | LOONGARCH | IR + ------------------------------ + to nearest | 00 | 00 + to zero | 01 | 11 + to +infinity | 10 | 10 + to -infinity | 11 | 01 + */ + + /* Bits 8 to 9 in FCSR are rounding mode. */ + IRExpr* fcsr = getFCSR(0); + IRExpr* shr = binop(Iop_Shr32, fcsr, mkU8(8)); + IRTemp rm = newTemp(Ity_I32); + assign(rm, binop(Iop_And32, shr, mkU32(0x3))); + + /* rm = XOR(rm, (rm << 1) & 2) */ + IRExpr* shl = binop(Iop_Shl32, mkexpr(rm), mkU8(1)); + IRExpr* and = binop(Iop_And32, shl, mkU32(2)); + return binop(Iop_Xor32, mkexpr(rm), and); +} + +static void calculateFCSR ( enum fpop op, UInt nargs, + UInt src1, UInt src2, UInt src3 ) +{ + IRExpr* s1 = NULL; + IRExpr* s2 = NULL; + IRExpr* s3 = NULL; + switch (nargs) { + case 3: s3 = unop(Iop_ReinterpF64asI64, getFReg64(src3)); /* fallthrough */ + case 2: s2 = unop(Iop_ReinterpF64asI64, getFReg64(src2)); /* fallthrough */ + case 1: s1 = unop(Iop_ReinterpF64asI64, getFReg64(src1)); break; + default: vassert(0); + } + IRExpr** arg = mkIRExprVec_4(mkU64(op), s1, s2, s3); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_FCSR", + &loongarch64_calculate_FCSR, + arg); + IRTemp fcsr2 = newTemp(Ity_I32); + assign(fcsr2, unop(Iop_64to32, call)); + putFCSR(2, mkexpr(fcsr2)); +} + +static IRExpr* gen_round_to_nearest ( void ) +{ + return mkU32(0x0); +} + +static IRExpr* gen_round_down ( void ) +{ + return mkU32(0x1); +} + +static IRExpr* gen_round_up ( void ) +{ + return mkU32(0x2); +} + +static IRExpr* gen_round_to_zero ( void ) +{ + return mkU32(0x3); +} + + +/*------------------------------------------------------------*/ +/*--- Helpers for fixed point arithmetic insns ---*/ +/*------------------------------------------------------------*/ + +static Bool gen_add_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("add.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* add = binop(Iop_Add32, getIReg32(rj), getIReg32(rk)); + putIReg(rd, extendS(Ity_I32, add)); + + return True; +} + +static Bool gen_add_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("add.d %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + putIReg(rd, binop(Iop_Add64, getIReg64(rj), getIReg64(rk))); + + return True; +} + +static Bool gen_sub_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("sub.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* sub = binop(Iop_Sub32, getIReg32(rj), getIReg32(rk)); + putIReg(rd, extendS(Ity_I32, sub)); + + return True; +} + +static Bool gen_sub_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("sub.d %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + putIReg(rd, binop(Iop_Sub64, getIReg64(rj), getIReg64(rk))); + + return True; +} + +static Bool gen_slt ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("slt %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* cond = binop(Iop_CmpLT64S, getIReg64(rj), getIReg64(rk)); + putIReg(rd, extendU(Ity_I1, cond)); + + return True; +} + +static Bool gen_sltu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("sltu %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* cond = binop(Iop_CmpLT64U, getIReg64(rj), getIReg64(rk)); + putIReg(rd, extendU(Ity_I1, cond)); + + return True; +} + +static Bool gen_slti ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("slti %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si12, 12)); + + IRExpr* cond = binop(Iop_CmpLT64S, getIReg64(rj), + mkU64(extend64(si12, 12))); + putIReg(rd, extendU(Ity_I1, cond)); + + return True; +} + +static Bool gen_sltui ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("sltui %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si12, 12)); + + IRExpr* cond = binop(Iop_CmpLT64U, getIReg64(rj), + mkU64(extend64(si12, 12))); + putIReg(rd, extendU(Ity_I1, cond)); + + return True; +} + +static Bool gen_nor ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("nor %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* or = binop(Iop_Or64, getIReg64(rj), getIReg64(rk)); + putIReg(rd, unop(Iop_Not64, or)); + + return True; +} + +static Bool gen_and ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("and %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + putIReg(rd, binop(Iop_And64, getIReg64(rj), getIReg64(rk))); + + return True; +} + +static Bool gen_or ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("or %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + putIReg(rd, binop(Iop_Or64, getIReg64(rj), getIReg64(rk))); + + return True; +} + +static Bool gen_xor ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("xor %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + putIReg(rd, binop(Iop_Xor64, getIReg64(rj), getIReg64(rk))); + + return True; +} + +static Bool gen_orn ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("orn %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* not = unop(Iop_Not64, getIReg64(rk)); + putIReg(rd, binop(Iop_Or64, getIReg64(rj), not)); + + return True; +} + +static Bool gen_andn ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("andn %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* not = unop(Iop_Not64, getIReg64(rk)); + putIReg(rd, binop(Iop_And64, getIReg64(rj), not)); + + return True; +} + +static Bool gen_mul_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("mul.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* mul = binop(Iop_MullS32, getIReg32(rj), getIReg32(rk)); + putIReg(rd, extendS(Ity_I32, unop(Iop_64to32, mul))); + + return True; +} + +static Bool gen_mulh_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("mulh.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* mul = binop(Iop_MullS32, getIReg32(rj), getIReg32(rk)); + putIReg(rd, extendS(Ity_I32, unop(Iop_64HIto32, mul))); + + return True; +} + +static Bool gen_mulh_wu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("mulh.wu %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* mul = binop(Iop_MullU32, getIReg32(rj), getIReg32(rk)); + putIReg(rd, extendS(Ity_I32, unop(Iop_64HIto32, mul))); + + return True; +} + +static Bool gen_mul_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("mul.d %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* mul = binop(Iop_MullS64, getIReg64(rj), getIReg64(rk)); + putIReg(rd, unop(Iop_128to64, mul)); + + return True; +} + +static Bool gen_mulh_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("mulh.d %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* mul = binop(Iop_MullS64, getIReg64(rj), getIReg64(rk)); + putIReg(rd, unop(Iop_128HIto64, mul)); + + return True; +} + +static Bool gen_mulh_du ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("mulh.du %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* mul = binop(Iop_MullU64, getIReg64(rj), getIReg64(rk)); + putIReg(rd, unop(Iop_128HIto64, mul)); + + return True; +} + +static Bool gen_mulw_d_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("mulw.d.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + putIReg(rd, binop(Iop_MullS32, getIReg32(rj), getIReg32(rk))); + + return True; +} + +static Bool gen_mulw_d_wu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("mulw.d.wu %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + putIReg(rd, binop(Iop_MullU32, getIReg32(rj), getIReg32(rk))); + + return True; +} + +static Bool gen_div_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("div.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* div = binop(Iop_DivS32, getIReg32(rj), getIReg32(rk)); + putIReg(rd, extendS(Ity_I32, div)); + + return True; +} + +static Bool gen_mod_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("mod.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* mod = binop(Iop_DivModS32to32, getIReg32(rj), getIReg32(rk)); + putIReg(rd, extendS(Ity_I32, unop(Iop_64HIto32, mod))); + + return True; +} + +static Bool gen_div_wu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("div.wu %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* div = binop(Iop_DivU32, getIReg32(rj), getIReg32(rk)); + putIReg(rd, extendS(Ity_I32, div)); + + return True; +} + +static Bool gen_mod_wu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("mod.wu %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* mod = binop(Iop_DivModU32to32, getIReg32(rj), getIReg32(rk)); + putIReg(rd, extendS(Ity_I32, unop(Iop_64HIto32, mod))); + + return True; +} + +static Bool gen_div_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("div.d %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + putIReg(rd, binop(Iop_DivS64, getIReg64(rj), getIReg64(rk))); + + return True; +} + +static Bool gen_mod_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("mod.d %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* mod = binop(Iop_DivModS64to64, getIReg64(rj), getIReg64(rk)); + putIReg(rd, unop(Iop_128HIto64, mod)); + + return True; +} + +static Bool gen_div_du ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("div.du %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + putIReg(rd, binop(Iop_DivU64, getIReg64(rj), getIReg64(rk))); + + return True; +} + +static Bool gen_mod_du ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("mod.du %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* mod = binop(Iop_DivModU64to64, getIReg64(rj), getIReg64(rk)); + putIReg(rd, unop(Iop_128HIto64, mod)); + + return True; +} + +static Bool gen_alsl_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt sa2 = get_sa2(insn); + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("alsl.w %s, %s, %s, %u\n", nameIReg(rd), nameIReg(rj), + nameIReg(rk), sa2); + + IRExpr* shl = binop(Iop_Shl32, getIReg32(rj), mkU8(sa2 + 1)); + IRExpr* add = binop(Iop_Add32, shl, getIReg32(rk)); + putIReg(rd, extendS(Ity_I32, add)); + + return True; +} + +static Bool gen_alsl_wu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt sa2 = get_sa2(insn); + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("alsl.wu %s, %s, %s, %u\n", nameIReg(rd), nameIReg(rj), + nameIReg(rk), sa2); + + IRExpr* shl = binop(Iop_Shl32, getIReg32(rj), mkU8(sa2 + 1)); + IRExpr* add = binop(Iop_Add32, shl, getIReg32(rk)); + putIReg(rd, extendU(Ity_I32, add)); + + return True; +} + +static Bool gen_alsl_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt sa2 = get_sa2(insn); + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("alsl.d %s, %s, %s, %u\n", nameIReg(rd), nameIReg(rj), + nameIReg(rk), sa2); + + IRExpr* shl = binop(Iop_Shl64, getIReg64(rj), mkU8(sa2 + 1)); + putIReg(rd, binop(Iop_Add64, shl, getIReg64(rk))); + + return True; +} + +static Bool gen_lu12i_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si20 = get_si20(insn); + UInt rd = get_rd(insn); + + DIP("lu12i.w %s, %d\n", nameIReg(rd), (Int)extend32(si20, 20)); + + IRExpr* imm = mkU32(si20 << 12); + putIReg(rd, extendS(Ity_I32, imm)); + + return True; +} + +static Bool gen_lu32i_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si20 = get_si20(insn); + UInt rd = get_rd(insn); + + DIP("lu32i.d %s, %d\n", nameIReg(rd), (Int)extend32(si20, 20)); + + IRExpr* imm = mkU64((ULong)extend32(si20, 20) << 32); + IRExpr* shl = binop(Iop_Shl64, getIReg64(rd), mkU8(32)); + IRExpr* shr = binop(Iop_Shr64, shl, mkU8(32)); + putIReg(rd, binop(Iop_Or64, imm, shr)); + + return True; +} + +static Bool gen_lu52i_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("lu52i.d %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si12, 12)); + + IRExpr* imm = mkU64((ULong)si12 << 52); + IRExpr* shl = binop(Iop_Shl64, getIReg64(rj), mkU8(12)); + IRExpr* shr = binop(Iop_Shr64, shl, mkU8(12)); + putIReg(rd, binop(Iop_Or64, imm, shr)); + + return True; +} + +static Bool gen_pcaddi ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si20 = get_si20(insn); + UInt rd = get_rd(insn); + + DIP("pcaddi %s, %d\n", nameIReg(rd), (Int)extend32(si20, 20)); + + putIReg(rd, mkU64(guest_PC_curr_instr + extend64(si20 << 2, 22))); + + return True; +} + +static Bool gen_pcalau12i ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si20 = get_si20(insn); + UInt rd = get_rd(insn); + + DIP("pcalau12i %s, %d\n", nameIReg(rd), (Int)extend32(si20, 20)); + + IRExpr* imm = mkU64(guest_PC_curr_instr + extend64(si20 << 12, 32)); + IRExpr* shr = binop(Iop_Shr64, imm, mkU8(12)); + putIReg(rd, binop(Iop_Shl64, shr, mkU8(12))); + + return True; +} + +static Bool gen_pcaddu12i ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si20 = get_si20(insn); + UInt rd = get_rd(insn); + + DIP("pcaddu12i %s, %d\n", nameIReg(rd), (Int)extend32(si20, 20)); + + putIReg(rd, mkU64(guest_PC_curr_instr + extend64(si20 << 12, 32))); + + return True; +} + +static Bool gen_pcaddu18i ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si20 = get_si20(insn); + UInt rd = get_rd(insn); + + DIP("pcaddu18i %s, %d\n", nameIReg(rd), (Int)extend32(si20, 20)); + + putIReg(rd, mkU64(guest_PC_curr_instr + extend64((ULong)si20 << 18, 38))); + + return True; +} + +static Bool gen_addi_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("addi.w %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si12, 12)); + + IRExpr* imm = mkU32(extend32(si12, 12)); + IRExpr* add = binop(Iop_Add32, getIReg32(rj), imm); + putIReg(rd, extendS(Ity_I32, add)); + + return True; +} + +static Bool gen_addi_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("addi.d %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si12, 12)); + + IRExpr* imm = mkU64(extend64(si12, 12)); + putIReg(rd, binop(Iop_Add64, getIReg64(rj), imm)); + + return True; +} + +static Bool gen_addu16i_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si16 = get_si16(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("addu16i.d %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si16, 16)); + + IRExpr* imm = mkU64(extend64(si16 << 16, 32)); + putIReg(rd, binop(Iop_Add64, getIReg64(rj), imm)); + + return True; +} + +static Bool gen_andi ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt ui12 = get_ui12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("andi %s, %s, %u\n", nameIReg(rd), nameIReg(rj), ui12); + + IRExpr* imm = mkU64((ULong)ui12); + putIReg(rd, binop(Iop_And64, getIReg64(rj), imm)); + + return True; +} + +static Bool gen_ori ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt ui12 = get_ui12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ori %s, %s, %u\n", nameIReg(rd), nameIReg(rj), ui12); + + IRExpr* imm = mkU64((ULong)ui12); + putIReg(rd, binop(Iop_Or64, getIReg64(rj), imm)); + + return True; +} + +static Bool gen_xori ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt ui12 = get_ui12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("xori %s, %s, %u\n", nameIReg(rd), nameIReg(rj), ui12); + + IRExpr* imm = mkU64((ULong)ui12); + putIReg(rd, binop(Iop_Xor64, getIReg64(rj), imm)); + + return True; +} + + +/*------------------------------------------------------------*/ +/*--- Helpers for fixed point shift insns ---*/ +/*------------------------------------------------------------*/ + +static Bool gen_sll_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("sll.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* shl = binop(Iop_Shl32, getIReg32(rj), getIReg8(rk)); + putIReg(rd, extendS(Ity_I32, shl)); + + return True; +} + +static Bool gen_srl_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("srl.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* shr = binop(Iop_Shr32, getIReg32(rj), getIReg8(rk)); + putIReg(rd, extendS(Ity_I32, shr)); + + return True; +} + +static Bool gen_sra_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("sra.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* sar = binop(Iop_Sar32, getIReg32(rj), getIReg8(rk)); + putIReg(rd, extendS(Ity_I32, sar)); + + return True; +} + +static Bool gen_sll_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("sll.d %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + putIReg(rd, binop(Iop_Shl64, getIReg64(rj), getIReg8(rk))); + + return True; +} + +static Bool gen_srl_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("srl.d %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + putIReg(rd, binop(Iop_Shr64, getIReg64(rj), getIReg8(rk))); + + return True; +} + +static Bool gen_sra_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("sra.d %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + putIReg(rd, binop(Iop_Sar64, getIReg64(rj), getIReg8(rk))); + + return True; +} + +static Bool gen_rotr_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("rotr.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp tmp1 = newTemp(Ity_I32); + assign(tmp1, getIReg32(rj)); + IRTemp tmp2 = newTemp(Ity_I8); + assign(tmp2, getIReg8(rk)); + IRExpr* shr = binop(Iop_Shr32, mkexpr(tmp1), mkexpr(tmp2)); + IRExpr* imm = unop(Iop_8Uto32, mkexpr(tmp2)); + IRExpr* sub = binop(Iop_Sub32, mkU32(32), imm); + IRExpr* imm2 = unop(Iop_32to8, sub); + IRExpr* shl = binop(Iop_Shl32, mkexpr(tmp1), imm2); + IRExpr* or = binop(Iop_Or32, shr, shl); + putIReg(rd, extendS(Ity_I32, or)); + + return True; +} + +static Bool gen_rotr_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("rotr.d %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp tmp1 = newTemp(Ity_I64); + assign(tmp1, getIReg64(rj)); + IRTemp tmp2 = newTemp(Ity_I8); + assign(tmp2, getIReg8(rk)); + IRExpr* shr = binop(Iop_Shr64, mkexpr(tmp1), mkexpr(tmp2)); + IRExpr* imm = unop(Iop_8Uto64, mkexpr(tmp2)); + IRExpr* sub = binop(Iop_Sub64, mkU64(64), imm); + IRExpr* imm2 = unop(Iop_64to8, sub); + IRExpr* shl = binop(Iop_Shl64, mkexpr(tmp1), imm2); + putIReg(rd, binop(Iop_Or64, shr, shl)); + + return True; +} + +static Bool gen_slli_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt ui5 = get_ui5(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("slli.w %s, %s, %u\n", nameIReg(rd), nameIReg(rj), ui5); + + IRExpr* shl = binop(Iop_Shl32, getIReg32(rj), mkU8(ui5)); + putIReg(rd, extendS(Ity_I32, shl)); + + return True; +} + +static Bool gen_slli_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt ui6 = get_ui6(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("slli.d %s, %s, %u\n", nameIReg(rd), nameIReg(rj), ui6); + + putIReg(rd, binop(Iop_Shl64, getIReg64(rj), mkU8(ui6))); + + return True; +} + +static Bool gen_srli_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt ui5 = get_ui5(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("srli.w %s, %s, %u\n", nameIReg(rd), nameIReg(rj), ui5); + + IRExpr* shr = binop(Iop_Shr32, getIReg32(rj), mkU8(ui5)); + putIReg(rd, extendS(Ity_I32, shr)); + + return True; +} + +static Bool gen_srli_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt ui6 = get_ui6(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("srli.d %s, %s, %u\n", nameIReg(rd), nameIReg(rj), ui6); + + putIReg(rd, binop(Iop_Shr64, getIReg64(rj), mkU8(ui6))); + + return True; +} + +static Bool gen_srai_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt ui5 = get_ui5(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("srai.w %s, %s, %u\n", nameIReg(rd), nameIReg(rj), ui5); + + IRExpr* sar = binop(Iop_Sar32, getIReg32(rj), mkU8(ui5)); + putIReg(rd, extendS(Ity_I32, sar)); + + return True; +} + +static Bool gen_srai_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt ui6 = get_ui6(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("srai.d %s, %s, %u\n", nameIReg(rd), nameIReg(rj), ui6); + + putIReg(rd, binop(Iop_Sar64, getIReg64(rj), mkU8(ui6))); + + return True; +} + +static Bool gen_rotri_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt ui5 = get_ui5(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("rotri.w %s, %s, %u\n", nameIReg(rd), nameIReg(rj), ui5); + + IRTemp tmp = newTemp(Ity_I32); + assign(tmp, getIReg32(rj)); + IRExpr* shr = binop(Iop_Shr32, mkexpr(tmp), mkU8(ui5)); + IRExpr* shl = binop(Iop_Shl32, mkexpr(tmp), mkU8(32 - ui5)); + if (32 - ui5 == 32) + shl = mkU32(0); + IRExpr* or = binop(Iop_Or32, shr, shl); + putIReg(rd, extendS(Ity_I32, or)); + + return True; +} + +static Bool gen_rotri_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt ui6 = get_ui6(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("rotri.d %s, %s, %u\n", nameIReg(rd), nameIReg(rj), ui6); + + IRTemp tmp = newTemp(Ity_I64); + assign(tmp, getIReg64(rj)); + IRExpr* shr = binop(Iop_Shr64, mkexpr(tmp), mkU8(ui6)); + IRExpr* shl = binop(Iop_Shl64, mkexpr(tmp), mkU8(64 - ui6)); + if (64 - ui6 == 64) + shl = mkU64(0); + putIReg(rd, binop(Iop_Or64, shr, shl)); + + return True; +} + + +/*------------------------------------------------------------*/ +/*--- Helpers for fixed point bit insns ---*/ +/*------------------------------------------------------------*/ + +static Bool gen_ext_w_h ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ext.w.h %s, %s\n", nameIReg(rd), nameIReg(rj)); + + putIReg(rd, extendS(Ity_I16, getIReg16(rj))); + + return True; +} + +static Bool gen_ext_w_b ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ext.w.b %s, %s\n", nameIReg(rd), nameIReg(rj)); + + putIReg(rd, extendS(Ity_I8, getIReg8(rj))); + + return True; +} + +static Bool gen_clo_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("clo.w %s, %s\n", nameIReg(rd), nameIReg(rj)); + + IRExpr* not = unop(Iop_Not32, getIReg32(rj)); + IRExpr* clz = unop(Iop_Clz32, not); + putIReg(rd, extendU(Ity_I32, clz)); + + return True; +} + +static Bool gen_clz_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("clz.w %s, %s\n", nameIReg(rd), nameIReg(rj)); + + IRExpr* clz = unop(Iop_Clz32, getIReg32(rj)); + putIReg(rd, extendU(Ity_I32, clz)); + + return True; +} + +static Bool gen_cto_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("cto.w %s, %s\n", nameIReg(rd), nameIReg(rj)); + + IRExpr* not = unop(Iop_Not32, getIReg32(rj)); + IRExpr* clz = unop(Iop_Ctz32, not); + putIReg(rd, extendU(Ity_I32, clz)); + + return True; +} + +static Bool gen_ctz_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ctz.w %s, %s\n", nameIReg(rd), nameIReg(rj)); + + IRExpr* clz = unop(Iop_Ctz32, getIReg32(rj)); + putIReg(rd, extendU(Ity_I32, clz)); + + return True; +} + +static Bool gen_clo_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("clo.d %s, %s\n", nameIReg(rd), nameIReg(rj)); + + IRExpr* not = unop(Iop_Not64, getIReg64(rj)); + putIReg(rd, unop(Iop_Clz64, not)); + + return True; +} + +static Bool gen_clz_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("clz.d %s, %s\n", nameIReg(rd), nameIReg(rj)); + + putIReg(rd, unop(Iop_Clz64, getIReg64(rj))); + + return True; +} + +static Bool gen_cto_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("cto.d %s, %s\n", nameIReg(rd), nameIReg(rj)); + + IRExpr* not = unop(Iop_Not64, getIReg64(rj)); + putIReg(rd, unop(Iop_Ctz64, not)); + + return True; +} + +static Bool gen_ctz_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ctz.d %s, %s\n", nameIReg(rd), nameIReg(rj)); + + putIReg(rd, unop(Iop_Ctz64, getIReg64(rj))); + + return True; +} + +static Bool gen_revb_2h ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("revb.2h %s, %s\n", nameIReg(rd), nameIReg(rj)); + + IRExpr** arg = mkIRExprVec_1(getIReg64(rj)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_revb_2h", + &loongarch64_calculate_revb_2h, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_revb_4h ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("revb.4h %s, %s\n", nameIReg(rd), nameIReg(rj)); + + IRExpr** arg = mkIRExprVec_1(getIReg64(rj)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_revb_4h", + &loongarch64_calculate_revb_4h, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_revb_2w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("revb.2w %s, %s\n", nameIReg(rd), nameIReg(rj)); + + IRExpr** arg = mkIRExprVec_1(getIReg64(rj)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_revb_2w", + &loongarch64_calculate_revb_2w, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_revb_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("revb.d %s, %s\n", nameIReg(rd), nameIReg(rj)); + + IRExpr** arg = mkIRExprVec_1(getIReg64(rj)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_revb_d", + &loongarch64_calculate_revb_d, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_revh_2w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("revh.2w %s, %s\n", nameIReg(rd), nameIReg(rj)); + + IRExpr** arg = mkIRExprVec_1(getIReg64(rj)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_revh_2w", + &loongarch64_calculate_revh_2w, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_revh_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("revh.d %s, %s\n", nameIReg(rd), nameIReg(rj)); + + IRExpr** arg = mkIRExprVec_1(getIReg64(rj)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_revh_d", + &loongarch64_calculate_revh_d, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_bitrev_4b ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("bitrev.4b %s, %s\n", nameIReg(rd), nameIReg(rj)); + + IRExpr** arg = mkIRExprVec_1(getIReg64(rj)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_bitrev_4b", + &loongarch64_calculate_bitrev_4b, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_bitrev_8b ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("bitrev.8b %s, %s\n", nameIReg(rd), nameIReg(rj)); + + IRExpr** arg = mkIRExprVec_1(getIReg64(rj)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_bitrev_8b", + &loongarch64_calculate_bitrev_8b, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_bitrev_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("bitrev.w %s, %s\n", nameIReg(rd), nameIReg(rj)); + + IRExpr** arg = mkIRExprVec_1(getIReg64(rj)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_bitrev_w", + &loongarch64_calculate_bitrev_w, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_bitrev_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("bitrev.d %s, %s\n", nameIReg(rd), nameIReg(rj)); + + IRExpr** arg = mkIRExprVec_1(getIReg64(rj)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_bitrev_d", + &loongarch64_calculate_bitrev_d, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_bytepick_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt sa2 = get_sa2(insn); + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("bytepick.w %s, %s, %s, %u\n", nameIReg(rd), nameIReg(rj), + nameIReg(rk), sa2); + + UInt shift = 8 * (4 - sa2); + IRExpr* shl = binop(Iop_Shl32, getIReg32(rk), mkU8(32 - shift)); + if (32 - shift == 32) + shl = mkU32(0); + IRExpr* shr = binop(Iop_Shr32, getIReg32(rj), mkU8(shift)); + if (shift == 32) + shr = mkU32(0); + IRExpr* or = binop(Iop_Or32, shl, shr); + putIReg(rd, extendS(Ity_I32, or)); + + return True; +} + +static Bool gen_bytepick_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt sa3 = get_sa3(insn); + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("bytepick.d %s, %s, %s, %u\n", nameIReg(rd), nameIReg(rj), + nameIReg(rk), sa3); + + UInt shift = 8 * (8 - sa3); + IRExpr* shl = binop(Iop_Shl64, getIReg64(rk), mkU8(64 - shift)); + if (64 - shift == 64) + shl = mkU64(0); + IRExpr* shr = binop(Iop_Shr64, getIReg64(rj), mkU8(shift)); + if (shift == 64) + shr = mkU64(0); + putIReg(rd, binop(Iop_Or64, shl, shr)); + + return True; +} + +static Bool gen_maskeqz ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("maskeqz %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* cond = binop(Iop_CmpNE64, getIReg64(rk), mkU64(0)); + putIReg(rd, binop(Iop_And64, extendS(Ity_I1, cond), getIReg64(rj))); + + return True; +} + +static Bool gen_masknez ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("masknez %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* cond = binop(Iop_CmpEQ64, getIReg64(rk), mkU64(0)); + putIReg(rd, binop(Iop_And64, extendS(Ity_I1, cond), getIReg64(rj))); + + return True; +} + +static Bool gen_bstrins_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt msb = get_msbw(insn); + UInt lsb = get_lsbw(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("bstrins.w %s, %s, %u, %u\n", nameIReg(rd), nameIReg(rj), msb, lsb); + + IRTemp tmp = newTemp(Ity_I32); + assign(tmp, getIReg32(rd)); + IRExpr* shl1; + if (msb == 31) { + shl1 = mkU32(0); + } else { + IRExpr* shr1 = binop(Iop_Shr32, mkexpr(tmp), mkU8(msb + 1)); + shl1 = binop(Iop_Shl32, shr1, mkU8(msb + 1)); + } + IRExpr* shl2 = binop(Iop_Shl32, getIReg32(rj), mkU8(31 - msb + lsb)); + IRExpr* shr2 = binop(Iop_Shr32, shl2, mkU8(31 - msb)); + IRExpr* shr3; + if (lsb == 0) { + shr3 = mkU32(0); + } else { + IRExpr* shl3 = binop(Iop_Shl32, mkexpr(tmp), mkU8(32 - lsb)); + shr3 = binop(Iop_Shr32, shl3, mkU8(32 - lsb)); + } + IRExpr* or1 = binop(Iop_Or32, shl1, shr2); + IRExpr* or2 = binop(Iop_Or32, or1, shr3); + putIReg(rd, extendS(Ity_I32, or2)); + + return True; +} + +static Bool gen_bstrpick_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt msb = get_msbw(insn); + UInt lsb = get_lsbw(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("bstrpick.w %s, %s, %u, %u\n", nameIReg(rd), nameIReg(rj), msb, lsb); + + IRExpr* shl = binop(Iop_Shl32, getIReg32(rj), mkU8(31 - msb)); + IRExpr* shr = binop(Iop_Shr32, shl, mkU8(31 - msb + lsb)); + putIReg(rd, extendS(Ity_I32, shr)); + + return True; +} + +static Bool gen_bstrins_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt msb = get_msbd(insn); + UInt lsb = get_lsbd(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("bstrins.d %s, %s, %u, %u\n", nameIReg(rd), nameIReg(rj), msb, lsb); + + IRTemp tmp = newTemp(Ity_I64); + assign(tmp, getIReg64(rd)); + IRExpr* shl1; + if (msb == 63) { + shl1 = mkU64(0); + } else { + IRExpr* shr1 = binop(Iop_Shr64, mkexpr(tmp), mkU8(msb + 1)); + shl1 = binop(Iop_Shl64, shr1, mkU8(msb + 1)); + } + IRExpr* shl2 = binop(Iop_Shl64, getIReg64(rj), mkU8(63 - msb + lsb)); + IRExpr* shr2 = binop(Iop_Shr64, shl2, mkU8(63 - msb)); + IRExpr* shr3; + if (lsb == 0) { + shr3 = mkU64(0); + } else { + IRExpr* shl3 = binop(Iop_Shl64, mkexpr(tmp), mkU8(64 - lsb)); + shr3 = binop(Iop_Shr64, shl3, mkU8(64 - lsb)); + } + IRExpr* or = binop(Iop_Or64, shl1, shr2); + putIReg(rd, binop(Iop_Or64, or, shr3)); + + return True; +} + +static Bool gen_bstrpick_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt msb = get_msbd(insn); + UInt lsb = get_lsbd(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("bstrpick.d %s, %s, %u, %u\n", nameIReg(rd), nameIReg(rj), msb, lsb); + + IRExpr* shl = binop(Iop_Shl64, getIReg64(rj), mkU8(63 - msb)); + putIReg(rd, binop(Iop_Shr64, shl, mkU8(63 - msb + lsb))); + + return True; +} + + +/*------------------------------------------------------------*/ +/*--- Helpers for fixed point load/store insns ---*/ +/*------------------------------------------------------------*/ + +static Bool gen_ld_b ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ld.b %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si12, 12)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), mkU64(extend64(si12, 12))); + putIReg(rd, extendS(Ity_I8, load(Ity_I8, addr))); + + return True; +} + +static Bool gen_ld_h ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ld.h %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si12, 12)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), mkU64(extend64(si12, 12))); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x1))); + putIReg(rd, extendS(Ity_I16, load(Ity_I16, addr))); + + return True; +} + +static Bool gen_ld_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ld.w %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si12, 12)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), mkU64(extend64(si12, 12))); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x3))); + putIReg(rd, extendS(Ity_I32, load(Ity_I32, addr))); + + return True; +} + +static Bool gen_ld_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ld.d %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si12, 12)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), mkU64(extend64(si12, 12))); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x7))); + putIReg(rd, load(Ity_I64, addr)); + + return True; +} + +static Bool gen_st_b ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("st.b %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si12, 12)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), mkU64(extend64(si12, 12))); + store(addr, getIReg8(rd)); + + return True; +} + +static Bool gen_st_h ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("st.h %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si12, 12)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), mkU64(extend64(si12, 12))); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x1))); + store(addr, getIReg16(rd)); + + return True; +} + +static Bool gen_st_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("st.w %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si12, 12)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), mkU64(extend64(si12, 12))); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x3))); + store(addr, getIReg32(rd)); + + return True; +} + +static Bool gen_st_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("st.d %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si12, 12)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), mkU64(extend64(si12, 12))); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x7))); + store(addr, getIReg64(rd)); + + return True; +} + +static Bool gen_ld_bu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ld.bu %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si12, 12)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), mkU64(extend64(si12, 12))); + putIReg(rd, extendU(Ity_I8, load(Ity_I8, addr))); + + return True; +} + +static Bool gen_ld_hu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ld.hu %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si12, 12)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), mkU64(extend64(si12, 12))); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x1))); + putIReg(rd, extendU(Ity_I16, load(Ity_I16, addr))); + + return True; +} + +static Bool gen_ld_wu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ld.wu %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si12, 12)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), mkU64(extend64(si12, 12))); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x3))); + putIReg(rd, extendU(Ity_I32, load(Ity_I32, addr))); + + return True; +} + +static Bool gen_ldx_b ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ldx.b %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); + putIReg(rd, extendS(Ity_I8, load(Ity_I8, addr))); + + return True; +} + +static Bool gen_ldx_h ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ldx.h %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x1))); + putIReg(rd, extendS(Ity_I16, load(Ity_I16, addr))); + + return True; +} + +static Bool gen_ldx_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ldx.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x3))); + putIReg(rd, extendS(Ity_I32, load(Ity_I32, addr))); + + return True; +} + +static Bool gen_ldx_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ldx.d %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x7))); + putIReg(rd, load(Ity_I64, addr)); + + return True; +} + +static Bool gen_stx_b ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("stx.b %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); + store(addr, getIReg8(rd)); + + return True; +} + +static Bool gen_stx_h ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("stx.h %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x1))); + store(addr, getIReg16(rd)); + + return True; +} + +static Bool gen_stx_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("stx.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x3))); + store(addr, getIReg32(rd)); + + return True; +} + +static Bool gen_stx_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("stx.d %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x7))); + store(addr, getIReg64(rd)); + + return True; +} + +static Bool gen_ldx_bu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ldx.bu %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); + putIReg(rd, extendU(Ity_I8, load(Ity_I8, addr))); + + return True; +} + +static Bool gen_ldx_hu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ldx.hu %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x1))); + putIReg(rd, extendU(Ity_I16, load(Ity_I16, addr))); + + return True; +} + +static Bool gen_ldx_wu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ldx.wu %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x3))); + putIReg(rd, extendU(Ity_I32, load(Ity_I32, addr))); + + return True; +} + +static Bool gen_preld ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt hint = get_hint5(insn); + + DIP("preld %u, %s, %d\n", hint, nameIReg(rj), (Int)extend32(si12, 12)); + + return True; +} + +static Bool gen_preldx ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt hint = get_hint5(insn); + + DIP("preldx %u, %s, %d\n", hint, nameIReg(rj), (Int)extend32(si12, 12)); + + return True; +} + +static Bool gen_dbar ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt hint = get_hint15(insn); + + DIP("dbar %u\n", hint); + + stmt(IRStmt_MBE(Imbe_Fence)); + + return True; +} + +static Bool gen_ibar ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt hint = get_hint15(insn); + + DIP("ibar %u\n", hint); + + stmt(IRStmt_MBE(Imbe_InsnFence)); + + return True; +} + +static Bool gen_ldptr_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si14 = get_si14(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ldptr.w %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si14, 14)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), + mkU64(extend64(si14 << 2, 16))); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x3))); + putIReg(rd, extendS(Ity_I32, load(Ity_I32, addr))); + + return True; +} + +static Bool gen_stptr_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si14 = get_si14(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("stptr.w %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si14, 14)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), + mkU64(extend64(si14 << 2, 16))); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x3))); + store(addr, getIReg32(rd)); + + return True; +} + +static Bool gen_ldptr_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si14 = get_si14(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ldptr.d %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si14, 14)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), + mkU64(extend64(si14 << 2, 16))); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x7))); + putIReg(rd, load(Ity_I64, addr)); + + return True; +} + +static Bool gen_stptr_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si14 = get_si14(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("stptr.d %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si14, 14)); + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), + mkU64(extend64(si14 << 2, 16))); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x7))); + store(addr, getIReg64(rd)); + + return True; +} + +static Bool gen_ldgt_b ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ldgt.b %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGSYS(binop(Iop_CmpLE64U, mkexpr(addr), getIReg64(rk))); + putIReg(rd, extendS(Ity_I8, load(Ity_I8, mkexpr(addr)))); + + return True; +} + +static Bool gen_ldgt_h ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ldgt.h %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x1))); + gen_SIGSYS(binop(Iop_CmpLE64U, mkexpr(addr), getIReg64(rk))); + putIReg(rd, extendS(Ity_I16, load(Ity_I16, mkexpr(addr)))); + + return True; +} + +static Bool gen_ldgt_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ldgt.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x3))); + gen_SIGSYS(binop(Iop_CmpLE64U, mkexpr(addr), getIReg64(rk))); + putIReg(rd, extendS(Ity_I32, load(Ity_I32, mkexpr(addr)))); + + return True; +} + +static Bool gen_ldgt_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ldgt.d %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x7))); + gen_SIGSYS(binop(Iop_CmpLE64U, mkexpr(addr), getIReg64(rk))); + putIReg(rd, load(Ity_I64, mkexpr(addr))); + + return True; +} + +static Bool gen_ldle_b ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ldle.b %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGSYS(binop(Iop_CmpLT64U, getIReg64(rk), mkexpr(addr))); + putIReg(rd, extendS(Ity_I8, load(Ity_I8, mkexpr(addr)))); + + return True; +} + +static Bool gen_ldle_h ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ldle.h %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x1))); + gen_SIGSYS(binop(Iop_CmpLT64U, getIReg64(rk), mkexpr(addr))); + putIReg(rd, extendS(Ity_I16, load(Ity_I16, mkexpr(addr)))); + + return True; +} + +static Bool gen_ldle_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ldle.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x3))); + gen_SIGSYS(binop(Iop_CmpLT64U, getIReg64(rk), mkexpr(addr))); + putIReg(rd, extendS(Ity_I32, load(Ity_I32, mkexpr(addr)))); + + return True; +} + +static Bool gen_ldle_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ldle.d %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x7))); + gen_SIGSYS(binop(Iop_CmpLT64U, getIReg64(rk), mkexpr(addr))); + putIReg(rd, load(Ity_I64, mkexpr(addr))); + + return True; +} + +static Bool gen_stgt_b ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("stgt.b %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGSYS(binop(Iop_CmpLE64U, mkexpr(addr), getIReg64(rk))); + store(mkexpr(addr), getIReg8(rd)); + + return True; +} + +static Bool gen_stgt_h ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("stgt.h %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x1))); + gen_SIGSYS(binop(Iop_CmpLE64U, mkexpr(addr), getIReg64(rk))); + store(mkexpr(addr), getIReg16(rd)); + + return True; +} + +static Bool gen_stgt_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("stgt.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x3))); + gen_SIGSYS(binop(Iop_CmpLE64U, mkexpr(addr), getIReg64(rk))); + store(mkexpr(addr), getIReg32(rd)); + + return True; +} + +static Bool gen_stgt_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("stgt.d %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x7))); + gen_SIGSYS(binop(Iop_CmpLE64U, mkexpr(addr), getIReg64(rk))); + store(mkexpr(addr), getIReg64(rd)); + + return True; +} + +static Bool gen_stle_b ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("stle.b %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGSYS(binop(Iop_CmpLT64U, getIReg64(rk), mkexpr(addr))); + store(mkexpr(addr), getIReg8(rd)); + + return True; +} + +static Bool gen_stle_h ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("stle.h %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x1))); + gen_SIGSYS(binop(Iop_CmpLT64U, getIReg64(rk), mkexpr(addr))); + store(mkexpr(addr), getIReg16(rd)); + + return True; +} + +static Bool gen_stle_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("stle.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x3))); + gen_SIGSYS(binop(Iop_CmpLT64U, getIReg64(rk), mkexpr(addr))); + store(mkexpr(addr), getIReg32(rd)); + + return True; +} + +static Bool gen_stle_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("stle.d %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x7))); + gen_SIGSYS(binop(Iop_CmpLT64U, getIReg64(rk), mkexpr(addr))); + store(mkexpr(addr), getIReg64(rd)); + + return True; +} + + +/*------------------------------------------------------------*/ +/*--- Helpers for fixed point atomic insns ---*/ +/*------------------------------------------------------------*/ + +static Bool gen_ll_helper ( UInt rd, UInt rj, UInt si14, Bool size64 ) +{ + Int offs_size = offsetof(VexGuestLOONGARCH64State, guest_LLSC_SIZE); + Int offs_addr = offsetof(VexGuestLOONGARCH64State, guest_LLSC_ADDR); + Int offs_data = offsetof(VexGuestLOONGARCH64State, guest_LLSC_DATA); + + /* Get address of the load. */ + IRTemp addr = newTemp(Ity_I64); + assign(addr, binop(Iop_Add64, getIReg64(rj), + mkU64(extend64(si14 << 2, 16)))); + if (size64) + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x7))); + else + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x3))); + + /* Load the value. */ + IRTemp res = newTemp(Ity_I64); + if (size64) + assign(res, load(Ity_I64, mkexpr(addr))); + else + assign(res, extendS(Ity_I32, load(Ity_I32, mkexpr(addr)))); + + /* Set up the LLSC fallback data. */ + if (size64) + stmt(IRStmt_Put(offs_size, mkU64(8))); + else + stmt(IRStmt_Put(offs_size, mkU64(4))); + stmt(IRStmt_Put(offs_addr, mkexpr(addr))); + stmt(IRStmt_Put(offs_data, mkexpr(res))); + + /* Write the result to the destination register. */ + putIReg(rd, mkexpr(res)); + + return True; +} + +static Bool gen_sc_helper ( UInt rd, UInt rj, UInt si14, Bool size64 ) +{ + Int offs_size = offsetof(VexGuestLOONGARCH64State, guest_LLSC_SIZE); + Int offs_addr = offsetof(VexGuestLOONGARCH64State, guest_LLSC_ADDR); + Int offs_data = offsetof(VexGuestLOONGARCH64State, guest_LLSC_DATA); + + /* Get address of the load. */ + IRTemp addr = newTemp(Ity_I64); + assign(addr, binop(Iop_Add64, getIReg64(rj), + mkU64(extend64(si14 << 2, 16)))); + if (size64) + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x7))); + else + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x3))); + + /* Get new value. */ + IRTemp new; + if (size64) { + new = newTemp(Ity_I64); + assign(new, getIReg64(rd)); + } else { + new = newTemp(Ity_I32); + assign(new, getIReg32(rd)); + } + + /* Mark the SC initially as failed. */ + putIReg(rd, mkU64(0)); + + /* Set that no transaction is in progress. */ + IRTemp size = newTemp(Ity_I64); + assign(size, IRExpr_Get(offs_size, Ity_I64)); + stmt(IRStmt_Put(offs_size, mkU64(0) /* "no transaction" */)); + + /* Fail if no or wrong-size transaction. */ + if (size64) + exit(binop(Iop_CmpNE64, mkexpr(size), mkU64(8)), Ijk_Boring, 4); + else + exit(binop(Iop_CmpNE64, mkexpr(size), mkU64(4)), Ijk_Boring, 4); + + /* Fail if the address doesn't match the LL address. */ + exit(binop(Iop_CmpNE64, mkexpr(addr), IRExpr_Get(offs_addr, Ity_I64)), + Ijk_Boring, 4); + + /* Fail if the data doesn't match the LL data. */ + IRTemp data; + if (size64) { + data = newTemp(Ity_I64); + assign(data, IRExpr_Get(offs_data, Ity_I64)); + IRExpr* d = load(Ity_I64, mkexpr(addr)); + exit(binop(Iop_CmpNE64, d, mkexpr(data)), Ijk_Boring, 4); + } else { + data = newTemp(Ity_I32); + IRTemp tmp = newTemp(Ity_I64); + assign(tmp, IRExpr_Get(offs_data, Ity_I64)); + assign(data, unop(Iop_64to32, mkexpr(tmp))); + IRExpr* d = extendS(Ity_I32, load(Ity_I32, mkexpr(addr))); + exit(binop(Iop_CmpNE64, d, mkexpr(tmp)), Ijk_Boring, 4); + } + + /* Try to CAS the new value in. */ + IRTemp old; + if (size64) { + old = newTemp(Ity_I64); + cas(old, mkexpr(addr), mkexpr(data), mkexpr(new)); + } else { + old = newTemp(Ity_I32); + cas(old, mkexpr(addr), mkexpr(data), mkexpr(new)); + } + + /* Fail if the CAS failed (old != expd). */ + if (size64) + exit(binop(Iop_CasCmpNE64, mkexpr(old), mkexpr(data)), Ijk_Boring, 4); + else + exit(binop(Iop_CasCmpNE32, mkexpr(old), mkexpr(data)), Ijk_Boring, 4); + + /* Otherwise mark the operation as successful. */ + putIReg(rd, mkU64(1)); + + return True; +} + +static Bool gen_ll_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si14 = get_si14(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ll.w %s, %s, %d%s\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si14, 14), + abiinfo->guest__use_fallback_LLSC ? + " (fallback implementation)" : ""); + + if (abiinfo->guest__use_fallback_LLSC) { + return gen_ll_helper(rd, rj, si14, False); + } else { + IRTemp res = newTemp(Ity_I32); + IRTemp addr = newTemp(Ity_I64); + assign(addr, binop(Iop_Add64, getIReg64(rj), + mkU64(extend64(si14 << 2, 16)))); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x3))); + stmt(IRStmt_LLSC(Iend_LE, res, mkexpr(addr), NULL/*LL*/)); + putIReg(rd, extendS(Ity_I32, mkexpr(res))); + return True; + } +} + +static Bool gen_sc_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si14 = get_si14(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("sc.w %s, %s, %d%s\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si14, 14), + abiinfo->guest__use_fallback_LLSC ? + " (fallback implementation)" : ""); + + if (abiinfo->guest__use_fallback_LLSC) { + return gen_sc_helper(rd, rj, si14, False); + } else { + IRTemp res = newTemp(Ity_I1); + IRTemp addr = newTemp(Ity_I64); + assign(addr, binop(Iop_Add64, getIReg64(rj), + mkU64(extend64(si14 << 2, 16)))); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x3))); + stmt(IRStmt_LLSC(Iend_LE, res, mkexpr(addr), getIReg32(rd))); + return True; + } +} + +static Bool gen_ll_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si14 = get_si14(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ll.d %s, %s, %d%s\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si14, 14), + abiinfo->guest__use_fallback_LLSC ? + " (fallback implementation)" : ""); + + if (abiinfo->guest__use_fallback_LLSC) { + return gen_ll_helper(rd, rj, si14, True); + } else { + IRTemp res = newTemp(Ity_I64); + IRTemp addr = newTemp(Ity_I64); + assign(addr, binop(Iop_Add64, getIReg64(rj), + mkU64(extend64(si14 << 2, 16)))); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x7))); + stmt(IRStmt_LLSC(Iend_LE, res, mkexpr(addr), NULL/*LL*/)); + putIReg(rd, mkexpr(res)); + return True; + } +} + +static Bool gen_sc_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si14 = get_si14(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("sc.d %s, %s, %d%s\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(si14, 14), + abiinfo->guest__use_fallback_LLSC ? + " (fallback implementation)" : ""); + + if (abiinfo->guest__use_fallback_LLSC) { + return gen_sc_helper(rd, rj, si14, True); + } else { + IRTemp res = newTemp(Ity_I1); + IRTemp addr = newTemp(Ity_I64); + assign(addr, binop(Iop_Add64, getIReg64(rj), + mkU64(extend64(si14 << 2, 16)))); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x7))); + stmt(IRStmt_LLSC(Iend_LE, res, mkexpr(addr), getIReg64(rd))); + return True; + } +} + +enum amop { + AMSWAP, AMADD, AMAND, AMOR, AMXOR, AMMAX, AMMIN, AMMAX_U, AMMIN_U +}; + +static Bool gen_am_w_helper ( enum amop op, Bool fence, + UInt rd, UInt rj, UInt rk ) +{ + if (fence) + stmt(IRStmt_MBE(Imbe_Fence)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x3))); + + IRTemp o = newTemp(Ity_I32); + assign(o, load(Ity_I32, mkexpr(addr))); + IRTemp n = newTemp(Ity_I32); + assign(n, getIReg32(rk)); + IRExpr* e; + switch (op) { + case AMSWAP: + e = mkexpr(n); + break; + case AMADD: + e = binop(Iop_Add32, mkexpr(o), mkexpr(n)); + break; + case AMAND: + e = binop(Iop_And32, mkexpr(o), mkexpr(n)); + break; + case AMOR: + e = binop(Iop_Or32, mkexpr(o), mkexpr(n)); + break; + case AMXOR: + e = binop(Iop_Xor32, mkexpr(o), mkexpr(n)); + break; + case AMMAX: { + IRExpr* cond = binop(Iop_CmpLT32S, mkexpr(n), mkexpr(o)); + e = IRExpr_ITE(cond, mkexpr(o), mkexpr(n)); + break; + } + case AMMIN: { + IRExpr* cond = binop(Iop_CmpLT32S, mkexpr(o), mkexpr(n)); + e = IRExpr_ITE(cond, mkexpr(o), mkexpr(n)); + break; + } + case AMMAX_U: { + IRExpr* cond = binop(Iop_CmpLT32U, mkexpr(n), mkexpr(o)); + e = IRExpr_ITE(cond, mkexpr(o), mkexpr(n)); + break; + } + case AMMIN_U: { + IRExpr* cond = binop(Iop_CmpLT32U, mkexpr(o), mkexpr(n)); + e = IRExpr_ITE(cond, mkexpr(o), mkexpr(n)); + break; + } + default: + return False; + } + + IRTemp old = newTemp(Ity_I32); + cas(old, mkexpr(addr), mkexpr(o), e); + IRExpr* cond = binop(Iop_CasCmpNE32, mkexpr(old), mkexpr(o)); + exit(cond, Ijk_Boring, 0); /* Loop if failed */ + putIReg(rd, extendS(Ity_I32, mkexpr(o))); + + if (fence) + stmt(IRStmt_MBE(Imbe_Fence)); + + return True; +} + +static Bool gen_am_d_helper ( enum amop op, Bool fence, + UInt rd, UInt rj, UInt rk ) +{ + if (fence) + stmt(IRStmt_MBE(Imbe_Fence)); + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x7))); + + IRTemp o = newTemp(Ity_I64); + assign(o, load(Ity_I64, mkexpr(addr))); + IRTemp n = newTemp(Ity_I64); + assign(n, getIReg64(rk)); + IRExpr* e; + switch (op) { + case AMSWAP: + e = mkexpr(n); + break; + case AMADD: + e = binop(Iop_Add64, mkexpr(o), mkexpr(n)); + break; + case AMAND: + e = binop(Iop_And64, mkexpr(o), mkexpr(n)); + break; + case AMOR: + e = binop(Iop_Or64, mkexpr(o), mkexpr(n)); + break; + case AMXOR: + e = binop(Iop_Xor64, mkexpr(o), mkexpr(n)); + break; + case AMMAX: { + IRExpr* cond = binop(Iop_CmpLT64S, mkexpr(n), mkexpr(o)); + e = IRExpr_ITE(cond, mkexpr(o), mkexpr(n)); + break; + } + case AMMIN: { + IRExpr* cond = binop(Iop_CmpLT64S, mkexpr(o), mkexpr(n)); + e = IRExpr_ITE(cond, mkexpr(o), mkexpr(n)); + break; + } + case AMMAX_U: { + IRExpr* cond = binop(Iop_CmpLT64U, mkexpr(n), mkexpr(o)); + e = IRExpr_ITE(cond, mkexpr(o), mkexpr(n)); + break; + } + case AMMIN_U: { + IRExpr* cond = binop(Iop_CmpLT64U, mkexpr(o), mkexpr(n)); + e = IRExpr_ITE(cond, mkexpr(o), mkexpr(n)); + break; + } + default: + return False; + } + + IRTemp old = newTemp(Ity_I64); + cas(old, mkexpr(addr), mkexpr(o), e); + IRExpr* cond = binop(Iop_CasCmpNE64, mkexpr(old), mkexpr(o)); + exit(cond, Ijk_Boring, 0); /* Loop if failed */ + putIReg(rd, mkexpr(o)); + + if (fence) + stmt(IRStmt_MBE(Imbe_Fence)); + + return True; +} + +static Bool gen_amswap_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amswap.w %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMSWAP, False, rd, rj, rk); +} + +static Bool gen_amswap_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amswap.d %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMSWAP, False, rd, rj, rk); +} + +static Bool gen_amadd_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amadd.w %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMADD, False, rd, rj, rk); +} + +static Bool gen_amadd_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amadd.d %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMADD, False, rd, rj, rk); +} + +static Bool gen_amand_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amand.w %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMAND, False, rd, rj, rk); +} + +static Bool gen_amand_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amand.d %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMAND, False, rd, rj, rk); +} + +static Bool gen_amor_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amor.w %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMOR, False, rd, rj, rk); +} + +static Bool gen_amor_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amor.d %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMOR, False, rd, rj, rk); +} + +static Bool gen_amxor_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amxor.w %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMXOR, False, rd, rj, rk); +} + +static Bool gen_amxor_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amxor.d %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMXOR, False, rd, rj, rk); +} + +static Bool gen_ammax_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ammax.w %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMMAX, False, rd, rj, rk); +} + +static Bool gen_ammax_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ammax.d %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMMAX, False, rd, rj, rk); +} + +static Bool gen_ammin_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ammin.w %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMMIN, False, rd, rj, rk); +} + +static Bool gen_ammin_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ammin.d %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMMIN, False, rd, rj, rk); +} + +static Bool gen_ammax_wu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ammax.wu %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMMAX_U, False, rd, rj, rk); +} + +static Bool gen_ammax_du ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ammax.du %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMMAX_U, False, rd, rj, rk); +} + +static Bool gen_ammin_wu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ammin.wu %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMMIN_U, False, rd, rj, rk); +} + +static Bool gen_ammin_du ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ammin.du %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMMIN_U, False, rd, rj, rk); +} + +static Bool gen_amswap_db_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amswap_db.w %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMSWAP, True, rd, rj, rk); +} + +static Bool gen_amswap_db_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amswap_db.d %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMSWAP, True, rd, rj, rk); +} + +static Bool gen_amadd_db_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amadd_db.w %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMADD, True, rd, rj, rk); +} + +static Bool gen_amadd_db_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amadd_db.d %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMADD, True, rd, rj, rk); +} + +static Bool gen_amand_db_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amand_db.w %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMAND, True, rd, rj, rk); +} + +static Bool gen_amand_db_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amand_db.d %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMAND, True, rd, rj, rk); +} + +static Bool gen_amor_db_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amor_db.w %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMOR, True, rd, rj, rk); +} + +static Bool gen_amor_db_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amor_db.d %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMOR, True, rd, rj, rk); +} + +static Bool gen_amxor_db_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amxor_db.w %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMXOR, True, rd, rj, rk); +} + +static Bool gen_amxor_db_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("amxor_db.d %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMXOR, True, rd, rj, rk); +} + +static Bool gen_ammax_db_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ammax_db.w %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMMAX, True, rd, rj, rk); +} + +static Bool gen_ammax_db_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ammax_db.d %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMMAX, True, rd, rj, rk); +} + +static Bool gen_ammin_db_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ammin_db.w %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMMIN, True, rd, rj, rk); +} + +static Bool gen_ammin_db_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ammin_db.d %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMMIN, True, rd, rj, rk); +} + +static Bool gen_ammax_db_wu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ammax_db.wu %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMMAX_U, True, rd, rj, rk); +} + +static Bool gen_ammax_db_du ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ammax_db.du %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMMAX_U, True, rd, rj, rk); +} + +static Bool gen_ammin_db_wu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ammin_db.wu %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_w_helper(AMMIN_U, True, rd, rj, rk); +} + +static Bool gen_ammin_db_du ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("ammin_db.du %s, %s, %s\n", nameIReg(rd), nameIReg(rk), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LAM)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_am_d_helper(AMMIN_U, True, rd, rj, rk); +} + + +/*------------------------------------------------------------*/ +/*--- Helpers for fixed point extra insns ---*/ +/*------------------------------------------------------------*/ + +static Bool gen_crc_w_b_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("crc.w.b.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr** arg = mkIRExprVec_3(getIReg64(rk), getIReg64(rj), mkU64(8)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_crc", + &loongarch64_calculate_crc, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_crc_w_h_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("crc.w.h.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr** arg = mkIRExprVec_3(getIReg64(rk), getIReg64(rj), mkU64(16)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_crc", + &loongarch64_calculate_crc, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_crc_w_w_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("crc.w.w.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr** arg = mkIRExprVec_3(getIReg64(rk), getIReg64(rj), mkU64(32)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_crc", + &loongarch64_calculate_crc, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_crc_w_d_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("crc.w.d.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr** arg = mkIRExprVec_3(getIReg64(rk), getIReg64(rj), mkU64(64)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_crc", + &loongarch64_calculate_crc, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_crcc_w_b_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("crcc.w.b.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr** arg = mkIRExprVec_3(getIReg64(rk), getIReg64(rj), mkU64(8)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_crcc", + &loongarch64_calculate_crcc, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_crcc_w_h_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("crcc.w.h.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr** arg = mkIRExprVec_3(getIReg64(rk), getIReg64(rj), mkU64(16)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_crcc", + &loongarch64_calculate_crcc, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_crcc_w_w_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("crcc.w.w.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr** arg = mkIRExprVec_3(getIReg64(rk), getIReg64(rj), mkU64(32)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_crcc", + &loongarch64_calculate_crcc, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_crcc_w_d_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("crcc.w.d.w %s, %s, %s\n", nameIReg(rd), nameIReg(rj), nameIReg(rk)); + + IRExpr** arg = mkIRExprVec_3(getIReg64(rk), getIReg64(rj), mkU64(64)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_crcc", + &loongarch64_calculate_crcc, + arg); + putIReg(rd, call); + + return True; +} + +static Bool gen_break ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt code = get_code(insn); + + DIP("break %u\n", code); + + putPC(mkU64(guest_PC_curr_instr + 4)); + + /* On LoongArch, most instructions do not raise exceptions; + instead, gcc notifies the kernel with a trap instruction. + We simulate the behavior of the linux kernel here. + See arch/loongarch/kernel/traps.c. + */ + switch (code) { + case 6: /* BRK_OVERFLOW */ + dres->jk_StopHere = Ijk_SigFPE_IntOvf; + break; + case 7: /* BRK_DIVZERO */ + dres->jk_StopHere = Ijk_SigFPE_IntDiv; + break; + default: + dres->jk_StopHere = Ijk_SigTRAP; + break; + } + dres->whatNext = Dis_StopHere; + + return True; +} + +static Bool gen_syscall ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt hint = get_hint15(insn); + + DIP("syscall %u\n", hint); + + putPC(mkU64(guest_PC_curr_instr + 4)); + + dres->jk_StopHere = Ijk_Sys_syscall; + dres->whatNext = Dis_StopHere; + + return True; +} + +static Bool gen_asrtle_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + + DIP("asrtle.d %s, %s\n", nameIReg(rj), nameIReg(rk)); + + gen_SIGSYS(binop(Iop_CmpLT64U, getIReg64(rk), getIReg64(rj))); + + return True; +} + +static Bool gen_asrtgt_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + + DIP("asrtgt.d %s, %s\n", nameIReg(rj), nameIReg(rk)); + + gen_SIGSYS(binop(Iop_CmpLE64U, getIReg64(rj), getIReg64(rk))); + + return True; +} + +static Bool gen_rdtimel_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("rdtimel.w %s, %s\n", nameIReg(rd), nameIReg(rj)); + + putIReg(rd, mkU64(0)); + + return True; +} + +static Bool gen_rdtimeh_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("rdtimeh.w %s, %s\n", nameIReg(rd), nameIReg(rj)); + + putIReg(rd, mkU64(0)); + + return True; +} + +static Bool gen_rdtime_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("rdtime.d %s, %s\n", nameIReg(rd), nameIReg(rj)); + + putIReg(rd, mkU64(0)); + + return True; +} + +static Bool gen_cpucfg ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("cpucfg %s, %s\n", nameIReg(rd), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_CPUCFG)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr** arg = mkIRExprVec_1(getIReg64(rj)); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_cpucfg", + &loongarch64_calculate_cpucfg, + arg); + putIReg(rd, call); + + return True; +} + + +/*------------------------------------------------------------*/ +/*--- Helpers for floating point arithmetic insns ---*/ +/*------------------------------------------------------------*/ + +static Bool gen_fadd_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fadd.s %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FADD_S, 2, fj, fk, 0); + IRExpr* rm = get_rounding_mode(); + putFReg32(fd, triop(Iop_AddF32, rm, getFReg32(fj), getFReg32(fk))); + + return True; +} + +static Bool gen_fadd_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fadd.d %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FADD_D, 2, fj, fk, 0); + IRExpr* rm = get_rounding_mode(); + putFReg64(fd, triop(Iop_AddF64, rm, getFReg64(fj), getFReg64(fk))); + + return True; +} + +static Bool gen_fsub_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fsub.s %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FSUB_S, 2, fj, fk, 0); + IRExpr* rm = get_rounding_mode(); + putFReg32(fd, triop(Iop_SubF32, rm, getFReg32(fj), getFReg32(fk))); + + return True; +} + +static Bool gen_fsub_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fsub.d %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FSUB_D, 2, fj, fk, 0); + IRExpr* rm = get_rounding_mode(); + putFReg64(fd, triop(Iop_SubF64, rm, getFReg64(fj), getFReg64(fk))); + + return True; +} + +static Bool gen_fmul_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fmul.s %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FMUL_S, 2, fj, fk, 0); + IRExpr* rm = get_rounding_mode(); + putFReg32(fd, triop(Iop_MulF32, rm, getFReg32(fj), getFReg32(fk))); + + return True; +} + +static Bool gen_fmul_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fmul.d %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FMUL_D, 2, fj, fk, 0); + IRExpr* rm = get_rounding_mode(); + putFReg64(fd, triop(Iop_MulF64, rm, getFReg64(fj), getFReg64(fk))); + + return True; +} + +static Bool gen_fdiv_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fdiv.s %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FDIV_S, 2, fj, fk, 0); + IRExpr* rm = get_rounding_mode(); + putFReg32(fd, triop(Iop_DivF32, rm, getFReg32(fj), getFReg32(fk))); + + return True; +} + +static Bool gen_fdiv_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fdiv.d %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FDIV_D, 2, fj, fk, 0); + IRExpr* rm = get_rounding_mode(); + putFReg64(fd, triop(Iop_DivF64, rm, getFReg64(fj), getFReg64(fk))); + + return True; +} + +static Bool gen_fmadd_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fa = get_fa(insn); + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fmadd.s %s, %s, %s, %s\n", nameFReg(fd), nameFReg(fj), + nameFReg(fk), nameFReg(fa)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FMADD_S, 3, fj, fk, fa); + IRExpr* rm = get_rounding_mode(); + putFReg32(fd, qop(Iop_MAddF32, rm, getFReg32(fj), + getFReg32(fk), getFReg32(fa))); + + return True; +} + +static Bool gen_fmadd_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fa = get_fa(insn); + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fmadd.d %s, %s, %s, %s\n", nameFReg(fd), nameFReg(fj), + nameFReg(fk), nameFReg(fa)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FMADD_D, 3, fj, fk, fa); + IRExpr* rm = get_rounding_mode(); + putFReg64(fd, qop(Iop_MAddF64, rm, getFReg64(fj), + getFReg64(fk), getFReg64(fa))); + + return True; +} + +static Bool gen_fmsub_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fa = get_fa(insn); + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fmsub.s %s, %s, %s, %s\n", nameFReg(fd), nameFReg(fj), + nameFReg(fk), nameFReg(fa)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FMSUB_S, 3, fj, fk, fa); + IRExpr* rm = get_rounding_mode(); + putFReg32(fd, qop(Iop_MSubF32, rm, getFReg32(fj), + getFReg32(fk), getFReg32(fa))); + + return True; +} + +static Bool gen_fmsub_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fa = get_fa(insn); + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fmsub.d %s, %s, %s, %s\n", nameFReg(fd), nameFReg(fj), + nameFReg(fk), nameFReg(fa)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FMSUB_D, 3, fj, fk, fa); + IRExpr* rm = get_rounding_mode(); + putFReg64(fd, qop(Iop_MSubF64, rm, getFReg64(fj), + getFReg64(fk), getFReg64(fa))); + + return True; +} + +static Bool gen_fnmadd_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fa = get_fa(insn); + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fnmadd.s %s, %s, %s, %s\n", nameFReg(fd), nameFReg(fj), + nameFReg(fk), nameFReg(fa)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FNMADD_S, 3, fj, fk, fa); + IRExpr* rm = get_rounding_mode(); + IRExpr* madd = qop(Iop_MAddF32, rm, getFReg32(fj), + getFReg32(fk), getFReg32(fa)); + putFReg32(fd, unop(Iop_NegF32, madd)); + + return True; +} + +static Bool gen_fnmadd_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fa = get_fa(insn); + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fnmadd.d %s, %s, %s, %s\n", nameFReg(fd), nameFReg(fj), + nameFReg(fk), nameFReg(fa)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FNMADD_D, 3, fj, fk, fa); + IRExpr* rm = get_rounding_mode(); + IRExpr* madd = qop(Iop_MAddF64, rm, getFReg64(fj), + getFReg64(fk), getFReg64(fa)); + putFReg64(fd, unop(Iop_NegF64, madd)); + + return True; +} + +static Bool gen_fnmsub_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fa = get_fa(insn); + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fnmsub.s %s, %s, %s, %s\n", nameFReg(fd), nameFReg(fj), + nameFReg(fk), nameFReg(fa)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FNMSUB_S, 3, fj, fk, fa); + IRExpr* rm = get_rounding_mode(); + IRExpr* msub = qop(Iop_MSubF32, rm, getFReg32(fj), + getFReg32(fk), getFReg32(fa)); + putFReg32(fd, unop(Iop_NegF32, msub)); + + return True; +} + +static Bool gen_fnmsub_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fa = get_fa(insn); + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fnmsub.d %s, %s, %s, %s\n", nameFReg(fd), nameFReg(fj), + nameFReg(fk), nameFReg(fa)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FNMSUB_D, 3, fj, fk, fa); + IRExpr* rm = get_rounding_mode(); + IRExpr* msub = qop(Iop_MSubF64, rm, getFReg64(fj), + getFReg64(fk), getFReg64(fa)); + putFReg64(fd, unop(Iop_NegF64, msub)); + + return True; +} + +static Bool gen_fmax_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fmax.s %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FMAX_S, 2, fj, fk, 0); + putFReg32(fd, binop(Iop_MaxNumF32, getFReg32(fj), getFReg32(fk))); + + return True; +} + +static Bool gen_fmax_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fmax.d %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FMAX_D, 2, fj, fk, 0); + putFReg64(fd, binop(Iop_MaxNumF64, getFReg64(fj), getFReg64(fk))); + + return True; +} + +static Bool gen_fmin_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fmin.s %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FMIN_S, 2, fj, fk, 0); + putFReg32(fd, binop(Iop_MinNumF32, getFReg32(fj), getFReg32(fk))); + + return True; +} + +static Bool gen_fmin_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fmin.d %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FMIN_D, 2, fj, fk, 0); + putFReg64(fd, binop(Iop_MinNumF64, getFReg64(fj), getFReg64(fk))); + + return True; +} + +static Bool gen_fmaxa_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fmaxa.s %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FMAXA_S, 2, fj, fk, 0); + putFReg32(fd, binop(Iop_MaxNumAbsF32, getFReg32(fj), getFReg32(fk))); + + return True; +} + +static Bool gen_fmaxa_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fmaxa.d %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FMAXA_D, 2, fj, fk, 0); + putFReg64(fd, binop(Iop_MaxNumAbsF64, getFReg64(fj), getFReg64(fk))); + + return True; +} + +static Bool gen_fmina_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fmina.s %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FMINA_S, 2, fj, fk, 0); + putFReg32(fd, binop(Iop_MinNumAbsF32, getFReg32(fj), getFReg32(fk))); + + return True; +} + +static Bool gen_fmina_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fmina.d %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FMINA_D, 2, fj, fk, 0); + putFReg64(fd, binop(Iop_MinNumAbsF64, getFReg64(fj), getFReg64(fk))); + + return True; +} + +static Bool gen_fabs_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fabs.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FABS_S, 1, fj, 0, 0); + putFReg32(fd, unop(Iop_AbsF32, getFReg32(fj))); + + return True; +} + +static Bool gen_fabs_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fabs.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FABS_D, 1, fj, 0, 0); + putFReg64(fd, unop(Iop_AbsF64, getFReg64(fj))); + + return True; +} + +static Bool gen_fneg_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fneg.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FNEG_S, 1, fj, 0, 0); + putFReg32(fd, unop(Iop_NegF32, getFReg32(fj))); + + return True; +} + +static Bool gen_fneg_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fneg.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FNEG_D, 1, fj, 0, 0); + putFReg64(fd, unop(Iop_NegF64, getFReg64(fj))); + + return True; +} + +static Bool gen_fsqrt_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fsqrt.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FSQRT_S, 1, fj, 0, 0); + IRExpr* rm = get_rounding_mode(); + putFReg32(fd, binop(Iop_SqrtF32, rm, getFReg32(fj))); + + return True; +} + +static Bool gen_fsqrt_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fsqrt.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FSQRT_D, 1, fj, 0, 0); + IRExpr* rm = get_rounding_mode(); + putFReg64(fd, binop(Iop_SqrtF64, rm, getFReg64(fj))); + + return True; +} + +static Bool gen_frecip_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("frecip.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FRECIP_S, 1, fj, 0, 0); + IRExpr* rm = get_rounding_mode(); + putFReg32(fd, triop(Iop_DivF32, rm, mkF32i(1), getFReg32(fj))); + + return True; +} + +static Bool gen_frecip_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("frecip.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FRECIP_D, 1, fj, 0, 0); + IRExpr* rm = get_rounding_mode(); + putFReg64(fd, triop(Iop_DivF64, rm, mkF64i(1), getFReg64(fj))); + + return True; +} + +static Bool gen_frsqrt_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("frsqrt.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FRSQRT_S, 1, fj, 0, 0); + IRExpr* rm = get_rounding_mode(); + putFReg32(fd, binop(Iop_RSqrtF32, rm, getFReg32(fj))); + + return True; +} + +static Bool gen_frsqrt_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("frsqrt.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FRSQRT_D, 1, fj, 0, 0); + IRExpr* rm = get_rounding_mode(); + putFReg64(fd, binop(Iop_RSqrtF64, rm, getFReg64(fj))); + + return True; +} + +static Bool gen_fscaleb_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fscaleb.s %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FSCALEB_S, 2, fj, fk, 0); + IRExpr* rm = get_rounding_mode(); + putFReg32(fd, triop(Iop_ScaleBF32, rm, getFReg32(fj), getFReg32(fk))); + + return True; +} + +static Bool gen_fscaleb_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fscaleb.d %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FSCALEB_D, 2, fj, fk, 0); + IRExpr* rm = get_rounding_mode(); + putFReg64(fd, triop(Iop_ScaleBF64, rm, getFReg64(fj), getFReg64(fk))); + + return True; +} + +static Bool gen_flogb_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("flogb.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FLOGB_S, 1, fj, 0, 0); + IRExpr* rm = get_rounding_mode(); + putFReg32(fd, binop(Iop_LogBF32, rm, getFReg32(fj))); + + return True; +} + +static Bool gen_flogb_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("flogb.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FLOGB_D, 1, fj, 0, 0); + IRExpr* rm = get_rounding_mode(); + putFReg64(fd, binop(Iop_LogBF64, rm, getFReg64(fj))); + + return True; +} + +static Bool gen_fcopysign_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fcopysign.s %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* i1 = unop(Iop_ReinterpF32asI32, getFReg32(fj)); + IRExpr* shl1 = binop(Iop_Shl32, i1, mkU8(1)); + IRExpr* shr1 = binop(Iop_Shr32, shl1, mkU8(1)); + IRExpr* i2 = unop(Iop_ReinterpF32asI32, getFReg32(fk)); + IRExpr* shr2 = binop(Iop_Shr32, i2, mkU8(31)); + IRExpr* shl2 = binop(Iop_Shl32, shr2, mkU8(31)); + IRExpr* or = binop(Iop_Or32, shr1, shl2); + putFReg32(fd, unop(Iop_ReinterpI32asF32, or)); + + return True; +} + +static Bool gen_fcopysign_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fcopysign.d %s, %s, %s\n", nameFReg(fd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* i1 = unop(Iop_ReinterpF64asI64, getFReg64(fj)); + IRExpr* shl1 = binop(Iop_Shl64, i1, mkU8(1)); + IRExpr* shr1 = binop(Iop_Shr64, shl1, mkU8(1)); + IRExpr* i2 = unop(Iop_ReinterpF64asI64, getFReg64(fk)); + IRExpr* shr2 = binop(Iop_Shr64, i2, mkU8(63)); + IRExpr* shl2 = binop(Iop_Shl64, shr2, mkU8(63)); + IRExpr* or = binop(Iop_Or64, shr1, shl2); + putFReg64(fd, unop(Iop_ReinterpI64asF64, or)); + + return True; +} + +static Bool gen_fclass_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fclass.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr** arg = mkIRExprVec_1(unop(Iop_ReinterpF64asI64, getFReg64(fj))); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_fclass_s", + &loongarch64_calculate_fclass_s, + arg); + putFReg32(fd, unop(Iop_ReinterpI32asF32, unop(Iop_64to32, call))); + + return True; +} + +static Bool gen_fclass_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fclass.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr** arg = mkIRExprVec_1(unop(Iop_ReinterpF64asI64, getFReg64(fj))); + IRExpr* call = mkIRExprCCall(Ity_I64, 0/*regparms*/, + "loongarch64_calculate_fclass_d", + &loongarch64_calculate_fclass_d, + arg); + putFReg64(fd, unop(Iop_ReinterpI64asF64, call)); + + return True; +} + + +/*------------------------------------------------------------*/ +/*--- Helpers for floating point comparison insns ---*/ +/*------------------------------------------------------------*/ + +static inline IRExpr* is_UN ( IRExpr* e ) +{ + return binop(Iop_CmpEQ32, e, mkU32(0x45)); +} + +static inline IRExpr* is_LT ( IRExpr* e ) +{ + return binop(Iop_CmpEQ32, e, mkU32(0x1)); +} + +static inline IRExpr* is_GT ( IRExpr* e ) +{ + return binop(Iop_CmpEQ32, e, mkU32(0x0)); +} + +static inline IRExpr* is_EQ ( IRExpr* e ) +{ + return binop(Iop_CmpEQ32, e, mkU32(0x40)); +} + +static Bool gen_fcmp_cond_helper ( enum fpop op, UInt cc, + UInt fj, UInt fk, Bool size64 ) +{ + /* We have to convert 'irRes' from an IR-convention return result + (IRCmpF32Result / IRCmpF64Result) to a LOONGARCH-encoded group. + + FP cmp result | IR + -------------------- + UN | 0x45 + LT | 0x01 + GT | 0x00 + EQ | 0x40 + */ + IRTemp result = newTemp(Ity_I32); + if (size64) + assign(result, binop(Iop_CmpF64, getFReg64(fj), getFReg64(fk))); + else + assign(result, binop(Iop_CmpF32, getFReg32(fj), getFReg32(fk))); + + IRExpr* e; + switch (op) { + case FCMP_CAF_S: case FCMP_CAF_D: case FCMP_SAF_S: case FCMP_SAF_D: + e = mkU1(0); + break; + case FCMP_CLT_S: case FCMP_CLT_D: case FCMP_SLT_S: case FCMP_SLT_D: + e = is_LT(mkexpr(result)); + break; + case FCMP_CEQ_S: case FCMP_CEQ_D: case FCMP_SEQ_S: case FCMP_SEQ_D: + e = is_EQ(mkexpr(result)); + break; + case FCMP_CLE_S: case FCMP_CLE_D: case FCMP_SLE_S: case FCMP_SLE_D: + e = binop(Iop_Or1, is_LT(mkexpr(result)), is_EQ(mkexpr(result))); + break; + case FCMP_CUN_S: case FCMP_CUN_D: case FCMP_SUN_S: case FCMP_SUN_D: + e = is_UN(mkexpr(result)); + break; + case FCMP_CULT_S: case FCMP_CULT_D: case FCMP_SULT_S: case FCMP_SULT_D: + e = binop(Iop_Or1, is_UN(mkexpr(result)), is_LT(mkexpr(result))); + break; + case FCMP_CUEQ_S: case FCMP_CUEQ_D: case FCMP_SUEQ_S: case FCMP_SUEQ_D: + e = binop(Iop_Or1, is_UN(mkexpr(result)), is_EQ(mkexpr(result))); + break; + case FCMP_CULE_S: case FCMP_CULE_D: case FCMP_SULE_S: case FCMP_SULE_D: + e = binop(Iop_Or1, is_UN(mkexpr(result)), + binop(Iop_Or1, is_LT(mkexpr(result)), + is_EQ(mkexpr(result)))); + break; + case FCMP_CNE_S: case FCMP_CNE_D: case FCMP_SNE_S: case FCMP_SNE_D: + e = binop(Iop_Or1, is_GT(mkexpr(result)), is_LT(mkexpr(result))); + break; + case FCMP_COR_S: case FCMP_COR_D: case FCMP_SOR_S: case FCMP_SOR_D: + e = binop(Iop_Or1, is_GT(mkexpr(result)), + binop(Iop_Or1, is_LT(mkexpr(result)), + is_EQ(mkexpr(result)))); + break; + case FCMP_CUNE_S: case FCMP_CUNE_D: case FCMP_SUNE_S: case FCMP_SUNE_D: + e = binop(Iop_Or1, is_UN(mkexpr(result)), + binop(Iop_Or1, is_GT(mkexpr(result)), + is_LT(mkexpr(result)))); + break; + default: + return False; + } + + calculateFCSR(op, 2, fj, fk, 0); + putFCC(cc, unop(Iop_1Uto8, e)); + + return True; +} + +static Bool gen_fcmp_caf_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.caf.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CAF_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_caf_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.caf.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CAF_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_saf_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.saf.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SAF_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_saf_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.saf.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SAF_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_clt_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.clt.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CLT_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_clt_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.clt.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CLT_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_slt_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.slt.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SLT_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_slt_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.slt.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SLT_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_ceq_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.ceq.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CEQ_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_ceq_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.ceq.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CEQ_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_seq_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.seq.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SEQ_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_seq_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.seq.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SEQ_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_cle_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.cle.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CLE_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_cle_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.cle.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CLE_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_sle_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.sle.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SLE_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_sle_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.sle.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SLE_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_cun_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.cun.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CUN_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_cun_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.cun.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CUN_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_sun_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.sun.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SUN_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_sun_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.sun.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SUN_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_cult_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.cult.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CULT_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_cult_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.cult.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CULT_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_sult_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.sult.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SULT_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_sult_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.sult.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SULT_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_cueq_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.cueq.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CUEQ_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_cueq_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.cueq.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CUEQ_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_sueq_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.sueq.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SUEQ_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_sueq_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.sueq.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SUEQ_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_cule_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.cule.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CULE_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_cule_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.cule.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CULE_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_sule_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.sule.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SULE_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_sule_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.sule.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SULE_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_cne_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.cne.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CNE_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_cne_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.cne.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CNE_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_sne_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.sne.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SNE_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_sne_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.sne.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SNE_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_cor_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.cor.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_COR_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_cor_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.cor.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_COR_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_sor_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.sor.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SOR_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_sor_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.sor.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SOR_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_cune_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.cune.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CUNE_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_cune_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.cune.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_CUNE_D, cd, fj, fk, True); +} + +static Bool gen_fcmp_sune_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.sune.s %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SUNE_S, cd, fj, fk, False); +} + +static Bool gen_fcmp_sune_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("fcmp.sune.d %s, %s, %s\n", nameFCC(cd), nameFReg(fj), nameFReg(fk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_fcmp_cond_helper(FCMP_SUNE_D, cd, fj, fk, True); +} + + +/*------------------------------------------------------------*/ +/*--- Helpers for floating point conversion insns ---*/ +/*------------------------------------------------------------*/ + +static IRExpr* is_Invalid_Overflow ( void ) +{ + /* Bits 16 to 20 in FCSR are flags. + Bit 18 - overflow + Bit 20 - invalid + */ + IRExpr* fcsr = getFCSR(0); + IRExpr* shr = binop(Iop_Shr32, fcsr, mkU8(16)); + IRExpr* and = binop(Iop_And32, shr, mkU32(0x14)); + return binop(Iop_CmpNE32, and, getIReg32(0)); +} + +static Bool gen_convert_s_helper ( enum fpop op, UInt fd, UInt fj ) +{ + IRExpr* e; + IRExpr* rm; + switch (op) { + case FTINTRM_W_S: + rm = gen_round_down(); + e = binop(Iop_F32toI32S, rm, getFReg32(fj)); + break; + case FTINTRM_W_D: + rm = gen_round_down(); + e = binop(Iop_F64toI32S, rm, getFReg64(fj)); + break; + case FTINTRP_W_S: + rm = gen_round_up(); + e = binop(Iop_F32toI32S, rm, getFReg32(fj)); + break; + case FTINTRP_W_D: + rm = gen_round_up(); + e = binop(Iop_F64toI32S, rm, getFReg64(fj)); + break; + case FTINTRZ_W_S: + rm = gen_round_to_zero(); + e = binop(Iop_F32toI32S, rm, getFReg32(fj)); + break; + case FTINTRZ_W_D: + rm = gen_round_to_zero(); + e = binop(Iop_F64toI32S, rm, getFReg64(fj)); + break; + case FTINTRNE_W_S: + rm = gen_round_to_nearest(); + e = binop(Iop_F32toI32S, rm, getFReg32(fj)); + break; + case FTINTRNE_W_D: + rm = gen_round_to_nearest(); + e = binop(Iop_F64toI32S, rm, getFReg64(fj)); + break; + case FTINT_W_S: + rm = get_rounding_mode(); + e = binop(Iop_F32toI32S, rm, getFReg32(fj)); + break; + case FTINT_W_D: + rm = get_rounding_mode(); + e = binop(Iop_F64toI32S, rm, getFReg64(fj)); + break; + default: + return False; + } + + calculateFCSR(op, 1, fj, 0, 0); + IRExpr* ite = IRExpr_ITE(is_Invalid_Overflow(), mkU32(0x7fffffff), e); + putFReg32(fd, unop(Iop_ReinterpI32asF32, ite)); + + return True; +} + +static Bool gen_convert_d_helper ( enum fpop op, UInt fd, UInt fj ) +{ + IRExpr* e; + IRExpr* rm; + switch (op) { + case FTINTRM_L_S: + rm = gen_round_down(); + e = binop(Iop_F32toI64S, rm, getFReg32(fj)); + break; + case FTINTRM_L_D: + rm = gen_round_down(); + e = binop(Iop_F64toI64S, rm, getFReg64(fj)); + break; + case FTINTRP_L_S: + rm = gen_round_up(); + e = binop(Iop_F32toI64S, rm, getFReg32(fj)); + break; + case FTINTRP_L_D: + rm = gen_round_up(); + e = binop(Iop_F64toI64S, rm, getFReg64(fj)); + break; + case FTINTRZ_L_S: + rm = gen_round_to_zero(); + e = binop(Iop_F32toI64S, rm, getFReg32(fj)); + break; + case FTINTRZ_L_D: + rm = gen_round_to_zero(); + e = binop(Iop_F64toI64S, rm, getFReg64(fj)); + break; + case FTINTRNE_L_S: + rm = gen_round_to_nearest(); + e = binop(Iop_F32toI64S, rm, getFReg32(fj)); + break; + case FTINTRNE_L_D: + rm = gen_round_to_nearest(); + e = binop(Iop_F64toI64S, rm, getFReg64(fj)); + break; + case FTINT_L_S: + rm = get_rounding_mode(); + e = binop(Iop_F32toI64S, rm, getFReg32(fj)); + break; + case FTINT_L_D: + rm = get_rounding_mode(); + e = binop(Iop_F64toI64S, rm, getFReg64(fj)); + break; + default: + return False; + } + + calculateFCSR(op, 1, fj, 0, 0); + IRExpr* ite = IRExpr_ITE(is_Invalid_Overflow(), + mkU64(0x7fffffffffffffffULL), e); + putFReg64(fd, unop(Iop_ReinterpI64asF64, ite)); + + return True; +} + +static Bool gen_fcvt_s_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fcvt.s.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FCVT_S_D, 1, fj, 0, 0); + IRExpr* rm = get_rounding_mode(); + putFReg32(fd, binop(Iop_F64toF32, rm, getFReg64(fj))); + + return True; +} + +static Bool gen_fcvt_d_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fcvt.d.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FCVT_D_S, 1, fj, 0, 0); + putFReg64(fd, unop(Iop_F32toF64, getFReg32(fj))); + + return True; +} + +static Bool gen_ftintrm_w_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftintrm.w.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_s_helper(FTINTRM_W_S, fd, fj); +} + +static Bool gen_ftintrm_w_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftintrm.w.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_s_helper(FTINTRM_W_D, fd, fj); +} + +static Bool gen_ftintrm_l_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftintrm.l.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_d_helper(FTINTRM_L_S, fd, fj); +} + +static Bool gen_ftintrm_l_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftintrm.l.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_d_helper(FTINTRM_L_D, fd, fj); +} + +static Bool gen_ftintrp_w_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftintrp.w.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_s_helper(FTINTRP_W_S, fd, fj); +} + +static Bool gen_ftintrp_w_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftintrp.w.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_s_helper(FTINTRP_W_D, fd, fj); +} + +static Bool gen_ftintrp_l_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftintrp.l.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_d_helper(FTINTRP_L_S, fd, fj); +} + +static Bool gen_ftintrp_l_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftintrp.l.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_d_helper(FTINTRP_L_D, fd, fj); +} + +static Bool gen_ftintrz_w_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftintrz.w.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_s_helper(FTINTRZ_W_S, fd, fj); +} + +static Bool gen_ftintrz_w_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftintrz.w.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_s_helper(FTINTRZ_W_D, fd, fj); +} + +static Bool gen_ftintrz_l_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftintrz.l.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_d_helper(FTINTRZ_L_S, fd, fj); +} + +static Bool gen_ftintrz_l_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftintrz.l.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_d_helper(FTINTRZ_L_D, fd, fj); +} + +static Bool gen_ftintrne_w_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftintrne.w.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_s_helper(FTINTRNE_W_S, fd, fj); +} + +static Bool gen_ftintrne_w_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftintrne.w.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_s_helper(FTINTRNE_W_D, fd, fj); +} + +static Bool gen_ftintrne_l_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftintrne.l.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_d_helper(FTINTRNE_L_S, fd, fj); +} + +static Bool gen_ftintrne_l_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftintrne.l.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_d_helper(FTINTRNE_L_D, fd, fj); +} + +static Bool gen_ftint_w_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftint.w.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_s_helper(FTINT_W_S, fd, fj); +} + +static Bool gen_ftint_w_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftint.w.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_s_helper(FTINT_W_D, fd, fj); +} + +static Bool gen_ftint_l_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftint.l.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_d_helper(FTINT_L_S, fd, fj); +} + +static Bool gen_ftint_l_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ftint.l.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + return gen_convert_d_helper(FTINT_L_D, fd, fj); +} + +static Bool gen_ffint_s_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ffint.s.w %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FFINT_S_W, 1, fj, 0, 0); + IRExpr* rm = get_rounding_mode(); + IRExpr* f = unop(Iop_ReinterpF32asI32, getFReg32(fj)); + putFReg32(fd, binop(Iop_I32StoF32, rm, f)); + + return True; +} + +static Bool gen_ffint_s_l ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ffint.s.l %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FFINT_S_L, 1, fj, 0, 0); + IRExpr* rm = get_rounding_mode(); + IRExpr* f = unop(Iop_ReinterpF64asI64, getFReg64(fj)); + putFReg32(fd, binop(Iop_I64StoF32, rm, f)); + + return True; +} + +static Bool gen_ffint_d_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ffint.d.w %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FFINT_D_W, 1, fj, 0, 0); + IRExpr* f = unop(Iop_ReinterpF32asI32, getFReg32(fj)); + putFReg64(fd, unop(Iop_I32StoF64, f)); + + return True; +} + +static Bool gen_ffint_d_l ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("ffint.d.l %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FFINT_D_L, 1, fj, 0, 0); + IRExpr* rm = get_rounding_mode(); + IRExpr* f = unop(Iop_ReinterpF64asI64, getFReg64(fj)); + putFReg64(fd, binop(Iop_I64StoF64, rm, f)); + + return True; +} + +static Bool gen_frint_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("frint.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FRINT_S, 1, fj, 0, 0); + IRExpr* rm = get_rounding_mode(); + putFReg32(fd, binop(Iop_RoundF32toInt, rm, getFReg32(fj))); + + return True; +} + +static Bool gen_frint_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("frint.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + calculateFCSR(FRINT_D, 1, fj, 0, 0); + IRExpr* rm = get_rounding_mode(); + putFReg64(fd, binop(Iop_RoundF64toInt, rm, getFReg64(fj))); + + return True; +} + + +/*------------------------------------------------------------*/ +/*--- Helpers for floating point move insns ---*/ +/*------------------------------------------------------------*/ + +static Bool gen_fmov_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fmov.s %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + putFReg32(fd, getFReg32(fj)); + + return True; +} + +static Bool gen_fmov_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fmov.d %s, %s\n", nameFReg(fd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + putFReg64(fd, getFReg64(fj)); + + return True; +} + +static Bool gen_fsel ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt ca = get_ca(insn); + UInt fk = get_fk(insn); + UInt fj = get_fj(insn); + UInt fd = get_fd(insn); + + DIP("fsel %s, %s, %s, %s\n", nameFReg(fd), nameFReg(fj), + nameFReg(fk), nameFCC(ca)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* cc = unop(Iop_8Uto64, getFCC(ca)); + IRExpr* cond = binop(Iop_CmpEQ64, cc, mkU64(0)); + putFReg64(fd, IRExpr_ITE(cond, getFReg64(fj), getFReg64(fk))); + + return True; +} + +static Bool gen_movgr2fr_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("movgr2fr.w %s, %s\n", nameFReg(fd), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + /* The high bits might be undefined, now the hardware implementation + of this instruction is that it is equivalent to movgr2fr.d. */ + putFReg64(fd, unop(Iop_ReinterpI64asF64, getIReg64(rj))); + + return True; +} + +static Bool gen_movgr2fr_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("movgr2fr.d %s, %s\n", nameFReg(fd), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + putFReg64(fd, unop(Iop_ReinterpI64asF64, getIReg64(rj))); + + return True; +} + +static Bool gen_movgr2frh_w ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("movgr2frh.w %s, %s\n", nameFReg(fd), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* shl1 = binop(Iop_Shl64, getIReg64(rj), mkU8(32)); + IRExpr* i = unop(Iop_ReinterpF64asI64, getFReg64(fd)); + IRExpr* shl2 = binop(Iop_Shl64, i, mkU8(32)); + IRExpr* shr = binop(Iop_Shr64, shl2, mkU8(32)); + IRExpr* or = binop(Iop_Or64, shl1, shr); + putFReg64(fd, unop(Iop_ReinterpI64asF64, or)); + + return True; +} + +static Bool gen_movfr2gr_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt rd = get_rd(insn); + + DIP("movfr2gr.s %s, %s\n", nameIReg(rd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* i = unop(Iop_ReinterpF32asI32, getFReg32(fj)); + putIReg(rd, extendS(Ity_I32, i)); + + return True; +} + +static Bool gen_movfr2gr_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt rd = get_rd(insn); + + DIP("movfr2gr.d %s, %s\n", nameIReg(rd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + putIReg(rd, unop(Iop_ReinterpF64asI64, getFReg64(fj))); + + return True; +} + +static Bool gen_movfrh2gr_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt rd = get_rd(insn); + + DIP("movfrh2gr.s %s, %s\n", nameIReg(rd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* i = unop(Iop_ReinterpF64asI64, getFReg64(fj)); + IRExpr* shr = binop(Iop_Shr64, i, mkU8(32)); + putIReg(rd, extendS(Ity_I32, unop(Iop_64to32, shr))); + + return True; +} + +static Bool gen_movgr2fcsr ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt fcsr = get_fcsrl(insn); + + DIP("movgr2fcsr %s, %s\n", nameFCSR(fcsr), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + putFCSR(fcsr, getIReg32(rj)); + + return True; +} + +static Bool gen_movfcsr2gr ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fcsr = get_fcsrh(insn); + UInt rd = get_rd(insn); + + DIP("movfcsr2gr %s, %s\n", nameIReg(rd), nameFCSR(fcsr)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + putIReg(rd, extendS(Ity_I32, getFCSR(fcsr))); + + return True; +} + +static Bool gen_movfr2cf ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt fj = get_fj(insn); + UInt cd = get_cd(insn); + + DIP("movfr2cf %s, %s\n", nameFCC(cd), nameFReg(fj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* i = unop(Iop_ReinterpF64asI64, getFReg64(fj)); + IRExpr* and = binop(Iop_And64, i, mkU64(0x1)); + putFCC(cd, unop(Iop_64to8, and)); + + return True; +} + +static Bool gen_movcf2fr ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt cj = get_cj(insn); + UInt fd = get_fd(insn); + + DIP("movcf2fr %s, %s\n", nameFReg(fd), nameFCC(cj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + /* The hardware implementation of this instruction + does clear the high bits. */ + IRExpr* cc = unop(Iop_8Uto64, getFCC(cj)); + putFReg64(fd, unop(Iop_ReinterpI64asF64, cc)); + + return True; +} + +static Bool gen_movgr2cf ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rj = get_rj(insn); + UInt cd = get_cd(insn); + + DIP("movgr2cf %s, %s\n", nameFCC(cd), nameIReg(rj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* and = binop(Iop_And64, getIReg64(rj), mkU64(0x1)); + putFCC(cd, unop(Iop_64to8, and)); + + return True; +} + +static Bool gen_movcf2gr ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt cj = get_cj(insn); + UInt rd = get_rd(insn); + + DIP("movcf2gr %s, %s\n", nameIReg(rd), nameFCC(cj)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + /* The hardware implementation of this instruction + does clear the high bits. */ + putIReg(rd, unop(Iop_8Uto64, getFCC(cj))); + + return True; +} + + +/*------------------------------------------------------------*/ +/*--- Helpers for floating point load/store insns ---*/ +/*------------------------------------------------------------*/ + +static Bool gen_fld_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("fld.s %s, %s, %d\n", nameFReg(fd), nameIReg(rj), + (Int)extend32(si12, 12)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), mkU64(extend64(si12, 12))); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x3))); + putFReg32(fd, load(Ity_F32, addr)); + + return True; +} + +static Bool gen_fst_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("fst.s %s, %s, %d\n", nameFReg(fd), nameIReg(rj), + (Int)extend32(si12, 12)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), mkU64(extend64(si12, 12))); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x3))); + store(addr, getFReg32(fd)); + + return True; +} + +static Bool gen_fld_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("fld.d %s, %s, %d\n", nameFReg(fd), nameIReg(rj), + (Int)extend32(si12, 12)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), mkU64(extend64(si12, 12))); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x7))); + putFReg64(fd, load(Ity_F64, addr)); + + return True; +} + +static Bool gen_fst_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt si12 = get_si12(insn); + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("fst.d %s, %s, %d\n", nameFReg(fd), nameIReg(rj), + (Int)extend32(si12, 12)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), mkU64(extend64(si12, 12))); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x7))); + store(addr, getFReg64(fd)); + + return True; +} + +static Bool gen_fldx_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("fldx.s %s, %s, %s\n", nameFReg(fd), nameIReg(rj), nameIReg(rk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x3))); + putFReg32(fd, load(Ity_F32, addr)); + + return True; +} + +static Bool gen_fldx_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("fldx.d %s, %s, %s\n", nameFReg(fd), nameIReg(rj), nameIReg(rk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x7))); + putFReg64(fd, load(Ity_F64, addr)); + + return True; +} + +static Bool gen_fstx_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("fstx.s %s, %s, %s\n", nameFReg(fd), nameIReg(rj), nameIReg(rk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x3))); + store(addr, getFReg32(fd)); + + return True; +} + +static Bool gen_fstx_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("fstx.d %s, %s, %s\n", nameFReg(fd), nameIReg(rj), nameIReg(rk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_UAL)) + gen_SIGBUS(check_align(addr, mkU64(0x7))); + store(addr, getFReg64(fd)); + + return True; +} + +static Bool gen_fldgt_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("fldgt.s %s, %s, %s\n", nameFReg(fd), nameIReg(rj), nameIReg(rk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x3))); + gen_SIGSYS(binop(Iop_CmpLE64U, mkexpr(addr), getIReg64(rk))); + putFReg32(fd, load(Ity_F32, mkexpr(addr))); + + return True; +} + +static Bool gen_fldgt_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("fldgt.d %s, %s, %s\n", nameFReg(fd), nameIReg(rj), nameIReg(rk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x7))); + gen_SIGSYS(binop(Iop_CmpLE64U, mkexpr(addr), getIReg64(rk))); + putFReg64(fd, load(Ity_F64, mkexpr(addr))); + + return True; +} + +static Bool gen_fldle_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("fldle.s %s, %s, %s\n", nameFReg(fd), nameIReg(rj), nameIReg(rk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x3))); + gen_SIGSYS(binop(Iop_CmpLT64U, getIReg64(rk), mkexpr(addr))); + putFReg32(fd, load(Ity_F32, mkexpr(addr))); + + return True; +} + +static Bool gen_fldle_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("fldle.d %s, %s, %s\n", nameFReg(fd), nameIReg(rj), nameIReg(rk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x7))); + gen_SIGSYS(binop(Iop_CmpLT64U, getIReg64(rk), mkexpr(addr))); + putFReg64(fd, load(Ity_F64, mkexpr(addr))); + + return True; +} + +static Bool gen_fstgt_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("fstgt.s %s, %s, %s\n", nameFReg(fd), nameIReg(rj), nameIReg(rk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x3))); + gen_SIGSYS(binop(Iop_CmpLE64U, mkexpr(addr), getIReg64(rk))); + store(mkexpr(addr), getFReg32(fd)); + + return True; +} + +static Bool gen_fstgt_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("fstgt.d %s, %s, %s\n", nameFReg(fd), nameIReg(rj), nameIReg(rk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x7))); + gen_SIGSYS(binop(Iop_CmpLE64U, mkexpr(addr), getIReg64(rk))); + store(mkexpr(addr), getFReg64(fd)); + + return True; +} + +static Bool gen_fstle_s ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("fstle.s %s, %s, %s\n", nameFReg(fd), nameIReg(rj), nameIReg(rk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x3))); + gen_SIGSYS(binop(Iop_CmpLT64U, getIReg64(rk), mkexpr(addr))); + store(mkexpr(addr), getFReg32(fd)); + + return True; +} + +static Bool gen_fstle_d ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt rk = get_rk(insn); + UInt rj = get_rj(insn); + UInt fd = get_fd(insn); + + DIP("fstle.d %s, %s, %s\n", nameFReg(fd), nameIReg(rj), nameIReg(rk)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRTemp addr = newTemp(Ity_I64); + assign(addr, getIReg64(rj)); + gen_SIGBUS(check_align(mkexpr(addr), mkU64(0x7))); + gen_SIGSYS(binop(Iop_CmpLT64U, getIReg64(rk), mkexpr(addr))); + store(mkexpr(addr), getFReg64(fd)); + + return True; +} + + +/*------------------------------------------------------------*/ +/*--- Helpers for branch insns ---*/ +/*------------------------------------------------------------*/ + +static Bool gen_beqz ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt offs21 = get_offs21(insn); + UInt rj = get_rj(insn); + + DIP("beqz %s, %d\n", nameIReg(rj), (Int)extend32(offs21, 21)); + + IRExpr* cond = binop(Iop_CmpEQ64, getIReg64(rj), mkU64(0)); + exit(cond, Ijk_Boring, extend64(offs21 << 2, 23)); + + return True; +} + +static Bool gen_bnez ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt offs21 = get_offs21(insn); + UInt rj = get_rj(insn); + + DIP("bnez %s, %d\n", nameIReg(rj), (Int)extend32(offs21, 21)); + + IRExpr* cond = binop(Iop_CmpNE64, getIReg64(rj), mkU64(0)); + exit(cond, Ijk_Boring, extend64(offs21 << 2, 23)); + + return True; +} + +static Bool gen_bceqz ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt offs21 = get_offs21(insn); + UInt cj = get_cj(insn); + + DIP("bceqz %s, %d\n", nameFCC(cj), (Int)extend32(offs21, 21)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* cc = unop(Iop_8Uto64, getFCC(cj)); + IRExpr* cond = binop(Iop_CmpEQ64, cc, mkU64(0)); + exit(cond, Ijk_Boring, extend64(offs21 << 2, 23)); + + return True; +} + +static Bool gen_bcnez ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt offs21 = get_offs21(insn); + UInt cj = get_cj(insn); + + DIP("bcnez %s, %d\n", nameFCC(cj), (Int)extend32(offs21, 21)); + + if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_FP)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; + } + + IRExpr* cc = unop(Iop_8Uto64, getFCC(cj)); + IRExpr* cond = binop(Iop_CmpNE64, cc, mkU64(0)); + exit(cond, Ijk_Boring, extend64(offs21 << 2, 23)); + + return True; +} + +static Bool gen_jirl ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt offs16 = get_offs16(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("jirl %s, %s, %d\n", nameIReg(rd), nameIReg(rj), + (Int)extend32(offs16, 16)); + + IRTemp tmp = newTemp(Ity_I64); + assign(tmp, getIReg64(rj)); /* This is necessary when rd == rj */ + putIReg(rd, mkU64(guest_PC_curr_instr + 4)); + IRExpr* imm = mkU64(extend64(offs16 << 2, 18)); + putPC(binop(Iop_Add64, mkexpr(tmp), imm)); + + dres->whatNext = Dis_StopHere; + dres->jk_StopHere = Ijk_Boring; + + return True; +} + +static Bool gen_b ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt offs26 = get_offs26(insn); + + DIP("b %d\n", (Int)extend32(offs26, 26)); + + putPC(mkU64(guest_PC_curr_instr + extend64(offs26 << 2, 28))); + + dres->whatNext = Dis_StopHere; + dres->jk_StopHere = Ijk_Boring; + + return True; +} + +static Bool gen_bl ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt offs26 = get_offs26(insn); + + DIP("bl %d\n", (Int)extend32(offs26, 26)); + + putIReg(1, mkU64(guest_PC_curr_instr + 4)); + putPC(mkU64(guest_PC_curr_instr + extend64(offs26 << 2, 28))); + + dres->whatNext = Dis_StopHere; + dres->jk_StopHere = Ijk_Boring; + + return True; +} + +static Bool gen_beq ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt offs16 = get_offs16(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("beq %s, %s, %d\n", nameIReg(rj), nameIReg(rd), + (Int)extend32(offs16, 16)); + + IRExpr* cond = binop(Iop_CmpEQ64, getIReg64(rj), getIReg64(rd)); + exit(cond, Ijk_Boring, extend64(offs16 << 2, 18)); + + return True; +} + +static Bool gen_bne ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt offs16 = get_offs16(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("bne %s, %s, %d\n", nameIReg(rj), nameIReg(rd), + (Int)extend32(offs16, 16)); + + IRExpr* cond = binop(Iop_CmpNE64, getIReg64(rj), getIReg64(rd)); + exit(cond, Ijk_Boring, extend64(offs16 << 2, 18)); + + return True; +} + +static Bool gen_blt ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt offs16 = get_offs16(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("blt %s, %s, %d\n", nameIReg(rj), nameIReg(rd), + (Int)extend32(offs16, 16)); + + IRExpr* cond = binop(Iop_CmpLT64S, getIReg64(rj), getIReg64(rd)); + exit(cond, Ijk_Boring, extend64(offs16 << 2, 18)); + + return True; +} + +static Bool gen_bge ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt offs16 = get_offs16(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("bge %s, %s, %d\n", nameIReg(rj), nameIReg(rd), + (Int)extend32(offs16, 16)); + + IRExpr* cond = binop(Iop_CmpLE64S, getIReg64(rd), getIReg64(rj)); + exit(cond, Ijk_Boring, extend64(offs16 << 2, 18)); + + return True; +} + +static Bool gen_bltu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt offs16 = get_offs16(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("bltu %s, %s, %d\n", nameIReg(rj), nameIReg(rd), + (Int)extend32(offs16, 16)); + + IRExpr* cond = binop(Iop_CmpLT64U, getIReg64(rj), getIReg64(rd)); + exit(cond, Ijk_Boring, extend64(offs16 << 2, 18)); + + return True; +} + +static Bool gen_bgeu ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + UInt offs16 = get_offs16(insn); + UInt rj = get_rj(insn); + UInt rd = get_rd(insn); + + DIP("bgeu %s, %s, %d\n", nameIReg(rj), nameIReg(rd), + (Int)extend32(offs16, 16)); + + IRExpr* cond = binop(Iop_CmpLE64U, getIReg64(rd), getIReg64(rj)); + exit(cond, Ijk_Boring, extend64(offs16 << 2, 18)); + + return True; +} + + +/*------------------------------------------------------------*/ +/*--- Disassemble a single LOONGARCH64 instruction ---*/ +/*------------------------------------------------------------*/ + +/* Disassemble a single LOONGARCH64 instruction into IR. The instruction + has is located at |guest_instr| and has guest IP of |guest_PC_curr_instr|, + which will have been set before the call here. Returns True iff the + instruction was decoded, in which case *dres will be set accordingly, + or False, in which case *dres should be ignored by the caller. */ + +static Bool disInstr_LOONGARCH64_WRK_special ( DisResult* dres, + const UChar* guest_instr ) +{ + const UChar* code = guest_instr; + /* Spot the 16-byte preamble: + 00450c00 srli.d $zero, $zero, 3 + 00453400 srli.d $zero, $zero, 13 + 00457400 srli.d $zero, $zero, 29 + 00454c00 srli.d $zero, $zero, 19 + */ + if (getUInt(code + 0) == 0x00450c00 && + getUInt(code + 4) == 0x00453400 && + getUInt(code + 8) == 0x00457400 && + getUInt(code + 12) == 0x00454c00) { + /* Got a "Special" instruction preamble. Which one is it? */ + if (getUInt(code + 16) == 0x001535ad) { /* or $t1, $t1, $t1 */ + DIP("$a7 = client_request ( $t0 )\n"); + putPC(mkU64(guest_PC_curr_instr + 20)); + dres->whatNext = Dis_StopHere; + dres->len = 20; + dres->jk_StopHere = Ijk_ClientReq; + return True; + } else if (getUInt(code + 16) == 0x001539ce) { /* or $t2, $t2, $t2 */ + DIP("$a7 = guest_NRADDR\n"); + putIReg(11, IRExpr_Get(offsetof(VexGuestLOONGARCH64State, guest_NRADDR), + Ity_I64)); + dres->len = 20; + return True; + } else if (getUInt(code + 16) == 0x00153def) { /* or $t3, $t3, $t3 */ + DIP("branch-and-link-to-noredir $t8\n"); + putIReg(1, mkU64(guest_PC_curr_instr + 20)); + putPC(getIReg64(20)); + dres->whatNext = Dis_StopHere; + dres->len = 20; + dres->jk_StopHere = Ijk_NoRedir; + return True; + } else if (getUInt(code + 16) == 0x00154210) { /* or $t4, $t4, $t4 */ + DIP("IR injection\n"); + vex_inject_ir(irsb, Iend_LE); + /* Invalidate the current insn. The reason is that the IRop we're + injecting here can change. In which case the translation has to + be redone. For ease of handling, we simply invalidate all the + time. + */ + stmt(IRStmt_Put(offsetof(VexGuestLOONGARCH64State, guest_CMSTART), + mkU64(guest_PC_curr_instr))); + stmt(IRStmt_Put(offsetof(VexGuestLOONGARCH64State, guest_CMLEN), + mkU64(20))); + putPC(mkU64(guest_PC_curr_instr + 20)); + dres->whatNext = Dis_StopHere; + dres->len = 20; + dres->jk_StopHere = Ijk_InvalICache; + return True; + } + /* We don't know what it is. */ + vassert(0); + /*NOTREACHED*/ + } + return False; +} + +static Bool disInstr_LOONGARCH64_WRK_00_0000_0000 ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + Bool ok; + switch (SLICE(insn, 21, 15)) { + case 0b0000000: + switch (SLICE(insn, 14, 10)) { + case 0b00100: + ok = gen_clo_w(dres, insn, archinfo, abiinfo); + break; + case 0b00101: + ok = gen_clz_w(dres, insn, archinfo, abiinfo); + break; + case 0b00110: + ok = gen_cto_w(dres, insn, archinfo, abiinfo); + break; + case 0b00111: + ok = gen_ctz_w(dres, insn, archinfo, abiinfo); + break; + case 0b01000: + ok = gen_clo_d(dres, insn, archinfo, abiinfo); + break; + case 0b01001: + ok = gen_clz_d(dres, insn, archinfo, abiinfo); + break; + case 0b01010: + ok = gen_cto_d(dres, insn, archinfo, abiinfo); + break; + case 0b01011: + ok = gen_ctz_d(dres, insn, archinfo, abiinfo); + break; + case 0b01100: + ok = gen_revb_2h(dres, insn, archinfo, abiinfo); + break; + case 0b01101: + ok = gen_revb_4h(dres, insn, archinfo, abiinfo); + break; + case 0b01110: + ok = gen_revb_2w(dres, insn, archinfo, abiinfo); + break; + case 0b01111: + ok = gen_revb_d(dres, insn, archinfo, abiinfo); + break; + case 0b10000: + ok = gen_revh_2w(dres, insn, archinfo, abiinfo); + break; + case 0b10001: + ok = gen_revh_d(dres, insn, archinfo, abiinfo); + break; + case 0b10010: + ok = gen_bitrev_4b(dres, insn, archinfo, abiinfo); + break; + case 0b10011: + ok = gen_bitrev_8b(dres, insn, archinfo, abiinfo); + break; + case 0b10100: + ok = gen_bitrev_w(dres, insn, archinfo, abiinfo); + break; + case 0b10101: + ok = gen_bitrev_d(dres, insn, archinfo, abiinfo); + break; + case 0b10110: + ok = gen_ext_w_h(dres, insn, archinfo, abiinfo); + break; + case 0b10111: + ok = gen_ext_w_b(dres, insn, archinfo, abiinfo); + break; + case 0b11000: + ok = gen_rdtimel_w(dres, insn, archinfo, abiinfo); + break; + case 0b11001: + ok = gen_rdtimeh_w(dres, insn, archinfo, abiinfo); + break; + case 0b11010: + ok = gen_rdtime_d(dres, insn, archinfo, abiinfo); + break; + case 0b11011: + ok = gen_cpucfg(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + break; + case 0b0000010: + ok = gen_asrtle_d(dres, insn, archinfo, abiinfo); + break; + case 0b0000011: + ok = gen_asrtgt_d(dres, insn, archinfo, abiinfo); + break; + case 0b0100000: + ok = gen_add_w(dres, insn, archinfo, abiinfo); + break; + case 0b0100001: + ok = gen_add_d(dres, insn, archinfo, abiinfo); + break; + case 0b0100010: + ok = gen_sub_w(dres, insn, archinfo, abiinfo); + break; + case 0b0100011: + ok = gen_sub_d(dres, insn, archinfo, abiinfo); + break; + case 0b0100100: + ok = gen_slt(dres, insn, archinfo, abiinfo); + break; + case 0b0100101: + ok = gen_sltu(dres, insn, archinfo, abiinfo); + break; + case 0b0100110: + ok = gen_maskeqz(dres, insn, archinfo, abiinfo); + break; + case 0b0100111: + ok = gen_masknez(dres, insn, archinfo, abiinfo); + break; + case 0b0101000: + ok = gen_nor(dres, insn, archinfo, abiinfo); + break; + case 0b0101001: + ok = gen_and(dres, insn, archinfo, abiinfo); + break; + case 0b0101010: + ok = gen_or(dres, insn, archinfo, abiinfo); + break; + case 0b0101011: + ok = gen_xor(dres, insn, archinfo, abiinfo); + break; + case 0b0101100: + ok = gen_orn(dres, insn, archinfo, abiinfo); + break; + case 0b0101101: + ok = gen_andn(dres, insn, archinfo, abiinfo); + break; + case 0b0101110: + ok = gen_sll_w(dres, insn, archinfo, abiinfo); + break; + case 0b0101111: + ok = gen_srl_w(dres, insn, archinfo, abiinfo); + break; + case 0b0110000: + ok = gen_sra_w(dres, insn, archinfo, abiinfo); + break; + case 0b0110001: + ok = gen_sll_d(dres, insn, archinfo, abiinfo); + break; + case 0b0110010: + ok = gen_srl_d(dres, insn, archinfo, abiinfo); + break; + case 0b0110011: + ok = gen_sra_d(dres, insn, archinfo, abiinfo); + break; + case 0b0110110: + ok = gen_rotr_w(dres, insn, archinfo, abiinfo); + break; + case 0b0110111: + ok = gen_rotr_d(dres, insn, archinfo, abiinfo); + break; + case 0b0111000: + ok = gen_mul_w(dres, insn, archinfo, abiinfo); + break; + case 0b0111001: + ok = gen_mulh_w(dres, insn, archinfo, abiinfo); + break; + case 0b0111010: + ok = gen_mulh_wu(dres, insn, archinfo, abiinfo); + break; + case 0b0111011: + ok = gen_mul_d(dres, insn, archinfo, abiinfo); + break; + case 0b0111100: + ok = gen_mulh_d(dres, insn, archinfo, abiinfo); + break; + case 0b0111101: + ok = gen_mulh_du(dres, insn, archinfo, abiinfo); + break; + case 0b0111110: + ok = gen_mulw_d_w(dres, insn, archinfo, abiinfo); + break; + case 0b0111111: + ok = gen_mulw_d_wu(dres, insn, archinfo, abiinfo); + break; + case 0b1000000: + ok = gen_div_w(dres, insn, archinfo, abiinfo); + break; + case 0b1000001: + ok = gen_mod_w(dres, insn, archinfo, abiinfo); + break; + case 0b1000010: + ok = gen_div_wu(dres, insn, archinfo, abiinfo); + break; + case 0b1000011: + ok = gen_mod_wu(dres, insn, archinfo, abiinfo); + break; + case 0b1000100: + ok = gen_div_d(dres, insn, archinfo, abiinfo); + break; + case 0b1000101: + ok = gen_mod_d(dres, insn, archinfo, abiinfo); + break; + case 0b1000110: + ok = gen_div_du(dres, insn, archinfo, abiinfo); + break; + case 0b1000111: + ok = gen_mod_du(dres, insn, archinfo, abiinfo); + break; + case 0b1001000: + ok = gen_crc_w_b_w(dres, insn, archinfo, abiinfo); + break; + case 0b1001001: + ok = gen_crc_w_h_w(dres, insn, archinfo, abiinfo); + break; + case 0b1001010: + ok = gen_crc_w_w_w(dres, insn, archinfo, abiinfo); + break; + case 0b1001011: + ok = gen_crc_w_d_w(dres, insn, archinfo, abiinfo); + break; + case 0b1001100: + ok = gen_crcc_w_b_w(dres, insn, archinfo, abiinfo); + break; + case 0b1001101: + ok = gen_crcc_w_h_w(dres, insn, archinfo, abiinfo); + break; + case 0b1001110: + ok = gen_crcc_w_w_w(dres, insn, archinfo, abiinfo); + break; + case 0b1001111: + ok = gen_crcc_w_d_w(dres, insn, archinfo, abiinfo); + break; + case 0b1010100: + ok = gen_break(dres, insn, archinfo, abiinfo); + break; + case 0b1010110: + ok = gen_syscall(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + + if (ok) { + return ok; + } + + switch (SLICE(insn, 21, 18)) { + case 0b0001: + if (SLICE(insn, 17, 17) == 0) { + ok = gen_alsl_w(dres, insn, archinfo, abiinfo); + } else { + ok = gen_alsl_wu(dres, insn, archinfo, abiinfo); + } + break; + case 0b0010: + if (SLICE(insn, 17, 17) == 0) { + ok = gen_bytepick_w(dres, insn, archinfo, abiinfo); + } else { + ok = False; + } + break; + case 0b0011: + ok = gen_bytepick_d(dres, insn, archinfo, abiinfo); + break; + case 0b1011: + if (SLICE(insn, 17, 17) == 0) { + ok = gen_alsl_d(dres, insn, archinfo, abiinfo); + } else { + ok = False; + } + break; + default: + ok = False; + break; + } + return ok; +} + +static Bool disInstr_LOONGARCH64_WRK_00_0000_0001 ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + Bool ok; + if (SLICE(insn, 21, 21) == 0) { + switch (SLICE(insn, 20, 16)) { + case 0b00000: + if (SLICE(insn, 15, 15) == 1) { + ok = gen_slli_w(dres, insn, archinfo, abiinfo); + } else { + ok = False; + } + break; + case 0b00001: + ok = gen_slli_d(dres, insn, archinfo, abiinfo); + break; + case 0b00100: + if (SLICE(insn, 15, 15) == 1) { + ok = gen_srli_w(dres, insn, archinfo, abiinfo); + } else { + ok = False; + } + break; + case 0b00101: + ok = gen_srli_d(dres, insn, archinfo, abiinfo); + break; + case 0b01000: + if (SLICE(insn, 15, 15) == 1) { + ok = gen_srai_w(dres, insn, archinfo, abiinfo); + } else { + ok = False; + } + break; + case 0b01001: + ok = gen_srai_d(dres, insn, archinfo, abiinfo); + break; + case 0b01100: + if (SLICE(insn, 15, 15) == 1) { + ok = gen_rotri_w(dres, insn, archinfo, abiinfo); + } else { + ok = False; + } + break; + case 0b01101: + ok = gen_rotri_d(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + } else { + if (SLICE(insn, 15, 15) == 0) { + ok = gen_bstrins_w(dres, insn, archinfo, abiinfo); + } else { + ok = gen_bstrpick_w(dres, insn, archinfo, abiinfo); + } + } + return ok; +} + +static Bool disInstr_LOONGARCH64_WRK_00_0000_0100 ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + Bool ok; + switch (SLICE(insn, 21, 15)) { + case 0b0000001: + ok = gen_fadd_s(dres, insn, archinfo, abiinfo); + break; + case 0b0000010: + ok = gen_fadd_d(dres, insn, archinfo, abiinfo); + break; + case 0b0000101: + ok = gen_fsub_s(dres, insn, archinfo, abiinfo); + break; + case 0b0000110: + ok = gen_fsub_d(dres, insn, archinfo, abiinfo); + break; + case 0b0001001: + ok = gen_fmul_s(dres, insn, archinfo, abiinfo); + break; + case 0b0001010: + ok = gen_fmul_d(dres, insn, archinfo, abiinfo); + break; + case 0b0001101: + ok = gen_fdiv_s(dres, insn, archinfo, abiinfo); + break; + case 0b0001110: + ok = gen_fdiv_d(dres, insn, archinfo, abiinfo); + break; + case 0b0010001: + ok = gen_fmax_s(dres, insn, archinfo, abiinfo); + break; + case 0b0010010: + ok = gen_fmax_d(dres, insn, archinfo, abiinfo); + break; + case 0b0010101: + ok = gen_fmin_s(dres, insn, archinfo, abiinfo); + break; + case 0b0010110: + ok = gen_fmin_d(dres, insn, archinfo, abiinfo); + break; + case 0b0011001: + ok = gen_fmaxa_s(dres, insn, archinfo, abiinfo); + break; + case 0b0011010: + ok = gen_fmaxa_d(dres, insn, archinfo, abiinfo); + break; + case 0b0011101: + ok = gen_fmina_s(dres, insn, archinfo, abiinfo); + break; + case 0b0011110: + ok = gen_fmina_d(dres, insn, archinfo, abiinfo); + break; + case 0b0100001: + ok = gen_fscaleb_s(dres, insn, archinfo, abiinfo); + break; + case 0b0100010: + ok = gen_fscaleb_d(dres, insn, archinfo, abiinfo); + break; + case 0b0100101: + ok = gen_fcopysign_s(dres, insn, archinfo, abiinfo); + break; + case 0b0100110: + ok = gen_fcopysign_d(dres, insn, archinfo, abiinfo); + break; + case 0b0101000: + switch (SLICE(insn, 14, 10)) { + case 0b00001: + ok = gen_fabs_s(dres, insn, archinfo, abiinfo); + break; + case 0b00010: + ok = gen_fabs_d(dres, insn, archinfo, abiinfo); + break; + case 0b00101: + ok = gen_fneg_s(dres, insn, archinfo, abiinfo); + break; + case 0b00110: + ok = gen_fneg_d(dres, insn, archinfo, abiinfo); + break; + case 0b01001: + ok = gen_flogb_s(dres, insn, archinfo, abiinfo); + break; + case 0b01010: + ok = gen_flogb_d(dres, insn, archinfo, abiinfo); + break; + case 0b01101: + ok = gen_fclass_s(dres, insn, archinfo, abiinfo); + break; + case 0b01110: + ok = gen_fclass_d(dres, insn, archinfo, abiinfo); + break; + case 0b10001: + ok = gen_fsqrt_s(dres, insn, archinfo, abiinfo); + break; + case 0b10010: + ok = gen_fsqrt_d(dres, insn, archinfo, abiinfo); + break; + case 0b10101: + ok = gen_frecip_s(dres, insn, archinfo, abiinfo); + break; + case 0b10110: + ok = gen_frecip_d(dres, insn, archinfo, abiinfo); + break; + case 0b11001: + ok = gen_frsqrt_s(dres, insn, archinfo, abiinfo); + break; + case 0b11010: + ok = gen_frsqrt_d(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + break; + case 0b0101001: + switch (SLICE(insn, 14, 10)) { + case 0b00101: + ok = gen_fmov_s(dres, insn, archinfo, abiinfo); + break; + case 0b00110: + ok = gen_fmov_d(dres, insn, archinfo, abiinfo); + break; + case 0b01001: + ok = gen_movgr2fr_w(dres, insn, archinfo, abiinfo); + break; + case 0b01010: + ok = gen_movgr2fr_d(dres, insn, archinfo, abiinfo); + break; + case 0b01011: + ok = gen_movgr2frh_w(dres, insn, archinfo, abiinfo); + break; + case 0b01101: + ok = gen_movfr2gr_s(dres, insn, archinfo, abiinfo); + break; + case 0b01110: + ok = gen_movfr2gr_d(dres, insn, archinfo, abiinfo); + break; + case 0b01111: + ok = gen_movfrh2gr_s(dres, insn, archinfo, abiinfo); + break; + case 0b10000: + ok = gen_movgr2fcsr(dres, insn, archinfo, abiinfo); + break; + case 0b10010: + ok = gen_movfcsr2gr(dres, insn, archinfo, abiinfo); + break; + case 0b10100: + if (SLICE(insn, 4, 3) == 0b00) { + ok = gen_movfr2cf(dres, insn, archinfo, abiinfo); + } else { + ok = False; + } + break; + case 0b10101: + if (SLICE(insn, 9, 8) == 0b00) { + ok = gen_movcf2fr(dres, insn, archinfo, abiinfo); + } else { + ok = False; + } + break; + case 0b10110: + if (SLICE(insn, 4, 3) == 0b00) { + ok = gen_movgr2cf(dres, insn, archinfo, abiinfo); + } else { + ok = False; + } + break; + case 0b10111: + if (SLICE(insn, 9, 8) == 0b00) { + ok = gen_movcf2gr(dres, insn, archinfo, abiinfo); + } else { + ok = False; + } + break; + default: + ok = False; + break; + } + break; + case 0b0110010: + switch (SLICE(insn, 14, 10)) { + case 0b00110: + ok = gen_fcvt_s_d(dres, insn, archinfo, abiinfo); + break; + case 0b01001: + ok = gen_fcvt_d_s(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + break; + case 0b0110100: + switch (SLICE(insn, 14, 10)) { + case 0b00001: + ok = gen_ftintrm_w_s(dres, insn, archinfo, abiinfo); + break; + case 0b00010: + ok = gen_ftintrm_w_d(dres, insn, archinfo, abiinfo); + break; + case 0b01001: + ok = gen_ftintrm_l_s(dres, insn, archinfo, abiinfo); + break; + case 0b01010: + ok = gen_ftintrm_l_d(dres, insn, archinfo, abiinfo); + break; + case 0b10001: + ok = gen_ftintrp_w_s(dres, insn, archinfo, abiinfo); + break; + case 0b10010: + ok = gen_ftintrp_w_d(dres, insn, archinfo, abiinfo); + break; + case 0b11001: + ok = gen_ftintrp_l_s(dres, insn, archinfo, abiinfo); + break; + case 0b11010: + ok = gen_ftintrp_l_d(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + break; + case 0b0110101: + switch (SLICE(insn, 14, 10)) { + case 0b00001: + ok = gen_ftintrz_w_s(dres, insn, archinfo, abiinfo); + break; + case 0b00010: + ok = gen_ftintrz_w_d(dres, insn, archinfo, abiinfo); + break; + case 0b01001: + ok = gen_ftintrz_l_s(dres, insn, archinfo, abiinfo); + break; + case 0b01010: + ok = gen_ftintrz_l_d(dres, insn, archinfo, abiinfo); + break; + case 0b10001: + ok = gen_ftintrne_w_s(dres, insn, archinfo, abiinfo); + break; + case 0b10010: + ok = gen_ftintrne_w_d(dres, insn, archinfo, abiinfo); + break; + case 0b11001: + ok = gen_ftintrne_l_s(dres, insn, archinfo, abiinfo); + break; + case 0b11010: + ok = gen_ftintrne_l_d(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + break; + case 0b0110110: + switch (SLICE(insn, 14, 10)) { + case 0b00001: + ok = gen_ftint_w_s(dres, insn, archinfo, abiinfo); + break; + case 0b00010: + ok = gen_ftint_w_d(dres, insn, archinfo, abiinfo); + break; + case 0b01001: + ok = gen_ftint_l_s(dres, insn, archinfo, abiinfo); + break; + case 0b01010: + ok = gen_ftint_l_d(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + break; + case 0b0111010: + switch (SLICE(insn, 14, 10)) { + case 0b00100: + ok = gen_ffint_s_w(dres, insn, archinfo, abiinfo); + break; + case 0b00110: + ok = gen_ffint_s_l(dres, insn, archinfo, abiinfo); + break; + case 0b01000: + ok = gen_ffint_d_w(dres, insn, archinfo, abiinfo); + break; + case 0b01010: + ok = gen_ffint_d_l(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + break; + case 0b0111100: + switch (SLICE(insn, 14, 10)) { + case 0b10001: + ok = gen_frint_s(dres, insn, archinfo, abiinfo); + break; + case 0b10010: + ok = gen_frint_d(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + break; + default: + ok = False; + break; + } + return ok; +} + +static Bool disInstr_LOONGARCH64_WRK_00_0000 ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + Bool ok; + switch (SLICE(insn, 25, 22)) { + case 0b0000: + ok = disInstr_LOONGARCH64_WRK_00_0000_0000(dres, insn, archinfo, abiinfo); + break; + case 0b0001: + ok = disInstr_LOONGARCH64_WRK_00_0000_0001(dres, insn, archinfo, abiinfo); + break; + case 0b0010: + ok = gen_bstrins_d(dres, insn, archinfo, abiinfo); + break; + case 0b0011: + ok = gen_bstrpick_d(dres, insn, archinfo, abiinfo); + break; + case 0b0100: + ok = disInstr_LOONGARCH64_WRK_00_0000_0100(dres, insn, archinfo, abiinfo); + break; + case 0b1000: + ok = gen_slti(dres, insn, archinfo, abiinfo); + break; + case 0b1001: + ok = gen_sltui(dres, insn, archinfo, abiinfo); + break; + case 0b1010: + ok = gen_addi_w(dres, insn, archinfo, abiinfo); + break; + case 0b1011: + ok = gen_addi_d(dres, insn, archinfo, abiinfo); + break; + case 0b1100: + ok = gen_lu52i_d(dres, insn, archinfo, abiinfo); + break; + case 0b1101: + ok = gen_andi(dres, insn, archinfo, abiinfo); + break; + case 0b1110: + ok = gen_ori(dres, insn, archinfo, abiinfo); + break; + case 0b1111: + ok = gen_xori(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + return ok; +} + +static Bool disInstr_LOONGARCH64_WRK_00_1010 ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + Bool ok; + switch (SLICE(insn, 25, 22)) { + case 0b0000: + ok = gen_ld_b(dres, insn, archinfo, abiinfo); + break; + case 0b0001: + ok = gen_ld_h(dres, insn, archinfo, abiinfo); + break; + case 0b0010: + ok = gen_ld_w(dres, insn, archinfo, abiinfo); + break; + case 0b0011: + ok = gen_ld_d(dres, insn, archinfo, abiinfo); + break; + case 0b0100: + ok = gen_st_b(dres, insn, archinfo, abiinfo); + break; + case 0b0101: + ok = gen_st_h(dres, insn, archinfo, abiinfo); + break; + case 0b0110: + ok = gen_st_w(dres, insn, archinfo, abiinfo); + break; + case 0b0111: + ok = gen_st_d(dres, insn, archinfo, abiinfo); + break; + case 0b1000: + ok = gen_ld_bu(dres, insn, archinfo, abiinfo); + break; + case 0b1001: + ok = gen_ld_hu(dres, insn, archinfo, abiinfo); + break; + case 0b1010: + ok = gen_ld_wu(dres, insn, archinfo, abiinfo); + break; + case 0b1011: + ok = gen_preld(dres, insn, archinfo, abiinfo); + break; + case 0b1100: + ok = gen_fld_s(dres, insn, archinfo, abiinfo); + break; + case 0b1101: + ok = gen_fst_s(dres, insn, archinfo, abiinfo); + break; + case 0b1110: + ok = gen_fld_d(dres, insn, archinfo, abiinfo); + break; + case 0b1111: + ok = gen_fst_d(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + return ok; +} + +static Bool disInstr_LOONGARCH64_WRK_00_1110_0000 ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + Bool ok; + switch (SLICE(insn, 21, 15)) { + case 0b0000000: + ok = gen_ldx_b(dres, insn, archinfo, abiinfo); + break; + case 0b0001000: + ok = gen_ldx_h(dres, insn, archinfo, abiinfo); + break; + case 0b0010000: + ok = gen_ldx_w(dres, insn, archinfo, abiinfo); + break; + case 0b0011000: + ok = gen_ldx_d(dres, insn, archinfo, abiinfo); + break; + case 0b0100000: + ok = gen_stx_b(dres, insn, archinfo, abiinfo); + break; + case 0b0101000: + ok = gen_stx_h(dres, insn, archinfo, abiinfo); + break; + case 0b0110000: + ok = gen_stx_w(dres, insn, archinfo, abiinfo); + break; + case 0b0111000: + ok = gen_stx_d(dres, insn, archinfo, abiinfo); + break; + case 0b1000000: + ok = gen_ldx_bu(dres, insn, archinfo, abiinfo); + break; + case 0b1001000: + ok = gen_ldx_hu(dres, insn, archinfo, abiinfo); + break; + case 0b1010000: + ok = gen_ldx_wu(dres, insn, archinfo, abiinfo); + break; + case 0b1011000: + ok = gen_preldx(dres, insn, archinfo, abiinfo); + break; + case 0b1100000: + ok = gen_fldx_s(dres, insn, archinfo, abiinfo); + break; + case 0b1101000: + ok = gen_fldx_d(dres, insn, archinfo, abiinfo); + break; + case 0b1110000: + ok = gen_fstx_s(dres, insn, archinfo, abiinfo); + break; + case 0b1111000: + ok = gen_fstx_d(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + return ok; +} + +static Bool disInstr_LOONGARCH64_WRK_00_1110_0001 ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + Bool ok; + switch (SLICE(insn, 21, 15)) { + case 0b1000000: + ok = gen_amswap_w(dres, insn, archinfo, abiinfo); + break; + case 0b1000001: + ok = gen_amswap_d(dres, insn, archinfo, abiinfo); + break; + case 0b1000010: + ok = gen_amadd_w(dres, insn, archinfo, abiinfo); + break; + case 0b1000011: + ok = gen_amadd_d(dres, insn, archinfo, abiinfo); + break; + case 0b1000100: + ok = gen_amand_w(dres, insn, archinfo, abiinfo); + break; + case 0b1000101: + ok = gen_amand_d(dres, insn, archinfo, abiinfo); + break; + case 0b1000110: + ok = gen_amor_w(dres, insn, archinfo, abiinfo); + break; + case 0b1000111: + ok = gen_amor_d(dres, insn, archinfo, abiinfo); + break; + case 0b1001000: + ok = gen_amxor_w(dres, insn, archinfo, abiinfo); + break; + case 0b1001001: + ok = gen_amxor_d(dres, insn, archinfo, abiinfo); + break; + case 0b1001010: + ok = gen_ammax_w(dres, insn, archinfo, abiinfo); + break; + case 0b1001011: + ok = gen_ammax_d(dres, insn, archinfo, abiinfo); + break; + case 0b1001100: + ok = gen_ammin_w(dres, insn, archinfo, abiinfo); + break; + case 0b1001101: + ok = gen_ammin_d(dres, insn, archinfo, abiinfo); + break; + case 0b1001110: + ok = gen_ammax_wu(dres, insn, archinfo, abiinfo); + break; + case 0b1001111: + ok = gen_ammax_du(dres, insn, archinfo, abiinfo); + break; + case 0b1010000: + ok = gen_ammin_wu(dres, insn, archinfo, abiinfo); + break; + case 0b1010001: + ok = gen_ammin_du(dres, insn, archinfo, abiinfo); + break; + case 0b1010010: + ok = gen_amswap_db_w(dres, insn, archinfo, abiinfo); + break; + case 0b1010011: + ok = gen_amswap_db_d(dres, insn, archinfo, abiinfo); + break; + case 0b1010100: + ok = gen_amadd_db_w(dres, insn, archinfo, abiinfo); + break; + case 0b1010101: + ok = gen_amadd_db_d(dres, insn, archinfo, abiinfo); + break; + case 0b1010110: + ok = gen_amand_db_w(dres, insn, archinfo, abiinfo); + break; + case 0b1010111: + ok = gen_amand_db_d(dres, insn, archinfo, abiinfo); + break; + case 0b1011000: + ok = gen_amor_db_w(dres, insn, archinfo, abiinfo); + break; + case 0b1011001: + ok = gen_amor_db_d(dres, insn, archinfo, abiinfo); + break; + case 0b1011010: + ok = gen_amxor_db_w(dres, insn, archinfo, abiinfo); + break; + case 0b1011011: + ok = gen_amxor_db_d(dres, insn, archinfo, abiinfo); + break; + case 0b1011100: + ok = gen_ammax_db_w(dres, insn, archinfo, abiinfo); + break; + case 0b1011101: + ok = gen_ammax_db_d(dres, insn, archinfo, abiinfo); + break; + case 0b1011110: + ok = gen_ammin_db_w(dres, insn, archinfo, abiinfo); + break; + case 0b1011111: + ok = gen_ammin_db_d(dres, insn, archinfo, abiinfo); + break; + case 0b1100000: + ok = gen_ammax_db_wu(dres, insn, archinfo, abiinfo); + break; + case 0b1100001: + ok = gen_ammax_db_du(dres, insn, archinfo, abiinfo); + break; + case 0b1100010: + ok = gen_ammin_db_wu(dres, insn, archinfo, abiinfo); + break; + case 0b1100011: + ok = gen_ammin_db_du(dres, insn, archinfo, abiinfo); + break; + case 0b1100100: + ok = gen_dbar(dres, insn, archinfo, abiinfo); + break; + case 0b1100101: + ok = gen_ibar(dres, insn, archinfo, abiinfo); + break; + case 0b1101000: + ok = gen_fldgt_s(dres, insn, archinfo, abiinfo); + break; + case 0b1101001: + ok = gen_fldgt_d(dres, insn, archinfo, abiinfo); + break; + case 0b1101010: + ok = gen_fldle_s(dres, insn, archinfo, abiinfo); + break; + case 0b1101011: + ok = gen_fldle_d(dres, insn, archinfo, abiinfo); + break; + case 0b1101100: + ok = gen_fstgt_s(dres, insn, archinfo, abiinfo); + break; + case 0b1101101: + ok = gen_fstgt_d(dres, insn, archinfo, abiinfo); + break; + case 0b1101110: + ok = gen_fstle_s(dres, insn, archinfo, abiinfo); + break; + case 0b1101111: + ok = gen_fstle_d(dres, insn, archinfo, abiinfo); + break; + case 0b1110000: + ok = gen_ldgt_b(dres, insn, archinfo, abiinfo); + break; + case 0b1110001: + ok = gen_ldgt_h(dres, insn, archinfo, abiinfo); + break; + case 0b1110010: + ok = gen_ldgt_w(dres, insn, archinfo, abiinfo); + break; + case 0b1110011: + ok = gen_ldgt_d(dres, insn, archinfo, abiinfo); + break; + case 0b1110100: + ok = gen_ldle_b(dres, insn, archinfo, abiinfo); + break; + case 0b1110101: + ok = gen_ldle_h(dres, insn, archinfo, abiinfo); + break; + case 0b1110110: + ok = gen_ldle_w(dres, insn, archinfo, abiinfo); + break; + case 0b1110111: + ok = gen_ldle_d(dres, insn, archinfo, abiinfo); + break; + case 0b1111000: + ok = gen_stgt_b(dres, insn, archinfo, abiinfo); + break; + case 0b1111001: + ok = gen_stgt_h(dres, insn, archinfo, abiinfo); + break; + case 0b1111010: + ok = gen_stgt_w(dres, insn, archinfo, abiinfo); + break; + case 0b1111011: + ok = gen_stgt_d(dres, insn, archinfo, abiinfo); + break; + case 0b1111100: + ok = gen_stle_b(dres, insn, archinfo, abiinfo); + break; + case 0b1111101: + ok = gen_stle_h(dres, insn, archinfo, abiinfo); + break; + case 0b1111110: + ok = gen_stle_w(dres, insn, archinfo, abiinfo); + break; + case 0b1111111: + ok = gen_stle_d(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + return ok; +} + +static Bool disInstr_LOONGARCH64_WRK_FCMP_S ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + Bool ok; + switch (get_cond(insn)) { + case 0x0: + ok = gen_fcmp_caf_s(dres, insn, archinfo, abiinfo); + break; + case 0x1: + ok = gen_fcmp_saf_s(dres, insn, archinfo, abiinfo); + break; + case 0x2: + ok = gen_fcmp_clt_s(dres, insn, archinfo, abiinfo); + break; + case 0x3: + ok = gen_fcmp_slt_s(dres, insn, archinfo, abiinfo); + break; + case 0x4: + ok = gen_fcmp_ceq_s(dres, insn, archinfo, abiinfo); + break; + case 0x5: + ok = gen_fcmp_seq_s(dres, insn, archinfo, abiinfo); + break; + case 0x6: + ok = gen_fcmp_cle_s(dres, insn, archinfo, abiinfo); + break; + case 0x7: + ok = gen_fcmp_sle_s(dres, insn, archinfo, abiinfo); + break; + case 0x8: + ok = gen_fcmp_cun_s(dres, insn, archinfo, abiinfo); + break; + case 0x9: + ok = gen_fcmp_sun_s(dres, insn, archinfo, abiinfo); + break; + case 0xa: + ok = gen_fcmp_cult_s(dres, insn, archinfo, abiinfo); + break; + case 0xb: + ok = gen_fcmp_sult_s(dres, insn, archinfo, abiinfo); + break; + case 0xc: + ok = gen_fcmp_cueq_s(dres, insn, archinfo, abiinfo); + break; + case 0xd: + ok = gen_fcmp_sueq_s(dres, insn, archinfo, abiinfo); + break; + case 0xe: + ok = gen_fcmp_cule_s(dres, insn, archinfo, abiinfo); + break; + case 0xf: + ok = gen_fcmp_sule_s(dres, insn, archinfo, abiinfo); + break; + case 0x10: + ok = gen_fcmp_cne_s(dres, insn, archinfo, abiinfo); + break; + case 0x11: + ok = gen_fcmp_sne_s(dres, insn, archinfo, abiinfo); + break; + case 0x14: + ok = gen_fcmp_cor_s(dres, insn, archinfo, abiinfo); + break; + case 0x15: + ok = gen_fcmp_sor_s(dres, insn, archinfo, abiinfo); + break; + case 0x18: + ok = gen_fcmp_cune_s(dres, insn, archinfo, abiinfo); + break; + case 0x19: + ok = gen_fcmp_sune_s(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + return ok; +} + +static Bool disInstr_LOONGARCH64_WRK_FCMP_D ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + Bool ok; + switch (get_cond(insn)) { + case 0x0: + ok = gen_fcmp_caf_d(dres, insn, archinfo, abiinfo); + break; + case 0x1: + ok = gen_fcmp_saf_d(dres, insn, archinfo, abiinfo); + break; + case 0x2: + ok = gen_fcmp_clt_d(dres, insn, archinfo, abiinfo); + break; + case 0x3: + ok = gen_fcmp_slt_d(dres, insn, archinfo, abiinfo); + break; + case 0x4: + ok = gen_fcmp_ceq_d(dres, insn, archinfo, abiinfo); + break; + case 0x5: + ok = gen_fcmp_seq_d(dres, insn, archinfo, abiinfo); + break; + case 0x6: + ok = gen_fcmp_cle_d(dres, insn, archinfo, abiinfo); + break; + case 0x7: + ok = gen_fcmp_sle_d(dres, insn, archinfo, abiinfo); + break; + case 0x8: + ok = gen_fcmp_cun_d(dres, insn, archinfo, abiinfo); + break; + case 0x9: + ok = gen_fcmp_sun_d(dres, insn, archinfo, abiinfo); + break; + case 0xa: + ok = gen_fcmp_cult_d(dres, insn, archinfo, abiinfo); + break; + case 0xb: + ok = gen_fcmp_sult_d(dres, insn, archinfo, abiinfo); + break; + case 0xc: + ok = gen_fcmp_cueq_d(dres, insn, archinfo, abiinfo); + break; + case 0xd: + ok = gen_fcmp_sueq_d(dres, insn, archinfo, abiinfo); + break; + case 0xe: + ok = gen_fcmp_cule_d(dres, insn, archinfo, abiinfo); + break; + case 0xf: + ok = gen_fcmp_sule_d(dres, insn, archinfo, abiinfo); + break; + case 0x10: + ok = gen_fcmp_cne_d(dres, insn, archinfo, abiinfo); + break; + case 0x11: + ok = gen_fcmp_sne_d(dres, insn, archinfo, abiinfo); + break; + case 0x14: + ok = gen_fcmp_cor_d(dres, insn, archinfo, abiinfo); + break; + case 0x15: + ok = gen_fcmp_sor_d(dres, insn, archinfo, abiinfo); + break; + case 0x18: + ok = gen_fcmp_cune_d(dres, insn, archinfo, abiinfo); + break; + case 0x19: + ok = gen_fcmp_sune_d(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + return ok; +} + +static Bool disInstr_LOONGARCH64_WRK_00 ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + Bool ok; + switch (SLICE(insn, 29, 26)) { + case 0b0000: + ok = disInstr_LOONGARCH64_WRK_00_0000(dres, insn, archinfo, abiinfo); + break; + case 0b0010: + switch (SLICE(insn, 25, 20)) { + case 0b000001: + ok = gen_fmadd_s(dres, insn, archinfo, abiinfo); + break; + case 0b000010: + ok = gen_fmadd_d(dres, insn, archinfo, abiinfo); + break; + case 0b000101: + ok = gen_fmsub_s(dres, insn, archinfo, abiinfo); + break; + case 0b000110: + ok = gen_fmsub_d(dres, insn, archinfo, abiinfo); + break; + case 0b001001: + ok = gen_fnmadd_s(dres, insn, archinfo, abiinfo); + break; + case 0b001010: + ok = gen_fnmadd_d(dres, insn, archinfo, abiinfo); + break; + case 0b001101: + ok = gen_fnmsub_s(dres, insn, archinfo, abiinfo); + break; + case 0b001110: + ok = gen_fnmsub_d(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + break; + case 0b0011: + switch (SLICE(insn, 25, 20)) { + case 0b000001: + if (SLICE(insn, 4, 3) == 0b00) { + ok = disInstr_LOONGARCH64_WRK_FCMP_S(dres, insn, archinfo, abiinfo); + } else { + ok = False; + } + break; + case 0b000010: + if (SLICE(insn, 4, 3) == 0b00) { + ok = disInstr_LOONGARCH64_WRK_FCMP_D(dres, insn, archinfo, abiinfo); + } else { + ok = False; + } + break; + case 0b010000: + if (SLICE(insn, 19, 18) == 0b00) { + ok = gen_fsel(dres, insn, archinfo, abiinfo); + } else { + ok = False; + } + break; + default: + ok = False; + break; + } + break; + case 0b0100: + ok = gen_addu16i_d(dres, insn, archinfo, abiinfo); + break; + case 0b0101: + if (SLICE(insn, 25, 25) == 0) { + ok = gen_lu12i_w(dres, insn, archinfo, abiinfo); + } else { + ok = gen_lu32i_d(dres, insn, archinfo, abiinfo); + } + break; + case 0b0110: + if (SLICE(insn, 25, 25) == 0) { + ok = gen_pcaddi(dres, insn, archinfo, abiinfo); + } else { + ok = gen_pcalau12i(dres, insn, archinfo, abiinfo); + } + break; + case 0b0111: + if (SLICE(insn, 25, 25) == 0) { + ok = gen_pcaddu12i(dres, insn, archinfo, abiinfo); + } else { + ok = gen_pcaddu18i(dres, insn, archinfo, abiinfo); + } + break; + case 0b1000: + switch (SLICE(insn, 25, 24)) { + case 0b00: + ok = gen_ll_w(dres, insn, archinfo, abiinfo); + break; + case 0b01: + ok = gen_sc_w(dres, insn, archinfo, abiinfo); + break; + case 0b10: + ok = gen_ll_d(dres, insn, archinfo, abiinfo); + break; + case 0b11: + ok = gen_sc_d(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + break; + case 0b1001: + switch (SLICE(insn, 25, 24)) { + case 0b00: + ok = gen_ldptr_w(dres, insn, archinfo, abiinfo); + break; + case 0b01: + ok = gen_stptr_w(dres, insn, archinfo, abiinfo); + break; + case 0b10: + ok = gen_ldptr_d(dres, insn, archinfo, abiinfo); + break; + case 0b11: + ok = gen_stptr_d(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + break; + case 0b1010: + ok = disInstr_LOONGARCH64_WRK_00_1010(dres, insn, archinfo, abiinfo); + break; + case 0b1110: + switch (SLICE(insn, 25, 22)) { + case 0b0000: + ok = disInstr_LOONGARCH64_WRK_00_1110_0000(dres, insn, archinfo, abiinfo); + break; + case 0b0001: + ok = disInstr_LOONGARCH64_WRK_00_1110_0001(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + break; + default: + ok = False; + break; + } + return ok; +} + +static Bool disInstr_LOONGARCH64_WRK_01 ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) +{ + Bool ok; + switch (SLICE(insn, 29, 26)) { + case 0b0000: + ok = gen_beqz(dres, insn, archinfo, abiinfo); + break; + case 0b0001: + ok = gen_bnez(dres, insn, archinfo, abiinfo); + break; + case 0b0010: + switch (SLICE(insn, 9, 8)) { + case 0b00: + ok = gen_bceqz(dres, insn, archinfo, abiinfo); + break; + case 0b01: + ok = gen_bcnez(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + break; + case 0b0011: + ok = gen_jirl(dres, insn, archinfo, abiinfo); + break; + case 0b0100: + ok = gen_b(dres, insn, archinfo, abiinfo); + break; + case 0b0101: + ok = gen_bl(dres, insn, archinfo, abiinfo); + break; + case 0b0110: + ok = gen_beq(dres, insn, archinfo, abiinfo); + break; + case 0b0111: + ok = gen_bne(dres, insn, archinfo, abiinfo); + break; + case 0b1000: + ok = gen_blt(dres, insn, archinfo, abiinfo); + break; + case 0b1001: + ok = gen_bge(dres, insn, archinfo, abiinfo); + break; + case 0b1010: + ok = gen_bltu(dres, insn, archinfo, abiinfo); + break; + case 0b1011: + ok = gen_bgeu(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + return ok; +} + +static Bool disInstr_LOONGARCH64_WRK ( /*MB_OUT*/DisResult* dres, + const UChar* guest_instr, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo, + Bool sigill_diag ) +{ + /* Set result defaults. */ + dres->whatNext = Dis_Continue; + dres->len = 4; + dres->jk_StopHere = Ijk_INVALID; + dres->hint = Dis_HintNone; + + /* At least this is simple on LOONGARCH64: insns are all 4 bytes long, + and 4-aligned. So just fish the whole thing out of memory right now + and have done. */ + UInt insn = getUInt(guest_instr); + DIP("\t0x%llx:\t0x%08x\t", (Addr64)guest_PC_curr_instr, insn); + vassert((guest_PC_curr_instr & 3ULL) == 0); + + /* Spot "Special" instructions (see comment at top of file). */ + Bool ok = disInstr_LOONGARCH64_WRK_special(dres, guest_instr); + if (ok) + return ok; + + /* Main LOONGARCH64 instruction decoder starts here. */ + switch (SLICE(insn, 31, 30)) { + case 0b00: + ok = disInstr_LOONGARCH64_WRK_00(dres, insn, archinfo, abiinfo); + break; + case 0b01: + ok = disInstr_LOONGARCH64_WRK_01(dres, insn, archinfo, abiinfo); + break; + default: + ok = False; + break; + } + + /* If the next-level down decoders failed, make sure |dres| didn't + get changed. */ + if (!ok) { + vassert(dres->whatNext == Dis_Continue); + vassert(dres->len == 4); + vassert(dres->jk_StopHere == Ijk_INVALID); + } + return ok; +} + + +/*------------------------------------------------------------*/ +/*--- Top-level fn ---*/ +/*------------------------------------------------------------*/ + +/* Disassemble a single instruction into IR. The instruction + is located in host memory at &guest_code[delta]. */ + +DisResult disInstr_LOONGARCH64 ( IRSB* irsb_IN, + const UChar* guest_code_IN, + Long delta_IN, + Addr guest_IP, + VexArch guest_arch, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo, + VexEndness host_endness_IN, + Bool sigill_diag_IN ) +{ + DisResult dres; + vex_bzero(&dres, sizeof(dres)); + + /* Set globals (see top of this file) */ + vassert(guest_arch == VexArchLOONGARCH64); + + irsb = irsb_IN; + host_endness = host_endness_IN; + guest_PC_curr_instr = (Addr64)guest_IP; + + /* Try to decode */ + Bool ok = disInstr_LOONGARCH64_WRK(&dres, + &guest_code_IN[delta_IN], + archinfo, abiinfo, sigill_diag_IN); + + if (ok) { + /* All decode successes end up here. */ + vassert(dres.len == 4 || dres.len == 20); + switch (dres.whatNext) { + case Dis_Continue: + putPC(mkU64(dres.len + guest_PC_curr_instr)); + break; + case Dis_StopHere: + break; + default: + vassert(0); + break; + } + DIP("\n"); + } else { + /* All decode failures end up here. */ + if (sigill_diag_IN) { + Int i, j; + UChar buf[64]; + UInt insn = getUInt(&guest_code_IN[delta_IN]); + vex_bzero(buf, sizeof(buf)); + for (i = j = 0; i < 32; i++) { + if (i > 0 && (i & 3) == 0) + buf[j++] = ' '; + buf[j++] = (insn & (1 << (31 - i))) ? '1' : '0'; + } + vex_printf("disInstr(loongarch64): unhandled instruction 0x%08x\n", insn); + vex_printf("disInstr(loongarch64): %s\n", buf); + } + + /* Tell the dispatcher that this insn cannot be decoded, and so + has not been executed, and (is currently) the next to be + executed. PC should be up-to-date since it is made so at the + start of each insn, but nevertheless be paranoid and update + it again right now. */ + putPC(mkU64(guest_PC_curr_instr)); + dres.len = 0; + dres.whatNext = Dis_StopHere; + dres.jk_StopHere = Ijk_NoDecode; + } + + return dres; +} + + +/*--------------------------------------------------------------------*/ +/*--- end guest_loongarch64_toIR.c ---*/ +/*--------------------------------------------------------------------*/ diff --git a/VEX/priv/host_loongarch64_defs.c b/VEX/priv/host_loongarch64_defs.c new file mode 100644 index 0000000..1bc65f5 --- /dev/null +++ b/VEX/priv/host_loongarch64_defs.c @@ -0,0 +1,3015 @@ + +/*---------------------------------------------------------------*/ +/*--- begin host_loongarch64_defs.c ---*/ +/*---------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2021-2022 Loongson Technology Corporation Limited + + This program 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 2 of the + License, or (at your option) any later version. + + This program 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 this program; if not, see . + + The GNU General Public License is contained in the file COPYING. +*/ + +#include "libvex_basictypes.h" +#include "libvex.h" +#include "libvex_trc_values.h" + +#include "main_util.h" +#include "host_generic_regs.h" +#include "host_loongarch64_defs.h" + + +/* --------- Local helpers. --------- */ + +static inline void mapReg ( HRegRemap* m, HReg* r ) +{ + *r = lookupHRegRemap(m, *r); +} + +static inline Int extend ( UInt imm, UInt size ) +{ + UInt shift = 32 - size; + return (((Int)imm << shift) >> shift); +} + + +/* --------- Registers. --------- */ + +const RRegUniverse* getRRegUniverse_LOONGARCH64 ( void ) +{ + /* The real-register universe is a big constant, so we just want to + initialise it once. */ + static RRegUniverse rRegUniverse_LOONGARCH64; + static Bool rRegUniverse_LOONGARCH64_initted = False; + + /* Handy shorthand, nothing more */ + RRegUniverse* ru = &rRegUniverse_LOONGARCH64; + + /* This isn't thread-safe. Sigh. */ + if (LIKELY(rRegUniverse_LOONGARCH64_initted == True)) + return ru; + + RRegUniverse__init(ru); + + /* Add the registers. The initial segment of this array must be + those available for allocation by reg-alloc, and those that + follow are not available for allocation. */ + ru->allocable_start[HRcInt64] = ru->size; + ru->regs[ru->size++] = hregLOONGARCH64_R23(); + ru->regs[ru->size++] = hregLOONGARCH64_R24(); + ru->regs[ru->size++] = hregLOONGARCH64_R25(); + ru->regs[ru->size++] = hregLOONGARCH64_R26(); + ru->regs[ru->size++] = hregLOONGARCH64_R27(); + ru->regs[ru->size++] = hregLOONGARCH64_R28(); + ru->regs[ru->size++] = hregLOONGARCH64_R29(); + ru->regs[ru->size++] = hregLOONGARCH64_R30(); + // $r31 is used as guest stack pointer, not available to regalloc. + + // $r12 is used as a chaining/spill/ProfInc temporary + // $r13 is used as a ProfInc temporary + ru->regs[ru->size++] = hregLOONGARCH64_R14(); + ru->regs[ru->size++] = hregLOONGARCH64_R15(); + ru->regs[ru->size++] = hregLOONGARCH64_R16(); + ru->regs[ru->size++] = hregLOONGARCH64_R17(); + ru->regs[ru->size++] = hregLOONGARCH64_R18(); + ru->regs[ru->size++] = hregLOONGARCH64_R19(); + ru->regs[ru->size++] = hregLOONGARCH64_R20(); + ru->allocable_end[HRcInt64] = ru->size - 1; + + ru->allocable_start[HRcFlt64] = ru->size; + ru->regs[ru->size++] = hregLOONGARCH64_F24(); + ru->regs[ru->size++] = hregLOONGARCH64_F25(); + ru->regs[ru->size++] = hregLOONGARCH64_F26(); + ru->regs[ru->size++] = hregLOONGARCH64_F27(); + ru->regs[ru->size++] = hregLOONGARCH64_F28(); + ru->regs[ru->size++] = hregLOONGARCH64_F29(); + ru->regs[ru->size++] = hregLOONGARCH64_F30(); + ru->regs[ru->size++] = hregLOONGARCH64_F31(); + ru->allocable_end[HRcFlt64] = ru->size - 1; + + ru->allocable = ru->size; + + /* And other regs, not available to the allocator. */ + ru->regs[ru->size++] = hregLOONGARCH64_R0(); + ru->regs[ru->size++] = hregLOONGARCH64_R1(); + ru->regs[ru->size++] = hregLOONGARCH64_R2(); + ru->regs[ru->size++] = hregLOONGARCH64_R3(); + ru->regs[ru->size++] = hregLOONGARCH64_R4(); + ru->regs[ru->size++] = hregLOONGARCH64_R5(); + ru->regs[ru->size++] = hregLOONGARCH64_R6(); + ru->regs[ru->size++] = hregLOONGARCH64_R7(); + ru->regs[ru->size++] = hregLOONGARCH64_R8(); + ru->regs[ru->size++] = hregLOONGARCH64_R9(); + ru->regs[ru->size++] = hregLOONGARCH64_R10(); + ru->regs[ru->size++] = hregLOONGARCH64_R11(); + ru->regs[ru->size++] = hregLOONGARCH64_R12(); + ru->regs[ru->size++] = hregLOONGARCH64_R13(); + ru->regs[ru->size++] = hregLOONGARCH64_R21(); + ru->regs[ru->size++] = hregLOONGARCH64_R22(); + ru->regs[ru->size++] = hregLOONGARCH64_R31(); + ru->regs[ru->size++] = hregLOONGARCH64_FCSR3(); + + rRegUniverse_LOONGARCH64_initted = True; + + RRegUniverse__check_is_sane(ru); + return ru; +} + +UInt ppHRegLOONGARCH64 ( HReg reg ) +{ + Int r; + Int ret = 0; + static const HChar* ireg_names[32] = { + "$zero", + "$ra", + "$tp", + "$sp", + "$a0", "$a1", "$a2", "$a3", "$a4", "$a5", "$a6", "$a7", + "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8", + "$r21", /* Reserved */ + "$fp", + "$s0", "$s1", "$s2", "$s3", "$s4", "$s5", "$s6", "$s7", "$s8" + }; + static const HChar* freg_names[32] = { + "$fa0", "$fa1", "$fa2", "$fa3", "$fa4", "$fa5", "$fa6", "$fa7", + "$ft0", "$ft1", "$ft2", "$ft3", "$ft4", "$ft5", "$ft6", "$ft7", + "$ft8", "$ft9", "$ft10", "$ft11", "$ft12", "$ft13", "$ft14", "$ft15", + "$fs0", "$fs1", "$fs2", "$fs3", "$fs4", "$fs5", "$fs6", "$fs7" + }; + + /* Be generic for all virtual regs. */ + if (hregIsVirtual(reg)) { + return ppHReg(reg); + } + + /* But specific for real regs. */ + switch (hregClass(reg)) { + case HRcInt32: + r = hregEncoding(reg); + vassert(r >= 0 && r < 4); + ret = vex_printf("$fcsr%d", r); + break; + case HRcInt64: + r = hregEncoding(reg); + vassert(r >= 0 && r < 32); + ret = vex_printf("%s", ireg_names[r]); + break; + case HRcFlt64: + r = hregEncoding(reg); + vassert(r >= 0 && r < 32); + ret = vex_printf("%s", freg_names[r]); + break; + default: + vpanic("ppHRegLOONGARCH64"); + break; + } + + return ret; +} + + +/* --------- Condition codes, LOONGARCH64 encoding. --------- */ + +static inline const HChar* showLOONGARCH64CondCode ( LOONGARCH64CondCode cond ) +{ + const HChar* ret; + switch (cond) { + case LAcc_EQ: + ret = "eq"; /* equal */ + break; + case LAcc_NE: + ret = "ne"; /* not equal */ + break; + case LAcc_LT: + ret = "lt"; /* less than (signed) */ + break; + case LAcc_GE: + ret = "ge"; /* great equal (signed) */ + break; + case LAcc_LTU: + ret = "ltu"; /* less than (unsigned) */ + break; + case LAcc_GEU: + ret = "geu"; /* great equal (unsigned) */ + break; + case LAcc_AL: + ret = "al"; /* always (unconditional) */ + break; + default: + vpanic("showLOONGARCH64CondCode"); + break; + } + return ret; +} + + +/* --------- Memory address expressions (amodes). --------- */ + +LOONGARCH64AMode* LOONGARCH64AMode_RI ( HReg reg, UShort imm ) +{ + LOONGARCH64AMode* am = LibVEX_Alloc_inline(sizeof(LOONGARCH64AMode)); + am->tag = LAam_RI; + am->LAam.RI.base = reg; + am->LAam.RI.index = imm; + return am; +} + +LOONGARCH64AMode* LOONGARCH64AMode_RR ( HReg base, HReg index ) +{ + LOONGARCH64AMode* am = LibVEX_Alloc_inline(sizeof(LOONGARCH64AMode)); + am->tag = LAam_RR; + am->LAam.RR.base = base; + am->LAam.RR.index = index; + return am; +} + +static inline void ppLOONGARCH64AMode ( LOONGARCH64AMode* am ) +{ + switch (am->tag) { + case LAam_RI: + ppHRegLOONGARCH64(am->LAam.RI.base); + vex_printf(", "); + vex_printf("%d", extend((UInt)am->LAam.RI.index, 12)); + break; + case LAam_RR: + ppHRegLOONGARCH64(am->LAam.RR.base); + vex_printf(", "); + ppHRegLOONGARCH64(am->LAam.RR.index); + break; + default: + vpanic("ppLOONGARCH64AMode"); + break; + } +} + +static inline void addRegUsage_LOONGARCH64AMode( HRegUsage* u, + LOONGARCH64AMode* am ) +{ + switch (am->tag) { + case LAam_RI: + addHRegUse(u, HRmRead, am->LAam.RI.base); + break; + case LAam_RR: + addHRegUse(u, HRmRead, am->LAam.RR.base); + addHRegUse(u, HRmRead, am->LAam.RR.index); + break; + default: + vpanic("addRegUsage_LOONGARCH64AMode"); + break; + } +} + +static inline void mapRegs_LOONGARCH64AMode( HRegRemap* m, + LOONGARCH64AMode* am ) +{ + switch (am->tag) { + case LAam_RI: + mapReg(m, &am->LAam.RI.base); + break; + case LAam_RR: + mapReg(m, &am->LAam.RR.base); + mapReg(m, &am->LAam.RR.index); + break; + default: + vpanic("mapRegs_LOONGARCH64AMode"); + break; + } +} + + +/* --------- Operand, which can be reg or imm. --------- */ + +LOONGARCH64RI* LOONGARCH64RI_R ( HReg reg ) +{ + LOONGARCH64RI* op = LibVEX_Alloc_inline(sizeof(LOONGARCH64RI)); + op->tag = LAri_Reg; + op->LAri.R.reg = reg; + return op; +} + +LOONGARCH64RI* LOONGARCH64RI_I ( UShort imm, UChar size, Bool isSigned ) +{ + LOONGARCH64RI* op = LibVEX_Alloc_inline(sizeof(LOONGARCH64RI)); + op->tag = LAri_Imm; + op->LAri.I.imm = imm; + op->LAri.I.size = size; + op->LAri.I.isSigned = isSigned; + vassert(imm < (1 << size)); + vassert(size == 5 || size == 6 || size == 12); + return op; +} + +static inline void ppLOONGARCH64RI ( LOONGARCH64RI* ri ) +{ + switch (ri->tag) { + case LAri_Reg: + ppHRegLOONGARCH64(ri->LAri.R.reg); + break; + case LAri_Imm: + if (ri->LAri.I.isSigned) { + vex_printf("%d", extend((UInt)ri->LAri.I.imm, ri->LAri.I.size)); + } else { + vex_printf("%u", (UInt)ri->LAri.I.imm); + } + break; + default: + vpanic("ppLOONGARCH64RI"); + break; + } +} + +static inline void addRegUsage_LOONGARCH64RI( HRegUsage* u, LOONGARCH64RI* ri ) +{ + switch (ri->tag) { + case LAri_Reg: + addHRegUse(u, HRmRead, ri->LAri.R.reg); + break; + case LAri_Imm: + break; + default: + vpanic("addRegUsage_LOONGARCH64RI"); + break; + } +} + +static inline void mapRegs_LOONGARCH64RI( HRegRemap* m, LOONGARCH64RI* ri ) +{ + switch (ri->tag) { + case LAri_Reg: + mapReg(m, &ri->LAri.R.reg); + break; + case LAri_Imm: + break; + default: + vpanic("mapRegs_LOONGARCH64RI"); + break; + } +} + + +/* --------- Instructions. --------- */ + +static inline const HChar* showLOONGARCH64UnOp ( LOONGARCH64UnOp op ) +{ + switch (op) { + case LAun_CLZ_W: + return "clz.w"; + case LAun_CTZ_W: + return "ctz.w"; + case LAun_CLZ_D: + return "clz.d"; + case LAun_CTZ_D: + return "ctz.w"; + case LAun_EXT_W_H: + return "ext.w.h"; + case LAun_EXT_W_B: + return "ext.w.b"; + default: + vpanic("showLOONGARCH64UnOp"); + break; + } +} + +static inline const HChar* showLOONGARCH64BinOp ( LOONGARCH64BinOp op ) +{ + switch (op) { + case LAbin_ADD_W: + return "add.w"; + case LAbin_ADD_D: + return "add.d"; + case LAbin_SUB_W: + return "sub.w"; + case LAbin_SUB_D: + return "sub.d"; + case LAbin_NOR: + return "nor"; + case LAbin_AND: + return "and"; + case LAbin_OR: + return "or"; + case LAbin_XOR: + return "xor"; + case LAbin_SLL_W: + return "sll.w"; + case LAbin_SRL_W: + return "srl.w"; + case LAbin_SRA_W: + return "sra.w"; + case LAbin_SLL_D: + return "sll.d"; + case LAbin_SRL_D: + return "srl.d"; + case LAbin_SRA_D: + return "sra.d"; + case LAbin_MUL_W: + return "mul.w"; + case LAbin_MUL_D: + return "mul.d"; + case LAbin_MULH_W: + return "mulh.w"; + case LAbin_MULH_WU: + return "mulh.wu"; + case LAbin_MULH_D: + return "mulh.d"; + case LAbin_MULH_DU: + return "mulh.du"; + case LAbin_MULW_D_W: + return "mulw.d.w"; + case LAbin_MULW_D_WU: + return "mulw.d.wu"; + case LAbin_DIV_W: + return "div.w"; + case LAbin_MOD_W: + return "mod.w"; + case LAbin_DIV_WU: + return "div.wu"; + case LAbin_MOD_WU: + return "mod.wu"; + case LAbin_DIV_D: + return "div.d"; + case LAbin_MOD_D: + return "mod.d"; + case LAbin_DIV_DU: + return "div.du"; + case LAbin_MOD_DU: + return "mod.du"; + case LAbin_SLLI_W: + return "slli.w"; + case LAbin_SLLI_D: + return "slli.d"; + case LAbin_SRLI_W: + return "srli.w"; + case LAbin_SRLI_D: + return "srli.d"; + case LAbin_SRAI_W: + return "srai.w"; + case LAbin_SRAI_D: + return "srai.d"; + case LAbin_ADDI_W: + return "addi.w"; + case LAbin_ADDI_D: + return "addi.d"; + case LAbin_ANDI: + return "andi"; + case LAbin_ORI: + return "ori"; + case LAbin_XORI: + return "xori"; + default: + vpanic("showLOONGARCH64BinOp"); + break; + } +} + +static inline const HChar* showLOONGARCH64LoadOp ( LOONGARCH64LoadOp op ) +{ + switch (op) { + case LAload_LD_D: + return "ld.d"; + case LAload_LD_BU: + return "ld.bu"; + case LAload_LD_HU: + return "ld.hu"; + case LAload_LD_WU: + return "ld.wu"; + case LAload_LDX_D: + return "ldx.d"; + case LAload_LDX_BU: + return "ldx.bu"; + case LAload_LDX_HU: + return "ldx.hu"; + case LAload_LDX_WU: + return "ldx.wu"; + default: + vpanic("LOONGARCH64LoadOp"); + break; + } +} + +static inline const HChar* showLOONGARCH64StoreOp ( LOONGARCH64StoreOp op ) +{ + switch (op) { + case LAstore_ST_B: + return "st.b"; + case LAstore_ST_H: + return "st.h"; + case LAstore_ST_W: + return "st.w"; + case LAstore_ST_D: + return "st.d"; + case LAstore_STX_B: + return "stx.b"; + case LAstore_STX_H: + return "stx.h"; + case LAstore_STX_W: + return "stx.w"; + case LAstore_STX_D: + return "stx.d"; + default: + vpanic("LOONGARCH64StoreOp"); + break; + } +} + +static inline const HChar* showLOONGARCH64LLSCOp ( LOONGARCH64LLSCOp op ) +{ + switch (op) { + case LAllsc_LL_W: + return "ll.w"; + case LAllsc_SC_W: + return "sc.w"; + case LAllsc_LL_D: + return "ll.d"; + case LAllsc_SC_D: + return "sc.d"; + default: + vpanic("LOONGARCH64LLSCOp"); + break; + } +} + +static inline const HChar* showLOONGARCH64BarOp ( LOONGARCH64BarOp op ) +{ + const HChar* ret; + switch (op) { + case LAbar_DBAR: + return "dbar"; + case LAbar_IBAR: + return "ibar"; + default: + vpanic("showLOONGARCH64BarOp"); + break; + } + return ret; +} + +static inline const HChar* showLOONGARCH64FpUnOp ( LOONGARCH64FpUnOp op ) +{ + const HChar* ret; + switch (op) { + case LAfpun_FABS_S: + return "fabs.s"; + case LAfpun_FABS_D: + return "fabs.d"; + case LAfpun_FNEG_S: + return "fneg.s"; + case LAfpun_FNEG_D: + return "fneg.d"; + case LAfpun_FLOGB_S: + return "flogb.s"; + case LAfpun_FLOGB_D: + return "flogb.d"; + case LAfpun_FSQRT_S: + return "fsqrt.s"; + case LAfpun_FSQRT_D: + return "fsqrt.d"; + case LAfpun_FRSQRT_S: + return "frsqrt.s"; + case LAfpun_FRSQRT_D: + return "frsqrt.d"; + case LAfpun_FCVT_S_D: + return "fcvt.s.d"; + case LAfpun_FCVT_D_S: + return "fcvt.d.s"; + case LAfpun_FTINT_W_S: + return "ftint.w.s"; + case LAfpun_FTINT_W_D: + return "ftint.w.d"; + case LAfpun_FTINT_L_S: + return "ftint.l.s"; + case LAfpun_FTINT_L_D: + return "ftint.l.d"; + case LAfpun_FFINT_S_W: + return "ffint.s.w"; + case LAfpun_FFINT_S_L: + return "ffint.s.l"; + case LAfpun_FFINT_D_W: + return "ffint.d.w"; + case LAfpun_FFINT_D_L: + return "ffint.d.l"; + case LAfpun_FRINT_S: + return "frint.s"; + case LAfpun_FRINT_D: + return "frint.d"; + default: + vpanic("showLOONGARCH64FpUnOp"); + break; + } + return ret; +} + +static inline const HChar* showLOONGARCH64FpBinOp ( LOONGARCH64FpBinOp op ) +{ + const HChar* ret; + switch (op) { + case LAfpbin_FADD_S: + return "fadd.s"; + case LAfpbin_FADD_D: + return "fadd.d"; + case LAfpbin_FSUB_S: + return "fsub.s"; + case LAfpbin_FSUB_D: + return "fsub.d"; + case LAfpbin_FMUL_S: + return "fmul.s"; + case LAfpbin_FMUL_D: + return "fmul.d"; + case LAfpbin_FDIV_S: + return "fdiv.s"; + case LAfpbin_FDIV_D: + return "fdiv.d"; + case LAfpbin_FMAX_S: + return "fmax.s"; + case LAfpbin_FMAX_D: + return "fmax.d"; + case LAfpbin_FMIN_S: + return "fmin.s"; + case LAfpbin_FMIN_D: + return "fmin.d"; + case LAfpbin_FMAXA_S: + return "fmaxa.s"; + case LAfpbin_FMAXA_D: + return "fmaxa.d"; + case LAfpbin_FMINA_S: + return "fmina.s"; + case LAfpbin_FMINA_D: + return "fmina.d"; + case LAfpbin_FSCALEB_S: + return "fscaleb.s"; + case LAfpbin_FSCALEB_D: + return "fscaleb.d"; + default: + vpanic("showLOONGARCH64FpBinOp"); + break; + } + return ret; +} + +static inline const HChar* showLOONGARCH64FpTriOp ( LOONGARCH64FpTriOp op ) +{ + const HChar* ret; + switch (op) { + case LAfpbin_FMADD_S: + return "fmadd.s"; + case LAfpbin_FMADD_D: + return "fmadd.d"; + case LAfpbin_FMSUB_S: + return "fmsub.s"; + case LAfpbin_FMSUB_D: + return "fmsub.d"; + default: + vpanic("showLOONGARCH64FpTriOp"); + break; + } + return ret; +} + +static inline const HChar* showLOONGARCH64FpLoadOp ( LOONGARCH64FpLoadOp op ) +{ + switch (op) { + case LAfpload_FLD_S: + return "fld.s"; + case LAfpload_FLD_D: + return "fld.d"; + case LAfpload_FLDX_S: + return "fldx.s"; + case LAfpload_FLDX_D: + return "fldx.d"; + default: + vpanic("LOONGARCH64FpLoadOp"); + break; + } +} + +static inline const HChar* showLOONGARCH64FpStoreOp ( LOONGARCH64FpStoreOp op ) +{ + switch (op) { + case LAfpstore_FST_S: + return "fst.s"; + case LAfpstore_FST_D: + return "fst.d"; + case LAfpstore_FSTX_S: + return "fstx.s"; + case LAfpstore_FSTX_D: + return "fstx.d"; + default: + vpanic("LOONGARCH64FpStoreOp"); + break; + } +} + +static inline const HChar* showLOONGARCH64FpMoveOp ( LOONGARCH64FpMoveOp op ) +{ + switch (op) { + case LAfpmove_FMOV_S: + return "fmov.s"; + case LAfpmove_FMOV_D: + return "fmov.d"; + case LAfpmove_MOVGR2FR_W: + return "movgr2fr.w"; + case LAfpmove_MOVGR2FR_D: + return "movgr2fr.d"; + case LAfpmove_MOVFR2GR_S: + return "movfr2gr.s"; + case LAfpmove_MOVFR2GR_D: + return "movfr2gr.d"; + case LAfpmove_MOVGR2FCSR: + return "movgr2fcsr"; + case LAfpmove_MOVFCSR2GR: + return "movfcsr2gr"; + default: + vpanic("showLOONGARCH64FpMoveOp"); + break; + } +} + +static inline const HChar* showLOONGARCH64FpCmpOp ( LOONGARCH64FpCmpOp op ) +{ + const HChar* ret; + switch (op) { + case LAfpcmp_FCMP_CLT_S: + return "fcmp.clt.s"; + case LAfpcmp_FCMP_CLT_D: + return "fcmp.clt.d"; + case LAfpcmp_FCMP_CEQ_S: + return "fcmp.ceq.s"; + case LAfpcmp_FCMP_CEQ_D: + return "fcmp.ceq.d"; + case LAfpcmp_FCMP_CUN_S: + return "fcmp.cun.s"; + case LAfpcmp_FCMP_CUN_D: + return "fcmp.cun.d"; + default: + vpanic("showLOONGARCH64FpCmpOp"); + break; + } + return ret; +} + +LOONGARCH64Instr* LOONGARCH64Instr_LI ( ULong imm, HReg dst ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_LI; + i->LAin.LI.imm = imm; + i->LAin.LI.dst = dst; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_Unary ( LOONGARCH64UnOp op, + HReg src, HReg dst ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_Un; + i->LAin.Unary.op = op; + i->LAin.Unary.src = src; + i->LAin.Unary.dst = dst; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_Binary ( LOONGARCH64BinOp op, + LOONGARCH64RI* src2, + HReg src1, HReg dst ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_Bin; + i->LAin.Binary.op = op; + i->LAin.Binary.src2 = src2; + i->LAin.Binary.src1 = src1; + i->LAin.Binary.dst = dst; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_Load ( LOONGARCH64LoadOp op, + LOONGARCH64AMode* src, HReg dst ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_Load; + i->LAin.Load.op = op; + i->LAin.Load.src = src; + i->LAin.Load.dst = dst; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_Store ( LOONGARCH64StoreOp op, + LOONGARCH64AMode* dst, HReg src ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_Store; + i->LAin.Store.op = op; + i->LAin.Store.dst = dst; + i->LAin.Store.src = src; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_LLSC ( LOONGARCH64LLSCOp op, Bool isLoad, + LOONGARCH64AMode* addr, HReg val ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_LLSC; + i->LAin.LLSC.op = op; + i->LAin.LLSC.isLoad = isLoad; + i->LAin.LLSC.addr = addr; + i->LAin.LLSC.val = val; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_Bar ( LOONGARCH64BarOp op, UShort hint ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_Bar; + i->LAin.Bar.op = op; + i->LAin.Bar.hint = hint; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_FpUnary ( LOONGARCH64FpUnOp op, + HReg src, HReg dst ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_FpUn; + i->LAin.FpUnary.op = op; + i->LAin.FpUnary.src = src; + i->LAin.FpUnary.dst = dst; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_FpBinary ( LOONGARCH64FpBinOp op, HReg src2, + HReg src1, HReg dst ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_FpBin; + i->LAin.FpBinary.op = op; + i->LAin.FpBinary.src2 = src2; + i->LAin.FpBinary.src1 = src1; + i->LAin.FpBinary.dst = dst; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_FpTrinary ( LOONGARCH64FpTriOp op, + HReg src3, HReg src2, + HReg src1, HReg dst ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_FpTri; + i->LAin.FpTrinary.op = op; + i->LAin.FpTrinary.src3 = src3; + i->LAin.FpTrinary.src2 = src2; + i->LAin.FpTrinary.src1 = src1; + i->LAin.FpTrinary.dst = dst; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_FpLoad ( LOONGARCH64FpLoadOp op, + LOONGARCH64AMode* src, HReg dst ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_FpLoad; + i->LAin.FpLoad.op = op; + i->LAin.FpLoad.src = src; + i->LAin.FpLoad.dst = dst; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_FpStore ( LOONGARCH64FpStoreOp op, + LOONGARCH64AMode* dst, HReg src ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_FpStore; + i->LAin.FpStore.op = op; + i->LAin.FpStore.dst = dst; + i->LAin.FpStore.src = src; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_FpMove ( LOONGARCH64FpMoveOp op, + HReg src, HReg dst ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_FpMove; + i->LAin.FpMove.op = op; + i->LAin.FpMove.src = src; + i->LAin.FpMove.dst = dst; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_FpCmp ( LOONGARCH64FpCmpOp op, HReg src2, + HReg src1, HReg dst ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_FpCmp; + i->LAin.FpCmp.op = op; + i->LAin.FpCmp.src2 = src2; + i->LAin.FpCmp.src1 = src1; + i->LAin.FpCmp.dst = dst; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_Cas ( HReg old, HReg addr, HReg expd, + HReg data, Bool size64 ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_Cas; + i->LAin.Cas.old = old; + i->LAin.Cas.addr = addr; + i->LAin.Cas.expd = expd; + i->LAin.Cas.data = data; + i->LAin.Cas.size64 = size64; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_Cmp ( LOONGARCH64CondCode cond, + HReg src2, HReg src1, HReg dst ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_Cmp; + i->LAin.Cmp.cond = cond; + i->LAin.Cmp.src2 = src2; + i->LAin.Cmp.src1 = src1; + i->LAin.Cmp.dst = dst; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_CMove ( HReg cond, HReg r0, HReg r1, + HReg dst, Bool isInt ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_CMove; + i->LAin.CMove.cond = cond; + i->LAin.CMove.r0 = r0; + i->LAin.CMove.r1 = r1; + i->LAin.CMove.dst = dst; + i->LAin.CMove.isInt = isInt; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_Call ( HReg cond, Addr64 target, + UInt nArgRegs, RetLoc rloc ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_Call; + i->LAin.Call.cond = cond; + i->LAin.Call.target = target; + i->LAin.Call.nArgRegs = nArgRegs; + i->LAin.Call.rloc = rloc; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_XDirect ( Addr64 dstGA, + LOONGARCH64AMode* amPC, + HReg cond, Bool toFastEP ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_XDirect; + i->LAin.XDirect.dstGA = dstGA; + i->LAin.XDirect.amPC = amPC; + i->LAin.XDirect.cond = cond; + i->LAin.XDirect.toFastEP = toFastEP; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_XIndir ( HReg dstGA, LOONGARCH64AMode* amPC, + HReg cond ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_XIndir; + i->LAin.XIndir.dstGA = dstGA; + i->LAin.XIndir.amPC = amPC; + i->LAin.XIndir.cond = cond; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_XAssisted ( HReg dstGA, + LOONGARCH64AMode* amPC, + HReg cond, IRJumpKind jk ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_XAssisted; + i->LAin.XAssisted.dstGA = dstGA; + i->LAin.XAssisted.amPC = amPC; + i->LAin.XAssisted.cond = cond; + i->LAin.XAssisted.jk = jk; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_EvCheck ( LOONGARCH64AMode* amCounter, + LOONGARCH64AMode* amFailAddr ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_EvCheck; + i->LAin.EvCheck.amCounter = amCounter; + i->LAin.EvCheck.amFailAddr = amFailAddr; + return i; +} + +LOONGARCH64Instr* LOONGARCH64Instr_ProfInc ( void ) +{ + LOONGARCH64Instr* i = LibVEX_Alloc_inline(sizeof(LOONGARCH64Instr)); + i->tag = LAin_ProfInc; + return i; +} + + +/* -------- Pretty Print instructions ------------- */ + +static inline void ppLI ( ULong imm, HReg dst ) +{ + vex_printf("li "); + ppHRegLOONGARCH64(dst); + vex_printf(", 0x%llx", imm); +} + +static inline void ppUnary ( LOONGARCH64UnOp op, HReg src, HReg dst ) +{ + vex_printf("%s ", showLOONGARCH64UnOp(op)); + ppHRegLOONGARCH64(dst); + vex_printf(", "); + ppHRegLOONGARCH64(src); +} + +static inline void ppBinary ( LOONGARCH64BinOp op, LOONGARCH64RI* src2, + HReg src1, HReg dst ) +{ + vex_printf("%s ", showLOONGARCH64BinOp(op)); + ppHRegLOONGARCH64(dst); + vex_printf(", "); + ppHRegLOONGARCH64(src1); + vex_printf(", "); + ppLOONGARCH64RI(src2); +} + +static inline void ppLoad ( LOONGARCH64LoadOp op, LOONGARCH64AMode* src, + HReg dst ) +{ + vex_printf("%s ", showLOONGARCH64LoadOp(op)); + ppHRegLOONGARCH64(dst); + vex_printf(", "); + ppLOONGARCH64AMode(src); +} + +static inline void ppStore ( LOONGARCH64StoreOp op, LOONGARCH64AMode* dst, + HReg src ) +{ + vex_printf("%s ", showLOONGARCH64StoreOp(op)); + ppHRegLOONGARCH64(src); + vex_printf(", "); + ppLOONGARCH64AMode(dst); +} + +static inline void ppLLSC ( LOONGARCH64LLSCOp op, LOONGARCH64AMode* addr, + HReg val ) +{ + vex_printf("%s ", showLOONGARCH64LLSCOp(op)); + ppHRegLOONGARCH64(val); + vex_printf(", "); + ppLOONGARCH64AMode(addr); +} + +static inline void ppBar ( LOONGARCH64BarOp op, UShort hint ) +{ + vex_printf("%s %u", showLOONGARCH64BarOp(op), (UInt)hint); +} + +static inline void ppFpUnary ( LOONGARCH64FpUnOp op, HReg src, HReg dst ) +{ + vex_printf("%s ", showLOONGARCH64FpUnOp(op)); + ppHRegLOONGARCH64(dst); + vex_printf(", "); + ppHRegLOONGARCH64(src); +} + +static inline void ppFpBinary ( LOONGARCH64FpBinOp op, HReg src2, + HReg src1, HReg dst ) +{ + vex_printf("%s ", showLOONGARCH64FpBinOp(op)); + ppHRegLOONGARCH64(dst); + vex_printf(", "); + ppHRegLOONGARCH64(src1); + vex_printf(", "); + ppHRegLOONGARCH64(src2); +} + +static inline void ppFpTrinary ( LOONGARCH64FpTriOp op, HReg src3, + HReg src2, HReg src1, HReg dst ) +{ + vex_printf("%s ", showLOONGARCH64FpTriOp(op)); + ppHRegLOONGARCH64(dst); + vex_printf(", "); + ppHRegLOONGARCH64(src1); + vex_printf(", "); + ppHRegLOONGARCH64(src2); + vex_printf(", "); + ppHRegLOONGARCH64(src3); +} + +static inline void ppFpLoad ( LOONGARCH64FpLoadOp op, LOONGARCH64AMode* src, + HReg dst ) +{ + vex_printf("%s ", showLOONGARCH64FpLoadOp(op)); + ppHRegLOONGARCH64(dst); + vex_printf(", "); + ppLOONGARCH64AMode(src); +} + +static inline void ppFpStore ( LOONGARCH64FpStoreOp op, LOONGARCH64AMode* dst, + HReg src ) +{ + vex_printf("%s ", showLOONGARCH64FpStoreOp(op)); + ppHRegLOONGARCH64(src); + vex_printf(", "); + ppLOONGARCH64AMode(dst); +} + +static inline void ppFpMove ( LOONGARCH64FpMoveOp op, HReg src, HReg dst ) +{ + vex_printf("%s ", showLOONGARCH64FpMoveOp(op)); + ppHRegLOONGARCH64(dst); + vex_printf(", "); + ppHRegLOONGARCH64(src); +} + +static inline void ppFpCmp ( LOONGARCH64FpCmpOp op, HReg src2, + HReg src1, HReg dst ) +{ + vex_printf("%s ", showLOONGARCH64FpCmpOp(op)); + vex_printf("$fcc0, "); + ppHRegLOONGARCH64(src1); + vex_printf(", "); + ppHRegLOONGARCH64(src2); + vex_printf("; movcf2gr "); + ppHRegLOONGARCH64(dst); + vex_printf(", $fcc0"); +} + +static inline void ppCas ( HReg old, HReg addr, HReg expd, + HReg data, Bool size64) +{ + ppHRegLOONGARCH64(old); + vex_printf(" = cas(%dbit)(", size64 ? 64 : 32); + ppHRegLOONGARCH64(expd); + vex_printf(", "); + ppHRegLOONGARCH64(data); + vex_printf(" -> "); + ppHRegLOONGARCH64(addr); + vex_printf(")"); +} + +static inline void ppCmp ( LOONGARCH64CondCode cond, HReg src2, + HReg src1, HReg dst ) +{ + ppHRegLOONGARCH64(dst); + vex_printf(" = cmp%s(", showLOONGARCH64CondCode(cond)); + ppHRegLOONGARCH64(src1); + vex_printf(", "); + ppHRegLOONGARCH64(src2); + vex_printf(")"); +} + +static inline void ppCMove ( HReg cond, HReg r0, HReg r1, + HReg dst, Bool isInt ) +{ + if (isInt) { + vex_printf("masknez $t0, "); + ppHRegLOONGARCH64(r0); + vex_printf(", "); + ppHRegLOONGARCH64(cond); + vex_printf("; maskeqz "); + ppHRegLOONGARCH64(dst); + vex_printf(", "); + ppHRegLOONGARCH64(r1); + vex_printf(", "); + ppHRegLOONGARCH64(cond); + vex_printf("; or "); + ppHRegLOONGARCH64(dst); + vex_printf(", $t0, "); + ppHRegLOONGARCH64(dst); + } else { + vex_printf("movgr2cf "); + ppHRegLOONGARCH64(cond); + vex_printf(", $fcc0; fsel "); + ppHRegLOONGARCH64(dst); + vex_printf(", "); + ppHRegLOONGARCH64(r0); + vex_printf(", "); + ppHRegLOONGARCH64(r1); + vex_printf(", $fcc0"); + } +} + +static inline void ppCall ( HReg cond, Addr64 target, + UInt nArgRegs, RetLoc rloc ) +{ + if (!hregIsInvalid(cond)) { + vex_printf("if ("); + ppHRegLOONGARCH64(cond); + vex_printf(") { "); + } + vex_printf("call 0x%llx [nArgRegs=%u, ", target, nArgRegs); + ppRetLoc(rloc); + vex_printf("]"); + if (!hregIsInvalid(cond)) + vex_printf(" }"); +} + +static inline void ppXDirect ( Addr64 dstGA, LOONGARCH64AMode* amPC, + HReg cond, Bool toFastEP ) +{ + vex_printf("(xDirect) "); + if (!hregIsInvalid(cond)) { + vex_printf("if ("); + ppHRegLOONGARCH64(cond); + vex_printf(") { "); + } + vex_printf("li $t0, 0x%llx; ", (ULong)dstGA); + vex_printf("st.w $t0, "); + ppLOONGARCH64AMode(amPC); + vex_printf("; li $t0, $disp_cp_chain_me_to_%sEP; ", + toFastEP ? "fast" : "slow"); + vex_printf("jirl $ra, $t0, 0"); + if (!hregIsInvalid(cond)) + vex_printf(" }"); +} + +static inline void ppXIndir ( HReg dstGA, LOONGARCH64AMode* amPC, + HReg cond ) +{ + vex_printf("(xIndir) "); + if (!hregIsInvalid(cond)) { + vex_printf("if ("); + ppHRegLOONGARCH64(cond); + vex_printf(") { "); + } + vex_printf("st.w "); + ppHRegLOONGARCH64(dstGA); + vex_printf(", "); + ppLOONGARCH64AMode(amPC); + vex_printf("; la $t0, disp_indir; "); + vex_printf("jirl $ra, $t0, 0"); + if (!hregIsInvalid(cond)) + vex_printf(" }"); +} + +static inline void ppXAssisted ( HReg dstGA, LOONGARCH64AMode* amPC, + HReg cond, IRJumpKind jk) +{ + vex_printf("(xAssisted) "); + if (!hregIsInvalid(cond)) { + vex_printf("if ("); + ppHRegLOONGARCH64(cond); + vex_printf(") { "); + } + vex_printf("st.w "); + ppHRegLOONGARCH64(dstGA); + vex_printf(", "); + ppLOONGARCH64AMode(amPC); + vex_printf("; li.w $s8, IRJumpKind_to_TRCVAL(%d); ", (Int)jk); + vex_printf("la $t0, disp_assisted; "); + vex_printf("jirl $ra, $t0, 0"); + if (!hregIsInvalid(cond)) + vex_printf(" }"); +} + +static inline void ppEvCheck ( LOONGARCH64AMode* amCounter, + LOONGARCH64AMode* amFailAddr ) +{ + vex_printf("(evCheck) "); + vex_printf("ld.w $t0, "); + ppLOONGARCH64AMode(amCounter); + vex_printf("; addi.d $t0, $t0, -1; "); + vex_printf("st.w $t0, "); + ppLOONGARCH64AMode(amCounter); + vex_printf("; bge $t0, $zero, nofail; "); + vex_printf("ld.d $t0, "); + ppLOONGARCH64AMode(amFailAddr); + vex_printf("; jirl $ra, $t0, 0"); + vex_printf("; nofail:"); +} + +static inline void ppProfInc ( void ) +{ + vex_printf("(profInc) "); + vex_printf("li $t0, NotKnownYet; "); + vex_printf("ld.d $t1, $t0, 0; "); + vex_printf("addi.d $t1, $t1, 1; "); + vex_printf("st.d $t1, $t0, 0;"); +} + +void ppLOONGARCH64Instr ( const LOONGARCH64Instr* i, Bool mode64 ) +{ + vassert(mode64 == True); + switch (i->tag) { + case LAin_LI: + ppLI(i->LAin.LI.imm, i->LAin.LI.dst); + break; + case LAin_Un: + ppUnary(i->LAin.Unary.op, i->LAin.Unary.src, i->LAin.Unary.dst); + break; + case LAin_Bin: + ppBinary(i->LAin.Binary.op, i->LAin.Binary.src2, + i->LAin.Binary.src1, i->LAin.Binary.dst); + break; + case LAin_Load: + ppLoad(i->LAin.Load.op, i->LAin.Load.src, i->LAin.Load.dst); + break; + case LAin_Store: + ppStore(i->LAin.Store.op, i->LAin.Store.dst, i->LAin.Store.src); + break; + case LAin_LLSC: + ppLLSC(i->LAin.LLSC.op, i->LAin.LLSC.addr, i->LAin.LLSC.val); + break; + case LAin_Bar: + ppBar(i->LAin.Bar.op, i->LAin.Bar.hint); + break; + case LAin_FpUn: + ppFpUnary(i->LAin.FpUnary.op, i->LAin.FpUnary.src, + i->LAin.FpUnary.dst); + break; + case LAin_FpBin: + ppFpBinary(i->LAin.FpBinary.op, i->LAin.FpBinary.src2, + i->LAin.FpBinary.src1, i->LAin.FpBinary.dst); + break; + case LAin_FpTri: + ppFpTrinary(i->LAin.FpTrinary.op, i->LAin.FpTrinary.src3, + i->LAin.FpTrinary.src2, i->LAin.FpTrinary.src1, + i->LAin.FpTrinary.dst); + break; + case LAin_FpLoad: + ppFpLoad(i->LAin.FpLoad.op, i->LAin.FpLoad.src, i->LAin.FpLoad.dst); + break; + case LAin_FpStore: + ppFpStore(i->LAin.FpStore.op, i->LAin.FpStore.dst, + i->LAin.FpStore.src); + break; + case LAin_FpMove: + ppFpMove(i->LAin.FpMove.op, i->LAin.FpMove.src, + i->LAin.FpMove.dst); + break; + case LAin_FpCmp: + ppFpCmp(i->LAin.FpCmp.op, i->LAin.FpCmp.src2, + i->LAin.FpCmp.src1, i->LAin.FpCmp.dst); + break; + case LAin_Cas: + ppCas(i->LAin.Cas.old, i->LAin.Cas.addr, i->LAin.Cas.expd, + i->LAin.Cas.data, i->LAin.Cas.size64); + break; + case LAin_Cmp: + ppCmp(i->LAin.Cmp.cond, i->LAin.Cmp.src2, + i->LAin.Cmp.src1, i->LAin.Cmp.dst); + break; + case LAin_CMove: + ppCMove(i->LAin.CMove.cond, i->LAin.CMove.r0, + i->LAin.CMove.r1, i->LAin.CMove.dst, + i->LAin.CMove.isInt); + break; + case LAin_Call: + ppCall(i->LAin.Call.cond, i->LAin.Call.target, + i->LAin.Call.nArgRegs, i->LAin.Call.rloc); + break; + case LAin_XDirect: + ppXDirect(i->LAin.XDirect.dstGA, i->LAin.XDirect.amPC, + i->LAin.XDirect.cond, i->LAin.XDirect.toFastEP); + break; + case LAin_XIndir: + ppXIndir(i->LAin.XIndir.dstGA, i->LAin.XIndir.amPC, + i->LAin.XIndir.cond); + break; + case LAin_XAssisted: + ppXAssisted(i->LAin.XAssisted.dstGA, i->LAin.XAssisted.amPC, + i->LAin.XAssisted.cond, i->LAin.XAssisted.jk); + break; + case LAin_EvCheck: + ppEvCheck(i->LAin.EvCheck.amCounter, i->LAin.EvCheck.amFailAddr); + break; + case LAin_ProfInc: + ppProfInc(); + break; + default: + vpanic("ppLOONGARCH64Instr"); + break; + } +} + + +/* --------- Helpers for register allocation. --------- */ + +void getRegUsage_LOONGARCH64Instr ( HRegUsage* u, const LOONGARCH64Instr* i, + Bool mode64 ) +{ + vassert(mode64 == True); + initHRegUsage(u); + switch (i->tag) { + case LAin_LI: + addHRegUse(u, HRmWrite, i->LAin.LI.dst); + break; + case LAin_Un: + addHRegUse(u, HRmRead, i->LAin.Unary.src); + addHRegUse(u, HRmWrite, i->LAin.Unary.dst); + break; + case LAin_Bin: + addRegUsage_LOONGARCH64RI(u, i->LAin.Binary.src2); + addHRegUse(u, HRmRead, i->LAin.Binary.src1); + addHRegUse(u, HRmWrite, i->LAin.Binary.dst); + break; + case LAin_Load: + addRegUsage_LOONGARCH64AMode(u, i->LAin.Load.src); + addHRegUse(u, HRmWrite, i->LAin.Load.dst); + break; + case LAin_Store: + addRegUsage_LOONGARCH64AMode(u, i->LAin.Store.dst); + addHRegUse(u, HRmRead, i->LAin.Store.src); + break; + case LAin_LLSC: + addRegUsage_LOONGARCH64AMode(u, i->LAin.LLSC.addr); + if (i->LAin.LLSC.isLoad) + addHRegUse(u, HRmWrite, i->LAin.LLSC.val); + else + addHRegUse(u, HRmRead, i->LAin.LLSC.val); + break; + case LAin_Bar: + /* No regs. */ + break; + case LAin_FpUn: + addHRegUse(u, HRmRead, i->LAin.FpUnary.src); + addHRegUse(u, HRmWrite, i->LAin.FpUnary.dst); + break; + case LAin_FpBin: + addHRegUse(u, HRmRead, i->LAin.FpBinary.src2); + addHRegUse(u, HRmRead, i->LAin.FpBinary.src1); + addHRegUse(u, HRmWrite, i->LAin.FpBinary.dst); + break; + case LAin_FpTri: + addHRegUse(u, HRmRead, i->LAin.FpTrinary.src3); + addHRegUse(u, HRmRead, i->LAin.FpTrinary.src2); + addHRegUse(u, HRmRead, i->LAin.FpTrinary.src1); + addHRegUse(u, HRmWrite, i->LAin.FpTrinary.dst); + break; + case LAin_FpLoad: + addRegUsage_LOONGARCH64AMode(u, i->LAin.FpLoad.src); + addHRegUse(u, HRmWrite, i->LAin.FpLoad.dst); + break; + case LAin_FpStore: + addRegUsage_LOONGARCH64AMode(u, i->LAin.FpStore.dst); + addHRegUse(u, HRmRead, i->LAin.FpStore.src); + break; + case LAin_FpMove: + addHRegUse(u, HRmRead, i->LAin.FpMove.src); + addHRegUse(u, HRmWrite, i->LAin.FpMove.dst); + break; + case LAin_FpCmp: + addHRegUse(u, HRmRead, i->LAin.FpCmp.src2); + addHRegUse(u, HRmRead, i->LAin.FpCmp.src1); + addHRegUse(u, HRmWrite, i->LAin.FpCmp.dst); + break; + case LAin_Cas: + addHRegUse(u, HRmWrite, i->LAin.Cas.old); + addHRegUse(u, HRmRead, i->LAin.Cas.addr); + addHRegUse(u, HRmRead, i->LAin.Cas.expd); + addHRegUse(u, HRmModify, i->LAin.Cas.data); + break; + case LAin_Cmp: + addHRegUse(u, HRmRead, i->LAin.Cmp.src2); + addHRegUse(u, HRmRead, i->LAin.Cmp.src1); + addHRegUse(u, HRmWrite, i->LAin.Cmp.dst); + break; + case LAin_CMove: + addHRegUse(u, HRmRead, i->LAin.CMove.cond); + addHRegUse(u, HRmRead, i->LAin.CMove.r0); + addHRegUse(u, HRmRead, i->LAin.CMove.r1); + addHRegUse(u, HRmWrite, i->LAin.CMove.dst); + break; + case LAin_Call: + /* logic and comments copied/modified from mips and arm64 back end */ + /* This is a bit subtle. */ + /* First off, we need to consider the cond register. */ + if (!hregIsInvalid(i->LAin.Call.cond)) + addHRegUse(u, HRmRead, i->LAin.Call.cond); + /* Then, claim it trashes all the caller-saved regs + which fall within the register allocator's jurisdiction. */ + addHRegUse(u, HRmWrite, hregLOONGARCH64_R14()); + addHRegUse(u, HRmWrite, hregLOONGARCH64_R15()); + addHRegUse(u, HRmWrite, hregLOONGARCH64_R16()); + addHRegUse(u, HRmWrite, hregLOONGARCH64_R17()); + addHRegUse(u, HRmWrite, hregLOONGARCH64_R18()); + addHRegUse(u, HRmWrite, hregLOONGARCH64_R19()); + addHRegUse(u, HRmWrite, hregLOONGARCH64_R20()); + /* Now we have to state any parameter-carrying registers + which might be read. This depends on nArgRegs. */ + switch (i->LAin.Call.nArgRegs) { + case 8: addHRegUse(u, HRmRead, hregLOONGARCH64_R11()); /* fallthrough */ + case 7: addHRegUse(u, HRmRead, hregLOONGARCH64_R10()); /* fallthrough */ + case 6: addHRegUse(u, HRmRead, hregLOONGARCH64_R9()); /* fallthrough */ + case 5: addHRegUse(u, HRmRead, hregLOONGARCH64_R8()); /* fallthrough */ + case 4: addHRegUse(u, HRmRead, hregLOONGARCH64_R7()); /* fallthrough */ + case 3: addHRegUse(u, HRmRead, hregLOONGARCH64_R6()); /* fallthrough */ + case 2: addHRegUse(u, HRmRead, hregLOONGARCH64_R5()); /* fallthrough */ + case 1: addHRegUse(u, HRmRead, hregLOONGARCH64_R4()); /* fallthrough */ + case 0: break; + default: vpanic("getRegUsage_LOONGARCH64:Call:regparms"); break; + } + /* Finally, there is the issue that the insn trashes a + register because the literal target address has to be + loaded into a register. However, we reserve $t0 for that + purpose so there's no further complexity here. Stating $t0 + as trashed is pointless since it's not under the control + of the allocator, but what the hell. */ + addHRegUse(u, HRmWrite, hregT0()); + break; + /* XDirect/XIndir/XAssisted are also a bit subtle. They + conditionally exit the block. Hence we only need to list (1) + the registers that they read, and (2) the registers that they + write in the case where the block is not exited. (2) is + empty, hence only (1) is relevant here. */ + case LAin_XDirect: + addRegUsage_LOONGARCH64AMode(u, i->LAin.XDirect.amPC); + if (!hregIsInvalid(i->LAin.XDirect.cond)) + addHRegUse(u, HRmRead, i->LAin.XDirect.cond); + addHRegUse(u, HRmWrite, hregT0()); /* unavail to RA */ + break; + case LAin_XIndir: + addHRegUse(u, HRmRead, i->LAin.XIndir.dstGA); + addRegUsage_LOONGARCH64AMode(u, i->LAin.XIndir.amPC); + if (!hregIsInvalid(i->LAin.XIndir.cond)) + addHRegUse(u, HRmRead, i->LAin.XIndir.cond); + addHRegUse(u, HRmWrite, hregT0()); /* unavail to RA */ + break; + case LAin_XAssisted: + addHRegUse(u, HRmRead, i->LAin.XAssisted.dstGA); + addRegUsage_LOONGARCH64AMode(u, i->LAin.XAssisted.amPC); + if (!hregIsInvalid(i->LAin.XAssisted.cond)) + addHRegUse(u, HRmRead, i->LAin.XAssisted.cond); + addHRegUse(u, HRmWrite, hregT0()); /* unavail to RA */ + break; + case LAin_EvCheck: + /* We expect both amodes only to mention $r31, so this is in + fact pointless, since $r31 isn't allocatable, but anyway.. */ + addRegUsage_LOONGARCH64AMode(u, i->LAin.EvCheck.amCounter); + addRegUsage_LOONGARCH64AMode(u, i->LAin.EvCheck.amFailAddr); + addHRegUse(u, HRmWrite, hregT0()); /* unavail to RA */ + break; + case LAin_ProfInc: + /* Again, pointless to actually state these since neither + is available to RA. */ + addHRegUse(u, HRmWrite, hregT0()); /* unavail to RA */ + addHRegUse(u, HRmWrite, hregT1()); /* unavail to RA */ + break; + default: + ppLOONGARCH64Instr(i, mode64); + vpanic("getRegUsage_LOONGARCH64Instr"); + break; + } +} + +void mapRegs_LOONGARCH64Instr ( HRegRemap* m, LOONGARCH64Instr* i, + Bool mode64 ) +{ + vassert(mode64 == True); + switch (i->tag) { + case LAin_LI: + mapReg(m, &i->LAin.LI.dst); + break; + case LAin_Un: + mapReg(m, &i->LAin.Unary.src); + mapReg(m, &i->LAin.Unary.dst); + break; + case LAin_Bin: + mapRegs_LOONGARCH64RI(m, i->LAin.Binary.src2); + mapReg(m, &i->LAin.Binary.src1); + mapReg(m, &i->LAin.Binary.dst); + break; + case LAin_Load: + mapRegs_LOONGARCH64AMode(m, i->LAin.Load.src); + mapReg(m, &i->LAin.Load.dst); + break; + case LAin_Store: + mapRegs_LOONGARCH64AMode(m, i->LAin.Store.dst); + mapReg(m, &i->LAin.Store.src); + break; + case LAin_LLSC: + mapRegs_LOONGARCH64AMode(m, i->LAin.LLSC.addr); + mapReg(m, &i->LAin.LLSC.val); + break; + case LAin_Bar: + /* No regs. */ + break; + case LAin_FpUn: + mapReg(m, &i->LAin.FpUnary.src); + mapReg(m, &i->LAin.FpUnary.dst); + break; + case LAin_FpBin: + mapReg(m, &i->LAin.FpBinary.src2); + mapReg(m, &i->LAin.FpBinary.src1); + mapReg(m, &i->LAin.FpBinary.dst); + break; + case LAin_FpTri: + mapReg(m, &i->LAin.FpTrinary.src3); + mapReg(m, &i->LAin.FpTrinary.src2); + mapReg(m, &i->LAin.FpTrinary.src1); + mapReg(m, &i->LAin.FpTrinary.dst); + break; + case LAin_FpLoad: + mapRegs_LOONGARCH64AMode(m, i->LAin.FpLoad.src); + mapReg(m, &i->LAin.FpLoad.dst); + break; + case LAin_FpStore: + mapRegs_LOONGARCH64AMode(m, i->LAin.FpStore.dst); + mapReg(m, &i->LAin.FpStore.src); + break; + case LAin_FpMove: + mapReg(m, &i->LAin.FpMove.src); + mapReg(m, &i->LAin.FpMove.dst); + break; + case LAin_FpCmp: + mapReg(m, &i->LAin.FpCmp.src2); + mapReg(m, &i->LAin.FpCmp.src1); + mapReg(m, &i->LAin.FpCmp.dst); + break; + case LAin_Cas: + mapReg(m, &i->LAin.Cas.old); + mapReg(m, &i->LAin.Cas.addr); + mapReg(m, &i->LAin.Cas.expd); + mapReg(m, &i->LAin.Cas.data); + break; + case LAin_Cmp: + mapReg(m, &i->LAin.Cmp.src2); + mapReg(m, &i->LAin.Cmp.src1); + mapReg(m, &i->LAin.Cmp.dst); + break; + case LAin_CMove: + mapReg(m, &i->LAin.CMove.cond); + mapReg(m, &i->LAin.CMove.r0); + mapReg(m, &i->LAin.CMove.r1); + mapReg(m, &i->LAin.CMove.dst); + break; + case LAin_Call: + if (!hregIsInvalid(i->LAin.Call.cond)) + mapReg(m, &i->LAin.Call.cond); + /* Hardwires $r12. */ + break; + /* XDirect/XIndir/XAssisted are also a bit subtle. They + conditionally exit the block. Hence we only need to list (1) + the registers that they read, and (2) the registers that they + write in the case where the block is not exited. (2) is + empty, hence only (1) is relevant here. */ + case LAin_XDirect: + mapRegs_LOONGARCH64AMode(m, i->LAin.XDirect.amPC); + if (!hregIsInvalid(i->LAin.XDirect.cond)) + mapReg(m, &i->LAin.XDirect.cond); + break; + case LAin_XIndir: + mapReg(m, &i->LAin.XIndir.dstGA); + mapRegs_LOONGARCH64AMode(m, i->LAin.XIndir.amPC); + if (!hregIsInvalid(i->LAin.XIndir.cond)) + mapReg(m, &i->LAin.XIndir.cond); + break; + case LAin_XAssisted: + mapReg(m, &i->LAin.XAssisted.dstGA); + mapRegs_LOONGARCH64AMode(m, i->LAin.XAssisted.amPC); + if (!hregIsInvalid(i->LAin.XAssisted.cond)) + mapReg(m, &i->LAin.XAssisted.cond); + break; + case LAin_EvCheck: + /* We expect both amodes only to mention $r31, so this is in + fact pointless, since $r31 isn't allocatable, but anyway.. */ + mapRegs_LOONGARCH64AMode(m, i->LAin.EvCheck.amCounter); + mapRegs_LOONGARCH64AMode(m, i->LAin.EvCheck.amFailAddr); + break; + case LAin_ProfInc: + /* Hardwires $r12 and $r13 -- nothing to modify. */ + break; + default: + ppLOONGARCH64Instr(i, mode64); + vpanic("mapRegs_LOONGARCH64Instr"); + break; + } +} + +/* Generate loongarch64 spill instructions under the direction of the + register allocator. */ +void genSpill_LOONGARCH64 ( /*OUT*/ HInstr** i1, /*OUT*/ HInstr** i2, + HReg rreg, Int offsetB, Bool mode64 ) +{ + vassert(mode64 == True); + vassert(offsetB >= 0); + vassert(!hregIsVirtual(rreg)); + + LOONGARCH64AMode* am; + *i1 = *i2 = NULL; + am = LOONGARCH64AMode_RI(hregGSP(), offsetB); + + switch (hregClass(rreg)) { + case HRcInt64: + *i1 = LOONGARCH64Instr_Store(LAstore_ST_D, am, rreg); + break; + case HRcFlt64: + *i1 = LOONGARCH64Instr_FpStore(LAfpstore_FST_D, am, rreg); + break; + default: + ppHRegClass(hregClass(rreg)); + vpanic("genSpill_LOONGARCH64: unimplemented regclass"); + break; + } +} + +/* Generate loongarch64 reload instructions under the direction of the + register allocator. */ +void genReload_LOONGARCH64 ( /*OUT*/ HInstr** i1, /*OUT*/ HInstr** i2, + HReg rreg, Int offsetB, Bool mode64 ) +{ + vassert(mode64 == True); + vassert(offsetB >= 0); + vassert(!hregIsVirtual(rreg)); + + LOONGARCH64AMode* am; + *i1 = *i2 = NULL; + am = LOONGARCH64AMode_RI(hregGSP(), offsetB); + + switch (hregClass(rreg)) { + case HRcInt64: + *i1 = LOONGARCH64Instr_Load(LAload_LD_D, am, rreg); + break; + case HRcFlt64: + *i1 = LOONGARCH64Instr_FpLoad(LAfpload_FLD_D, am, rreg); + break; + default: + ppHRegClass(hregClass(rreg)); + vpanic("genReload_LOONGARCH64: unimplemented regclass"); + break; + } +} + +/* Generate loongarch64 move instructions under the direction of the + register allocator. */ +LOONGARCH64Instr* genMove_LOONGARCH64 ( HReg from, HReg to, Bool mode64 ) +{ + vassert(mode64 == True); + switch (hregClass(from)) { + case HRcInt64: + return LOONGARCH64Instr_Binary(LAbin_OR, + LOONGARCH64RI_R(hregZERO()), + from, to); + case HRcFlt64: + return LOONGARCH64Instr_FpMove(LAfpmove_FMOV_D, from, to); + default: + ppHRegClass(hregClass(from)); + vpanic("genMove_LOONGARCH64: unimplemented regclass"); + } +} + + +/* --------- The loongarch64 assembler --------- */ + +static inline UInt iregEnc ( HReg r ) +{ + vassert(hregClass(r) == HRcInt64); + vassert(!hregIsVirtual(r)); + UInt n = hregEncoding(r); + vassert(n < 32); + return n; +} + +static inline UInt fregEnc ( HReg r ) +{ + vassert(hregClass(r) == HRcFlt64); + vassert(!hregIsVirtual(r)); + UInt n = hregEncoding(r); + vassert(n < 32); + return n; +} + +static inline UInt fcsrEnc ( HReg r ) +{ + vassert(hregClass(r) == HRcInt32); + vassert(!hregIsVirtual(r)); + UInt n = hregEncoding(r); + vassert(n < 32); + return n; +} + +static inline UInt emit_op_rj_rd ( UInt op, UInt rj, UInt rd ) +{ + vassert(rj < (1 << 5)); + vassert(rd < (1 << 5)); + return op | (rj << 5) | rd; +} + +static inline UInt emit_op_rk_rj_rd ( UInt op, UInt rk, UInt rj, UInt rd ) +{ + vassert(rk < (1 << 5)); + vassert(rj < (1 << 5)); + vassert(rd < (1 << 5)); + return op | (rk << 10) | (rj << 5) | rd; +} + +static inline UInt emit_op_fj_fd ( UInt op, UInt fj, UInt fd ) +{ + vassert(fj < (1 << 5)); + vassert(fd < (1 << 5)); + return op | (fj << 5) | fd; +} + +static inline UInt emit_op_fa_fk_fj_fd ( UInt op, UInt fa, UInt fk, UInt fj, UInt fd ) +{ + vassert(fa < (1 << 5)); + vassert(fk < (1 << 5)); + vassert(fj < (1 << 5)); + vassert(fd < (1 << 5)); + return op | (fa << 15) | (fk << 10) | (fj << 5) | fd; +} + +static inline UInt emit_op_fk_fj_fd ( UInt op, UInt fk, UInt fj, UInt fd ) +{ + vassert(fk < (1 << 5)); + vassert(fj < (1 << 5)); + vassert(fd < (1 << 5)); + return op | (fk << 10) | (fj << 5) | fd; +} + +static inline UInt emit_op_ca_fk_fj_fd ( UInt op, UInt ca, UInt fk, UInt fj, UInt fd ) +{ + vassert(ca < (1 << 3)); + vassert(fk < (1 << 5)); + vassert(fj < (1 << 5)); + vassert(fd < (1 << 5)); + return op | (ca << 15) | (fk << 10) | (fj << 5) | fd; +} + +static inline UInt emit_op_fk_fj_cd ( UInt op, UInt fk, UInt fj, UInt cd ) +{ + vassert(fk < (1 << 5)); + vassert(fj < (1 << 5)); + vassert(cd < (1 << 3)); + return op | (fk << 10) | (fj << 5) | cd; +} + +static inline UInt emit_op_cj_rd ( UInt op, UInt cj, UInt rd ) +{ + vassert(cj < (1 << 3)); + vassert(rd < (1 << 5)); + return op | (cj << 5) | rd; +} + +static inline UInt emit_op_rj_cd ( UInt op, UInt rj, UInt cd ) +{ + vassert(rj < (1 << 5)); + vassert(cd < (1 << 3)); + return op | (rj << 5) | cd; +} + +static inline UInt emit_op_rj_fd ( UInt op, UInt rj, UInt fd ) +{ + vassert(rj < (1 << 5)); + vassert(fd < (1 << 5)); + return op | (rj << 5) | fd; +} + +static inline UInt emit_op_fj_rd ( UInt op, UInt fj, UInt rd ) +{ + vassert(fj < (1 << 5)); + vassert(rd < (1 << 5)); + return op | (fj << 5) | rd; +} + +static inline UInt emit_op_rj_fcsr ( UInt op, UInt rj, UInt fcsr ) +{ + vassert(rj < (1 << 5)); + vassert(fcsr < (1 << 5)); + return op | (rj << 5) | fcsr; +} + +static inline UInt emit_op_fcsr_rd ( UInt op, UInt fcsr, UInt rd ) +{ + vassert(fcsr < (1 << 5)); + vassert(rd < (1 << 5)); + return op | (fcsr << 5) | rd; +} + +static inline UInt emit_op_ui5_rj_rd ( UInt op, UInt ui5, UInt rj, UInt rd ) +{ + vassert(ui5 < (1 << 5)); + vassert(rj < (1 << 5)); + vassert(rd < (1 << 5)); + return op | (ui5 << 10) | (rj << 5) | rd; +} + +static inline UInt emit_op_ui6_rj_rd ( UInt op, UInt ui6, UInt rj, UInt rd ) +{ + vassert(ui6 < (1 << 6)); + vassert(rj < (1 << 5)); + vassert(rd < (1 << 5)); + return op | (ui6 << 10) | (rj << 5) | rd; +} + +static inline UInt emit_op_ui12_rj_rd ( UInt op, UInt ui12, UInt rj, UInt rd ) +{ + vassert(ui12 < (1 << 12)); + vassert(rj < (1 << 5)); + vassert(rd < (1 << 5)); + return op | (ui12 << 10) | (rj << 5) | rd; +} + +static inline UInt emit_op_si12_rj_rd ( UInt op, UInt si12, UInt rj, UInt rd ) +{ + vassert(si12 < (1 << 12)); + vassert(rj < (1 << 5)); + vassert(rd < (1 << 5)); + return op | (si12 << 10) | (rj << 5) | rd; +} + +static inline UInt emit_op_si14_rj_rd ( UInt op, UInt si14, UInt rj, UInt rd ) +{ + vassert(si14 < (1 << 14)); + vassert(rj < (1 << 5)); + vassert(rd < (1 << 5)); + return op | (si14 << 10) | (rj << 5) | rd; +} + +static inline UInt emit_op_si20_rd ( UInt op, UInt si20, UInt rd ) +{ + vassert(si20 < (1 << 20)); + vassert(rd < (1 << 5)); + return op | (si20 << 5) | rd; +} + +static inline UInt emit_op_offs16_rj_rd ( UInt op, UInt offs16, UInt rj, UInt rd ) +{ + vassert(offs16 < (1 << 16)); + vassert(rj < (1 << 5)); + vassert(rd < (1 << 5)); + return op | (offs16 << 10) | (rj << 5) | rd; +} + +static inline UInt emit_op_offs26 ( UInt op, UInt offs26 ) +{ + vassert(offs26 < (1 << 26)); + return op | ((offs26 & 0xffff) << 10) | (offs26 >> 16); +} + +static inline UInt emit_op_hint15 ( UInt op, UInt hint ) +{ + vassert(hint < (1 << 15)); + return op | hint; +} + +static UInt* mkLoadImm_EXACTLY4 ( UInt* p, HReg dst, ULong imm ) +{ + /* + lu12i.w dst, imm[31:12] + ori dst, dst, imm[11:0] + lu32i.d dst, imm[51:32] + lu52i.d dst, dst, imm[63:52] + */ + UInt d = iregEnc(dst); + *p++ = emit_op_si20_rd(LAextra_LU12I_W, (imm >> 12) & 0xfffff, d); + *p++ = emit_op_si12_rj_rd(LAbin_ORI, imm & 0xfff, d, d); + *p++ = emit_op_si20_rd(LAextra_LU32I_D, (imm >> 32) & 0xfffff, d); + *p++ = emit_op_si12_rj_rd(LAextra_LU52I_D, (imm >> 52) & 0xfff, d, d); + return p; +} + +static inline UInt* mkLoadImm_EXACTLY2 ( UInt* p, HReg dst, ULong imm ) +{ + /* + lu12i.w dst, imm[31:12] + ori dst, dst, imm[11:0] + */ + UInt d = iregEnc(dst); + *p++ = emit_op_si20_rd(LAextra_LU12I_W, (imm >> 12) & 0xfffff, d); + *p++ = emit_op_si12_rj_rd(LAbin_ORI, imm & 0xfff, d, d); + return p; +} + +static inline UInt* mkLoadImm_EXACTLY1 ( UInt* p, HReg dst, ULong imm ) +{ + /* ori dst, $zero, imm[11:0] */ + *p++ = emit_op_si12_rj_rd(LAbin_ORI, imm, 0, iregEnc(dst)); + return p; +} + +static UInt* mkLoadImm ( UInt* p, HReg dst, ULong imm ) +{ + if ((imm >> 12) == 0) + p = mkLoadImm_EXACTLY1(p, dst, imm); + else if (imm < 0x80000000 || (imm >> 31) == 0x1ffffffffUL) + p = mkLoadImm_EXACTLY2(p, dst, imm); + else + p = mkLoadImm_EXACTLY4(p, dst, imm); + return p; +} + +static Bool is_LoadImm_EXACTLY4 ( UInt* p, HReg dst, ULong imm ) +{ + UInt expect[4]; + mkLoadImm_EXACTLY4(expect, dst, imm); + return toBool(p[0] == expect[0] && p[1] == expect[1] && + p[2] == expect[2] && p[3] == expect[3]); +} + +static inline UInt* mkUnary ( UInt* p, LOONGARCH64UnOp op, HReg src, HReg dst ) +{ + switch (op) { + case LAun_CLZ_W: + case LAun_CTZ_W: + case LAun_CLZ_D: + case LAun_CTZ_D: + case LAun_EXT_W_H: + case LAun_EXT_W_B: + *p++ = emit_op_rj_rd(op, iregEnc(src), iregEnc(dst)); + return p; + default: + return NULL; + } +} + +static inline UInt* mkBinary ( UInt* p, LOONGARCH64BinOp op, + LOONGARCH64RI* src2, HReg src1, HReg dst ) +{ + switch (op) { + case LAbin_ADD_W: + case LAbin_ADD_D: + case LAbin_SUB_W: + case LAbin_SUB_D: + case LAbin_NOR: + case LAbin_AND: + case LAbin_OR: + case LAbin_XOR: + case LAbin_SLL_W: + case LAbin_SRL_W: + case LAbin_SRA_W: + case LAbin_SLL_D: + case LAbin_SRL_D: + case LAbin_SRA_D: + case LAbin_MUL_W: + case LAbin_MUL_D: + case LAbin_MULH_W: + case LAbin_MULH_WU: + case LAbin_MULH_D: + case LAbin_MULH_DU: + case LAbin_MULW_D_W: + case LAbin_MULW_D_WU: + case LAbin_DIV_W: + case LAbin_MOD_W: + case LAbin_DIV_WU: + case LAbin_MOD_WU: + case LAbin_DIV_D: + case LAbin_MOD_D: + case LAbin_DIV_DU: + case LAbin_MOD_DU: + vassert(src2->tag == LAri_Reg); + *p++ = emit_op_rk_rj_rd(op, iregEnc(src2->LAri.R.reg), + iregEnc(src1), iregEnc(dst)); + return p; + case LAbin_SLLI_W: + case LAbin_SRLI_W: + case LAbin_SRAI_W: + vassert(src2->tag == LAri_Imm); + *p++ = emit_op_ui5_rj_rd(op, src2->LAri.I.imm, + iregEnc(src1), iregEnc(dst)); + return p; + case LAbin_SLLI_D: + case LAbin_SRLI_D: + case LAbin_SRAI_D: + vassert(src2->tag == LAri_Imm); + *p++ = emit_op_ui6_rj_rd(op, src2->LAri.I.imm, + iregEnc(src1), iregEnc(dst)); + return p; + case LAbin_ADDI_W: + case LAbin_ADDI_D: + vassert(src2->tag == LAri_Imm); + *p++ = emit_op_si12_rj_rd(op, src2->LAri.I.imm, + iregEnc(src1), iregEnc(dst)); + return p; + case LAbin_ANDI: + case LAbin_ORI: + case LAbin_XORI: + vassert(src2->tag == LAri_Imm); + *p++ = emit_op_ui12_rj_rd(op, src2->LAri.I.imm, + iregEnc(src1), iregEnc(dst)); + return p; + default: + return NULL; + } +} + +static UInt* mkLoad ( UInt* p, LOONGARCH64LoadOp op, + LOONGARCH64AMode* src, HReg dst ) +{ + switch (op) { + case LAload_LD_W: + case LAload_LD_D: + case LAload_LD_BU: + case LAload_LD_HU: + case LAload_LD_WU: + vassert(src->tag == LAam_RI); + *p++ = emit_op_si12_rj_rd(op, src->LAam.RI.index, + iregEnc(src->LAam.RI.base), iregEnc(dst)); + return p; + case LAload_LDX_D: + case LAload_LDX_BU: + case LAload_LDX_HU: + case LAload_LDX_WU: + vassert(src->tag == LAam_RR); + *p++ = emit_op_rk_rj_rd(op, iregEnc(src->LAam.RR.index), + iregEnc(src->LAam.RR.base), iregEnc(dst)); + return p; + default: + return NULL; + } +} + +static UInt* mkStore ( UInt* p, LOONGARCH64StoreOp op, + LOONGARCH64AMode* dst, HReg src ) +{ + switch (op) { + case LAstore_ST_B: + case LAstore_ST_H: + case LAstore_ST_W: + case LAstore_ST_D: + vassert(dst->tag == LAam_RI); + *p++ = emit_op_si12_rj_rd(op, dst->LAam.RI.index, + iregEnc(dst->LAam.RI.base), iregEnc(src)); + return p; + case LAstore_STX_B: + case LAstore_STX_H: + case LAstore_STX_W: + case LAstore_STX_D: + vassert(dst->tag == LAam_RR); + *p++ = emit_op_rk_rj_rd(op, iregEnc(dst->LAam.RR.index), + iregEnc(dst->LAam.RR.base), iregEnc(src)); + return p; + default: + return NULL; + } +} + +static inline UInt* mkLLSC ( UInt* p, LOONGARCH64LLSCOp op, + LOONGARCH64AMode* addr, HReg val ) +{ + switch (op) { + case LAllsc_LL_W: + case LAllsc_SC_W: + case LAllsc_LL_D: + case LAllsc_SC_D: + vassert(addr->tag == LAam_RI); + *p++ = emit_op_si14_rj_rd(op, addr->LAam.RI.index, + iregEnc(addr->LAam.RI.base), iregEnc(val)); + return p; + default: + return NULL; + } +} + +static inline UInt* mkBar ( UInt* p, LOONGARCH64BarOp op, UShort hint ) +{ + switch (op) { + case LAbar_DBAR: + case LAbar_IBAR: + *p++ = emit_op_hint15(op, hint); + return p; + default: + return NULL; + } +} + +static inline UInt* mkFpUnary ( UInt* p, LOONGARCH64FpUnOp op, HReg src, HReg dst ) +{ + switch (op) { + case LAfpun_FABS_S: + case LAfpun_FABS_D: + case LAfpun_FNEG_S: + case LAfpun_FNEG_D: + case LAfpun_FLOGB_S: + case LAfpun_FLOGB_D: + case LAfpun_FSQRT_S: + case LAfpun_FSQRT_D: + case LAfpun_FRSQRT_S: + case LAfpun_FRSQRT_D: + case LAfpun_FCVT_S_D: + case LAfpun_FCVT_D_S: + case LAfpun_FTINT_W_S: + case LAfpun_FTINT_W_D: + case LAfpun_FTINT_L_S: + case LAfpun_FTINT_L_D: + case LAfpun_FFINT_S_W: + case LAfpun_FFINT_S_L: + case LAfpun_FFINT_D_W: + case LAfpun_FFINT_D_L: + case LAfpun_FRINT_S: + case LAfpun_FRINT_D: + *p++ = emit_op_fj_fd(op, fregEnc(src), fregEnc(dst)); + return p; + default: + return NULL; + } +} + +static inline UInt* mkFpBinary ( UInt* p, LOONGARCH64FpBinOp op, HReg src2, + HReg src1, HReg dst ) +{ + switch (op) { + case LAfpbin_FADD_S: + case LAfpbin_FADD_D: + case LAfpbin_FSUB_S: + case LAfpbin_FSUB_D: + case LAfpbin_FMUL_S: + case LAfpbin_FMUL_D: + case LAfpbin_FDIV_S: + case LAfpbin_FDIV_D: + case LAfpbin_FMAX_S: + case LAfpbin_FMAX_D: + case LAfpbin_FMIN_S: + case LAfpbin_FMIN_D: + case LAfpbin_FMAXA_S: + case LAfpbin_FMAXA_D: + case LAfpbin_FMINA_S: + case LAfpbin_FMINA_D: + case LAfpbin_FSCALEB_S: + case LAfpbin_FSCALEB_D: + *p++ = emit_op_fk_fj_fd(op, fregEnc(src2), fregEnc(src1), fregEnc(dst)); + return p; + default: + return NULL; + } +} + +static inline UInt* mkFpTrinary ( UInt* p, LOONGARCH64FpTriOp op, HReg src3, + HReg src2, HReg src1, HReg dst ) +{ + switch (op) { + case LAfpbin_FMADD_S: + case LAfpbin_FMADD_D: + case LAfpbin_FMSUB_S: + case LAfpbin_FMSUB_D: + *p++ = emit_op_fa_fk_fj_fd(op, fregEnc(src3), fregEnc(src2), + fregEnc(src1), fregEnc(dst)); + return p; + default: + return NULL; + } +} + +static inline UInt* mkFpLoad ( UInt* p, LOONGARCH64FpLoadOp op, + LOONGARCH64AMode* src, HReg dst ) +{ + switch (op) { + case LAfpload_FLD_S: + case LAfpload_FLD_D: + vassert(src->tag == LAam_RI); + *p++ = emit_op_si12_rj_rd(op, src->LAam.RI.index, + iregEnc(src->LAam.RI.base), fregEnc(dst)); + return p; + case LAfpload_FLDX_S: + case LAfpload_FLDX_D: + vassert(src->tag == LAam_RR); + *p++ = emit_op_rk_rj_rd(op, iregEnc(src->LAam.RR.index), + iregEnc(src->LAam.RR.base), fregEnc(dst)); + return p; + default: + return NULL; + } +} + +static inline UInt* mkFpStore ( UInt* p, LOONGARCH64FpStoreOp op, + LOONGARCH64AMode* dst, HReg src ) +{ + switch (op) { + case LAfpstore_FST_S: + case LAfpstore_FST_D: + vassert(dst->tag == LAam_RI); + *p++ = emit_op_si12_rj_rd(op, dst->LAam.RI.index, + iregEnc(dst->LAam.RI.base), fregEnc(src)); + return p; + case LAfpstore_FSTX_S: + case LAfpstore_FSTX_D: + vassert(dst->tag == LAam_RR); + *p++ = emit_op_rk_rj_rd(op, iregEnc(dst->LAam.RR.index), + iregEnc(dst->LAam.RR.base), fregEnc(src)); + return p; + default: + return NULL; + } +} + +static inline UInt* mkFpMove ( UInt* p, LOONGARCH64FpMoveOp op, HReg src, HReg dst ) +{ + switch (op) { + case LAfpmove_FMOV_S: + case LAfpmove_FMOV_D: + *p++ = emit_op_fj_fd(op, fregEnc(src), fregEnc(dst)); + return p; + case LAfpmove_MOVGR2FR_W: + case LAfpmove_MOVGR2FR_D: + *p++ = emit_op_rj_fd(op, iregEnc(src), fregEnc(dst)); + return p; + case LAfpmove_MOVFR2GR_S: + case LAfpmove_MOVFR2GR_D: + *p++ = emit_op_fj_rd(op, fregEnc(src), iregEnc(dst)); + return p; + case LAfpmove_MOVGR2FCSR: + *p++ = emit_op_rj_fcsr(op, iregEnc(src), fcsrEnc(dst)); + return p; + case LAfpmove_MOVFCSR2GR: + *p++ = emit_op_fcsr_rd(op, fcsrEnc(src), iregEnc(dst)); + return p; + default: + return NULL; + } +} + +static inline UInt* mkFpCmp ( UInt* p, LOONGARCH64FpCmpOp op, HReg src2, + HReg src1, HReg dst ) +{ + /* + fcmp.cond.[sd] $fcc0, src1, src2 + movcf2gr dst, $fcc0 + */ + switch (op) { + case LAfpcmp_FCMP_CLT_S: + case LAfpcmp_FCMP_CLT_D: + case LAfpcmp_FCMP_CEQ_S: + case LAfpcmp_FCMP_CEQ_D: + case LAfpcmp_FCMP_CUN_S: + case LAfpcmp_FCMP_CUN_D: + *p++ = emit_op_fk_fj_cd(op, fregEnc(src2), fregEnc(src1), 0); + *p++ = emit_op_cj_rd(LAextra_MOVCF2GR, 0, iregEnc(dst)); + return p; + default: + return NULL; + } +} + +static inline UInt* mkCas ( UInt* p, HReg old, HReg addr, HReg expd, + HReg data, Bool size64 ) +{ + /* + ll.[wd] old, addr, 0 + bne old, expd, barrier + or $t0, data, $zero + sc.[wd] $t0, addr, 0 + beq $t0, zero, fail + or old, expd, $zero + b end + barrier: + dbar 0 + fail: + or old, data, $zero + end: + */ + UInt o = iregEnc(old); + UInt a = iregEnc(addr); + UInt e = iregEnc(expd); + UInt d = iregEnc(data); + UInt t = 12; + UInt z = 0; + + if (size64) { + *p++ = emit_op_si14_rj_rd(LAllsc_LL_D, 0, a, o); + } else { + *p++ = emit_op_ui6_rj_rd(LAbin_SLLI_W, 0, e, e); // Sign-extend expd + *p++ = emit_op_si14_rj_rd(LAllsc_LL_W, 0, a, o); + } + *p++ = emit_op_offs16_rj_rd(LAextra_BNE, 6, o, e); + *p++ = emit_op_rk_rj_rd(LAbin_OR, z, d, t); + if (size64) { + *p++ = emit_op_si14_rj_rd(LAllsc_SC_D, 0, a, t); + } else { + *p++ = emit_op_si14_rj_rd(LAllsc_SC_W, 0, a, t); + } + *p++ = emit_op_offs16_rj_rd(LAextra_BEQ, 4, t, z); + *p++ = emit_op_rk_rj_rd(LAbin_OR, z, e, o); + *p++ = emit_op_offs26(LAextra_B, 3); + *p++ = emit_op_hint15(LAbar_DBAR, 0); + *p++ = emit_op_rk_rj_rd(LAbin_OR, z, d, o); + return p; +} + +static inline UInt* mkCmp ( UInt* p, LOONGARCH64CondCode cond, + HReg src2, HReg src1, HReg dst ) +{ + UInt d = iregEnc(dst); + UInt s1 = iregEnc(src1); + UInt s2 = iregEnc(src2); + + switch (cond) { + case LAcc_EQ: + /* + xor dst, src1, src2 + sltui dst, dst, 1 + */ + *p++ = emit_op_rk_rj_rd(LAbin_XOR, s2, s1, d); + *p++ = emit_op_si12_rj_rd(LAextra_SLTUI, 1, d, d); + return p; + case LAcc_NE: + /* + xor dst, src1, src2 + sltu dst, $zero, dst + */ + *p++ = emit_op_rk_rj_rd(LAbin_XOR, s2, s1, d); + *p++ = emit_op_rk_rj_rd(LAextra_SLTU, d, 0, d); + return p; + case LAcc_LT: + /* slt dst, src1, src2 */ + *p++ = emit_op_rk_rj_rd(LAextra_SLT, s2, s1, d); + return p; + case LAcc_GE: + /* + slt dst, src1, src2 + sltui dst, dst, 1 + */ + *p++ = emit_op_rk_rj_rd(LAextra_SLT, s2, s1, d); + *p++ = emit_op_si12_rj_rd(LAextra_SLTUI, 1, d, d); + return p; + case LAcc_LTU: + /* sltu dst, src1, src2 */ + *p++ = emit_op_rk_rj_rd(LAextra_SLTU, s2, s1, d); + return p; + case LAcc_GEU: + /* + sltu dst, src1, src2 + sltui dst, dst, 1 + */ + *p++ = emit_op_rk_rj_rd(LAextra_SLTU, s2, s1, d); + *p++ = emit_op_si12_rj_rd(LAextra_SLTUI, 1, d, d); + return p; + /* No LAcc_AL here. + case LAcc_AL: + break; + */ + default: + return NULL; + } +} + +static inline UInt* mkCMove ( UInt* p, HReg cond, HReg r0, + HReg r1, HReg dst, Bool isInt ) +{ + if (isInt) { + /* + masknez $t0, r0, cond + maskeqz dst, r1, cond + or dst, $t0, dst + */ + UInt c = iregEnc(cond); + UInt d = iregEnc(dst); + *p++ = emit_op_rk_rj_rd(LAextra_MASKNEZ, c, iregEnc(r0), 12); + *p++ = emit_op_rk_rj_rd(LAextra_MASKEQZ, c, iregEnc(r1), d); + *p++ = emit_op_rk_rj_rd(LAbin_OR, d, 12, d); + } else { + /* + movgr2cf $fcc0, cond + fsel dst, r0, r1, $fcc0 + */ + *p++ = emit_op_rj_cd(LAextra_MOVGR2CF, iregEnc(cond), 0); + *p++ = emit_op_ca_fk_fj_fd(LAextra_FSEL, 0, fregEnc(r1), + fregEnc(r0), fregEnc(dst)); + } + return p; +} + +static inline UInt* mkCall ( UInt* p, HReg cond, Addr64 target, RetLoc rloc ) +{ + if (!hregIsInvalid(cond) && rloc.pri != RLPri_None) { + /* The call might not happen (it isn't unconditional) and + it returns a result. In this case we will need to + generate a control flow diamond to put 0x555..555 in + the return register(s) in the case where the call + doesn't happen. If this ever becomes necessary, maybe + copy code from the 32-bit ARM equivalent. Until that + day, just give up. */ + return NULL; + } + + UInt* ptmp = NULL; + if (!hregIsInvalid(cond)) { + /* Create a hole to put a conditional branch in. We'll + patch it once we know the branch length. */ + ptmp = p; + p++; + } + + /* + $t0 = target + jirl $ra, $t0, 0 + */ + p = mkLoadImm(p, hregT0(), target); + *p++ = emit_op_offs16_rj_rd(LAextra_JIRL, 0, 12, 1); + + /* Patch the hole if necessary */ + if (!hregIsInvalid(cond)) { + vassert(ptmp != NULL); + UInt offs = (UInt)(p - ptmp); + vassert(offs >= 3 && offs <= 6); + /* beq cond, $zero, offs */ + *ptmp++ = emit_op_offs16_rj_rd(LAextra_BEQ, offs, iregEnc(cond), 0); + } + + return p; +} + +static inline UInt* mkXDirect ( UInt* p, Addr64 dstGA, + LOONGARCH64AMode* amPC, + HReg cond, Bool toFastEP, + const void* disp_cp_chain_me_to_slowEP, + const void* disp_cp_chain_me_to_fastEP ) +{ + /* NB: what goes on here has to be very closely coordinated + with chainXDirect_LOONGARCH64 and unchainXDirect_LOONGARCH64 below. */ + /* We're generating chain-me requests here, so we need to be + sure this is actually allowed -- no-redir translations + can't use chain-me's. Hence: */ + vassert(disp_cp_chain_me_to_slowEP != NULL); + vassert(disp_cp_chain_me_to_fastEP != NULL); + + /* Use ptmp for backpatching conditional jumps. */ + UInt* ptmp = NULL; + + /* First off, if this is conditional, create a conditional + jump over the rest of it. Or at least, leave a space for + it that we will shortly fill in. */ + if (!hregIsInvalid(cond)) { + ptmp = p; + p++; + } + + /* Update the guest PC. + $t0 = dstGA + st.d $t0, amPC + */ + p = mkLoadImm(p, hregT0(), (ULong)dstGA); + p = mkStore(p, LAstore_ST_D, amPC, hregT0()); + + /* --- FIRST PATCHABLE BYTE follows --- */ + /* VG_(disp_cp_chain_me_to_{slowEP,fastEP}) (where we're + calling to) backs up the return address, so as to find the + address of the first patchable byte. So: don't change the + number of instructions (5) below. */ + /* + la $t0, VG_(disp_cp_chain_me_to_{slowEP,fastEP}) + jirl $ra, $t0, 0 + */ + const void* disp_cp_chain_me = toFastEP ? disp_cp_chain_me_to_fastEP + : disp_cp_chain_me_to_slowEP; + p = mkLoadImm_EXACTLY4(p, hregT0(), (ULong)(Addr)disp_cp_chain_me); + *p++ = emit_op_offs16_rj_rd(LAextra_JIRL, 0, 12, 1); + /* --- END of PATCHABLE BYTES --- */ + + /* Fix up the conditional jump, if there was one. */ + if (!hregIsInvalid(cond)) { + vassert(ptmp != NULL); + UInt offs = (UInt)(p - ptmp); + vassert(offs >= 8 && offs <= 11); + /* beq cond, $zero, offs */ + *ptmp++ = emit_op_offs16_rj_rd(LAextra_BEQ, offs, iregEnc(cond), 0); + } + + return p; +} + +static inline UInt* mkXIndir ( UInt* p, HReg dstGA, LOONGARCH64AMode* amPC, + HReg cond, const void* disp_cp_xindir ) +{ + /* We're generating transfers that could lead indirectly to a + chain-me, so we need to be sure this is actually allowed -- + no-redir translations are not allowed to reach normal + translations without going through the scheduler. That means + no XDirects or XIndirs out from no-redir translations. + Hence: */ + vassert(disp_cp_xindir != NULL); + + /* Use ptmp for backpatching conditional jumps. */ + UInt* ptmp = NULL; + + /* First off, if this is conditional, create a conditional + jump over the rest of it. */ + if (!hregIsInvalid(cond)) { + ptmp = p; + p++; + } + + /* Update the guest PC. + or $t0, dstGA, $zero + st.d $t0, amPC + */ + *p++ = emit_op_rk_rj_rd(LAbin_OR, 0, iregEnc(dstGA), 12); + p = mkStore(p, LAstore_ST_D, amPC, hregT0()); + + /* + la $t0, VG_(disp_cp_xindir) + jirl $ra, $t0, 0 + */ + p = mkLoadImm(p, hregT0(), (ULong)(Addr)disp_cp_xindir); + *p++ = emit_op_offs16_rj_rd(LAextra_JIRL, 0, 12, 1); + + /* Fix up the conditional jump, if there was one. */ + if (!hregIsInvalid(cond)) { + vassert(ptmp != NULL); + UInt offs = (UInt)(p - ptmp); + vassert(offs >= 5 && offs <= 8); + /* beq cond, $zero, offs */ + *ptmp++ = emit_op_offs16_rj_rd(LAextra_BEQ, offs, iregEnc(cond), 0); + } + + return p; +} + +static inline UInt* mkXAssisted ( UInt* p, HReg dstGA, LOONGARCH64AMode* amPC, + HReg cond, IRJumpKind jk, + const void* disp_cp_xassisted ) +{ + /* First off, if this is conditional, create a conditional jump + over the rest of it. Or at least, leave a space for it that + we will shortly fill in. */ + UInt* ptmp = NULL; + if (!hregIsInvalid(cond)) { + ptmp = p; + p++; + } + + /* Update the guest PC. + or $t0, dstGA, $zero + st.d $t0, amPC + */ + *p++ = emit_op_rk_rj_rd(LAbin_OR, 0, iregEnc(dstGA), 12); + p = mkStore(p, LAstore_ST_D, amPC, hregT0()); + + /* li.w $s8, magic_number */ + UInt trcval = 0; + switch (jk) { + case Ijk_Boring: + trcval = VEX_TRC_JMP_BORING; + break; + case Ijk_ClientReq: + trcval = VEX_TRC_JMP_CLIENTREQ; + break; + case Ijk_NoDecode: + trcval = VEX_TRC_JMP_NODECODE; + break; + case Ijk_InvalICache: + trcval = VEX_TRC_JMP_INVALICACHE; + break; + case Ijk_NoRedir: + trcval = VEX_TRC_JMP_NOREDIR; + break; + case Ijk_SigTRAP: + trcval = VEX_TRC_JMP_SIGTRAP; + break; + case Ijk_SigSEGV: + trcval = VEX_TRC_JMP_SIGSEGV; + break; + case Ijk_SigBUS: + trcval = VEX_TRC_JMP_SIGBUS; + break; + case Ijk_SigFPE_IntDiv: + trcval = VEX_TRC_JMP_SIGFPE_INTDIV; + break; + case Ijk_SigFPE_IntOvf: + trcval = VEX_TRC_JMP_SIGFPE_INTOVF; + break; + case Ijk_SigSYS: + trcval = VEX_TRC_JMP_SIGSYS; + break; + case Ijk_Sys_syscall: + trcval = VEX_TRC_JMP_SYS_SYSCALL; + break; + /* We don't expect to see the following being assisted. + case Ijk_Call: + case Ijk_Ret: + case Ijk_Yield: + case Ijk_EmWarn: + case Ijk_EmFail: + case Ijk_MapFail: + case Ijk_FlushDCache: + case Ijk_SigILL: + case Ijk_SigFPE: + case Ijk_Sys_int32: + case Ijk_Sys_int128: + case Ijk_Sys_int129: + case Ijk_Sys_int130: + case Ijk_Sys_int145: + case Ijk_Sys_int210: + case Ijk_Sys_sysenter: + */ + default: + ppIRJumpKind(jk); + vpanic("emit_LOONGARCH64Instr.LAin_XAssisted: unexpected jump kind"); + } + vassert(trcval != 0); + p = mkLoadImm(p, hregGSP(), trcval); + + /* + la $t0, VG_(disp_cp_xassisted) + jirl $ra, $t0, 0 + */ + p = mkLoadImm(p, hregT0(), (ULong)(Addr)disp_cp_xassisted); + *p++ = emit_op_offs16_rj_rd(LAextra_JIRL, 0, 12, 1); + + /* Fix up the conditional jump, if there was one. */ + if (!hregIsInvalid(cond)) { + vassert(ptmp != NULL); + UInt offs = (UInt)(p - ptmp); + vassert(offs >= 6 && offs <= 12); + /* beq cond, $zero, offs */ + *ptmp++ = emit_op_offs16_rj_rd(LAextra_BEQ, offs, iregEnc(cond), 0); + } + + return p; +} + +static inline UInt* mkEvCheck ( UInt* p, LOONGARCH64AMode* amCounter, + LOONGARCH64AMode* amFailAddr ) +{ + UInt* p0 = p; + + /* + ld.w $t0, amCounter + addi.d $t0, $t0, -1 + st.w $t0, amCounter + bge $t0, $zero, nofail + ld.d $t0, amFailAddr + jirl $ra, $t0, 0 + nofail: + */ + p = mkLoad(p, LAload_LD_W, amCounter, hregT0()); + *p++ = emit_op_si12_rj_rd(LAbin_ADDI_D, -1 & 0xfff, 12, 12); + p = mkStore(p, LAstore_ST_W, amCounter, hregT0()); + *p++ = emit_op_offs16_rj_rd(LAextra_BGE, 3, 12, 0); + p = mkLoad(p, LAload_LD_W, amFailAddr, hregT0()); + *p++ = emit_op_offs16_rj_rd(LAextra_JIRL, 0, 12, 1); + + /* Crosscheck */ + vassert(evCheckSzB_LOONGARCH64() == (UChar*)p - (UChar*)p0); + return p; +} + +static inline UInt* mkProfInc ( UInt* p ) +{ + /* + li $t0, 0x6555755585559555UL + ld.d $t1, $t0, 0 + addi.d $t1, $t1, 1 + st.d $t1, $t0, 0 + */ + p = mkLoadImm_EXACTLY4(p, hregT0(), 0x6555755585559555UL); + *p++ = emit_op_si12_rj_rd(LAload_LD_D, 0, 12, 13); + *p++ = emit_op_si12_rj_rd(LAbin_ADDI_D, 1, 13, 13); + *p++ = emit_op_si12_rj_rd(LAstore_ST_D, 0, 12, 13); + return p; +} + +/* Emit an instruction into buf and return the number of bytes used. + Note that buf is not the insn's final place, and therefore it is + imperative to emit position-independent code. If the emitted + instruction was a profiler inc, set *is_profInc to True, else + leave it unchanged. */ +Int emit_LOONGARCH64Instr ( /*MB_MOD*/Bool* is_profInc, + UChar* buf, + Int nbuf, + const LOONGARCH64Instr* i, + Bool mode64, + VexEndness endness_host, + const void* disp_cp_chain_me_to_slowEP, + const void* disp_cp_chain_me_to_fastEP, + const void* disp_cp_xindir, + const void* disp_cp_xassisted ) +{ + vassert(mode64 == True); + + UInt* p = (UInt*)buf; + vassert(nbuf >= 32); + vassert((((HWord)buf) & 3) == 0); + + switch (i->tag) { + case LAin_LI: + p = mkLoadImm(p, i->LAin.LI.dst, i->LAin.LI.imm); + break; + case LAin_Un: + p = mkUnary(p, i->LAin.Unary.op, i->LAin.Unary.src, + i->LAin.Unary.dst); + break; + case LAin_Bin: + p = mkBinary(p, i->LAin.Binary.op, i->LAin.Binary.src2, + i->LAin.Binary.src1, i->LAin.Binary.dst); + break; + case LAin_Load: + p = mkLoad(p, i->LAin.Load.op, i->LAin.Load.src, + i->LAin.Load.dst); + break; + case LAin_Store: + p = mkStore(p, i->LAin.Store.op, i->LAin.Store.dst, + i->LAin.Store.src); + break; + case LAin_LLSC: + p = mkLLSC(p, i->LAin.LLSC.op, i->LAin.LLSC.addr, i->LAin.LLSC.val); + break; + case LAin_Bar: + p = mkBar(p, i->LAin.Bar.op, i->LAin.Bar.hint); + break; + case LAin_FpUn: + p = mkFpUnary(p, i->LAin.FpUnary.op, i->LAin.FpUnary.src, + i->LAin.FpUnary.dst); + break; + case LAin_FpBin: + p = mkFpBinary(p, i->LAin.FpBinary.op, i->LAin.FpBinary.src2, + i->LAin.FpBinary.src1, i->LAin.FpBinary.dst); + break; + case LAin_FpTri: + p = mkFpTrinary(p, i->LAin.FpTrinary.op, i->LAin.FpTrinary.src3, + i->LAin.FpTrinary.src2, i->LAin.FpTrinary.src1, + i->LAin.FpTrinary.dst); + break; + case LAin_FpLoad: + p = mkFpLoad(p, i->LAin.FpLoad.op, i->LAin.FpLoad.src, + i->LAin.FpLoad.dst); + break; + case LAin_FpStore: + p = mkFpStore(p, i->LAin.FpStore.op, i->LAin.FpStore.dst, + i->LAin.FpStore.src); + break; + case LAin_FpMove: + p = mkFpMove(p, i->LAin.FpMove.op, i->LAin.FpMove.src, + i->LAin.FpMove.dst); + break; + case LAin_FpCmp: + p = mkFpCmp(p, i->LAin.FpCmp.op, i->LAin.FpCmp.src2, + i->LAin.FpCmp.src1, i->LAin.FpCmp.dst); + break; + case LAin_Cas: + p = mkCas(p, i->LAin.Cas.old, i->LAin.Cas.addr, i->LAin.Cas.expd, + i->LAin.Cas.data, i->LAin.Cas.size64); + break; + case LAin_Cmp: + p = mkCmp(p, i->LAin.Cmp.cond, i->LAin.Cmp.src2, + i->LAin.Cmp.src1, i->LAin.Cmp.dst); + break; + case LAin_CMove: + p = mkCMove(p, i->LAin.CMove.cond, i->LAin.CMove.r0, + i->LAin.CMove.r1, i->LAin.CMove.dst, + i->LAin.CMove.isInt); + break; + case LAin_Call: + p = mkCall(p, i->LAin.Call.cond, i->LAin.Call.target, + i->LAin.Call.rloc); + break; + case LAin_XDirect: + p = mkXDirect(p, i->LAin.XDirect.dstGA, i->LAin.XDirect.amPC, + i->LAin.XDirect.cond, i->LAin.XDirect.toFastEP, + disp_cp_chain_me_to_slowEP, + disp_cp_chain_me_to_fastEP); + break; + case LAin_XIndir: + p = mkXIndir(p, i->LAin.XIndir.dstGA, i->LAin.XIndir.amPC, + i->LAin.XIndir.cond, disp_cp_xindir); + break; + case LAin_XAssisted: + p = mkXAssisted(p, i->LAin.XAssisted.dstGA, i->LAin.XAssisted.amPC, + i->LAin.XAssisted.cond, i->LAin.XAssisted.jk, + disp_cp_xassisted); + break; + case LAin_EvCheck: + p = mkEvCheck(p, i->LAin.EvCheck.amCounter, + i->LAin.EvCheck.amFailAddr); + break; + case LAin_ProfInc: + p = mkProfInc(p); + break; + default: + p = NULL; + break; + } + + if (p == NULL) { + ppLOONGARCH64Instr(i, True); + vpanic("emit_LOONGARCH64Instr"); + /*NOTREACHED*/ + } + + vassert(((UChar*)p) - &buf[0] <= 48); + return ((UChar*)p) - &buf[0]; +} + +/* How big is an event check? See case for mkEvCheck just above. That + crosschecks what this returns, so we can tell if we're inconsistent. */ +Int evCheckSzB_LOONGARCH64 ( void ) +{ + return 6 * 4; // 6 insns +} + +/* NB: what goes on here has to be very closely coordinated with the + emitInstr case for XDirect, above. */ +VexInvalRange chainXDirect_LOONGARCH64 ( VexEndness endness_host, + void* place_to_chain, + const void* disp_cp_chain_me_EXPECTED, + const void* place_to_jump_to ) +{ + vassert(endness_host == VexEndnessLE); + + /* What we're expecting to see is: + * la $t0, disp_cp_chain_me_to_EXPECTED + * jirl $ra, $t0, 0 + * viz + * <16 bytes generated by mkLoadImm_EXACTLY4> + * jirl $ra, $t0, 0 + */ + UInt* p = (UInt*)place_to_chain; + vassert(((HWord)p & 3) == 0); + vassert(is_LoadImm_EXACTLY4(p, hregT0(), (ULong)(Addr)disp_cp_chain_me_EXPECTED)); + vassert(p[4] == emit_op_offs16_rj_rd(LAextra_JIRL, 0, 12, 1)); + + /* And what we want to change it to is: + * la $t0, place_to_jump_to + * jirl $ra, $t0, 0 + * viz + * <16 bytes generated by mkLoadImm_EXACTLY4> + * jirl $ra, $t0, 0 + * + * The replacement has the same length as the original. + */ + p = mkLoadImm_EXACTLY4(p, hregT0(), (ULong)(Addr)place_to_jump_to); + *p++ = emit_op_offs16_rj_rd(LAextra_JIRL, 0, 12, 1); + + VexInvalRange vir = { (HWord)place_to_chain, 4 * 4 + 4 }; + return vir; +} + +/* NB: what goes on here has to be very closely coordinated with the + emitInstr case for XDirect, above. */ +VexInvalRange unchainXDirect_LOONGARCH64 ( VexEndness endness_host, + void* place_to_unchain, + const void* place_to_jump_to_EXPECTED, + const void* disp_cp_chain_me ) +{ + vassert(endness_host == VexEndnessLE); + + /* What we're expecting to see is: + * la $t0, place_to_jump_to_EXPECTED + * jirl $ra, $t0, 0 + * viz + * <16 bytes generated by mkLoadImm_EXACTLY4> + * jirl $ra, $t0, 0 + */ + UInt* p = (UInt*)place_to_unchain; + vassert(((HWord)p & 3) == 0); + vassert(is_LoadImm_EXACTLY4(p, hregT0(), (ULong)(Addr)place_to_jump_to_EXPECTED)); + vassert(p[4] == emit_op_offs16_rj_rd(LAextra_JIRL, 0, 12, 1)); + + /* And what we want to change it to is: + * la $t0, disp_cp_chain_me + * jirl $ra, $t0, 0 + * viz + * <16 bytes generated by mkLoadImm_EXACTLY4> + * jirl $ra, $t0, 0 + * + * The replacement has the same length as the original. + */ + p = mkLoadImm_EXACTLY4(p, hregT0(), (ULong)(Addr)disp_cp_chain_me); + *p++ = emit_op_offs16_rj_rd(LAextra_JIRL, 0, 12, 1); + + VexInvalRange vir = { (HWord)place_to_unchain, 4 * 4 + 4 }; + return vir; +} + +/* Patch the counter address into a profile inc point, as previously + created by the mkProfInc. */ +VexInvalRange patchProfInc_LOONGARCH64 ( VexEndness endness_host, + void* place_to_patch, + const ULong* location_of_counter ) +{ + vassert(endness_host == VexEndnessLE); + vassert(sizeof(ULong*) == 8); + + /* + $t0 = NotKnownYet + ld.d $t1, $t0, 0 + addi.d $t1, $t1, 1 + st.d $t1, $t0, 0 + */ + UInt* p = (UInt*)place_to_patch; + vassert(((HWord)p & 3) == 0); + vassert(is_LoadImm_EXACTLY4(p, hregT0(), 0x6555755585559555UL)); + vassert(p[4] == emit_op_si12_rj_rd(LAload_LD_D, 0, 12, 13)); + vassert(p[5] == emit_op_si12_rj_rd(LAbin_ADDI_D, 1, 13, 13)); + vassert(p[6] == emit_op_si12_rj_rd(LAstore_ST_D, 0, 12, 13)); + + p = mkLoadImm_EXACTLY4(p, hregT0(), (ULong)(Addr)location_of_counter); + + VexInvalRange vir = { (HWord)place_to_patch, 4 * 4 }; + return vir; +} + + +/*---------------------------------------------------------------*/ +/*--- end host_loongarch64_defs.c ---*/ +/*---------------------------------------------------------------*/ diff --git a/VEX/priv/host_loongarch64_defs.h b/VEX/priv/host_loongarch64_defs.h new file mode 100644 index 0000000..56945f0 --- /dev/null +++ b/VEX/priv/host_loongarch64_defs.h @@ -0,0 +1,685 @@ + +/*---------------------------------------------------------------*/ +/*--- begin host_loongarch64_defs.h ---*/ +/*---------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2021-2022 Loongson Technology Corporation Limited + + This program 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 2 of the + License, or (at your option) any later version. + + This program 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 this program; if not, see . + + The GNU General Public License is contained in the file COPYING. +*/ + +#ifndef __VEX_HOST_LOONGARCH64_DEFS_H +#define __VEX_HOST_LOONGARCH64_DEFS_H + +#include "libvex_basictypes.h" +#include "libvex.h" /* VexArch */ +#include "host_generic_regs.h" /* HReg */ + + +/* --------- Registers. --------- */ + +#define ST_IN static inline + +/* Integer static registers */ +ST_IN HReg hregLOONGARCH64_R23 ( void ) { return mkHReg(False, HRcInt64, 23, 0); } +ST_IN HReg hregLOONGARCH64_R24 ( void ) { return mkHReg(False, HRcInt64, 24, 1); } +ST_IN HReg hregLOONGARCH64_R25 ( void ) { return mkHReg(False, HRcInt64, 25, 2); } +ST_IN HReg hregLOONGARCH64_R26 ( void ) { return mkHReg(False, HRcInt64, 26, 3); } +ST_IN HReg hregLOONGARCH64_R27 ( void ) { return mkHReg(False, HRcInt64, 27, 4); } +ST_IN HReg hregLOONGARCH64_R28 ( void ) { return mkHReg(False, HRcInt64, 28, 5); } +ST_IN HReg hregLOONGARCH64_R29 ( void ) { return mkHReg(False, HRcInt64, 29, 6); } +ST_IN HReg hregLOONGARCH64_R30 ( void ) { return mkHReg(False, HRcInt64, 30, 7); } +/* $r31 is used as guest stack pointer */ + +/* Integer temporary registers */ +/* $r12 is used as a chaining/ProfInc/Cmove temporary */ +/* $r13 is used as a ProfInc temporary */ +ST_IN HReg hregLOONGARCH64_R14 ( void ) { return mkHReg(False, HRcInt64, 14, 8); } +ST_IN HReg hregLOONGARCH64_R15 ( void ) { return mkHReg(False, HRcInt64, 15, 9); } +ST_IN HReg hregLOONGARCH64_R16 ( void ) { return mkHReg(False, HRcInt64, 16, 10); } +ST_IN HReg hregLOONGARCH64_R17 ( void ) { return mkHReg(False, HRcInt64, 17, 11); } +ST_IN HReg hregLOONGARCH64_R18 ( void ) { return mkHReg(False, HRcInt64, 18, 12); } +ST_IN HReg hregLOONGARCH64_R19 ( void ) { return mkHReg(False, HRcInt64, 19, 13); } +ST_IN HReg hregLOONGARCH64_R20 ( void ) { return mkHReg(False, HRcInt64, 20, 14); } + +/* Floating point static registers */ +ST_IN HReg hregLOONGARCH64_F24 ( void ) { return mkHReg(False, HRcFlt64, 24, 15); } +ST_IN HReg hregLOONGARCH64_F25 ( void ) { return mkHReg(False, HRcFlt64, 25, 16); } +ST_IN HReg hregLOONGARCH64_F26 ( void ) { return mkHReg(False, HRcFlt64, 26, 17); } +ST_IN HReg hregLOONGARCH64_F27 ( void ) { return mkHReg(False, HRcFlt64, 27, 18); } +ST_IN HReg hregLOONGARCH64_F28 ( void ) { return mkHReg(False, HRcFlt64, 28, 19); } +ST_IN HReg hregLOONGARCH64_F29 ( void ) { return mkHReg(False, HRcFlt64, 29, 20); } +ST_IN HReg hregLOONGARCH64_F30 ( void ) { return mkHReg(False, HRcFlt64, 30, 21); } +ST_IN HReg hregLOONGARCH64_F31 ( void ) { return mkHReg(False, HRcFlt64, 31, 22); } + +/* Other Integer registers */ +ST_IN HReg hregLOONGARCH64_R0 ( void ) { return mkHReg(False, HRcInt64, 0, 23); } +ST_IN HReg hregLOONGARCH64_R1 ( void ) { return mkHReg(False, HRcInt64, 1, 24); } +ST_IN HReg hregLOONGARCH64_R2 ( void ) { return mkHReg(False, HRcInt64, 2, 25); } +ST_IN HReg hregLOONGARCH64_R3 ( void ) { return mkHReg(False, HRcInt64, 3, 26); } +ST_IN HReg hregLOONGARCH64_R4 ( void ) { return mkHReg(False, HRcInt64, 4, 27); } +ST_IN HReg hregLOONGARCH64_R5 ( void ) { return mkHReg(False, HRcInt64, 5, 28); } +ST_IN HReg hregLOONGARCH64_R6 ( void ) { return mkHReg(False, HRcInt64, 6, 29); } +ST_IN HReg hregLOONGARCH64_R7 ( void ) { return mkHReg(False, HRcInt64, 7, 30); } +ST_IN HReg hregLOONGARCH64_R8 ( void ) { return mkHReg(False, HRcInt64, 8, 31); } +ST_IN HReg hregLOONGARCH64_R9 ( void ) { return mkHReg(False, HRcInt64, 9, 32); } +ST_IN HReg hregLOONGARCH64_R10 ( void ) { return mkHReg(False, HRcInt64, 10, 33); } +ST_IN HReg hregLOONGARCH64_R11 ( void ) { return mkHReg(False, HRcInt64, 11, 34); } +ST_IN HReg hregLOONGARCH64_R12 ( void ) { return mkHReg(False, HRcInt64, 12, 35); } +ST_IN HReg hregLOONGARCH64_R13 ( void ) { return mkHReg(False, HRcInt64, 13, 36); } +ST_IN HReg hregLOONGARCH64_R21 ( void ) { return mkHReg(False, HRcInt64, 21, 37); } +ST_IN HReg hregLOONGARCH64_R22 ( void ) { return mkHReg(False, HRcInt64, 22, 38); } +ST_IN HReg hregLOONGARCH64_R31 ( void ) { return mkHReg(False, HRcInt64, 31, 39); } + +/* Special registers */ +ST_IN HReg hregLOONGARCH64_FCSR3 ( void ) { return mkHReg(False, HRcInt32, 3, 40); } + +#undef ST_IN + +#define hregZERO() hregLOONGARCH64_R0() +#define hregSP() hregLOONGARCH64_R3() +#define hregT0() hregLOONGARCH64_R12() +#define hregT1() hregLOONGARCH64_R13() +#define hregGSP() hregLOONGARCH64_R31() + +extern UInt ppHRegLOONGARCH64 ( HReg reg ); + +/* Number of registers used arg passing in function calls */ +#define LOONGARCH64_N_ARGREGS 8 /* a0 ... a7 */ + + +/* --------- Condition codes, LOONGARCH64 encoding. --------- */ +typedef enum { + LAcc_EQ = 0, /* equal */ + LAcc_NE = 1, /* not equal */ + + LAcc_LT = 2, /* less than (signed) */ + LAcc_GE = 3, /* great equal (signed) */ + + LAcc_LTU = 4, /* less than (unsigned) */ + LAcc_GEU = 5, /* great equal (unsigned) */ + + LAcc_AL = 6 /* always (unconditional) */ +} LOONGARCH64CondCode; + + +/* --------- Memory address expressions (amodes). --------- */ + +typedef enum { + LAam_RI, /* Reg + Imm (signed 12-bit or signed 14-bit) */ + LAam_RR /* Reg1 + Reg2 */ +} LOONGARCH64AModeTag; + +typedef struct { + LOONGARCH64AModeTag tag; + union { + struct { + HReg base; + UShort index; + } RI; + struct { + HReg base; + HReg index; + } RR; + } LAam; +} LOONGARCH64AMode; + +extern LOONGARCH64AMode* LOONGARCH64AMode_RI ( HReg reg, UShort imm ); +extern LOONGARCH64AMode* LOONGARCH64AMode_RR ( HReg base, HReg index ); + + +/* --------- Operand, which can be reg or imm. --------- */ + +typedef enum { + LAri_Reg, + LAri_Imm +} LOONGARCH64RITag; + +typedef struct { + LOONGARCH64RITag tag; + union { + struct { + HReg reg; + } R; + struct { + UShort imm; + UChar size; // size == 5 || size == 6 || size == 12 + Bool isSigned; + } I; + } LAri; +} LOONGARCH64RI; + +extern LOONGARCH64RI* LOONGARCH64RI_R ( HReg reg ); +extern LOONGARCH64RI* LOONGARCH64RI_I ( UShort imm, UChar size, Bool isSigned ); + + +/* --------- Instructions. --------- */ + +/* Tags for unary operations */ +typedef enum { + LAun_CLZ_W = 0x00001400, + LAun_CTZ_W = 0x00001c00, + LAun_CLZ_D = 0x00002400, + LAun_CTZ_D = 0x00002c00, + LAun_EXT_W_H = 0x00005800, + LAun_EXT_W_B = 0x00005c00 +} LOONGARCH64UnOp; + +/* Tags for binary operations */ +typedef enum { + LAbin_ADD_W = 0x00100000, + LAbin_ADD_D = 0x00108000, + LAbin_SUB_W = 0x00110000, + LAbin_SUB_D = 0x00118000, + LAbin_NOR = 0x00140000, + LAbin_AND = 0x00148000, + LAbin_OR = 0x00150000, + LAbin_XOR = 0x00158000, + LAbin_SLL_W = 0x00170000, + LAbin_SRL_W = 0x00178000, + LAbin_SRA_W = 0x00180000, + LAbin_SLL_D = 0x00188000, + LAbin_SRL_D = 0x00190000, + LAbin_SRA_D = 0x00198000, + LAbin_MUL_W = 0x001c0000, + LAbin_MUL_D = 0x001d8000, + LAbin_MULH_W = 0x001c8000, + LAbin_MULH_WU = 0x001d0000, + LAbin_MULH_D = 0x001e0000, + LAbin_MULH_DU = 0x001e8000, + LAbin_MULW_D_W = 0x001f0000, + LAbin_MULW_D_WU = 0x001f8000, + LAbin_DIV_W = 0x00200000, + LAbin_MOD_W = 0x00208000, + LAbin_DIV_WU = 0x00210000, + LAbin_MOD_WU = 0x00218000, + LAbin_DIV_D = 0x00220000, + LAbin_MOD_D = 0x00228000, + LAbin_DIV_DU = 0x00230000, + LAbin_MOD_DU = 0x00238000, + LAbin_SLLI_W = 0x00408000, + LAbin_SLLI_D = 0x00410000, + LAbin_SRLI_W = 0x00448000, + LAbin_SRLI_D = 0x00450000, + LAbin_SRAI_W = 0x00488000, + LAbin_SRAI_D = 0x00490000, + LAbin_ADDI_W = 0x02800000, + LAbin_ADDI_D = 0x02c00000, + LAbin_ANDI = 0x03400000, + LAbin_ORI = 0x03800000, + LAbin_XORI = 0x03c00000 +} LOONGARCH64BinOp; + +/* Tags for load operations */ +typedef enum { + LAload_LD_W = 0x28800000, + LAload_LD_D = 0x28c00000, + LAload_LD_BU = 0x2a000000, + LAload_LD_HU = 0x2a400000, + LAload_LD_WU = 0x2a800000, + LAload_LDX_D = 0x380c0000, + LAload_LDX_BU = 0x38200000, + LAload_LDX_HU = 0x38240000, + LAload_LDX_WU = 0x38280000 +} LOONGARCH64LoadOp; + +/* Tags for store operations */ +typedef enum { + LAstore_ST_B = 0x29000000, + LAstore_ST_H = 0x29400000, + LAstore_ST_W = 0x29800000, + LAstore_ST_D = 0x29c00000, + LAstore_STX_B = 0x38100000, + LAstore_STX_H = 0x38140000, + LAstore_STX_W = 0x38180000, + LAstore_STX_D = 0x381c0000 +} LOONGARCH64StoreOp; + +/* Tags for ll/sc operations */ +typedef enum { + LAllsc_LL_W = 0x20000000, + LAllsc_SC_W = 0x21000000, + LAllsc_LL_D = 0x22000000, + LAllsc_SC_D = 0x23000000 +} LOONGARCH64LLSCOp; + +/* Tags for barrier operations */ +typedef enum { + LAbar_DBAR = 0x38720000, + LAbar_IBAR = 0x38728000 +} LOONGARCH64BarOp; + +/* Tags for floating point unary operations */ +typedef enum { + LAfpun_FABS_S = 0x01140400, + LAfpun_FABS_D = 0x01140800, + LAfpun_FNEG_S = 0x01141400, + LAfpun_FNEG_D = 0x01141800, + LAfpun_FLOGB_S = 0x01142400, + LAfpun_FLOGB_D = 0x01142800, + LAfpun_FSQRT_S = 0x01144400, + LAfpun_FSQRT_D = 0x01144800, + LAfpun_FRSQRT_S = 0x01146400, + LAfpun_FRSQRT_D = 0x01146800, + LAfpun_FCVT_S_D = 0x01191800, + LAfpun_FCVT_D_S = 0x01192400, + LAfpun_FTINT_W_S = 0x011b0400, + LAfpun_FTINT_W_D = 0x011b0800, + LAfpun_FTINT_L_S = 0x011b2400, + LAfpun_FTINT_L_D = 0x011b2800, + LAfpun_FFINT_S_W = 0x011d1000, + LAfpun_FFINT_S_L = 0x011d1800, + LAfpun_FFINT_D_W = 0x011d2000, + LAfpun_FFINT_D_L = 0x011d2800, + LAfpun_FRINT_S = 0x011e4400, + LAfpun_FRINT_D = 0x011e4800 +} LOONGARCH64FpUnOp; + +/* Tags for floating point binary operations */ +typedef enum { + LAfpbin_FADD_S = 0x01008000, + LAfpbin_FADD_D = 0x01010000, + LAfpbin_FSUB_S = 0x01028000, + LAfpbin_FSUB_D = 0x01030000, + LAfpbin_FMUL_S = 0x01048000, + LAfpbin_FMUL_D = 0x01050000, + LAfpbin_FDIV_S = 0x01068000, + LAfpbin_FDIV_D = 0x01070000, + LAfpbin_FMAX_S = 0x01088000, + LAfpbin_FMAX_D = 0x01090000, + LAfpbin_FMIN_S = 0x010a8000, + LAfpbin_FMIN_D = 0x010b0000, + LAfpbin_FMAXA_S = 0x010c8000, + LAfpbin_FMAXA_D = 0x010d0000, + LAfpbin_FMINA_S = 0x010e8000, + LAfpbin_FMINA_D = 0x010f0000, + LAfpbin_FSCALEB_S = 0x01108000, + LAfpbin_FSCALEB_D = 0x01110000 +} LOONGARCH64FpBinOp; + +/* Tags for floating point trinary operations */ +typedef enum { + LAfpbin_FMADD_S = 0x08100000, + LAfpbin_FMADD_D = 0x08200000, + LAfpbin_FMSUB_S = 0x08500000, + LAfpbin_FMSUB_D = 0x08600000 +} LOONGARCH64FpTriOp; + +/* Tags for floating point load operations */ +typedef enum { + LAfpload_FLD_S = 0x2b000000, + LAfpload_FLD_D = 0x2b800000, + LAfpload_FLDX_S = 0x38300000, + LAfpload_FLDX_D = 0x38340000 +} LOONGARCH64FpLoadOp; + +/* Tags for floating point store operations */ +typedef enum { + LAfpstore_FST_S = 0x2b400000, + LAfpstore_FST_D = 0x2bc00000, + LAfpstore_FSTX_S = 0x38380000, + LAfpstore_FSTX_D = 0x383c0000 +} LOONGARCH64FpStoreOp; + +/* Tags for floating point move operations */ +typedef enum { + LAfpmove_FMOV_S = 0x01149400, + LAfpmove_FMOV_D = 0x01149800, + LAfpmove_MOVGR2FR_W = 0x0114a400, + LAfpmove_MOVGR2FR_D = 0x0114a800, + LAfpmove_MOVFR2GR_S = 0x0114b400, + LAfpmove_MOVFR2GR_D = 0x0114b800, + LAfpmove_MOVGR2FCSR = 0x0114c000, + LAfpmove_MOVFCSR2GR = 0x0114c800 +} LOONGARCH64FpMoveOp; + +/* Tags for floating point compare operations */ +typedef enum { + LAfpcmp_FCMP_CLT_S = 0x0c110000, + LAfpcmp_FCMP_CLT_D = 0x0c210000, + LAfpcmp_FCMP_CEQ_S = 0x0c120000, + LAfpcmp_FCMP_CEQ_D = 0x0c220000, + LAfpcmp_FCMP_CUN_S = 0x0c140000, + LAfpcmp_FCMP_CUN_D = 0x0c240000 +} LOONGARCH64FpCmpOp; + +/* Tags for extra operations, we only use them when emiting code directly */ +typedef enum { + LAextra_MOVGR2CF = 0x0114d800, + LAextra_MOVCF2GR = 0x0114dc00, + LAextra_SLT = 0x00120000, + LAextra_SLTU = 0x00128000, + LAextra_MASKEQZ = 0x00130000, + LAextra_MASKNEZ = 0x00138000, + LAextra_SLTI = 0x02000000, + LAextra_SLTUI = 0x02400000, + LAextra_LU52I_D = 0x03000000, + LAextra_FSEL = 0x0d000000, + LAextra_LU12I_W = 0x14000000, + LAextra_LU32I_D = 0x16000000, + LAextra_JIRL = 0x4c000000, + LAextra_B = 0x50000000, + LAextra_BEQ = 0x58000000, + LAextra_BNE = 0x5c000000, + LAextra_BGE = 0x64000000 +} LOONGARCH64ExtraOp; + +/* Tags for instructions */ +typedef enum { + /* Pseudo-insn, used for generating a 64-bit + literal to register */ + LAin_LI, /* load imm */ + + /* Integer insns */ + LAin_Un, /* unary */ + LAin_Bin, /* binary */ + LAin_Load, /* load */ + LAin_Store, /* store */ + LAin_LLSC, /* ll/sc */ + LAin_Bar, /* barrier */ + + /* Floating point insns */ + LAin_FpUn, /* floating point unary */ + LAin_FpBin, /* floating point binary */ + LAin_FpTri, /* floating point trinary */ + LAin_FpLoad, /* floating point load */ + LAin_FpStore, /* floating point store */ + LAin_FpMove, /* floating point move */ + LAin_FpCmp, /* floating point compare */ + + /* Pseudo-insn */ + LAin_Cas, /* compare and swap */ + LAin_Cmp, /* word compare */ + LAin_CMove, /* condition move */ + + /* Call target (an absolute address), on given + condition (which could be LAcc_AL). */ + LAin_Call, /* call */ + + /* The following 5 insns are mandated by translation chaining */ + LAin_XDirect, /* direct transfer to GA */ + LAin_XIndir, /* indirect transfer to GA */ + LAin_XAssisted, /* assisted transfer to GA */ + LAin_EvCheck, /* Event check */ + LAin_ProfInc /* 64-bit profile counter increment */ +} LOONGARCH64InstrTag; + +typedef struct { + LOONGARCH64InstrTag tag; + union { + struct { + ULong imm; + HReg dst; + } LI; + struct { + LOONGARCH64UnOp op; + HReg src; + HReg dst; + } Unary; + struct { + LOONGARCH64BinOp op; + LOONGARCH64RI* src2; + HReg src1; + HReg dst; + } Binary; + struct { + LOONGARCH64LoadOp op; + LOONGARCH64AMode* src; + HReg dst; + } Load; + struct { + LOONGARCH64StoreOp op; + LOONGARCH64AMode* dst; + HReg src; + } Store; + struct { + LOONGARCH64LLSCOp op; + Bool isLoad; + LOONGARCH64AMode* addr; + HReg val; + } LLSC; + struct { + LOONGARCH64BarOp op; + UShort hint; + } Bar; + struct { + LOONGARCH64FpUnOp op; + HReg src; + HReg dst; + } FpUnary; + struct { + LOONGARCH64FpBinOp op; + HReg src2; + HReg src1; + HReg dst; + } FpBinary; + struct { + LOONGARCH64FpTriOp op; + HReg src3; + HReg src2; + HReg src1; + HReg dst; + } FpTrinary; + struct { + LOONGARCH64FpLoadOp op; + LOONGARCH64AMode* src; + HReg dst; + } FpLoad; + struct { + LOONGARCH64FpStoreOp op; + LOONGARCH64AMode* dst; + HReg src; + } FpStore; + struct { + LOONGARCH64FpMoveOp op; + HReg src; + HReg dst; + } FpMove; + struct { + LOONGARCH64FpCmpOp op; + HReg src2; + HReg src1; + HReg dst; + } FpCmp; + struct { + HReg old; + HReg addr; + HReg expd; + HReg data; + Bool size64; + } Cas; + struct { + LOONGARCH64CondCode cond; + HReg dst; + HReg src1; + HReg src2; + } Cmp; + struct { + HReg cond; + HReg r0; + HReg r1; + HReg dst; + Bool isInt; + } CMove; + struct { + HReg cond; + Addr64 target; + UInt nArgRegs; + RetLoc rloc; + } Call; + struct { + Addr64 dstGA; + LOONGARCH64AMode* amPC; + HReg cond; + Bool toFastEP; + } XDirect; + struct { + HReg dstGA; + LOONGARCH64AMode* amPC; + HReg cond; + } XIndir; + struct { + HReg dstGA; + LOONGARCH64AMode* amPC; + HReg cond; + IRJumpKind jk; + } XAssisted; + struct { + LOONGARCH64AMode* amCounter; + LOONGARCH64AMode* amFailAddr; + } EvCheck; + struct { + /* No fields. The address of the counter to inc is + installed later, post-translation, by patching it in, + as it is not known at translation time. */ + } ProfInc; + } LAin; +} LOONGARCH64Instr; + +extern LOONGARCH64Instr* LOONGARCH64Instr_LI ( ULong imm, HReg dst ); +extern LOONGARCH64Instr* LOONGARCH64Instr_Unary ( LOONGARCH64UnOp op, + HReg src, HReg dst ); +extern LOONGARCH64Instr* LOONGARCH64Instr_Binary ( LOONGARCH64BinOp op, + LOONGARCH64RI* src2, + HReg src1, HReg dst ); +extern LOONGARCH64Instr* LOONGARCH64Instr_Load ( LOONGARCH64LoadOp op, + LOONGARCH64AMode* src, + HReg dst ); +extern LOONGARCH64Instr* LOONGARCH64Instr_Store ( LOONGARCH64StoreOp op, + LOONGARCH64AMode* dst, + HReg src ); +extern LOONGARCH64Instr* LOONGARCH64Instr_LLSC ( LOONGARCH64LLSCOp op, + Bool isLoad, + LOONGARCH64AMode* addr, + HReg val ); +extern LOONGARCH64Instr* LOONGARCH64Instr_Bar ( LOONGARCH64BarOp op, + UShort hint ); +extern LOONGARCH64Instr* LOONGARCH64Instr_FpUnary ( LOONGARCH64FpUnOp op, + HReg src, HReg dst ); +extern LOONGARCH64Instr* LOONGARCH64Instr_FpBinary ( LOONGARCH64FpBinOp op, + HReg src2, HReg src1, + HReg dst ); +extern LOONGARCH64Instr* LOONGARCH64Instr_FpTrinary ( LOONGARCH64FpTriOp op, + HReg src3, HReg src2, + HReg src1, HReg dst ); +extern LOONGARCH64Instr* LOONGARCH64Instr_FpLoad ( LOONGARCH64FpLoadOp op, + LOONGARCH64AMode* src, + HReg dst ); +extern LOONGARCH64Instr* LOONGARCH64Instr_FpStore ( LOONGARCH64FpStoreOp op, + LOONGARCH64AMode* dst, + HReg src ); +extern LOONGARCH64Instr* LOONGARCH64Instr_FpMove ( LOONGARCH64FpMoveOp op, + HReg src, HReg dst ); +extern LOONGARCH64Instr* LOONGARCH64Instr_FpCmp ( LOONGARCH64FpCmpOp op, + HReg src2, HReg src1, + HReg dst ); +extern LOONGARCH64Instr* LOONGARCH64Instr_Cas ( HReg old, HReg addr, + HReg expd, HReg data, + Bool size64 ); +extern LOONGARCH64Instr* LOONGARCH64Instr_Cmp ( LOONGARCH64CondCode cond, + HReg src2, HReg src1, + HReg dst ); +extern LOONGARCH64Instr* LOONGARCH64Instr_CMove ( HReg cond, HReg r0, HReg r1, + HReg dst, Bool isInt ); +extern LOONGARCH64Instr* LOONGARCH64Instr_Call ( HReg cond, Addr64 target, + UInt nArgRegs, RetLoc rloc ); +extern LOONGARCH64Instr* LOONGARCH64Instr_XDirect ( Addr64 dstGA, + LOONGARCH64AMode* amPC, + HReg cond, Bool toFastEP ); +extern LOONGARCH64Instr* LOONGARCH64Instr_XIndir ( HReg dstGA, + LOONGARCH64AMode* amPC, + HReg cond ); +extern LOONGARCH64Instr* LOONGARCH64Instr_XAssisted ( HReg dstGA, + LOONGARCH64AMode* amPC, + HReg cond, IRJumpKind jk ); +extern LOONGARCH64Instr* LOONGARCH64Instr_EvCheck ( LOONGARCH64AMode* amCounter, + LOONGARCH64AMode* amFailAddr ); +extern LOONGARCH64Instr* LOONGARCH64Instr_ProfInc ( void ); + +extern void ppLOONGARCH64Instr ( const LOONGARCH64Instr* i, Bool mode64 ); + +/* Some functions that insulate the register allocator from details + of the underlying instruction set. */ +extern void getRegUsage_LOONGARCH64Instr ( HRegUsage* u, + const LOONGARCH64Instr* i, + Bool mode64 ); +extern void mapRegs_LOONGARCH64Instr ( HRegRemap* m, LOONGARCH64Instr* i, + Bool mode64 ); +extern Int emit_LOONGARCH64Instr (/*MB_MOD*/Bool* is_profInc, + UChar* buf, + Int nbuf, + const LOONGARCH64Instr* i, + Bool mode64, + VexEndness endness_host, + const void* disp_cp_chain_me_to_slowEP, + const void* disp_cp_chain_me_to_fastEP, + const void* disp_cp_xindir, + const void* disp_cp_xassisted ); + +extern void genSpill_LOONGARCH64 ( /*OUT*/ HInstr** i1, /*OUT*/ HInstr** i2, + HReg rreg, Int offsetB, Bool mode64); +extern void genReload_LOONGARCH64 ( /*OUT*/ HInstr** i1, /*OUT*/ HInstr** i2, + HReg rreg, Int offsetB, Bool mode64); +extern LOONGARCH64Instr* genMove_LOONGARCH64 ( HReg from, HReg to, + Bool mode64 ); + +extern const RRegUniverse* getRRegUniverse_LOONGARCH64 ( void ); + +extern HInstrArray* iselSB_LOONGARCH64 ( const IRSB*, + VexArch, + const VexArchInfo*, + const VexAbiInfo*, + Int offs_Host_EvC_Counter, + Int offs_Host_EvC_FailAddr, + Bool chainingAllowed, + Bool addProfInc, + Addr max_ga ); + +/* How big is an event check? See case for Min_EvCheck in + emit_LOONGARCH64Instr just above. That crosschecks what this returns, + so we can tell if we're inconsistent. */ +extern Int evCheckSzB_LOONGARCH64 ( void ); + +/* NB: what goes on here has to be very closely coordinated with the + emitInstr case for XDirect, above. */ +extern VexInvalRange chainXDirect_LOONGARCH64 ( VexEndness endness_host, + void* place_to_chain, + const void* disp_cp_chain_me_EXPECTED, + const void* place_to_jump_to ); + +/* NB: what goes on here has to be very closely coordinated with the + emitInstr case for XDirect, above. */ +extern VexInvalRange unchainXDirect_LOONGARCH64 ( VexEndness endness_host, + void* place_to_unchain, + const void* place_to_jump_to_EXPECTED, + const void* disp_cp_chain_me ); + +/* Patch the counter address into a profile inc point, as previously + created by the Min_ProfInc case for emit_LOONGARCH64Instr. */ +extern VexInvalRange patchProfInc_LOONGARCH64 ( VexEndness endness_host, + void* place_to_patch, + const ULong* location_of_counter ); + +#endif /* ndef __VEX_HOST_LOONGARCH64_DEFS_H */ + + +/*---------------------------------------------------------------*/ +/*--- end host-loongarch64_defs.h ---*/ +/*---------------------------------------------------------------*/ diff --git a/VEX/priv/host_loongarch64_isel.c b/VEX/priv/host_loongarch64_isel.c new file mode 100644 index 0000000..0df4f85 --- /dev/null +++ b/VEX/priv/host_loongarch64_isel.c @@ -0,0 +1,2782 @@ + +/*---------------------------------------------------------------*/ +/*--- begin host_loongarch64_isel.c ---*/ +/*---------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2021-2022 Loongson Technology Corporation Limited + + This program 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 2 of the + License, or (at your option) any later version. + + This program 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 this program; if not, see . + + The GNU General Public License is contained in the file COPYING. +*/ + +#include "libvex_basictypes.h" +#include "libvex_ir.h" +#include "libvex.h" + +#include "main_util.h" +#include "main_globals.h" +#include "host_generic_regs.h" +#include "host_loongarch64_defs.h" + + +/*---------------------------------------------------------*/ +/*--- ISelEnv ---*/ +/*---------------------------------------------------------*/ + +/* This carries around: + + - A mapping from IRTemp to IRType, giving the type of any IRTemp we + might encounter. This is computed before insn selection starts, + and does not change. + + - A mapping from IRTemp to HReg. This tells the insn selector + which virtual register is associated with each IRTemp temporary. + This is computed before insn selection starts, and does not + change. We expect this mapping to map precisely the same set of + IRTemps as the type mapping does. + + |vregmap| holds the primary register for the IRTemp. + |vregmapHI| is only used for 128-bit integer-typed + IRTemps. It holds the identity of a second + 64-bit virtual HReg, which holds the high half + of the value. + + - The code array, that is, the insns selected so far. + + - A counter, for generating new virtual registers. + + - The host hardware capabilities word. This is set at the start + and does not change. + + - A Bool for indicating whether we may generate chain-me + instructions for control flow transfers, or whether we must use + XAssisted. + + - The maximum guest address of any guest insn in this block. + Actually, the address of the highest-addressed byte from any insn + in this block. Is set at the start and does not change. This is + used for detecting jumps which are definitely forward-edges from + this block, and therefore can be made (chained) to the fast entry + point of the destination, thereby avoiding the destination's + event check. + + - An IRExpr*, which may be NULL, holding the IR expression (an + IRRoundingMode-encoded value) to which the FPU's rounding mode + was most recently set. Setting to NULL is always safe. Used to + avoid redundant settings of the FPU's rounding mode, as + described in set_FPCR_rounding_mode below. + + Note, this is all (well, mostly) host-independent. +*/ + +typedef + struct { + /* Constant -- are set at the start and do not change. */ + IRTypeEnv* type_env; + + HReg* vregmap; + HReg* vregmapHI; + Int n_vregmap; + + UInt hwcaps; + + Bool chainingAllowed; + Addr64 max_ga; + + /* These are modified as we go along. */ + HInstrArray* code; + Int vreg_ctr; + } + ISelEnv; + + +static HReg lookupIRTemp ( ISelEnv* env, IRTemp tmp ) +{ + vassert(tmp >= 0); + vassert(tmp < env->n_vregmap); + return env->vregmap[tmp]; +} + +static void lookupIRTempPair ( HReg* vrHI, HReg* vrLO, + ISelEnv* env, IRTemp tmp ) +{ + vassert(tmp < env->n_vregmap); + vassert(!hregIsInvalid(env->vregmapHI[tmp])); + *vrLO = env->vregmap[tmp]; + *vrHI = env->vregmapHI[tmp]; +} + +static void addInstr ( ISelEnv* env, LOONGARCH64Instr* instr ) +{ + addHInstr(env->code, instr); + if (vex_traceflags & VEX_TRACE_VCODE) { + ppLOONGARCH64Instr(instr, True); + vex_printf("\n"); + } +} + +static HReg newVRegI ( ISelEnv* env ) +{ + HReg reg = mkHReg(True/*virtual reg*/, HRcInt64, 0, env->vreg_ctr); + env->vreg_ctr++; + return reg; +} + +static HReg newVRegF ( ISelEnv* env ) +{ + HReg reg = mkHReg(True/*virtual reg*/, HRcFlt64, 0, env->vreg_ctr); + env->vreg_ctr++; + return reg; +} + + +/*---------------------------------------------------------*/ +/*--- ISEL: Forward declarations ---*/ +/*---------------------------------------------------------*/ + +/* These are organised as iselXXX and iselXXX_wrk pairs. The + iselXXX_wrk do the real work, but are not to be called directly. + For each XXX, iselXXX calls its iselXXX_wrk counterpart, then + checks that all returned registers are virtual. You should not + call the _wrk version directly. +*/ + +static LOONGARCH64AMode* iselIntExpr_AMode_wrk ( ISelEnv* env, + IRExpr* e, IRType dty ); +static LOONGARCH64AMode* iselIntExpr_AMode ( ISelEnv* env, + IRExpr* e, IRType dty ); + +static LOONGARCH64RI* iselIntExpr_RI_wrk ( ISelEnv* env, IRExpr* e, + UChar size, Bool isSigned ); +static LOONGARCH64RI* iselIntExpr_RI ( ISelEnv* env, IRExpr* e, + UChar size, Bool isSigned ); + +static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e ); +static HReg iselIntExpr_R ( ISelEnv* env, IRExpr* e ); + +static HReg iselCondCode_R_wrk ( ISelEnv* env, IRExpr* e ); +static HReg iselCondCode_R ( ISelEnv* env, IRExpr* e ); + +static void iselInt128Expr_wrk ( HReg* hi, HReg* lo, + ISelEnv* env, IRExpr* e ); +static void iselInt128Expr ( HReg* hi, HReg* lo, + ISelEnv* env, IRExpr* e ); + +static HReg iselFltExpr_wrk ( ISelEnv* env, IRExpr* e ); +static HReg iselFltExpr ( ISelEnv* env, IRExpr* e ); + + +/*---------------------------------------------------------*/ +/*--- ISEL: Misc helpers ---*/ +/*---------------------------------------------------------*/ + +/* Generate move insn */ +static LOONGARCH64Instr* LOONGARCH64Instr_Move ( HReg to, HReg from ) +{ + LOONGARCH64RI *ri = LOONGARCH64RI_R(hregZERO()); + return LOONGARCH64Instr_Binary(LAbin_OR, ri, from, to); +} + +/* Generate LOONGARCH64AMode from HReg and UInt */ +static LOONGARCH64AMode* mkLOONGARCH64AMode_RI ( HReg reg, UInt imm ) +{ + vassert(imm < (1 << 12)); + return LOONGARCH64AMode_RI(reg, (UShort)imm); +} + +/* Set floating point rounding mode */ +static void set_rounding_mode ( ISelEnv* env, IRExpr* mode ) +{ + /* + rounding mode | LOONGARCH | IR + ------------------------------ + to nearest | 00 | 00 + to zero | 01 | 11 + to +infinity | 10 | 10 + to -infinity | 11 | 01 + */ + + /* rm = XOR(rm, (rm << 1)) & 3 */ + HReg rm = iselIntExpr_R(env, mode); + HReg tmp = newVRegI(env); + LOONGARCH64RI* ri = LOONGARCH64RI_I(1, 5, False); + LOONGARCH64RI* ri2 = LOONGARCH64RI_R(rm); + LOONGARCH64RI* ri3 = LOONGARCH64RI_I(3, 12, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_W, ri, rm, tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_XOR, ri2, tmp, rm)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_ANDI, ri3, rm, rm)); + + /* Save old value of FCSR3 */ + HReg fcsr = newVRegI(env); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_MOVFCSR2GR, + hregLOONGARCH64_FCSR3(), fcsr)); + + /* Store old FCSR3 to stack */ + LOONGARCH64RI* ri4 = LOONGARCH64RI_I(-4 & 0xfff, 12, True); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_ADDI_D, ri4, hregSP(), hregSP())); + LOONGARCH64AMode* am = LOONGARCH64AMode_RI(hregSP(), 0); + addInstr(env, LOONGARCH64Instr_Store(LAstore_ST_W, am, fcsr)); + + /* Set new value of FCSR3 */ + LOONGARCH64RI* ri5 = LOONGARCH64RI_I(8, 5, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_W, ri5, rm, rm)); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_MOVGR2FCSR, + rm, hregLOONGARCH64_FCSR3())); +} + +static void set_rounding_mode_default ( ISelEnv* env ) +{ + /* Load old FCSR3 from stack */ + HReg fcsr = newVRegI(env); + LOONGARCH64AMode* am = LOONGARCH64AMode_RI(hregSP(), 0); + addInstr(env, LOONGARCH64Instr_Load(LAload_LD_WU, am, fcsr)); + + /* Restore SP */ + LOONGARCH64RI* ri = LOONGARCH64RI_I(4, 12, True); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_ADDI_D, ri, hregSP(), hregSP())); + + /* Set new value of FCSR3 */ + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_MOVGR2FCSR, + fcsr, hregLOONGARCH64_FCSR3())); +} + +/* Convert LOONGARCH FCMP cond to IR result */ +static HReg convert_cond_to_IR ( ISelEnv* env, HReg src2, HReg src1, Bool size64 ) +{ + HReg tmp = newVRegI(env); + HReg dst = newVRegI(env); + + LOONGARCH64RI* ri1 = LOONGARCH64RI_I(63, 6, False); + LOONGARCH64RI* ri2 = LOONGARCH64RI_I(0x45, 12, False); + if (size64) + addInstr(env, LOONGARCH64Instr_FpCmp(LAfpcmp_FCMP_CUN_D, src2, src1, tmp)); + else + addInstr(env, LOONGARCH64Instr_FpCmp(LAfpcmp_FCMP_CUN_S, src2, src1, tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_D, ri1, tmp, tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SRAI_D, ri1, tmp, tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_ANDI, ri2, tmp, dst)); + + LOONGARCH64RI* ri3 = LOONGARCH64RI_I(0x1, 12, False); + LOONGARCH64RI* ri4 = LOONGARCH64RI_R(tmp); + if (size64) + addInstr(env, LOONGARCH64Instr_FpCmp(LAfpcmp_FCMP_CLT_D, src2, src1, tmp)); + else + addInstr(env, LOONGARCH64Instr_FpCmp(LAfpcmp_FCMP_CLT_S, src2, src1, tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_D, ri1, tmp, tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SRAI_D, ri1, tmp, tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_ANDI, ri3, tmp, tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_OR, ri4, dst, dst)); + + LOONGARCH64RI* ri5 = LOONGARCH64RI_I(0x40, 12, False); + if (size64) + addInstr(env, LOONGARCH64Instr_FpCmp(LAfpcmp_FCMP_CEQ_D, src2, src1, tmp)); + else + addInstr(env, LOONGARCH64Instr_FpCmp(LAfpcmp_FCMP_CEQ_S, src2, src1, tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_D, ri1, tmp, tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SRAI_D, ri1, tmp, tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_ANDI, ri5, tmp, tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_OR, ri4, dst, dst)); + + return dst; +} + + +/*---------------------------------------------------------*/ +/*--- ISEL: Function call helpers ---*/ +/*---------------------------------------------------------*/ + +/* Used only in doHelperCall. See big comment in doHelperCall re + handling of register-parameter args. This function figures out + whether evaluation of an expression might require use of a fixed + register. If in doubt return True (safe but suboptimal). +*/ +static Bool mightRequireFixedRegs ( IRExpr* e ) +{ + if (UNLIKELY(is_IRExpr_VECRET_or_GSPTR(e))) { + // These are always "safe" -- either a copy of SP in some + // arbitrary vreg, or a copy of $r31, respectively. + return False; + } + /* Else it's a "normal" expression. */ + switch (e->tag) { + case Iex_RdTmp: case Iex_Const: case Iex_Get: + return False; + default: + return True; + } +} + +/* Do a complete function call. |guard| is a Ity_Bit expression + indicating whether or not the call happens. If guard==NULL, the + call is unconditional. |retloc| is set to indicate where the + return value is after the call. The caller (of this fn) must + generate code to add |stackAdjustAfterCall| to the stack pointer + after the call is done. Returns True iff it managed to handle this + combination of arg/return types, else returns False. */ +static Bool doHelperCall( /*OUT*/UInt* stackAdjustAfterCall, + /*OUT*/RetLoc* retloc, + ISelEnv* env, + IRExpr* guard, + IRCallee* cee, IRType retTy, IRExpr** args ) +{ + HReg cond; + HReg argregs[LOONGARCH64_N_ARGREGS]; + HReg tmpregs[LOONGARCH64_N_ARGREGS]; + Bool go_fast; + Int n_args, i, nextArgReg; + Addr64 target; + + vassert(LOONGARCH64_N_ARGREGS == 8); + + /* Set default returns. We'll update them later if needed. */ + *stackAdjustAfterCall = 0; + *retloc = mk_RetLoc_INVALID(); + + /* These are used for cross-checking that IR-level constraints on + the use of IRExpr_VECRET() and IRExpr_GSPTR() are observed. */ + UInt nVECRETs = 0; + UInt nGSPTRs = 0; + + /* Marshal args for a call and do the call. + + This function only deals with a tiny set of possibilities, which + cover all helpers in practice. The restrictions are that only + arguments in registers are supported, hence only + LOONGARCH64_N_ARGREGS x 64 integer bits in total can be passed. + In fact the only supported arg type is I64. + + The return type can be I{64,32}. We currently do not add vector + support. + + |args| may also contain IRExpr_GSPTR(), in which case the + value in $r31 is passed as the corresponding argument. + + Generating code which is both efficient and correct when + parameters are to be passed in registers is difficult, for the + reasons elaborated in detail in comments attached to + doHelperCall() in priv/host_x86_isel.c. Here, we use a variant + of the method described in those comments. + + The problem is split into two cases: the fast scheme and the + slow scheme. In the fast scheme, arguments are computed + directly into the target (real) registers. This is only safe + when we can be sure that computation of each argument will not + trash any real registers set by computation of any other + argument. + + In the slow scheme, all args are first computed into vregs, and + once they are all done, they are moved to the relevant real + regs. This always gives correct code, but it also gives a bunch + of vreg-to-rreg moves which are usually redundant but are hard + for the register allocator to get rid of. + + To decide which scheme to use, all argument expressions are + first examined. If they are all so simple that it is clear they + will be evaluated without use of any fixed registers, use the + fast scheme, else use the slow scheme. Note also that only + unconditional calls may use the fast scheme, since having to + compute a condition expression could itself trash real + registers. + + Note this requires being able to examine an expression and + determine whether or not evaluation of it might use a fixed + register. That requires knowledge of how the rest of this insn + selector works. Currently just the following 3 are regarded as + safe -- hopefully they cover the majority of arguments in + practice: IRExpr_Tmp IRExpr_Const IRExpr_Get. + */ + + /* LOONGARCH64 calling convention: up to eight registers ($a0 ... $a7) + are allowed to be used for passing integer arguments. They correspond + to regs $r4 ... $r11. Note that the cee->regparms field is meaningless + on LOONGARCH64 host (since we only implement one calling convention) + and so we always ignore it. */ + + n_args = 0; + for (i = 0; args[i]; i++) { + IRExpr* arg = args[i]; + if (UNLIKELY(arg->tag == Iex_VECRET)) { + nVECRETs++; + } else if (UNLIKELY(arg->tag == Iex_GSPTR)) { + nGSPTRs++; + } + n_args++; + } + + if (n_args > LOONGARCH64_N_ARGREGS) { + vpanic("doHelperCall(loongarch64): cannot currently handle > 8 args"); + } + + argregs[0] = hregLOONGARCH64_R4(); + argregs[1] = hregLOONGARCH64_R5(); + argregs[2] = hregLOONGARCH64_R6(); + argregs[3] = hregLOONGARCH64_R7(); + argregs[4] = hregLOONGARCH64_R8(); + argregs[5] = hregLOONGARCH64_R9(); + argregs[6] = hregLOONGARCH64_R10(); + argregs[7] = hregLOONGARCH64_R11(); + + tmpregs[0] = tmpregs[1] = tmpregs[2] = tmpregs[3] = INVALID_HREG; + tmpregs[4] = tmpregs[5] = tmpregs[6] = tmpregs[7] = INVALID_HREG; + + /* First decide which scheme (slow or fast) is to be used. First assume the + fast scheme, and select slow if any contraindications (wow) appear. */ + + go_fast = True; + + if (guard) { + if (guard->tag == Iex_Const + && guard->Iex.Const.con->tag == Ico_U1 + && guard->Iex.Const.con->Ico.U1 == True) { + /* unconditional */ + } else { + /* Not manifestly unconditional -- be conservative. */ + go_fast = False; + } + } + + if (go_fast) { + for (i = 0; i < n_args; i++) { + if (mightRequireFixedRegs(args[i])) { + go_fast = False; + break; + } + } + } + + if (go_fast) { + if (retTy == Ity_V128 || retTy == Ity_V256) { + go_fast = False; + vpanic("doHelperCall(loongarch64): currently do not support vector"); + } + } + + /* At this point the scheme to use has been established. Generate + code to get the arg values into the argument rregs. If we run + out of arg regs, give up. */ + + if (go_fast) { + /* FAST SCHEME */ + nextArgReg = 0; + + for (i = 0; i < n_args; i++) { + IRExpr* arg = args[i]; + + IRType aTy = Ity_INVALID; + if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(arg))) + aTy = typeOfIRExpr(env->type_env, args[i]); + + if (nextArgReg >= LOONGARCH64_N_ARGREGS) + return False; /* out of argregs */ + + if (aTy == Ity_I64) { + addInstr(env, LOONGARCH64Instr_Move(argregs[nextArgReg], + iselIntExpr_R(env, args[i]))); + nextArgReg++; + } else if (arg->tag == Iex_GSPTR) { + addInstr(env, LOONGARCH64Instr_Move(argregs[nextArgReg], hregGSP())); + nextArgReg++; + } else if (arg->tag == Iex_VECRET) { + // because of the go_fast logic above, we can't get here, + // since vector return values makes us use the slow path + // instead. + vassert(0); + } else + return False; /* unhandled arg type */ + } + + /* Fast scheme only applies for unconditional calls. Hence: */ + cond = INVALID_HREG; + } else { + /* SLOW SCHEME; move via temporaries */ + nextArgReg = 0; + + for (i = 0; i < n_args; i++) { + IRExpr* arg = args[i]; + + IRType aTy = Ity_INVALID; + if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(arg))) + aTy = typeOfIRExpr(env->type_env, args[i]); + + if (nextArgReg >= LOONGARCH64_N_ARGREGS) + return False; /* out of argregs */ + + if (aTy == Ity_I64) { + tmpregs[nextArgReg] = iselIntExpr_R(env, args[i]); + nextArgReg++; + } else if (arg->tag == Iex_GSPTR) { + tmpregs[nextArgReg] = hregGSP(); + nextArgReg++; + } else if (arg->tag == Iex_VECRET) { + vpanic("doHelperCall(loongarch64): currently do not support vector"); + nextArgReg++; + } else + return False; /* unhandled arg type */ + } + + /* Now we can compute the condition. We can't do it earlier + because the argument computations could trash the condition + codes. Be a bit clever to handle the common case where the + guard is 1:Bit. */ + cond = INVALID_HREG; + if (guard) { + if (guard->tag == Iex_Const + && guard->Iex.Const.con->tag == Ico_U1 + && guard->Iex.Const.con->Ico.U1 == True) { + /* unconditional -- do nothing */ + } else { + cond = iselCondCode_R(env, guard); + } + } + + /* Move the args to their final destinations. */ + for (i = 0; i < nextArgReg; i++) { + vassert(!(hregIsInvalid(tmpregs[i]))); + /* None of these insns, including any spill code that might + be generated, may alter the condition codes. */ + addInstr(env, LOONGARCH64Instr_Move(argregs[i], tmpregs[i])); + } + } + + /* Should be assured by checks above */ + vassert(nextArgReg <= LOONGARCH64_N_ARGREGS); + + /* Do final checks, set the return values, and generate the call + instruction proper. */ + vassert(nGSPTRs == 0 || nGSPTRs == 1); + vassert(nVECRETs == ((retTy == Ity_V128 || retTy == Ity_V256) ? 1 : 0)); + vassert(*stackAdjustAfterCall == 0); + vassert(is_RetLoc_INVALID(*retloc)); + switch (retTy) { + case Ity_INVALID: + /* Function doesn't return a value. */ + *retloc = mk_RetLoc_simple(RLPri_None); + break; + case Ity_I8: case Ity_I16: case Ity_I32: case Ity_I64: + *retloc = mk_RetLoc_simple(RLPri_Int); + break; + case Ity_V128: + case Ity_V256: + vpanic("doHelperCall(loongarch64): currently do not support vector"); + break; + default: + /* IR can denote other possible return types, but we don't + handle those here. */ + vassert(0); + } + + /* Finally, generate the call itself. This needs the *retloc value + set in the switch above, which is why it's at the end. */ + + /* nextArgReg doles out argument registers. Since these are + assigned in the order $a0 .. $a7, its numeric value at this point, + which must be between 0 and 8 inclusive, is going to be equal to + the number of arg regs in use for the call. Hence bake that + number into the call (we'll need to know it when doing register + allocation, to know what regs the call reads.) */ + + target = (Addr)cee->addr; + addInstr(env, LOONGARCH64Instr_Call(cond, target, nextArgReg, *retloc)); + + return True; /* success */ +} + + +/*---------------------------------------------------------*/ +/*--- ISEL: Integer expressions (64/32/16/8 bit) ---*/ +/*---------------------------------------------------------*/ + +/* Select insns for an integer-typed expression, and add them to the + code list. Return a reg holding the result. This reg will be a + virtual register. THE RETURNED REG MUST NOT BE MODIFIED. If you + want to modify it, ask for a new vreg, copy it in there, and modify + the copy. The register allocator will do its best to map both + vregs to the same real register, so the copies will often disappear + later in the game. + + This should handle expressions of 64, 32, 16 and 8-bit type. + All results are returned in a (mode64 ? 64bit : 32bit) register. + For 16- and 8-bit expressions, the upper (32/48/56 : 16/24) bits + are arbitrary, so you should mask or sign extend partial values + if necessary. +*/ + +/* --------------------- AMode --------------------- */ + +static LOONGARCH64AMode* iselIntExpr_AMode ( ISelEnv* env, + IRExpr* e, IRType dty ) +{ + LOONGARCH64AMode* am = iselIntExpr_AMode_wrk(env, e, dty); + + /* sanity checks ... */ + switch (am->tag) { + case LAam_RI: + vassert(am->LAam.RI.index < (1 << 11)); /* The sign bit (bit 12) must be 0. */ + vassert(hregClass(am->LAam.RI.base) == HRcInt64); + vassert(hregIsVirtual(am->LAam.RI.base)); + break; + case LAam_RR: + vassert(hregClass(am->LAam.RR.base) == HRcInt64); + vassert(hregIsVirtual(am->LAam.RR.base)); + vassert(hregClass(am->LAam.RR.index) == HRcInt64); + vassert(hregIsVirtual(am->LAam.RR.index)); + break; + default: + vpanic("iselIntExpr_AMode: unknown LOONGARCH64 AMode tag"); + break; + } + + return am; +} + +/* DO NOT CALL THIS DIRECTLY ! */ +static LOONGARCH64AMode* iselIntExpr_AMode_wrk ( ISelEnv* env, + IRExpr* e, IRType dty ) +{ + IRType ty = typeOfIRExpr(env->type_env, e); + vassert(e); + vassert(ty == Ity_I64); + + /* Add64(expr, i), where i <= 0x7ff */ + if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_Add64 + && e->Iex.Binop.arg2->tag == Iex_Const + && e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U64 + && e->Iex.Binop.arg2->Iex.Const.con->Ico.U64 <= 0x7ff) { + return LOONGARCH64AMode_RI(iselIntExpr_R(env, e->Iex.Binop.arg1), + (UShort)e->Iex.Binop.arg2->Iex.Const.con->Ico.U64); + } + + /* Add64(expr, expr) */ + if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_Add64) { + HReg base = iselIntExpr_R(env, e->Iex.Binop.arg1); + HReg index = iselIntExpr_R(env, e->Iex.Binop.arg2); + return LOONGARCH64AMode_RR(base, index); + } + + /* Doesn't match anything in particular. Generate it into + a register and use that. */ + return LOONGARCH64AMode_RI(iselIntExpr_R(env, e), 0); +} + +/* --------------------- RI --------------------- */ + +static LOONGARCH64RI* iselIntExpr_RI ( ISelEnv* env, IRExpr* e, + UChar size, Bool isSigned ) +{ + LOONGARCH64RI* ri = iselIntExpr_RI_wrk(env, e, size, isSigned); + + /* sanity checks ... */ + switch (ri->tag) { + case LAri_Imm: + vassert(ri->LAri.I.size == 5 || ri->LAri.I.size == 6 + || ri->LAri.I.size == 12); + if (ri->LAri.I.size == 5) { + vassert(ri->LAri.I.isSigned == False); + vassert(ri->LAri.I.imm < (1 << 5)); + } else if (ri->LAri.I.size == 6) { + vassert(ri->LAri.I.isSigned == False); + vassert(ri->LAri.I.imm < (1 << 6)); + } else { + vassert(ri->LAri.I.imm < (1 << 12)); + } + break; + case LAri_Reg: + vassert(hregClass(ri->LAri.R.reg) == HRcInt64); + vassert(hregIsVirtual(ri->LAri.R.reg)); + break; + default: + vpanic("iselIntExpr_RI: unknown LOONGARCH64 RI tag"); + break; + } + + return ri; +} + +/* DO NOT CALL THIS DIRECTLY ! */ +static LOONGARCH64RI* iselIntExpr_RI_wrk ( ISelEnv* env, IRExpr* e, + UChar size, Bool isSigned ) +{ + IRType ty = typeOfIRExpr(env->type_env, e); + vassert(e); + vassert(ty == Ity_I8 || ty == Ity_I16 || ty == Ity_I32 || ty == Ity_I64); + + LOONGARCH64RI *ri = NULL; + + /* special case: immediate */ + if (e->tag == Iex_Const) { + switch (e->Iex.Const.con->tag) { + case Ico_U32: + if (!isSigned && e->Iex.Const.con->Ico.U32 < (1 << size)) { + UShort imm = e->Iex.Const.con->Ico.U32; + ri = LOONGARCH64RI_I(imm, size, isSigned); + } + break; + case Ico_U64: + if (!isSigned && e->Iex.Const.con->Ico.U64 < (1 << size)) { + UShort imm = e->Iex.Const.con->Ico.U64; + ri = LOONGARCH64RI_I(imm, size, isSigned); + } + break; + default: + break; + } + /* else fail, fall through to default case */ + } + + if (ri == NULL) { + /* default case: calculate into a register and return that */ + HReg reg = iselIntExpr_R(env, e); + ri = LOONGARCH64RI_R(reg); + } + + return ri; +} + +/* --------------------- Reg --------------------- */ + +static HReg iselIntExpr_R ( ISelEnv* env, IRExpr* e ) +{ + HReg r = iselIntExpr_R_wrk(env, e); + + /* sanity checks ... */ + vassert(hregClass(r) == HRcInt64); + vassert(hregIsVirtual(r)); + + return r; +} + +/* DO NOT CALL THIS DIRECTLY ! */ +static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e ) +{ + IRType ty = typeOfIRExpr(env->type_env, e); + vassert(e); + vassert(ty == Ity_I8 || ty == Ity_I16 || ty == Ity_I32 || ty == Ity_I64); + + switch (e->tag) { + /* --------- TEMP --------- */ + case Iex_RdTmp: + return lookupIRTemp(env, e->Iex.RdTmp.tmp); + + /* --------- LOAD --------- */ + case Iex_Load: { + if (e->Iex.Load.end != Iend_LE) + goto irreducible; + + LOONGARCH64AMode* am = iselIntExpr_AMode(env, e->Iex.Load.addr, ty); + HReg dst = newVRegI(env); + LOONGARCH64LoadOp op; + switch(ty) { + case Ity_I8: + op = (am->tag == LAam_RI) ? LAload_LD_BU : LAload_LDX_BU; + break; + case Ity_I16: + op = (am->tag == LAam_RI) ? LAload_LD_HU : LAload_LDX_HU; + break; + case Ity_I32: + op = (am->tag == LAam_RI) ? LAload_LD_WU : LAload_LDX_WU; + break; + case Ity_I64: + op = (am->tag == LAam_RI) ? LAload_LD_D : LAload_LDX_D; + break; + default: + goto irreducible; + } + addInstr(env, LOONGARCH64Instr_Load(op, am, dst)); + return dst; + } + + /* --------- BINARY OP --------- */ + case Iex_Binop: { + switch (e->Iex.Binop.op) { + case Iop_32HLto64: { + HReg dst = newVRegI(env); + HReg hi = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* lo = iselIntExpr_RI(env, e->Iex.Binop.arg2, 0, False); + LOONGARCH64RI* ri = LOONGARCH64RI_I(32, 6, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_D, ri, hi, dst)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_OR, lo, dst, dst)); + return dst; + } + case Iop_Add32: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 12, True); + LOONGARCH64BinOp op = (src2->tag == LAri_Reg) ? LAbin_ADD_W : LAbin_ADDI_W; + addInstr(env, LOONGARCH64Instr_Binary(op, src2, src1, dst)); + return dst; + } + case Iop_Add64: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 12, True); + LOONGARCH64BinOp op = (src2->tag == LAri_Reg) ? LAbin_ADD_D : LAbin_ADDI_D; + addInstr(env, LOONGARCH64Instr_Binary(op, src2, src1, dst)); + return dst; + } + case Iop_And32: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 12, False); + LOONGARCH64BinOp op = (src2->tag == LAri_Reg) ? LAbin_AND : LAbin_ANDI; + addInstr(env, LOONGARCH64Instr_Binary(op, src2, src1, dst)); + return dst; + } + case Iop_And64: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 12, False); + LOONGARCH64BinOp op = (src2->tag == LAri_Reg) ? LAbin_AND : LAbin_ANDI; + addInstr(env, LOONGARCH64Instr_Binary(op, src2, src1, dst)); + return dst; + } + case Iop_DivModS32to32: { + HReg dst = newVRegI(env); + HReg tmp = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2); + LOONGARCH64RI* ri1 = LOONGARCH64RI_I(0, 5, False); + LOONGARCH64RI* ri2 = LOONGARCH64RI_R(src2); + LOONGARCH64RI* ri3 = LOONGARCH64RI_I(32, 6, False); + LOONGARCH64RI* ri4 = LOONGARCH64RI_R(tmp); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_W, ri1, src1, src1)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_W, ri1, src2, src2)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_DIV_W, ri2, src1, dst)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_MOD_W, ri2, src1, tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_D, ri3, tmp, tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_D, ri3, dst, dst)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SRLI_D, ri3, dst, dst)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_OR, ri4, dst, dst)); + return dst; + } + case Iop_DivModU32to32: { + HReg dst = newVRegI(env); + HReg tmp = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2); + LOONGARCH64RI* ri1 = LOONGARCH64RI_I(0, 5, False); + LOONGARCH64RI* ri2 = LOONGARCH64RI_R(src2); + LOONGARCH64RI* ri3 = LOONGARCH64RI_I(32, 6, False); + LOONGARCH64RI* ri4 = LOONGARCH64RI_R(tmp); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_W, ri1, src1, src1)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_W, ri1, src2, src2)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_DIV_WU, ri2, src1, dst)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_MOD_WU, ri2, src1, tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_D, ri3, tmp, tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_D, ri3, dst, dst)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SRLI_D, ri3, dst, dst)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_OR, ri4, dst, dst)); + return dst; + } + case Iop_DivS32: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2); + LOONGARCH64RI* ri1 = LOONGARCH64RI_I(0, 5, False); + LOONGARCH64RI* ri2 = LOONGARCH64RI_R(src2); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_W, ri1, src1, src1)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_W, ri1, src2, src2)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_DIV_W, ri2, src1, dst)); + return dst; + } + case Iop_DivS64: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 0, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_DIV_D, src2, src1, dst)); + return dst; + } + case Iop_DivU32: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2); + LOONGARCH64RI* ri1 = LOONGARCH64RI_I(0, 5, False); + LOONGARCH64RI* ri2 = LOONGARCH64RI_R(src2); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_W, ri1, src1, src1)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_W, ri1, src2, src2)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_DIV_WU, ri2, src1, dst)); + return dst; + } + case Iop_DivU64: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 0, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_DIV_DU, src2, src1, dst)); + return dst; + } + case Iop_CmpF32: { + HReg src1 = iselFltExpr(env, e->Iex.Binop.arg1); + HReg src2 = iselFltExpr(env, e->Iex.Binop.arg2); + return convert_cond_to_IR(env, src2, src1, False); + } + case Iop_CmpF64: { + HReg src1 = iselFltExpr(env, e->Iex.Binop.arg1); + HReg src2 = iselFltExpr(env, e->Iex.Binop.arg2); + return convert_cond_to_IR(env, src2, src1, True); + } + case Iop_F32toI32S: { + HReg tmp = newVRegF(env); + HReg dst = newVRegI(env); + HReg src = iselFltExpr(env, e->Iex.Binop.arg2); + set_rounding_mode(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FTINT_W_S, src, tmp)); + set_rounding_mode_default(env); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_MOVFR2GR_S, tmp, dst)); + return dst; + } + case Iop_F32toI64S: { + HReg tmp = newVRegF(env); + HReg dst = newVRegI(env); + HReg src = iselFltExpr(env, e->Iex.Binop.arg2); + set_rounding_mode(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FTINT_L_S, src, tmp)); + set_rounding_mode_default(env); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_MOVFR2GR_D, tmp, dst)); + return dst; + } + case Iop_F64toI32S: { + HReg tmp = newVRegF(env); + HReg dst = newVRegI(env); + HReg src = iselFltExpr(env, e->Iex.Binop.arg2); + set_rounding_mode(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FTINT_W_D, src, tmp)); + set_rounding_mode_default(env); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_MOVFR2GR_S, tmp, dst)); + return dst; + } + case Iop_F64toI64S: { + HReg tmp = newVRegF(env); + HReg dst = newVRegI(env); + HReg src = iselFltExpr(env, e->Iex.Binop.arg2); + set_rounding_mode(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FTINT_L_D, src, tmp)); + set_rounding_mode_default(env); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_MOVFR2GR_D, tmp, dst)); + return dst; + } + case Iop_Max32U: { + HReg cond = newVRegI(env); + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2); + addInstr(env, LOONGARCH64Instr_Cmp(LAcc_LTU, src2, src1, cond)); + addInstr(env, LOONGARCH64Instr_CMove(cond, src1, src2, dst, True)); + return dst; + } + case Iop_MullS32: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 0, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_MULW_D_W, src2, src1, dst)); + return dst; + } + case Iop_MullU32: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 0, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_MULW_D_WU, src2, src1, dst)); + return dst; + } + case Iop_Or32: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 12, False); + LOONGARCH64BinOp op = (src2->tag == LAri_Reg) ? LAbin_OR : LAbin_ORI; + addInstr(env, LOONGARCH64Instr_Binary(op, src2, src1, dst)); + return dst; + } + case Iop_Or64: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 12, False); + LOONGARCH64BinOp op = (src2->tag == LAri_Reg) ? LAbin_OR : LAbin_ORI; + addInstr(env, LOONGARCH64Instr_Binary(op, src2, src1, dst)); + return dst; + } + case Iop_Sar32: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 5, False); + LOONGARCH64BinOp op = (src2->tag == LAri_Reg) ? LAbin_SRA_W : LAbin_SRAI_W; + addInstr(env, LOONGARCH64Instr_Binary(op, src2, src1, dst)); + return dst; + } + case Iop_Sar64: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 6, False); + LOONGARCH64BinOp op = (src2->tag == LAri_Reg) ? LAbin_SRA_D : LAbin_SRAI_D; + addInstr(env, LOONGARCH64Instr_Binary(op, src2, src1, dst)); + return dst; + } + case Iop_Shl32: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 5, False); + LOONGARCH64BinOp op = (src2->tag == LAri_Reg) ? LAbin_SLL_W : LAbin_SLLI_W; + addInstr(env, LOONGARCH64Instr_Binary(op, src2, src1, dst)); + return dst; + } + case Iop_Shl64: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 6, False); + LOONGARCH64BinOp op = (src2->tag == LAri_Reg) ? LAbin_SLL_D : LAbin_SLLI_D; + addInstr(env, LOONGARCH64Instr_Binary(op, src2, src1, dst)); + return dst; + } + case Iop_Shr32: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 5, False); + LOONGARCH64BinOp op = (src2->tag == LAri_Reg) ? LAbin_SRL_W : LAbin_SRLI_W; + addInstr(env, LOONGARCH64Instr_Binary(op, src2, src1, dst)); + return dst; + } + case Iop_Shr64: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 6, False); + LOONGARCH64BinOp op = (src2->tag == LAri_Reg) ? LAbin_SRL_D : LAbin_SRLI_D; + addInstr(env, LOONGARCH64Instr_Binary(op, src2, src1, dst)); + return dst; + } + case Iop_Sub32: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 0, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SUB_W, src2, src1, dst)); + return dst; + } + case Iop_Sub64: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 0, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SUB_D, src2, src1, dst)); + return dst; + } + case Iop_Xor32: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 12, False); + LOONGARCH64BinOp op = (src2->tag == LAri_Reg) ? LAbin_XOR : LAbin_XORI; + addInstr(env, LOONGARCH64Instr_Binary(op, src2, src1, dst)); + return dst; + } + case Iop_Xor64: { + HReg dst = newVRegI(env); + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 12, False); + LOONGARCH64BinOp op = (src2->tag == LAri_Reg) ? LAbin_XOR : LAbin_XORI; + addInstr(env, LOONGARCH64Instr_Binary(op, src2, src1, dst)); + return dst; + } + default: + goto irreducible; + } + } + + /* --------- UNARY OP --------- */ + case Iex_Unop: { + switch (e->Iex.Unop.op) { + case Iop_128HIto64: { + HReg hi, lo; + iselInt128Expr(&hi, &lo, env, e->Iex.Unop.arg); + return hi; + } + case Iop_128to64: { + HReg hi, lo; + iselInt128Expr(&hi, &lo, env, e->Iex.Unop.arg); + return lo; + } + case Iop_16Sto64: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + addInstr(env, LOONGARCH64Instr_Unary(LAun_EXT_W_H, src, dst)); + return dst; + } + case Iop_16Uto64: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_I(48, 6, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_D, ri, src, dst)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SRLI_D, ri, dst, dst)); + return dst; + } + case Iop_1Sto32: { + HReg dst = newVRegI(env); + HReg src = iselCondCode_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_I(63, 6, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_D, ri, src, dst)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SRAI_D, ri, dst, dst)); + return dst; + } + case Iop_1Sto64: { + HReg dst = newVRegI(env); + HReg src = iselCondCode_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_I(63, 6, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_D, ri, src, dst)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SRAI_D, ri, dst, dst)); + return dst; + } + case Iop_1Uto64: { + HReg dst = newVRegI(env); + HReg src = iselCondCode_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_I(0x1, 12, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_ANDI, ri, src, dst)); + return dst; + } + case Iop_1Uto8: { + HReg dst = newVRegI(env); + HReg src = iselCondCode_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_I(0x1, 12, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_ANDI, ri, src, dst)); + return dst; + } + case Iop_32Sto64: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_I(0, 5, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_W, ri, src, dst)); + return dst; + } + case Iop_32Uto64: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_I(32, 6, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_D, ri, src, dst)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SRLI_D, ri, dst, dst)); + return dst; + } + case Iop_32to8: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_I(0xff, 12, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_ANDI, ri, src, dst)); + return dst; + } + case Iop_64HIto32: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_I(32, 6, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SRLI_D, ri, src, dst)); + return dst; + } + case Iop_64to32: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_I(32, 6, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_D, ri, src, dst)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SRLI_D, ri, dst, dst)); + return dst; + } + case Iop_64to8: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_I(0xff, 12, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_ANDI, ri, src, dst)); + return dst; + } + case Iop_8Sto64: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + addInstr(env, LOONGARCH64Instr_Unary(LAun_EXT_W_B, src, dst)); + return dst; + } + case Iop_8Uto32: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_I(0xff, 12, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_ANDI, ri, src, dst)); + return dst; + } + case Iop_8Uto64: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_I(0xff, 12, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_ANDI, ri, src, dst)); + return dst; + } + case Iop_CmpwNEZ32: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_I(63, 6, False); + addInstr(env, LOONGARCH64Instr_Cmp(LAcc_NE, hregZERO(), src, dst)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_D, ri, dst, dst)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SRAI_D, ri, dst, dst)); + return dst; + } + case Iop_CmpwNEZ64: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_I(63, 6, False); + addInstr(env, LOONGARCH64Instr_Cmp(LAcc_NE, hregZERO(), src, dst)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_D, ri, dst, dst)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SRAI_D, ri, dst, dst)); + return dst; + } + case Iop_Clz32: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + addInstr(env, LOONGARCH64Instr_Unary(LAun_CLZ_W, src, dst)); + return dst; + } + case Iop_Clz64: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + addInstr(env, LOONGARCH64Instr_Unary(LAun_CLZ_D, src, dst)); + return dst; + } + case Iop_Ctz32: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + addInstr(env, LOONGARCH64Instr_Unary(LAun_CTZ_W, src, dst)); + return dst; + } + case Iop_Ctz64: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + addInstr(env, LOONGARCH64Instr_Unary(LAun_CTZ_D, src, dst)); + return dst; + } + case Iop_Left16: { + HReg tmp = newVRegI(env); + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_R(src); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SUB_D, ri, hregZERO(), tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_OR, ri, tmp, dst)); + return dst; + } + case Iop_Left32: { + HReg tmp = newVRegI(env); + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_R(src); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SUB_D, ri, hregZERO(), tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_OR, ri, tmp, dst)); + return dst; + } + case Iop_Left64: { + HReg tmp = newVRegI(env); + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_R(src); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SUB_D, ri, hregZERO(), tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_OR, ri, tmp, dst)); + return dst; + } + case Iop_Left8: { + HReg tmp = newVRegI(env); + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_R(src); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SUB_D, ri, hregZERO(), tmp)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_OR, ri, tmp, dst)); + return dst; + } + case Iop_ReinterpF32asI32: { + HReg dst = newVRegI(env); + HReg src = iselFltExpr(env, e->Iex.Unop.arg); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_MOVFR2GR_S, src, dst)); + return dst; + } + case Iop_ReinterpF64asI64: { + HReg dst = newVRegI(env); + HReg src = iselFltExpr(env, e->Iex.Unop.arg); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_MOVFR2GR_D, src, dst)); + return dst; + } + case Iop_Not32: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_R(hregZERO()); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_NOR, ri, src, dst)); + return dst; + } + case Iop_Not64: { + HReg dst = newVRegI(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_R(hregZERO()); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_NOR, ri, src, dst)); + return dst; + } + default: + goto irreducible; + } + } + + /* --------- GET --------- */ + case Iex_Get: { + LOONGARCH64AMode* am = mkLOONGARCH64AMode_RI(hregGSP(), e->Iex.Get.offset); + HReg dst = newVRegI(env); + LOONGARCH64LoadOp op; + switch(ty) { + case Ity_I8: + op = LAload_LD_BU; + break; + case Ity_I16: + op = LAload_LD_HU; + break; + case Ity_I32: + op = LAload_LD_WU; + break; + case Ity_I64: + op = LAload_LD_D; + break; + default: + goto irreducible; + } + addInstr(env, LOONGARCH64Instr_Load(op, am, dst)); + return dst; + } + + /* --------- CCALL --------- */ + case Iex_CCall: { + HReg dst = newVRegI(env); + vassert(ty == e->Iex.CCall.retty); + + /* be very restrictive for now. Only 64-bit ints allowed for + args, and 64 bits for return type. Don't forget to change + the RetLoc if more types are allowed in future. */ + if (e->Iex.CCall.retty != Ity_I64) + goto irreducible; + + /* Marshal args, do the call, clear stack. */ + UInt addToSp = 0; + RetLoc rloc = mk_RetLoc_INVALID(); + Bool ok = doHelperCall(&addToSp, &rloc, env, NULL, + e->Iex.CCall.cee, e->Iex.CCall.retty, + e->Iex.CCall.args); + + if (ok) { + vassert(is_sane_RetLoc(rloc)); + vassert(rloc.pri == RLPri_Int); + vassert(addToSp == 0); + addInstr(env, LOONGARCH64Instr_Move(dst, hregLOONGARCH64_R4())); + return dst; + } + goto irreducible; + } + + /* --------- LITERAL --------- */ + /* 64-bit literals */ + case Iex_Const: { + ULong imm = 0; + HReg dst = newVRegI(env); + switch (e->Iex.Const.con->tag) { + case Ico_U64: + imm = e->Iex.Const.con->Ico.U64; + break; + case Ico_U32: + imm = e->Iex.Const.con->Ico.U32; + break; + case Ico_U16: + imm = e->Iex.Const.con->Ico.U16; + break; + case Ico_U8: + imm = e->Iex.Const.con->Ico.U8; + break; + default: + ppIRExpr(e); + vpanic("iselIntExpr_R.Iex_Const(loongarch64)"); + } + addInstr(env, LOONGARCH64Instr_LI(imm, dst)); + return dst; + } + + case Iex_ITE: { + HReg r0 = iselIntExpr_R(env, e->Iex.ITE.iffalse); + HReg r1 = iselIntExpr_R(env, e->Iex.ITE.iftrue); + HReg cond = iselCondCode_R(env, e->Iex.ITE.cond); + HReg dst = newVRegI(env); + addInstr(env, LOONGARCH64Instr_CMove(cond, r0, r1, dst, True)); + return dst; + } + + default: + break; + } + + /* We get here if no pattern matched. */ +irreducible: + ppIRExpr(e); + vpanic("iselIntExpr_R(loongarch64): cannot reduce tree"); +} + +/* ------------------- CondCode ------------------- */ + +/* Generate code to evaluated a bit-typed expression, returning the + condition code which would correspond when the expression would + notionally have returned 1. */ + +static HReg iselCondCode_R ( ISelEnv* env, IRExpr* e ) +{ + HReg r = iselCondCode_R_wrk(env, e); + + /* sanity checks ... */ + vassert(hregClass(r) == HRcInt64); + vassert(hregIsVirtual(r)); + + return r; +} + +/* DO NOT CALL THIS DIRECTLY ! */ +static HReg iselCondCode_R_wrk ( ISelEnv* env, IRExpr* e ) +{ + vassert(e); + vassert(typeOfIRExpr(env->type_env, e) == Ity_I1); + + HReg dst = newVRegI(env); + + /* var */ + if (e->tag == Iex_RdTmp) { + HReg tmp = newVRegI(env); + dst = lookupIRTemp(env, e->Iex.RdTmp.tmp); + addInstr(env, LOONGARCH64Instr_LI(1, tmp)); + addInstr(env, LOONGARCH64Instr_Cmp(LAcc_EQ, dst, tmp, dst)); + return dst; + } + + /* const */ + if (e->tag == Iex_Const && e->Iex.Const.con->tag == Ico_U1) { + UInt imm = e->Iex.Const.con->Ico.U1; + addInstr(env, LOONGARCH64Instr_LI(imm, dst)); + return dst; + } + + if (e->tag == Iex_Unop) { + if (e->Iex.Unop.op == Iop_Not1) { + HReg src = iselCondCode_R(env, e->Iex.Unop.arg); + LOONGARCH64RI* ri = LOONGARCH64RI_R(hregZERO()); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_NOR, ri, src, dst)); + return dst; + } + + LOONGARCH64CondCode cc; + switch (e->Iex.Unop.op) { + case Iop_CmpNEZ16: + cc = LAcc_NE; + break; + case Iop_CmpNEZ32: + cc = LAcc_NE; + break; + case Iop_CmpNEZ64: + cc = LAcc_NE; + break; + case Iop_CmpNEZ8: + cc = LAcc_NE; + break; + default: + goto irreducible; + } + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + addInstr(env, LOONGARCH64Instr_Cmp(cc, hregZERO(), src, dst)); + return dst; + } + + if (e->tag == Iex_Binop) { + if (e->Iex.Binop.op == Iop_And1) { + HReg src1 = iselCondCode_R(env, e->Iex.Binop.arg1); + HReg src2 = iselCondCode_R(env, e->Iex.Binop.arg2); + LOONGARCH64RI* ri = LOONGARCH64RI_R(src2); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_AND, ri, src1, dst)); + return dst; + } else if (e->Iex.Binop.op == Iop_Or1) { + HReg src1 = iselCondCode_R(env, e->Iex.Binop.arg1); + HReg src2 = iselCondCode_R(env, e->Iex.Binop.arg2); + LOONGARCH64RI* ri = LOONGARCH64RI_R(src2); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_OR, ri, src1, dst)); + return dst; + } + + Bool extend = False; + Bool reverse = False; + LOONGARCH64CondCode cc; + switch (e->Iex.Binop.op) { + case Iop_CasCmpEQ32: + cc = LAcc_EQ; + break; + case Iop_CasCmpEQ64: + cc = LAcc_EQ; + break; + case Iop_CasCmpNE32: + cc = LAcc_NE; + break; + case Iop_CasCmpNE64: + cc = LAcc_NE; + break; + case Iop_CmpEQ32: + cc = LAcc_EQ; + break; + case Iop_CmpEQ64: + cc = LAcc_EQ; + break; + case Iop_CmpLE32S: + cc = LAcc_GE; + reverse = True; + break; + case Iop_CmpLE32U: + cc = LAcc_GEU; + reverse = True; + break; + case Iop_CmpLE64S: + cc = LAcc_GE; + reverse = True; + break; + case Iop_CmpLE64U: + cc = LAcc_GEU; + reverse = True; + break; + case Iop_CmpLT32S: + cc = LAcc_LT; + extend = True; + break; + case Iop_CmpLT32U: + cc = LAcc_LTU; + extend = True; + break; + case Iop_CmpLT64S: + cc = LAcc_LT; + break; + case Iop_CmpLT64U: + cc = LAcc_LTU; + break; + case Iop_CmpNE32: + cc = LAcc_NE; + break; + case Iop_CmpNE64: + cc = LAcc_NE; + break; + default: + goto irreducible; + } + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2); + if (extend) { + /* Sign-extend */ + LOONGARCH64RI* ri = LOONGARCH64RI_I(0, 5, False); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_W, ri, src1, src1)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_SLLI_W, ri, src2, src2)); + } + if (reverse) { + addInstr(env, LOONGARCH64Instr_Cmp(cc, src1, src2, dst)); + } else { + addInstr(env, LOONGARCH64Instr_Cmp(cc, src2, src1, dst)); + } + return dst; + } + + /* We get here if no pattern matched. */ +irreducible: + ppIRExpr(e); + vpanic("iselCondCode(loongarch64): cannot reduce tree"); +} + + +/*---------------------------------------------------------*/ +/*--- ISEL: Integer expressions (128 bit) ---*/ +/*---------------------------------------------------------*/ + +/* Compute a 128-bit value into a register pair, which is returned as + the first two parameters. As with iselIntExpr_R, these may be + either real or virtual regs; in any case they must not be changed + by subsequent code emitted by the caller. */ + +static void iselInt128Expr (HReg* hi, HReg* lo, ISelEnv* env, IRExpr* e) +{ + iselInt128Expr_wrk(hi, lo, env, e); + + /* sanity checks ... */ + vassert(hregClass(*hi) == HRcInt64); + vassert(hregIsVirtual(*hi)); + vassert(hregClass(*lo) == HRcInt64); + vassert(hregIsVirtual(*lo)); +} + +/* DO NOT CALL THIS DIRECTLY ! */ +static void iselInt128Expr_wrk (HReg* hi, HReg* lo, ISelEnv* env, IRExpr* e) +{ + vassert(e); + vassert(typeOfIRExpr(env->type_env, e) == Ity_I128); + + /* --------- TEMP --------- */ + if (e->tag == Iex_RdTmp) { + lookupIRTempPair(hi, lo, env, e->Iex.RdTmp.tmp); + return; + } + + /* --------- BINARY OP --------- */ + if (e->tag == Iex_Binop) { + switch (e->Iex.Binop.op) { + case Iop_64HLto128: { + *hi = iselIntExpr_R(env, e->Iex.Binop.arg1); + *lo = iselIntExpr_R(env, e->Iex.Binop.arg2); + return; + } + case Iop_DivModS64to64: { + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 0, False); + HReg dstLo = newVRegI(env); + HReg dstHi = newVRegI(env); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_DIV_D, src2, src1, dstLo)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_MOD_D, src2, src1, dstHi)); + *hi = dstHi; + *lo = dstLo; + return; + } + case Iop_DivModU64to64: { + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 0, False); + HReg dstLo = newVRegI(env); + HReg dstHi = newVRegI(env); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_DIV_DU, src2, src1, dstLo)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_MOD_DU, src2, src1, dstHi)); + *hi = dstHi; + *lo = dstLo; + return; + } + case Iop_MullS64: { + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 0, False); + HReg dstLo = newVRegI(env); + HReg dstHi = newVRegI(env); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_MUL_D, src2, src1, dstLo)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_MULH_D, src2, src1, dstHi)); + *hi = dstHi; + *lo = dstLo; + return; + } + case Iop_MullU64: { + HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, 0, False); + HReg dstLo = newVRegI(env); + HReg dstHi = newVRegI(env); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_MUL_D, src2, src1, dstLo)); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_MULH_DU, src2, src1, dstHi)); + *hi = dstHi; + *lo = dstLo; + return; + } + default: + goto irreducible; + } + } + + /* We get here if no pattern matched. */ +irreducible: + ppIRExpr(e); + vpanic("iselInt128Expr(loongarch64): cannot reduce tree"); +} + + +/*---------------------------------------------------------*/ +/*--- ISEL: Floating point expressions (64/32 bit) ---*/ +/*---------------------------------------------------------*/ + +/* Compute a floating point value into a register, the identity of + which is returned. As with iselIntExpr_R, the reg may be either + real or virtual; in any case it must not be changed by subsequent + code emitted by the caller. */ + +static HReg iselFltExpr ( ISelEnv* env, IRExpr* e ) +{ + HReg r = iselFltExpr_wrk(env, e); + + /* sanity checks ... */ + vassert(hregClass(r) == HRcFlt64); + vassert(hregIsVirtual(r)); + + return r; +} + +/* DO NOT CALL THIS DIRECTLY */ +static HReg iselFltExpr_wrk ( ISelEnv* env, IRExpr* e ) +{ + IRType ty = typeOfIRExpr(env->type_env, e); + vassert(e); + vassert(ty == Ity_F32 || ty == Ity_F64); + + switch (e->tag) { + /* --------- TEMP --------- */ + case Iex_RdTmp: + return lookupIRTemp(env, e->Iex.RdTmp.tmp); + + /* --------- LOAD --------- */ + case Iex_Load: { + if (e->Iex.Load.end != Iend_LE) + goto irreducible; + + LOONGARCH64AMode* am = iselIntExpr_AMode(env, e->Iex.Load.addr, ty); + HReg dst = newVRegF(env); + LOONGARCH64FpLoadOp op; + switch(ty) { + case Ity_F32: + op = (am->tag == LAam_RI) ? LAfpload_FLD_S : LAfpload_FLDX_S; + break; + case Ity_F64: + op = (am->tag == LAam_RI) ? LAfpload_FLD_D : LAfpload_FLDX_D; + break; + default: + goto irreducible; + } + addInstr(env, LOONGARCH64Instr_FpLoad(op, am, dst)); + return dst; + } + + /* --------- GET --------- */ + case Iex_Get: { + LOONGARCH64AMode* am = mkLOONGARCH64AMode_RI(hregGSP(), e->Iex.Get.offset); + HReg dst = newVRegF(env); + LOONGARCH64FpLoadOp op; + switch(ty) { + case Ity_F32: + op = LAfpload_FLD_S; + break; + case Ity_F64: + op = LAfpload_FLD_D; + break; + default: + goto irreducible; + } + addInstr(env, LOONGARCH64Instr_FpLoad(op, am, dst)); + return dst; + } + + /* --------- QUATERNARY OP --------- */ + case Iex_Qop: { + switch (e->Iex.Qop.details->op) { + case Iop_MAddF32: { + HReg dst = newVRegF(env); + HReg src1 = iselFltExpr(env, e->Iex.Qop.details->arg2); + HReg src2 = iselFltExpr(env, e->Iex.Qop.details->arg3); + HReg src3 = iselFltExpr(env, e->Iex.Qop.details->arg4); + set_rounding_mode(env, e->Iex.Qop.details->arg1); + addInstr(env, LOONGARCH64Instr_FpTrinary(LAfpbin_FMADD_S, src3, src2, src1, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_MAddF64: { + HReg dst = newVRegF(env); + HReg src1 = iselFltExpr(env, e->Iex.Qop.details->arg2); + HReg src2 = iselFltExpr(env, e->Iex.Qop.details->arg3); + HReg src3 = iselFltExpr(env, e->Iex.Qop.details->arg4); + set_rounding_mode(env, e->Iex.Qop.details->arg1); + addInstr(env, LOONGARCH64Instr_FpTrinary(LAfpbin_FMADD_D, src3, src2, src1, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_MSubF32: { + HReg dst = newVRegF(env); + HReg src1 = iselFltExpr(env, e->Iex.Qop.details->arg2); + HReg src2 = iselFltExpr(env, e->Iex.Qop.details->arg3); + HReg src3 = iselFltExpr(env, e->Iex.Qop.details->arg4); + set_rounding_mode(env, e->Iex.Qop.details->arg1); + addInstr(env, LOONGARCH64Instr_FpTrinary(LAfpbin_FMSUB_S, src3, src2, src1, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_MSubF64: { + HReg dst = newVRegF(env); + HReg src1 = iselFltExpr(env, e->Iex.Qop.details->arg2); + HReg src2 = iselFltExpr(env, e->Iex.Qop.details->arg3); + HReg src3 = iselFltExpr(env, e->Iex.Qop.details->arg4); + set_rounding_mode(env, e->Iex.Qop.details->arg1); + addInstr(env, LOONGARCH64Instr_FpTrinary(LAfpbin_FMSUB_D, src3, src2, src1, dst)); + set_rounding_mode_default(env); + return dst; + } + default: + goto irreducible; + } + } + + /* --------- TERNARY OP --------- */ + case Iex_Triop: { + switch (e->Iex.Triop.details->op) { + case Iop_AddF32: { + HReg dst = newVRegF(env); + HReg src1 = iselFltExpr(env, e->Iex.Triop.details->arg2); + HReg src2 = iselFltExpr(env, e->Iex.Triop.details->arg3); + set_rounding_mode(env, e->Iex.Triop.details->arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FADD_S, src2, src1, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_AddF64: { + HReg dst = newVRegF(env); + HReg src1 = iselFltExpr(env, e->Iex.Triop.details->arg2); + HReg src2 = iselFltExpr(env, e->Iex.Triop.details->arg3); + set_rounding_mode(env, e->Iex.Triop.details->arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FADD_D, src2, src1, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_DivF32: { + HReg dst = newVRegF(env); + HReg src1 = iselFltExpr(env, e->Iex.Triop.details->arg2); + HReg src2 = iselFltExpr(env, e->Iex.Triop.details->arg3); + set_rounding_mode(env, e->Iex.Triop.details->arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FDIV_S, src2, src1, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_DivF64: { + HReg dst = newVRegF(env); + HReg src1 = iselFltExpr(env, e->Iex.Triop.details->arg2); + HReg src2 = iselFltExpr(env, e->Iex.Triop.details->arg3); + set_rounding_mode(env, e->Iex.Triop.details->arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FDIV_D, src2, src1, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_MulF32: { + HReg dst = newVRegF(env); + HReg src1 = iselFltExpr(env, e->Iex.Triop.details->arg2); + HReg src2 = iselFltExpr(env, e->Iex.Triop.details->arg3); + set_rounding_mode(env, e->Iex.Triop.details->arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FMUL_S, src2, src1, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_MulF64: { + HReg dst = newVRegF(env); + HReg src1 = iselFltExpr(env, e->Iex.Triop.details->arg2); + HReg src2 = iselFltExpr(env, e->Iex.Triop.details->arg3); + set_rounding_mode(env, e->Iex.Triop.details->arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FMUL_D, src2, src1, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_ScaleBF32: { + HReg dst = newVRegF(env); + HReg src1 = iselFltExpr(env, e->Iex.Triop.details->arg2); + HReg src2 = iselFltExpr(env, e->Iex.Triop.details->arg3); + set_rounding_mode(env, e->Iex.Triop.details->arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FSCALEB_S, src2, src1, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_ScaleBF64: { + HReg dst = newVRegF(env); + HReg src1 = iselFltExpr(env, e->Iex.Triop.details->arg2); + HReg src2 = iselFltExpr(env, e->Iex.Triop.details->arg3); + set_rounding_mode(env, e->Iex.Triop.details->arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FSCALEB_D, src2, src1, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_SubF32: { + HReg dst = newVRegF(env); + HReg src1 = iselFltExpr(env, e->Iex.Triop.details->arg2); + HReg src2 = iselFltExpr(env, e->Iex.Triop.details->arg3); + set_rounding_mode(env, e->Iex.Triop.details->arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FSUB_S, src2, src1, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_SubF64: { + HReg dst = newVRegF(env); + HReg src1 = iselFltExpr(env, e->Iex.Triop.details->arg2); + HReg src2 = iselFltExpr(env, e->Iex.Triop.details->arg3); + set_rounding_mode(env, e->Iex.Triop.details->arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FSUB_D, src2, src1, dst)); + set_rounding_mode_default(env); + return dst; + } + default: + goto irreducible; + } + } + + /* --------- BINARY OP --------- */ + case Iex_Binop: { + switch (e->Iex.Binop.op) { + case Iop_F64toF32: { + HReg dst = newVRegF(env); + HReg src = iselFltExpr(env, e->Iex.Binop.arg2); + set_rounding_mode(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FCVT_S_D, src, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_I32StoF32: { + HReg tmp = newVRegF(env); + HReg dst = newVRegF(env); + HReg src = iselIntExpr_R(env, e->Iex.Binop.arg2); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_MOVGR2FR_D, src, tmp)); + set_rounding_mode(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FFINT_S_W, tmp, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_I64StoF32: { + HReg tmp = newVRegF(env); + HReg dst = newVRegF(env); + HReg src = iselIntExpr_R(env, e->Iex.Binop.arg2); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_MOVGR2FR_D, src, tmp)); + set_rounding_mode(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FFINT_S_L, tmp, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_I64StoF64: { + HReg tmp = newVRegF(env); + HReg dst = newVRegF(env); + HReg src = iselIntExpr_R(env, e->Iex.Binop.arg2); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_MOVGR2FR_D, src, tmp)); + set_rounding_mode(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FFINT_D_L, tmp, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_LogBF32: { + HReg dst = newVRegF(env); + HReg src = iselFltExpr(env, e->Iex.Binop.arg2); + set_rounding_mode(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FLOGB_S, src, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_LogBF64: { + HReg dst = newVRegF(env); + HReg src = iselFltExpr(env, e->Iex.Binop.arg2); + set_rounding_mode(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FLOGB_D, src, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_MaxNumAbsF32: { + HReg dst = newVRegF(env); + HReg src2 = iselFltExpr(env, e->Iex.Binop.arg2); + HReg src1 = iselFltExpr(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FMAXA_S, src2, src1, dst)); + return dst; + } + case Iop_MaxNumF32: { + HReg dst = newVRegF(env); + HReg src2 = iselFltExpr(env, e->Iex.Binop.arg2); + HReg src1 = iselFltExpr(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FMAX_S, src2, src1, dst)); + return dst; + } + case Iop_MaxNumAbsF64: { + HReg dst = newVRegF(env); + HReg src2 = iselFltExpr(env, e->Iex.Binop.arg2); + HReg src1 = iselFltExpr(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FMAXA_D, src2, src1, dst)); + return dst; + } + case Iop_MaxNumF64: { + HReg dst = newVRegF(env); + HReg src2 = iselFltExpr(env, e->Iex.Binop.arg2); + HReg src1 = iselFltExpr(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FMAX_D, src2, src1, dst)); + return dst; + } + case Iop_MinNumAbsF32: { + HReg dst = newVRegF(env); + HReg src2 = iselFltExpr(env, e->Iex.Binop.arg2); + HReg src1 = iselFltExpr(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FMINA_S, src2, src1, dst)); + return dst; + } + case Iop_MinNumF32: { + HReg dst = newVRegF(env); + HReg src2 = iselFltExpr(env, e->Iex.Binop.arg2); + HReg src1 = iselFltExpr(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FMIN_S, src2, src1, dst)); + return dst; + } + case Iop_MinNumAbsF64: { + HReg dst = newVRegF(env); + HReg src2 = iselFltExpr(env, e->Iex.Binop.arg2); + HReg src1 = iselFltExpr(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FMINA_D, src2, src1, dst)); + return dst; + } + case Iop_MinNumF64: { + HReg dst = newVRegF(env); + HReg src2 = iselFltExpr(env, e->Iex.Binop.arg2); + HReg src1 = iselFltExpr(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpBinary(LAfpbin_FMIN_D, src2, src1, dst)); + return dst; + } + case Iop_RoundF32toInt: { + HReg dst = newVRegF(env); + HReg src = iselFltExpr(env, e->Iex.Binop.arg2); + set_rounding_mode(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FRINT_S, src, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_RoundF64toInt: { + HReg dst = newVRegF(env); + HReg src = iselFltExpr(env, e->Iex.Binop.arg2); + set_rounding_mode(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FRINT_D, src, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_RSqrtF32: { + HReg dst = newVRegF(env); + HReg src = iselFltExpr(env, e->Iex.Binop.arg2); + set_rounding_mode(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FRSQRT_S, src, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_RSqrtF64: { + HReg dst = newVRegF(env); + HReg src = iselFltExpr(env, e->Iex.Binop.arg2); + set_rounding_mode(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FRSQRT_D, src, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_SqrtF32: { + HReg dst = newVRegF(env); + HReg src = iselFltExpr(env, e->Iex.Binop.arg2); + set_rounding_mode(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FSQRT_S, src, dst)); + set_rounding_mode_default(env); + return dst; + } + case Iop_SqrtF64: { + HReg dst = newVRegF(env); + HReg src = iselFltExpr(env, e->Iex.Binop.arg2); + set_rounding_mode(env, e->Iex.Binop.arg1); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FSQRT_D, src, dst)); + set_rounding_mode_default(env); + return dst; + } + default: + goto irreducible; + } + } + + /* --------- UNARY OP --------- */ + case Iex_Unop: { + switch (e->Iex.Unop.op) { + case Iop_AbsF32: { + HReg dst = newVRegF(env); + HReg src = iselFltExpr(env, e->Iex.Unop.arg); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FABS_S, src, dst)); + return dst; + } + case Iop_AbsF64: { + HReg dst = newVRegF(env); + HReg src = iselFltExpr(env, e->Iex.Unop.arg); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FABS_D, src, dst)); + return dst; + } + case Iop_F32toF64: { + HReg dst = newVRegF(env); + HReg src = iselFltExpr(env, e->Iex.Unop.arg); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FCVT_D_S, src, dst)); + return dst; + } + case Iop_I32StoF64: { + HReg tmp = newVRegF(env); + HReg dst = newVRegF(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_MOVGR2FR_D, src, tmp)); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FFINT_D_W, tmp, dst)); + return dst; + } + case Iop_NegF32: { + HReg dst = newVRegF(env); + HReg src = iselFltExpr(env, e->Iex.Unop.arg); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FNEG_S, src, dst)); + return dst; + } + case Iop_NegF64: { + HReg dst = newVRegF(env); + HReg src = iselFltExpr(env, e->Iex.Unop.arg); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FNEG_D, src, dst)); + return dst; + } + case Iop_ReinterpI32asF32: { + HReg dst = newVRegF(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_MOVGR2FR_W, src, dst)); + return dst; + } + case Iop_ReinterpI64asF64: { + HReg dst = newVRegF(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_MOVGR2FR_D, src, dst)); + return dst; + } + default: + goto irreducible; + } + } + + /* --------- LITERAL --------- */ + case Iex_Const: { + /* Just handle the one case. */ + IRConst* con = e->Iex.Const.con; + if (con->tag == Ico_F32i && con->Ico.F32i == 1) { + HReg tmp = newVRegI(env); + HReg dst = newVRegF(env); + LOONGARCH64RI* ri = LOONGARCH64RI_I(1, 12, True); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_ADDI_W, ri, hregZERO(), tmp)); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_MOVGR2FR_W, tmp, dst)); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FFINT_S_W, dst, dst)); + return dst; + } else if (con->tag == Ico_F64i && con->Ico.F64i == 1) { + HReg tmp = newVRegI(env); + HReg dst = newVRegF(env); + LOONGARCH64RI* ri = LOONGARCH64RI_I(1, 12, True); + addInstr(env, LOONGARCH64Instr_Binary(LAbin_ADDI_D, ri, hregZERO(), tmp)); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_MOVGR2FR_D, tmp, dst)); + addInstr(env, LOONGARCH64Instr_FpUnary(LAfpun_FFINT_D_L, dst, dst)); + return dst; + } else { + goto irreducible; + } + } + + case Iex_ITE: { + HReg r0 = iselFltExpr(env, e->Iex.ITE.iffalse); + HReg r1 = iselFltExpr(env, e->Iex.ITE.iftrue); + HReg cond = iselCondCode_R(env, e->Iex.ITE.cond); + HReg dst = newVRegF(env); + addInstr(env, LOONGARCH64Instr_CMove(cond, r0, r1, dst, False)); + return dst; + } + + default: + break; + } + + /* We get here if no pattern matched. */ +irreducible: + ppIRExpr(e); + vpanic("iselFltExpr(loongarch64): cannot reduce tree"); +} + + +/*---------------------------------------------------------*/ +/*--- ISEL: Statements ---*/ +/*---------------------------------------------------------*/ + +static void iselStmtStore ( ISelEnv* env, IRStmt* stmt ) +{ + IRType tya = typeOfIRExpr(env->type_env, stmt->Ist.Store.addr); + IRType tyd = typeOfIRExpr(env->type_env, stmt->Ist.Store.data); + + if (tya != Ity_I64 || stmt->Ist.Store.end != Iend_LE) + vpanic("iselStmt(loongarch64): Ist_Store"); + + Bool fp = False; + LOONGARCH64AMode* am = iselIntExpr_AMode(env, stmt->Ist.Store.addr, tyd); + LOONGARCH64StoreOp op; + LOONGARCH64FpStoreOp fop; + switch (tyd) { + case Ity_I8: + op = (am->tag == LAam_RI) ? LAstore_ST_B : LAstore_STX_B; + break; + case Ity_I16: + op = (am->tag == LAam_RI) ? LAstore_ST_H : LAstore_STX_H; + break; + case Ity_I32: + op = (am->tag == LAam_RI) ? LAstore_ST_W : LAstore_STX_W; + break; + case Ity_I64: + op = (am->tag == LAam_RI) ? LAstore_ST_D : LAstore_STX_D; + break; + case Ity_F32: + fop = (am->tag == LAam_RI) ? LAfpstore_FST_S : LAfpstore_FSTX_S; + fp = True; + break; + case Ity_F64: + fop = (am->tag == LAam_RI) ? LAfpstore_FST_D : LAfpstore_FSTX_D; + fp = True; + break; + default: + vpanic("iselStmt(loongarch64): Ist_Store"); + break; + } + + if (fp) { + HReg src = iselFltExpr(env, stmt->Ist.Store.data); + addInstr(env, LOONGARCH64Instr_FpStore(fop, am, src)); + } else { + HReg src = iselIntExpr_R(env, stmt->Ist.Store.data); + addInstr(env, LOONGARCH64Instr_Store(op, am, src)); + } +} + +static void iselStmtPut ( ISelEnv* env, IRStmt* stmt ) +{ + IRType ty = typeOfIRExpr(env->type_env, stmt->Ist.Put.data); + + Bool fp = False; + LOONGARCH64AMode* am = mkLOONGARCH64AMode_RI(hregGSP(), stmt->Ist.Put.offset); + LOONGARCH64StoreOp op; + LOONGARCH64FpStoreOp fop; + switch (ty) { + case Ity_I8: + op = LAstore_ST_B; + break; + case Ity_I16: + op = LAstore_ST_H; + break; + case Ity_I32: + op = LAstore_ST_W; + break; + case Ity_I64: + op = LAstore_ST_D; + break; + case Ity_F32: + fop = LAfpstore_FST_S; + fp = True; + break; + case Ity_F64: + fop = LAfpstore_FST_D; + fp = True; + break; + default: + vpanic("iselStmt(loongarch64): Ist_Put"); + break; + } + + if (fp) { + HReg src = iselFltExpr(env, stmt->Ist.Put.data); + addInstr(env, LOONGARCH64Instr_FpStore(fop, am, src)); + } else { + HReg src = iselIntExpr_R(env, stmt->Ist.Put.data); + addInstr(env, LOONGARCH64Instr_Store(op, am, src)); + } +} + +static void iselStmtTmp ( ISelEnv* env, IRStmt* stmt ) +{ + IRTemp tmp = stmt->Ist.WrTmp.tmp; + IRType ty = typeOfIRTemp(env->type_env, tmp); + + if (ty == Ity_I8 || ty == Ity_I16 || ty == Ity_I32 || ty == Ity_I64) { + HReg dst = lookupIRTemp(env, tmp); + HReg src = iselIntExpr_R(env, stmt->Ist.WrTmp.data); + addInstr(env, LOONGARCH64Instr_Move(dst, src)); + } else if (ty == Ity_I1) { + HReg dst = lookupIRTemp(env, tmp); + HReg src = iselCondCode_R(env, stmt->Ist.WrTmp.data); + addInstr(env, LOONGARCH64Instr_Move(dst, src)); + } else if (ty == Ity_F32) { + HReg dst = lookupIRTemp(env, tmp); + HReg src = iselFltExpr(env, stmt->Ist.WrTmp.data); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_FMOV_S, src, dst)); + } else if (ty == Ity_F64) { + HReg dst = lookupIRTemp(env, tmp); + HReg src = iselFltExpr(env, stmt->Ist.WrTmp.data); + addInstr(env, LOONGARCH64Instr_FpMove(LAfpmove_FMOV_D, src, dst)); + } else { + vpanic("iselStmt(loongarch64): Ist_WrTmp"); + } +} + +static void iselStmtDirty ( ISelEnv* env, IRStmt* stmt ) +{ + IRDirty* d = stmt->Ist.Dirty.details; + + /* Figure out the return type, if any. */ + IRType retty = Ity_INVALID; + if (d->tmp != IRTemp_INVALID) + retty = typeOfIRTemp(env->type_env, d->tmp); + + Bool retty_ok = False; + switch (retty) { + case Ity_INVALID: /* function doesn't return anything */ + case Ity_I8: case Ity_I16: case Ity_I32: case Ity_I64: + retty_ok = True; + break; + default: + break; + } + if (!retty_ok) + vpanic("iselStmt(loongarch64): Ist_Dirty"); + + /* Marshal args, do the call, and set the return value to 0x555..555 + if this is a conditional call that returns a value and the + call is skipped. */ + UInt addToSp = 0; + RetLoc rloc = mk_RetLoc_INVALID(); + doHelperCall(&addToSp, &rloc, env, d->guard, d->cee, retty, d->args); + vassert(is_sane_RetLoc(rloc)); + + /* Now figure out what to do with the returned value, if any. */ + switch (retty) { + case Ity_INVALID: { + /* No return value. Nothing to do. */ + vassert(d->tmp == IRTemp_INVALID); + vassert(rloc.pri == RLPri_None); + vassert(addToSp == 0); + break; + } + case Ity_I8: case Ity_I16: case Ity_I32: case Ity_I64: { + vassert(rloc.pri == RLPri_Int); + vassert(addToSp == 0); + /* The returned value is in $a0. Park it in the register + associated with tmp. */ + HReg dst = lookupIRTemp(env, d->tmp); + addInstr(env, LOONGARCH64Instr_Move(dst, hregLOONGARCH64_R4())); + break; + } + default: + /*NOTREACHED*/ + vassert(0); + break; + } +} + +static void iselStmtLLSC ( ISelEnv* env, IRStmt* stmt ) +{ + IRTemp res = stmt->Ist.LLSC.result; + IRType tya = typeOfIRExpr(env->type_env, stmt->Ist.LLSC.addr); + + /* Temporary solution; this need to be rewritten again for LOONGARCH64. + On LOONGARCH64 you can not read from address that is locked with LL + before SC. If you read from address that is locked than SC will fall. + */ + if (stmt->Ist.LLSC.storedata == NULL) { + /* LL */ + IRType ty = typeOfIRTemp(env->type_env, res); + LOONGARCH64LLSCOp op; + switch (ty) { + case Ity_I32: + op = LAllsc_LL_W; + break; + case Ity_I64: + op = LAllsc_LL_D; + break; + default: + vpanic("iselStmt(loongarch64): Ist_LLSC"); + break; + } + LOONGARCH64AMode* addr = iselIntExpr_AMode(env, stmt->Ist.LLSC.addr, tya); + HReg val = lookupIRTemp(env, res); + addInstr(env, LOONGARCH64Instr_LLSC(op, True, addr, val)); + } else { + /* SC */ + IRType tyd = typeOfIRExpr(env->type_env, stmt->Ist.LLSC.storedata); + LOONGARCH64LLSCOp op; + switch (tyd) { + case Ity_I32: + op = LAllsc_SC_W; + break; + case Ity_I64: + op = LAllsc_SC_D; + break; + default: + vpanic("iselStmt(loongarch64): Ist_LLSC"); + break; + } + LOONGARCH64AMode* addr = iselIntExpr_AMode(env, stmt->Ist.LLSC.addr, tya); + HReg val = iselIntExpr_R(env, stmt->Ist.LLSC.storedata); + HReg dst = lookupIRTemp(env, res); + HReg tmp = newVRegI(env); + addInstr(env, LOONGARCH64Instr_Move(tmp, val)); + addInstr(env, LOONGARCH64Instr_LLSC(op, False, addr, tmp)); + addInstr(env, LOONGARCH64Instr_Move(dst, tmp)); + } +} + +static void iselStmtCas ( ISelEnv* env, IRStmt* stmt ) +{ + IRCAS* cas = stmt->Ist.CAS.details; + if (cas->oldHi == IRTemp_INVALID && cas->end == Iend_LE) { + /* "normal" singleton CAS */ + HReg old = lookupIRTemp(env, cas->oldLo); + HReg addr = iselIntExpr_R(env, cas->addr); + HReg expd = iselIntExpr_R(env, cas->expdLo); + HReg data = iselIntExpr_R(env, cas->dataLo); + IRType ty = typeOfIRTemp(env->type_env, cas->oldLo); + Bool size64; + switch (ty) { + case Ity_I32: + size64 = False; + break; + case Ity_I64: + size64 = True; + break; + default: + vpanic("iselStmt(loongarch64): Ist_CAS"); + break; + } + addInstr(env, LOONGARCH64Instr_Cas(old, addr, expd, data, size64)); + } else { + vpanic("iselStmt(loongarch64): Ist_CAS"); + } +} + +static void iselStmtMBE ( ISelEnv* env, IRStmt* stmt ) +{ + switch (stmt->Ist.MBE.event) { + case Imbe_Fence: + case Imbe_CancelReservation: + addInstr(env, LOONGARCH64Instr_Bar(LAbar_DBAR, 0)); + break; + case Imbe_InsnFence: + addInstr(env, LOONGARCH64Instr_Bar(LAbar_IBAR, 0)); + break; + default: + vpanic("iselStmt(loongarch64): Ist_MBE"); + break; + } +} + +static void iselStmtExit ( ISelEnv* env, IRStmt* stmt ) +{ + if (stmt->Ist.Exit.dst->tag != Ico_U64) + vpanic("iselStmt(loongarch64): Ist_Exit: dst is not a 64-bit value"); + + HReg cond = iselCondCode_R(env, stmt->Ist.Exit.guard); + LOONGARCH64AMode* am = mkLOONGARCH64AMode_RI(hregGSP(), stmt->Ist.Exit.offsIP); + + /* Case: boring transfer to known address */ + if (stmt->Ist.Exit.jk == Ijk_Boring) { + if (env->chainingAllowed) { + /* .. almost always true .. */ + /* Skip the event check at the dst if this is a forwards edge. */ + Bool toFastEP = ((Addr64)stmt->Ist.Exit.dst->Ico.U64) > env->max_ga; + addInstr(env, LOONGARCH64Instr_XDirect(stmt->Ist.Exit.dst->Ico.U64, + am, cond, toFastEP)); + } else { + /* .. very occasionally .. */ + /* We can't use chaining, so ask for an assisted transfer, + as that's the only alternative that is allowable. */ + HReg dst = iselIntExpr_R(env, IRExpr_Const(stmt->Ist.Exit.dst)); + addInstr(env, LOONGARCH64Instr_XAssisted(dst, am, cond, Ijk_Boring)); + } + return; + } + + /* Case: assisted transfer to arbitrary address */ + switch (stmt->Ist.Exit.jk) { + /* Keep this list in sync with that for iselNext below */ + case Ijk_ClientReq: + case Ijk_Yield: + case Ijk_NoDecode: + case Ijk_InvalICache: + case Ijk_NoRedir: + case Ijk_SigILL: + case Ijk_SigTRAP: + case Ijk_SigSEGV: + case Ijk_SigBUS: + case Ijk_SigFPE_IntDiv: + case Ijk_SigFPE_IntOvf: + case Ijk_SigSYS: + case Ijk_Sys_syscall: { + HReg dst = iselIntExpr_R(env, IRExpr_Const(stmt->Ist.Exit.dst)); + addInstr(env, LOONGARCH64Instr_XAssisted(dst, am, cond, stmt->Ist.Exit.jk)); + break; + } + default: + /* Do we ever expect to see any other kind? */ + vpanic("iselStmt(loongarch64): Ist_Exit"); + break; + } +} + +static void iselStmt(ISelEnv* env, IRStmt* stmt) +{ + if (vex_traceflags & VEX_TRACE_VCODE) { + vex_printf("\n-- "); + ppIRStmt(stmt); + vex_printf("\n"); + } + + switch (stmt->tag) { + /* --------- STORE --------- */ + /* little-endian write to memory */ + case Ist_Store: + iselStmtStore(env, stmt); + break; + + /* --------- PUT --------- */ + /* write guest state, fixed offset */ + case Ist_Put: + iselStmtPut(env, stmt); + break; + + /* --------- TMP --------- */ + /* assign value to temporary */ + case Ist_WrTmp: + iselStmtTmp(env, stmt); + break; + + /* --------- Call to DIRTY helper --------- */ + /* call complex ("dirty") helper function */ + case Ist_Dirty: + iselStmtDirty(env, stmt); + break; + + /* --------- Load Linked and Store Conditional --------- */ + case Ist_LLSC: + iselStmtLLSC(env, stmt); + break; + + /* --------- CAS --------- */ + case Ist_CAS: + iselStmtCas(env, stmt); + break; + + /* --------- MEM FENCE --------- */ + case Ist_MBE: + iselStmtMBE(env, stmt); + break; + + /* --------- INSTR MARK --------- */ + /* Doesn't generate any executable code ... */ + case Ist_IMark: + break; + + /* --------- ABI HINT --------- */ + /* These have no meaning (denotation in the IR) and so we ignore + them ... if any actually made it this far. */ + case Ist_AbiHint: + break; + + /* --------- NO-OP --------- */ + case Ist_NoOp: + break; + + /* --------- EXIT --------- */ + case Ist_Exit: + iselStmtExit(env, stmt); + break; + + default: + ppIRStmt(stmt); + vpanic("iselStmt(loongarch64)"); + break; + } +} + + +/*---------------------------------------------------------*/ +/*--- ISEL: Basic block terminators (Nexts) ---*/ +/*---------------------------------------------------------*/ + +static void iselNext ( ISelEnv* env, IRExpr* next, IRJumpKind jk, Int offsIP ) +{ + if (vex_traceflags & VEX_TRACE_VCODE) { + vex_printf("\n-- PUT(%d) = ", offsIP); + ppIRExpr(next); + vex_printf("; exit-"); + ppIRJumpKind(jk); + vex_printf("\n"); + } + + /* Case: boring transfer to known address */ + if (next->tag == Iex_Const) { + IRConst* cdst = next->Iex.Const.con; + vassert(cdst->tag == Ico_U64); + if (jk == Ijk_Boring) { + /* Boring transfer to known address */ + LOONGARCH64AMode* am = mkLOONGARCH64AMode_RI(hregGSP(), offsIP); + if (env->chainingAllowed) { + /* .. almost always true .. */ + /* Skip the event check at the dst if this is a forwards edge. */ + Bool toFastEP = ((Addr64)cdst->Ico.U64) > env->max_ga; + addInstr(env, LOONGARCH64Instr_XDirect(cdst->Ico.U64, am, + INVALID_HREG, toFastEP)); + } else { + /* .. very occasionally .. */ + /* We can't use chaining, so ask for an assisted transfer, + as that's the only alternative that is allowable. */ + HReg dst = iselIntExpr_R(env, next); + addInstr(env, LOONGARCH64Instr_XAssisted(dst, am, INVALID_HREG, Ijk_Boring)); + } + return; + } + } + + /* Case: boring transfer to any address */ + switch (jk) { + case Ijk_Boring: { + HReg dst = iselIntExpr_R(env, next); + LOONGARCH64AMode* am = mkLOONGARCH64AMode_RI(hregGSP(), offsIP); + if (env->chainingAllowed) { + addInstr(env, LOONGARCH64Instr_XIndir(dst, am, INVALID_HREG)); + } else { + addInstr(env, LOONGARCH64Instr_XAssisted(dst, am, + INVALID_HREG, Ijk_Boring)); + } + return; + } + default: + break; + } + + /* Case: assisted transfer to arbitrary address */ + switch (jk) { + /* Keep this list in sync with that for Ist_Exit above */ + case Ijk_ClientReq: + case Ijk_NoDecode: + case Ijk_InvalICache: + case Ijk_NoRedir: + case Ijk_SigILL: + case Ijk_SigTRAP: + case Ijk_SigSEGV: + case Ijk_SigBUS: + case Ijk_SigFPE_IntDiv: + case Ijk_SigFPE_IntOvf: + case Ijk_SigSYS: + case Ijk_Sys_syscall: { + HReg dst = iselIntExpr_R(env, next); + LOONGARCH64AMode* am = mkLOONGARCH64AMode_RI(hregGSP(), offsIP); + addInstr(env, LOONGARCH64Instr_XAssisted(dst, am, INVALID_HREG, jk)); + return; + } + default: + break; + } + + vex_printf("\n-- PUT(%d) = ", offsIP); + ppIRExpr(next); + vex_printf("; exit-"); + ppIRJumpKind(jk); + vex_printf("\n"); + vassert(0); // are we expecting any other kind? +} + + +/*---------------------------------------------------------*/ +/*--- Insn selector top-level ---*/ +/*---------------------------------------------------------*/ + +/* Translate an entire BB to LOONGARCH64 code. */ +HInstrArray* iselSB_LOONGARCH64 ( const IRSB* bb, + VexArch arch_host, + const VexArchInfo* archinfo_host, + const VexAbiInfo* vbi, + Int offs_Host_EvC_Counter, + Int offs_Host_EvC_FailAddr, + Bool chainingAllowed, + Bool addProfInc, + Addr max_ga ) +{ + Int i, j; + HReg hreg, hregHI; + ISelEnv* env; + UInt hwcaps_host = archinfo_host->hwcaps; + LOONGARCH64AMode *amCounter, *amFailAddr; + + /* sanity ... */ + vassert(arch_host == VexArchLOONGARCH64); + vassert((hwcaps_host & ~(VEX_HWCAPS_LOONGARCH_CPUCFG + | VEX_HWCAPS_LOONGARCH_LAM + | VEX_HWCAPS_LOONGARCH_UAL + | VEX_HWCAPS_LOONGARCH_FP + | VEX_HWCAPS_LOONGARCH_LSX + | VEX_HWCAPS_LOONGARCH_LASX + | VEX_HWCAPS_LOONGARCH_COMPLEX + | VEX_HWCAPS_LOONGARCH_CRYPTO + | VEX_HWCAPS_LOONGARCH_LVZP + | VEX_HWCAPS_LOONGARCH_X86BT + | VEX_HWCAPS_LOONGARCH_ARMBT + | VEX_HWCAPS_LOONGARCH_MIPSBT + | VEX_HWCAPS_LOONGARCH_ISA_32BIT + | VEX_HWCAPS_LOONGARCH_ISA_64BIT)) == 0); + + /* Check that the host's endianness is as expected. */ + vassert(archinfo_host->endness == VexEndnessLE); + + /* Make up an initial environment to use. */ + env = LibVEX_Alloc_inline(sizeof(ISelEnv)); + env->vreg_ctr = 0; + + /* Set up output code array. */ + env->code = newHInstrArray(); + + /* Copy BB's type env. */ + env->type_env = bb->tyenv; + + /* Make up an IRTemp -> virtual HReg mapping. This doesn't + change as we go along. */ + env->n_vregmap = bb->tyenv->types_used; + env->vregmap = LibVEX_Alloc_inline(env->n_vregmap * sizeof(HReg)); + env->vregmapHI = LibVEX_Alloc_inline(env->n_vregmap * sizeof(HReg)); + + /* and finally ... */ + env->chainingAllowed = chainingAllowed; + env->hwcaps = hwcaps_host; + env->max_ga = max_ga; + + /* For each IR temporary, allocate a suitably-kinded virtual register. */ + j = 0; + for (i = 0; i < env->n_vregmap; i++) { + hregHI = hreg = INVALID_HREG; + switch (bb->tyenv->types[i]) { + case Ity_I1: + case Ity_I8: + case Ity_I16: + case Ity_I32: + case Ity_I64: + hreg = mkHReg(True, HRcInt64, 0, j++); + break; + case Ity_I128: + hreg = mkHReg(True, HRcInt64, 0, j++); + hregHI = mkHReg(True, HRcInt64, 0, j++); + break; + case Ity_F16: // we'll use HRcFlt64 regs for F16 too + case Ity_F32: // we'll use HRcFlt64 regs for F32 too + case Ity_F64: + hreg = mkHReg(True, HRcFlt64, 0, j++); + break; + default: + ppIRType(bb->tyenv->types[i]); + vpanic("iselBB(loongarch64): IRTemp type"); + } + env->vregmap[i] = hreg; + env->vregmapHI[i] = hregHI; + } + env->vreg_ctr = j; + + /* The very first instruction must be an event check. */ + amCounter = mkLOONGARCH64AMode_RI(hregGSP(), offs_Host_EvC_Counter); + amFailAddr = mkLOONGARCH64AMode_RI(hregGSP(), offs_Host_EvC_FailAddr); + addInstr(env, LOONGARCH64Instr_EvCheck(amCounter, amFailAddr)); + + /* Possibly a block counter increment (for profiling). At this + point we don't know the address of the counter, so just pretend + it is zero. It will have to be patched later, but before this + translation is used, by a call to LibVEX_patchProfCtr. */ + if (addProfInc) { + addInstr(env, LOONGARCH64Instr_ProfInc()); + } + + /* Ok, finally we can iterate over the statements. */ + for (i = 0; i < bb->stmts_used; i++) + iselStmt(env, bb->stmts[i]); + + iselNext(env, bb->next, bb->jumpkind, bb->offsIP); + + /* record the number of vregs we used. */ + env->code->n_vregs = env->vreg_ctr; + return env->code; +} + + +/*---------------------------------------------------------------*/ +/*--- end host_loongarch64_isel.c ---*/ +/*---------------------------------------------------------------*/ diff --git a/VEX/priv/ir_defs.c b/VEX/priv/ir_defs.c index 176ca9b..0ebb235 100644 --- a/VEX/priv/ir_defs.c +++ b/VEX/priv/ir_defs.c @@ -279,6 +279,8 @@ void ppIROp ( IROp op ) case Iop_SubF64: vex_printf("SubF64"); return; case Iop_MulF64: vex_printf("MulF64"); return; case Iop_DivF64: vex_printf("DivF64"); return; + case Iop_ScaleBF64: vex_printf("ScaleBF64"); return; + case Iop_ScaleBF32: vex_printf("ScaleBF32"); return; case Iop_AddF64r32: vex_printf("AddF64r32"); return; case Iop_SubF64r32: vex_printf("SubF64r32"); return; case Iop_MulF64r32: vex_printf("MulF64r32"); return; @@ -345,6 +347,10 @@ void ppIROp ( IROp op ) case Iop_AbsF32: vex_printf("AbsF32"); return; case Iop_SqrtF64: vex_printf("SqrtF64"); return; case Iop_SqrtF32: vex_printf("SqrtF32"); return; + case Iop_RSqrtF32: vex_printf("RSqrtF32"); return; + case Iop_RSqrtF64: vex_printf("RSqrtF64"); return; + case Iop_LogBF32: vex_printf("LogBF32"); return; + case Iop_LogBF64: vex_printf("LogBF64"); return; case Iop_SinF64: vex_printf("SinF64"); return; case Iop_CosF64: vex_printf("CosF64"); return; case Iop_TanF64: vex_printf("TanF64"); return; @@ -368,8 +374,12 @@ void ppIROp ( IROp op ) case Iop_MaxNumF64: vex_printf("MaxNumF64"); return; case Iop_MinNumF64: vex_printf("MinNumF64"); return; + case Iop_MaxNumAbsF64: vex_printf("MaxNumAbsF64"); return; + case Iop_MinNumAbsF64: vex_printf("MinNumAbsF64"); return; case Iop_MaxNumF32: vex_printf("MaxNumF32"); return; case Iop_MinNumF32: vex_printf("MinNumF32"); return; + case Iop_MaxNumAbsF32: vex_printf("MaxNumAbsF32"); return; + case Iop_MinNumAbsF32: vex_printf("MinNumAbsF32"); return; case Iop_F16toF64: vex_printf("F16toF64"); return; case Iop_F64toF16: vex_printf("F64toF16"); return; @@ -1400,10 +1410,13 @@ Bool primopMightTrap ( IROp op ) case Iop_1Uto8: case Iop_1Uto32: case Iop_1Uto64: case Iop_1Sto8: case Iop_1Sto16: case Iop_1Sto32: case Iop_1Sto64: case Iop_AddF64: case Iop_SubF64: case Iop_MulF64: case Iop_DivF64: + case Iop_ScaleBF64: case Iop_ScaleBF32: case Iop_AddF32: case Iop_SubF32: case Iop_MulF32: case Iop_DivF32: case Iop_AddF64r32: case Iop_SubF64r32: case Iop_MulF64r32: case Iop_DivF64r32: case Iop_NegF64: case Iop_AbsF64: case Iop_NegF32: case Iop_AbsF32: case Iop_SqrtF64: case Iop_SqrtF32: + case Iop_RSqrtF64: case Iop_RSqrtF32: + case Iop_LogBF64: case Iop_LogBF32: case Iop_CmpF64: case Iop_CmpF32: case Iop_CmpF128: case Iop_F64toI16S: case Iop_F64toI32S: case Iop_F64toI64S: case Iop_F64toI64U: case Iop_F64toI32U: case Iop_I32StoF64: case Iop_I64StoF64: @@ -1434,8 +1447,11 @@ Bool primopMightTrap ( IROp op ) case Iop_RSqrtEst5GoodF64: case Iop_RoundF64toF64_NEAREST: case Iop_RoundF64toF64_NegINF: case Iop_RoundF64toF64_PosINF: case Iop_RoundF64toF64_ZERO: case Iop_TruncF64asF32: case Iop_RoundF64toF32: - case Iop_RecpExpF64: case Iop_RecpExpF32: case Iop_MaxNumF64: - case Iop_MinNumF64: case Iop_MaxNumF32: case Iop_MinNumF32: + case Iop_RecpExpF64: case Iop_RecpExpF32: + case Iop_MaxNumF64: case Iop_MinNumF64: + case Iop_MaxNumAbsF64: case Iop_MinNumAbsF64: + case Iop_MaxNumF32: case Iop_MinNumF32: + case Iop_MaxNumAbsF32: case Iop_MinNumAbsF32: case Iop_F16toF64: case Iop_F64toF16: case Iop_F16toF32: case Iop_F32toF16: case Iop_QAdd32S: case Iop_QSub32S: case Iop_Add16x2: case Iop_Sub16x2: @@ -2026,6 +2042,7 @@ void ppIRJumpKind ( IRJumpKind kind ) case Ijk_SigFPE: vex_printf("SigFPE"); break; case Ijk_SigFPE_IntDiv: vex_printf("SigFPE_IntDiv"); break; case Ijk_SigFPE_IntOvf: vex_printf("SigFPE_IntOvf"); break; + case Ijk_SigSYS: vex_printf("SigSYS"); break; case Ijk_Sys_syscall: vex_printf("Sys_syscall"); break; case Ijk_Sys_int32: vex_printf("Sys_int32"); break; case Ijk_Sys_int128: vex_printf("Sys_int128"); break; @@ -2045,6 +2062,8 @@ void ppIRMBusEvent ( IRMBusEvent event ) vex_printf("Fence"); break; case Imbe_CancelReservation: vex_printf("CancelReservation"); break; + case Imbe_InsnFence: + vex_printf("InsnFence"); break; default: vpanic("ppIRMBusEvent"); } @@ -3316,12 +3335,14 @@ void typeOfPrimop ( IROp op, case Iop_AddF64: case Iop_SubF64: case Iop_MulF64: case Iop_DivF64: + case Iop_ScaleBF64: case Iop_AddF64r32: case Iop_SubF64r32: case Iop_MulF64r32: case Iop_DivF64r32: TERNARY(ity_RMode,Ity_F64,Ity_F64, Ity_F64); case Iop_AddF32: case Iop_SubF32: case Iop_MulF32: case Iop_DivF32: + case Iop_ScaleBF32: TERNARY(ity_RMode,Ity_F32,Ity_F32, Ity_F32); case Iop_NegF64: case Iop_AbsF64: @@ -3331,18 +3352,24 @@ void typeOfPrimop ( IROp op, UNARY(Ity_F32, Ity_F32); case Iop_SqrtF64: + case Iop_RSqrtF64: + case Iop_LogBF64: case Iop_RecpExpF64: BINARY(ity_RMode,Ity_F64, Ity_F64); case Iop_SqrtF32: + case Iop_RSqrtF32: + case Iop_LogBF32: case Iop_RoundF32toInt: case Iop_RecpExpF32: BINARY(ity_RMode,Ity_F32, Ity_F32); case Iop_MaxNumF64: case Iop_MinNumF64: + case Iop_MaxNumAbsF64: case Iop_MinNumAbsF64: BINARY(Ity_F64,Ity_F64, Ity_F64); case Iop_MaxNumF32: case Iop_MinNumF32: + case Iop_MaxNumAbsF32: case Iop_MinNumAbsF32: BINARY(Ity_F32,Ity_F32, Ity_F32); case Iop_CmpF32: @@ -5159,7 +5186,9 @@ void tcStmt ( const IRSB* bb, const IRStmt* stmt, IRType gWordTy ) break; case Ist_MBE: switch (stmt->Ist.MBE.event) { - case Imbe_Fence: case Imbe_CancelReservation: + case Imbe_Fence: + case Imbe_CancelReservation: + case Imbe_InsnFence: break; default: sanityCheckFail(bb,stmt,"IRStmt.MBE.event: unknown"); break; diff --git a/VEX/priv/main_main.c b/VEX/priv/main_main.c index 7a3cb75..7230656 100644 --- a/VEX/priv/main_main.c +++ b/VEX/priv/main_main.c @@ -43,6 +43,7 @@ #include "libvex_guest_s390x.h" #include "libvex_guest_mips32.h" #include "libvex_guest_mips64.h" +#include "libvex_guest_loongarch64.h" #include "main_globals.h" #include "main_util.h" @@ -57,6 +58,7 @@ #include "host_s390_defs.h" #include "host_mips_defs.h" #include "host_nanomips_defs.h" +#include "host_loongarch64_defs.h" #include "guest_generic_bb_to_IR.h" #include "guest_x86_defs.h" @@ -67,6 +69,7 @@ #include "guest_s390_defs.h" #include "guest_mips_defs.h" #include "guest_nanomips_defs.h" +#include "guest_loongarch64_defs.h" #include "host_generic_simd128.h" @@ -163,6 +166,14 @@ #define NANOMIPSST(f) vassert(0) #endif +#if defined(VGA_loongarch64) || defined(VEXMULTIARCH) +#define LOONGARCH64FN(f) f +#define LOONGARCH64ST(f) f +#else +#define LOONGARCH64FN(f) NULL +#define LOONGARCH64ST(f) vassert(0) +#endif + /* This file contains the top level interface to the library. */ /* --------- fwds ... --------- */ @@ -541,6 +552,23 @@ IRSB* LibVEX_FrontEnd ( /*MOD*/ VexTranslateArgs* vta, vassert(sizeof( ((VexGuestMIPS32State*)0)->guest_NRADDR ) == 4); break; + case VexArchLOONGARCH64: + preciseMemExnsFn + = LOONGARCH64FN(guest_loongarch64_state_requires_precise_mem_exns); + disInstrFn = LOONGARCH64FN(disInstr_LOONGARCH64); + specHelper = LOONGARCH64FN(guest_loongarch64_spechelper); + guest_layout = LOONGARCH64FN(&loongarch64Guest_layout); + offB_CMSTART = offsetof(VexGuestLOONGARCH64State, guest_CMSTART); + offB_CMLEN = offsetof(VexGuestLOONGARCH64State, guest_CMLEN); + offB_GUEST_IP = offsetof(VexGuestLOONGARCH64State, guest_PC); + szB_GUEST_IP = sizeof( ((VexGuestLOONGARCH64State*)0)->guest_PC ); + vassert(vta->archinfo_guest.endness == VexEndnessLE); + vassert(sizeof(VexGuestLOONGARCH64State) % LibVEX_GUEST_STATE_ALIGN == 0); + vassert(sizeof( ((VexGuestLOONGARCH64State*)0)->guest_CMSTART) == 8); + vassert(sizeof( ((VexGuestLOONGARCH64State*)0)->guest_CMLEN ) == 8); + vassert(sizeof( ((VexGuestLOONGARCH64State*)0)->guest_NRADDR ) == 8); + break; + default: vpanic("LibVEX_Translate: unsupported guest insn set"); } @@ -878,6 +906,14 @@ static void libvex_BackEnd ( const VexTranslateArgs *vta, offB_HOST_EvC_FAILADDR = offsetof(VexGuestMIPS32State,host_EvC_FAILADDR); break; + case VexArchLOONGARCH64: + preciseMemExnsFn + = LOONGARCH64FN(guest_loongarch64_state_requires_precise_mem_exns); + guest_sizeB = sizeof(VexGuestLOONGARCH64State); + offB_HOST_EvC_COUNTER = offsetof(VexGuestLOONGARCH64State, host_EvC_COUNTER); + offB_HOST_EvC_FAILADDR = offsetof(VexGuestLOONGARCH64State, host_EvC_FAILADDR); + break; + default: vpanic("LibVEX_Codegen: unsupported guest insn set"); } @@ -1052,6 +1088,23 @@ static void libvex_BackEnd ( const VexTranslateArgs *vta, || vta->archinfo_host.endness == VexEndnessBE); break; + case VexArchLOONGARCH64: + mode64 = True; + rRegUniv = LOONGARCH64FN(getRRegUniverse_LOONGARCH64()); + getRegUsage + = CAST_TO_TYPEOF(getRegUsage) LOONGARCH64FN(getRegUsage_LOONGARCH64Instr); + mapRegs = CAST_TO_TYPEOF(mapRegs) LOONGARCH64FN(mapRegs_LOONGARCH64Instr); + genSpill = CAST_TO_TYPEOF(genSpill) LOONGARCH64FN(genSpill_LOONGARCH64); + genReload = CAST_TO_TYPEOF(genReload) LOONGARCH64FN(genReload_LOONGARCH64); + genMove = CAST_TO_TYPEOF(genMove) LOONGARCH64FN(genMove_LOONGARCH64); + ppInstr = CAST_TO_TYPEOF(ppInstr) LOONGARCH64FN(ppLOONGARCH64Instr); + ppReg = CAST_TO_TYPEOF(ppReg) LOONGARCH64FN(ppHRegLOONGARCH64); + iselSB = LOONGARCH64FN(iselSB_LOONGARCH64); + emit = CAST_TO_TYPEOF(emit) LOONGARCH64FN(emit_LOONGARCH64Instr); + vassert(vta->archinfo_host.endness == VexEndnessLE + || vta->archinfo_host.endness == VexEndnessBE); + break; + default: vpanic("LibVEX_Translate: unsupported host insn set"); } @@ -1297,6 +1350,11 @@ VexInvalRange LibVEX_Chain ( VexArch arch_host, place_to_chain, disp_cp_chain_me_EXPECTED, place_to_jump_to)); + case VexArchLOONGARCH64: + LOONGARCH64ST(return chainXDirect_LOONGARCH64(endness_host, + place_to_chain, + disp_cp_chain_me_EXPECTED, + place_to_jump_to)); default: vassert(0); } @@ -1359,6 +1417,11 @@ VexInvalRange LibVEX_UnChain ( VexArch arch_host, place_to_unchain, place_to_jump_to_EXPECTED, disp_cp_chain_me)); + case VexArchLOONGARCH64: + LOONGARCH64ST(return unchainXDirect_LOONGARCH64(endness_host, + place_to_unchain, + place_to_jump_to_EXPECTED, + disp_cp_chain_me)); default: vassert(0); } @@ -1389,6 +1452,8 @@ Int LibVEX_evCheckSzB ( VexArch arch_host ) MIPS64ST(cached = evCheckSzB_MIPS()); break; case VexArchNANOMIPS: NANOMIPSST(cached = evCheckSzB_NANOMIPS()); break; + case VexArchLOONGARCH64: + LOONGARCH64ST(cached = evCheckSzB_LOONGARCH64()); break; default: vassert(0); } @@ -1432,6 +1497,10 @@ VexInvalRange LibVEX_PatchProfInc ( VexArch arch_host, case VexArchNANOMIPS: NANOMIPSST(return patchProfInc_NANOMIPS(endness_host, place_to_patch, location_of_counter)); + case VexArchLOONGARCH64: + LOONGARCH64ST(return patchProfInc_LOONGARCH64(endness_host, + place_to_patch, + location_of_counter)); default: vassert(0); } @@ -1515,6 +1584,7 @@ const HChar* LibVEX_ppVexArch ( VexArch arch ) case VexArchMIPS32: return "MIPS32"; case VexArchMIPS64: return "MIPS64"; case VexArchNANOMIPS: return "NANOMIPS"; + case VexArchLOONGARCH64: return "LOONGARCH64"; default: return "VexArch???"; } } @@ -1584,6 +1654,7 @@ static IRType arch_word_size (VexArch arch) { case VexArchMIPS64: case VexArchPPC64: case VexArchS390X: + case VexArchLOONGARCH64: return Ity_I64; default: @@ -1895,6 +1966,38 @@ static const HChar* show_hwcaps_mips64 ( UInt hwcaps ) return "Unsupported baseline"; } +static const HChar* show_hwcaps_loongarch64 ( UInt hwcaps ) +{ + static const HChar prefix[] = "loongarch64"; + static const struct { + UInt hwcaps_bit; + HChar name[16]; + } hwcaps_list[] = { + { VEX_HWCAPS_LOONGARCH_CPUCFG, "cpucfg" }, + { VEX_HWCAPS_LOONGARCH_LAM, "lam" }, + { VEX_HWCAPS_LOONGARCH_UAL, "ual" }, + { VEX_HWCAPS_LOONGARCH_FP, "fpu" }, + { VEX_HWCAPS_LOONGARCH_LSX, "lsx" }, + { VEX_HWCAPS_LOONGARCH_LASX, "lasx" }, + { VEX_HWCAPS_LOONGARCH_COMPLEX, "complex" }, + { VEX_HWCAPS_LOONGARCH_CRYPTO, "crypto" }, + { VEX_HWCAPS_LOONGARCH_LVZP, "lvz" }, + { VEX_HWCAPS_LOONGARCH_X86BT, "lbt_x86" }, + { VEX_HWCAPS_LOONGARCH_ARMBT, "lbt_arm" }, + { VEX_HWCAPS_LOONGARCH_MIPSBT, "lbt_mips" } + }; + static HChar buf[sizeof(prefix) + + NUM_HWCAPS * (sizeof hwcaps_list[0].name + 1) + 1]; // '\0' + + HChar *p = buf + vex_sprintf(buf, "%s", prefix); + UInt i; + for (i = 0 ; i < NUM_HWCAPS; ++i) { + if (hwcaps & hwcaps_list[i].hwcaps_bit) + p = p + vex_sprintf(p, "-%s", hwcaps_list[i].name); + } + return buf; +} + #undef NUM_HWCAPS /* Thie function must not return NULL. */ @@ -1911,6 +2014,7 @@ static const HChar* show_hwcaps ( VexArch arch, UInt hwcaps ) case VexArchS390X: return show_hwcaps_s390x(hwcaps); case VexArchMIPS32: return show_hwcaps_mips32(hwcaps); case VexArchMIPS64: return show_hwcaps_mips64(hwcaps); + case VexArchLOONGARCH64: return show_hwcaps_loongarch64(hwcaps); default: return NULL; } } @@ -2148,6 +2252,11 @@ static void check_hwcaps ( VexArch arch, UInt hwcaps ) return; invalid_hwcaps(arch, hwcaps, "Unsupported baseline\n"); + case VexArchLOONGARCH64: + if (!(hwcaps & VEX_HWCAPS_LOONGARCH_ISA_64BIT)) + invalid_hwcaps(arch, hwcaps, "Unsupported baseline\n"); + return; + default: vpanic("unknown architecture"); } diff --git a/VEX/pub/libvex.h b/VEX/pub/libvex.h index 6da26dc..30a43a0 100644 --- a/VEX/pub/libvex.h +++ b/VEX/pub/libvex.h @@ -60,6 +60,7 @@ typedef VexArchMIPS32, VexArchMIPS64, VexArchNANOMIPS, + VexArchLOONGARCH64, } VexArch; @@ -281,6 +282,22 @@ typedef (VEX_MIPS_PROC_ID(x) == VEX_PRID_IMP_P5600) && \ (VEX_MIPS_HOST_FP_MODE(x))) +/* LoongArch baseline capability */ +#define VEX_HWCAPS_LOONGARCH_CPUCFG (1 << 0) /* CPU has CPUCFG */ +#define VEX_HWCAPS_LOONGARCH_LAM (1 << 1) /* CPU has Atomic instructions */ +#define VEX_HWCAPS_LOONGARCH_UAL (1 << 2) /* CPU has Unaligned Access support */ +#define VEX_HWCAPS_LOONGARCH_FP (1 << 3) /* CPU has FPU */ +#define VEX_HWCAPS_LOONGARCH_LSX (1 << 4) /* CPU has 128-bit SIMD instructions */ +#define VEX_HWCAPS_LOONGARCH_LASX (1 << 5) /* CPU has 256-bit SIMD instructions */ +#define VEX_HWCAPS_LOONGARCH_COMPLEX (1 << 6) /* CPU has Complex instructions */ +#define VEX_HWCAPS_LOONGARCH_CRYPTO (1 << 7) /* CPU has Crypto instructions */ +#define VEX_HWCAPS_LOONGARCH_LVZP (1 << 8) /* CPU has Virtualization extension */ +#define VEX_HWCAPS_LOONGARCH_X86BT (1 << 9) /* CPU has X86 Binary Translation */ +#define VEX_HWCAPS_LOONGARCH_ARMBT (1 << 10) /* CPU has ARM Binary Translation */ +#define VEX_HWCAPS_LOONGARCH_MIPSBT (1 << 11) /* CPU has MIPS Binary Translation */ +#define VEX_HWCAPS_LOONGARCH_ISA_32BIT (1 << 30) /* 32-bit ISA */ +#define VEX_HWCAPS_LOONGARCH_ISA_64BIT (1 << 31) /* 64-bit ISA */ + /* These return statically allocated strings. */ extern const HChar* LibVEX_ppVexArch ( VexArch ); @@ -399,6 +416,7 @@ void LibVEX_default_VexArchInfo ( /*OUT*/VexArchInfo* vai ); guest is mips32 ==> applicable, default True guest is mips64 ==> applicable, default True guest is arm64 ==> applicable, default False + guest is loongarch64 ==> const True host_ppc_calls_use_fndescrs: host is ppc32-linux ==> False @@ -1000,6 +1018,10 @@ extern void LibVEX_InitIRI ( const IRICB * ); ~~~~~ r21 is GSP. + loongarch64 + ~~~~~ + r31 is GSP. + ALL GUEST ARCHITECTURES ~~~~~~~~~~~~~~~~~~~~~~~ The guest state must contain two pseudo-registers, guest_CMSTART diff --git a/VEX/pub/libvex_basictypes.h b/VEX/pub/libvex_basictypes.h index e3f1485..b4c81bf 100644 --- a/VEX/pub/libvex_basictypes.h +++ b/VEX/pub/libvex_basictypes.h @@ -198,6 +198,10 @@ typedef unsigned long HWord; # define VEX_HOST_WORDSIZE 4 # define VEX_REGPARM(_n) /* */ +#elif defined(__loongarch__) && (__loongarch_grlen == 64) +# define VEX_HOST_WORDSIZE 8 +# define VEX_REGPARM(_n) /* */ + #else # error "Vex: Fatal: Can't establish the host architecture" #endif diff --git a/VEX/pub/libvex_guest_loongarch64.h b/VEX/pub/libvex_guest_loongarch64.h new file mode 100644 index 0000000..ff59828 --- /dev/null +++ b/VEX/pub/libvex_guest_loongarch64.h @@ -0,0 +1,171 @@ + +/*---------------------------------------------------------------*/ +/*--- begin libvex_guest_loongarch64.h ---*/ +/*---------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2021-2022 Loongson Technology Corporation Limited + + This program 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 2 of the + License, or (at your option) any later version. + + This program 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 this program; if not, see . + + The GNU General Public License is contained in the file COPYING. + + Neither the names of the U.S. Department of Energy nor the + University of California nor the names of its contributors may be + used to endorse or promote products derived from this software + without prior written permission. +*/ + +#ifndef __LIBVEX_PUB_GUEST_LOONGARCH64_H +#define __LIBVEX_PUB_GUEST_LOONGARCH64_H + +#include "libvex_basictypes.h" + + +/*---------------------------------------------------------------*/ +/*--- Vex's representation of the LOONGARCH64 CPU state. ---*/ +/*---------------------------------------------------------------*/ + +typedef + struct { + /* Event check fail addr and counter. */ + /* 0 */ ULong host_EvC_FAILADDR; + /* 8 */ UInt host_EvC_COUNTER; + /* 12 */ UInt _padding0; + + /* CPU Registers */ + /* 16 */ ULong guest_R0; /* Constant zero */ + /* 24 */ ULong guest_R1; /* Return address */ + /* 32 */ ULong guest_R2; /* Thread pointer */ + /* 40 */ ULong guest_R3; /* Stack pointer */ + /* 48 */ ULong guest_R4; /* Argument registers / Return value */ + /* 56 */ ULong guest_R5; + /* 64 */ ULong guest_R6; /* Argument registers */ + /* 72 */ ULong guest_R7; + /* 80 */ ULong guest_R8; + /* 88 */ ULong guest_R9; + /* 96 */ ULong guest_R10; + /* 104 */ ULong guest_R11; + /* 112 */ ULong guest_R12; /* Temporary registers */ + /* 120 */ ULong guest_R13; + /* 128 */ ULong guest_R14; + /* 136 */ ULong guest_R15; + /* 144 */ ULong guest_R16; + /* 152 */ ULong guest_R17; + /* 160 */ ULong guest_R18; + /* 168 */ ULong guest_R19; + /* 176 */ ULong guest_R20; + /* 184 */ ULong guest_R21; /* Reserved */ + /* 192 */ ULong guest_R22; /* Frame pointer / Static register */ + /* 200 */ ULong guest_R23; /* Static registers */ + /* 208 */ ULong guest_R24; + /* 216 */ ULong guest_R25; + /* 224 */ ULong guest_R26; + /* 232 */ ULong guest_R27; + /* 240 */ ULong guest_R28; + /* 248 */ ULong guest_R29; + /* 256 */ ULong guest_R30; + /* 264 */ ULong guest_R31; + + /* 272 */ ULong guest_PC; /* Program counter */ + + /* FPU Registers */ + /* 280 */ ULong guest_F0; /* Argument registers / Return value */ + /* 288 */ ULong guest_F1; + /* 296 */ ULong guest_F2; /* Argument registers */ + /* 304 */ ULong guest_F3; + /* 312 */ ULong guest_F4; + /* 320 */ ULong guest_F5; + /* 328 */ ULong guest_F6; + /* 336 */ ULong guest_F7; + /* 344 */ ULong guest_F8; /* Temporary registers */ + /* 352 */ ULong guest_F9; + /* 360 */ ULong guest_F10; + /* 368 */ ULong guest_F11; + /* 376 */ ULong guest_F12; + /* 384 */ ULong guest_F13; + /* 392 */ ULong guest_F14; + /* 400 */ ULong guest_F15; + /* 408 */ ULong guest_F16; + /* 416 */ ULong guest_F17; + /* 424 */ ULong guest_F18; + /* 432 */ ULong guest_F19; + /* 440 */ ULong guest_F20; + /* 448 */ ULong guest_F21; + /* 456 */ ULong guest_F22; + /* 464 */ ULong guest_F23; + /* 472 */ ULong guest_F24; /* Static registers */ + /* 480 */ ULong guest_F25; + /* 488 */ ULong guest_F26; + /* 496 */ ULong guest_F27; + /* 504 */ ULong guest_F28; + /* 512 */ ULong guest_F29; + /* 520 */ ULong guest_F30; + /* 528 */ ULong guest_F31; + + /* 536 */ UChar guest_FCC0; /* Condition Flag Registers */ + /* 537 */ UChar guest_FCC1; + /* 538 */ UChar guest_FCC2; + /* 539 */ UChar guest_FCC3; + /* 540 */ UChar guest_FCC4; + /* 541 */ UChar guest_FCC5; + /* 542 */ UChar guest_FCC6; + /* 543 */ UChar guest_FCC7; + /* 544 */ UInt guest_FCSR; /* FP Control and Status Register */ + + /* Various pseudo-regs mandated by Vex or Valgrind. */ + /* Emulation notes */ + /* 548 */ UInt guest_EMNOTE; + + /* For clflush: record start and length of area to invalidate */ + /* 552 */ ULong guest_CMSTART; + /* 560 */ ULong guest_CMLEN; + + /* Used to record the unredirected guest address at the start of + a translation whose start has been redirected. By reading + this pseudo-register shortly afterwards, the translation can + find out what the corresponding no-redirection address was. + Note, this is only set for wrap-style redirects, not for + replace-style ones. */ + /* 568 */ ULong guest_NRADDR; + + /* Fallback LL/SC support. */ + /* 576 */ ULong guest_LLSC_SIZE; /* 0==no transaction, else 4 or 8. */ + /* 584 */ ULong guest_LLSC_ADDR; /* Address of the transaction. */ + /* 592 */ ULong guest_LLSC_DATA; /* Original value at ADDR. */ + + /* VexGuestLOONGARCH64State should have a 16-aligned size */ + /* 600 */ ULong _padding1; +} VexGuestLOONGARCH64State; + +/*---------------------------------------------------------------*/ +/*--- Utility functions for LOONGARCH64 guest stuff. ---*/ +/*---------------------------------------------------------------*/ + +/* ALL THE FOLLOWING ARE VISIBLE TO LIBRARY CLIENT. */ + +/* Initialise all guest LOONGARCH64 state. */ + +extern +void LibVEX_GuestLOONGARCH64_initialise ( /*OUT*/ + VexGuestLOONGARCH64State* vex_state ); + +#endif /* ndef __LIBVEX_PUB_GUEST_LOONGARCH64_H */ + +/*---------------------------------------------------------------*/ +/*--- libvex_guest_loongarch64.h ---*/ +/*---------------------------------------------------------------*/ diff --git a/VEX/pub/libvex_guest_offsets.h b/VEX/pub/libvex_guest_offsets.h index a456b6d..9faa0ce 100644 --- a/VEX/pub/libvex_guest_offsets.h +++ b/VEX/pub/libvex_guest_offsets.h @@ -162,3 +162,36 @@ #define OFFSET_mips64_PC 272 #define OFFSET_mips64_HI 280 #define OFFSET_mips64_LO 288 +#define OFFSET_loongarch64_R0 16 +#define OFFSET_loongarch64_R1 24 +#define OFFSET_loongarch64_R2 32 +#define OFFSET_loongarch64_R3 40 +#define OFFSET_loongarch64_R4 48 +#define OFFSET_loongarch64_R5 56 +#define OFFSET_loongarch64_R6 64 +#define OFFSET_loongarch64_R7 72 +#define OFFSET_loongarch64_R8 80 +#define OFFSET_loongarch64_R9 88 +#define OFFSET_loongarch64_R10 96 +#define OFFSET_loongarch64_R11 104 +#define OFFSET_loongarch64_R12 112 +#define OFFSET_loongarch64_R13 120 +#define OFFSET_loongarch64_R14 128 +#define OFFSET_loongarch64_R15 136 +#define OFFSET_loongarch64_R16 144 +#define OFFSET_loongarch64_R17 152 +#define OFFSET_loongarch64_R18 160 +#define OFFSET_loongarch64_R19 168 +#define OFFSET_loongarch64_R20 176 +#define OFFSET_loongarch64_R21 184 +#define OFFSET_loongarch64_R22 192 +#define OFFSET_loongarch64_R23 200 +#define OFFSET_loongarch64_R24 208 +#define OFFSET_loongarch64_R25 216 +#define OFFSET_loongarch64_R26 224 +#define OFFSET_loongarch64_R27 232 +#define OFFSET_loongarch64_R28 240 +#define OFFSET_loongarch64_R29 248 +#define OFFSET_loongarch64_R30 256 +#define OFFSET_loongarch64_R31 264 +#define OFFSET_loongarch64_PC 272 diff --git a/VEX/pub/libvex_ir.h b/VEX/pub/libvex_ir.h index 6a854e4..d4ba8cd 100644 --- a/VEX/pub/libvex_ir.h +++ b/VEX/pub/libvex_ir.h @@ -575,10 +575,10 @@ typedef /* Binary operations, with rounding. */ /* :: IRRoundingMode(I32) x F64 x F64 -> F64 */ - Iop_AddF64, Iop_SubF64, Iop_MulF64, Iop_DivF64, + Iop_AddF64, Iop_SubF64, Iop_MulF64, Iop_DivF64, Iop_ScaleBF64, /* :: IRRoundingMode(I32) x F32 x F32 -> F32 */ - Iop_AddF32, Iop_SubF32, Iop_MulF32, Iop_DivF32, + Iop_AddF32, Iop_SubF32, Iop_MulF32, Iop_DivF32, Iop_ScaleBF32, /* Variants of the above which produce a 64-bit result but which round their result to a IEEE float range first. */ @@ -594,10 +594,10 @@ typedef /* Unary operations, with rounding. */ /* :: IRRoundingMode(I32) x F64 -> F64 */ - Iop_SqrtF64, + Iop_SqrtF64, Iop_RSqrtF64, Iop_LogBF64, /* :: IRRoundingMode(I32) x F32 -> F32 */ - Iop_SqrtF32, + Iop_SqrtF32, Iop_RSqrtF32, Iop_LogBF32, /* Comparison, yielding GT/LT/EQ/UN(ordered), as per the following: 0x45 Unordered @@ -800,10 +800,14 @@ typedef /* --------- Possibly required by IEEE 754-2008. --------- */ - Iop_MaxNumF64, /* max, F64, numerical operand if other is a qNaN */ - Iop_MinNumF64, /* min, F64, ditto */ - Iop_MaxNumF32, /* max, F32, ditto */ - Iop_MinNumF32, /* min, F32, ditto */ + Iop_MaxNumF64, /* max, F64, numerical operand if other is a qNaN */ + Iop_MinNumF64, /* min, F64, ditto */ + Iop_MaxNumAbsF64, /* max abs, F64, ditto */ + Iop_MinNumAbsF64, /* min abs, F64, ditto */ + Iop_MaxNumF32, /* max, F32, ditto */ + Iop_MinNumF32, /* min, F32, ditto */ + Iop_MaxNumAbsF32, /* max abs, F32, ditto */ + Iop_MinNumAbsF32, /* min abs, F32, ditto */ /* ------------------ 16-bit scalar FP ------------------ */ @@ -2450,6 +2454,7 @@ typedef Ijk_SigFPE, /* current instruction synths generic SIGFPE */ Ijk_SigFPE_IntDiv, /* current instruction synths SIGFPE - IntDiv */ Ijk_SigFPE_IntOvf, /* current instruction synths SIGFPE - IntOvf */ + Ijk_SigSYS, /* current instruction synths SIGSYS */ /* Unfortunately, various guest-dependent syscall kinds. They all mean: do a syscall before continuing. */ Ijk_Sys_syscall, /* amd64/x86 'syscall', ppc 'sc', arm 'svc #0' */ @@ -2609,7 +2614,12 @@ typedef /* Needed only on ARM. It cancels a reservation made by a preceding Linked-Load, and needs to be handed through to the back end, just as LL and SC themselves are. */ - Imbe_CancelReservation + Imbe_CancelReservation, + /* Needed only on LOONGARCH64. It completes the synchronization + between the store operation and the instruction fetch operation + within a single processor core, and needs to be handed through + to the back end. */ + Imbe_InsnFence } IRMBusEvent; diff --git a/VEX/pub/libvex_trc_values.h b/VEX/pub/libvex_trc_values.h index cfd54de..90e2b60 100644 --- a/VEX/pub/libvex_trc_values.h +++ b/VEX/pub/libvex_trc_values.h @@ -57,6 +57,7 @@ continuing */ #define VEX_TRC_JMP_SIGBUS 93 /* deliver SIGBUS before continuing */ #define VEX_TRC_JMP_SIGFPE 105 /* deliver SIGFPE before continuing */ +#define VEX_TRC_JMP_SIGSYS 115 /* deliver SIGSYS before continuing */ #define VEX_TRC_JMP_SIGFPE_INTDIV 97 /* deliver SIGFPE (integer divide by zero) before continuing */ diff --git a/aclocal.m4 b/aclocal.m4 index fa903ea..0fdbb06 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.16.1 -*- Autoconf -*- +# generated automatically by aclocal 1.16.5 -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,13 +14,13 @@ m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],, +[m4_warning([this file was generated for autoconf 2.71. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002-2018 Free Software Foundation, Inc. +# Copyright (C) 2002-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -35,7 +35,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.16' 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.16.1], [], +m4_if([$1], [1.16.5], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,14 +51,14 @@ 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.16.1])dnl +[AM_AUTOMAKE_VERSION([1.16.5])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # Figure out how to run the assembler. -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -78,7 +78,7 @@ _AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -130,7 +130,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd` # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -161,7 +161,7 @@ AC_CONFIG_COMMANDS_PRE( Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -352,7 +352,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -391,7 +391,9 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments - for automatic dependency tracking. Try re-running configure with the + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE="gmake" (or whatever is + necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi @@ -418,7 +420,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -446,6 +448,10 @@ m4_defn([AC_PROG_CC]) # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl +m4_ifdef([_$0_ALREADY_INIT], + [m4_fatal([$0 expanded multiple times +]m4_defn([_$0_ALREADY_INIT]))], + [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl @@ -482,7 +488,7 @@ m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl @@ -534,6 +540,20 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi +AC_SUBST([CTAGS]) +if test -z "$ETAGS"; then + ETAGS=etags +fi +AC_SUBST([ETAGS]) +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi +AC_SUBST([CSCOPE]) + AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This @@ -615,7 +635,7 @@ for _am_header in $config_headers :; do done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -636,7 +656,7 @@ if test x"${install_sh+set}" != xset; then fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2018 Free Software Foundation, Inc. +# Copyright (C) 2003-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -658,7 +678,7 @@ AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -693,7 +713,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -736,7 +756,7 @@ AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -757,12 +777,7 @@ AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac + MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then @@ -775,7 +790,7 @@ fi # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -804,7 +819,7 @@ AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -851,7 +866,7 @@ AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -870,7 +885,7 @@ AC_DEFUN([AM_RUN_LOG], # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -951,7 +966,7 @@ AC_CONFIG_COMMANDS_PRE( rm -f conftest.file ]) -# Copyright (C) 2009-2018 Free Software Foundation, Inc. +# Copyright (C) 2009-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1011,7 +1026,7 @@ AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1039,7 +1054,7 @@ fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2018 Free Software Foundation, Inc. +# Copyright (C) 2006-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1058,7 +1073,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2018 Free Software Foundation, Inc. +# Copyright (C) 2004-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff --git a/auxprogs/Makefile.in b/auxprogs/Makefile.in index ece0e6f..4fa5b83 100644 --- a/auxprogs/Makefile.in +++ b/auxprogs/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -236,8 +236,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -260,6 +258,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -273,6 +273,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -418,6 +419,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -557,6 +559,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -602,6 +610,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ dist_noinst_SCRIPTS = \ @@ -894,7 +903,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/cachegrind/Makefile.in b/cachegrind/Makefile.in index 18bfcbc..b721763 100644 --- a/cachegrind/Makefile.in +++ b/cachegrind/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -264,8 +264,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/cg_annotate.in \ $(srcdir)/cg_diff.in $(top_srcdir)/Makefile.all.am \ @@ -315,6 +313,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -328,6 +328,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -473,6 +474,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -613,6 +615,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -658,6 +666,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ @@ -741,6 +750,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ @FLAG_M64@ +TOOL_LDFLAGS_LOONGARCH64_LINUX = \ + -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ + @FLAG_M64@ + TOOL_LDFLAGS_X86_SOLARIS = \ $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ @@ -795,6 +808,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ LIBREPLACEMALLOC_MIPS64_LINUX = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a +LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a + LIBREPLACEMALLOC_X86_SOLARIS = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a @@ -857,6 +873,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ $(LIBREPLACEMALLOC_MIPS64_LINUX) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ + -Wl,--no-whole-archive + LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_SOLARIS) \ @@ -1275,7 +1296,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/cachegrind/cg_arch.c b/cachegrind/cg_arch.c index 57570dd..5442982 100644 --- a/cachegrind/cg_arch.c +++ b/cachegrind/cg_arch.c @@ -475,6 +475,13 @@ configure_caches(cache_t *I1c, cache_t *D1c, cache_t *LLc, *D1c = (cache_t) { 65536, 2, 64 }; *LLc = (cache_t) { 262144, 8, 64 }; +#elif defined(VGA_loongarch64) + + // Set caches to default (for LOONGARCH64 - 3A5000) + *I1c = (cache_t) { 65536, 4, 64 }; + *D1c = (cache_t) { 65536, 4, 64 }; + *LLc = (cache_t) { 262144, 16, 64 }; + #else #error "Unknown arch" diff --git a/cachegrind/cg_branchpred.c b/cachegrind/cg_branchpred.c index ba433ec..0d91b29 100644 --- a/cachegrind/cg_branchpred.c +++ b/cachegrind/cg_branchpred.c @@ -44,7 +44,7 @@ guaranteed to be zero? */ #if defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le) \ || defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_nanomips) \ - || defined(VGA_arm64) + || defined(VGA_arm64) || defined(VGA_loongarch64) # define N_IADDR_LO_ZERO_BITS 2 #elif defined(VGA_x86) || defined(VGA_amd64) # define N_IADDR_LO_ZERO_BITS 0 diff --git a/cachegrind/tests/Makefile.in b/cachegrind/tests/Makefile.in index b9f731c..5f272ad 100644 --- a/cachegrind/tests/Makefile.in +++ b/cachegrind/tests/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -226,8 +226,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -275,6 +273,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -288,6 +288,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -433,6 +434,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -572,6 +574,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -617,6 +625,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -861,7 +870,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/cachegrind/tests/x86/Makefile.in b/cachegrind/tests/x86/Makefile.in index 7197bb5..e6fb28e 100644 --- a/cachegrind/tests/x86/Makefile.in +++ b/cachegrind/tests/x86/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -198,8 +198,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -222,6 +220,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -235,6 +235,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -380,6 +381,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -519,6 +521,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -564,6 +572,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -714,7 +723,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/callgrind/Makefile.in b/callgrind/Makefile.in index 8cf9272..c3d3b7b 100644 --- a/callgrind/Makefile.in +++ b/callgrind/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -299,8 +299,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in \ $(srcdir)/callgrind_annotate.in $(srcdir)/callgrind_control.in \ @@ -351,6 +349,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -364,6 +364,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -509,6 +510,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -649,6 +651,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -694,6 +702,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ @@ -777,6 +786,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ @FLAG_M64@ +TOOL_LDFLAGS_LOONGARCH64_LINUX = \ + -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ + @FLAG_M64@ + TOOL_LDFLAGS_X86_SOLARIS = \ $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ @@ -831,6 +844,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ LIBREPLACEMALLOC_MIPS64_LINUX = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a +LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a + LIBREPLACEMALLOC_X86_SOLARIS = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a @@ -893,6 +909,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ $(LIBREPLACEMALLOC_MIPS64_LINUX) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ + -Wl,--no-whole-archive + LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_SOLARIS) \ @@ -1645,7 +1666,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/callgrind/tests/Makefile.in b/callgrind/tests/Makefile.in index 578be1c..cc27fcf 100644 --- a/callgrind/tests/Makefile.in +++ b/callgrind/tests/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -215,8 +215,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -264,6 +262,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -277,6 +277,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -422,6 +423,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -561,6 +563,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -606,6 +614,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -829,7 +838,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/compile b/compile index 99e5052..df363c8 100755 --- a/compile +++ b/compile @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -53,7 +53,7 @@ func_file_conv () MINGW*) file_conv=mingw ;; - CYGWIN*) + CYGWIN* | MSYS*) file_conv=cygwin ;; *) @@ -67,7 +67,7 @@ func_file_conv () mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; - cygwin/*) + cygwin/* | msys/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) diff --git a/config.guess b/config.guess index b33c9e8..7f76b62 100755 --- a/config.guess +++ b/config.guess @@ -1,12 +1,14 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2018 Free Software Foundation, Inc. +# Copyright 1992-2022 Free Software Foundation, Inc. -timestamp='2018-08-29' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2022-01-09' # 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 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -27,11 +29,19 @@ timestamp='2018-08-29' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + me=`echo "$0" | sed -e 's,.*/,,'` usage="\ @@ -50,7 +60,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2018 Free Software Foundation, Inc. +Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -84,6 +94,9 @@ if test $# != 0; then exit 1 fi +# Just in case it came from the environment. +GUESS= + # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a @@ -96,12 +109,13 @@ fi tmp= # shellcheck disable=SC2172 -trap 'test -z "$tmp" || rm -fr "$tmp"' 1 2 13 15 -trap 'exitcode=$?; test -z "$tmp" || rm -fr "$tmp"; exit $exitcode' 0 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 : "${TMPDIR=/tmp}" - # shellcheck disable=SC2039 + # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || @@ -111,7 +125,7 @@ set_cc_for_build() { ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then - CC_FOR_BUILD="$driver" + CC_FOR_BUILD=$driver break fi done @@ -132,14 +146,12 @@ fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "$UNAME_SYSTEM" in +case $UNAME_SYSTEM in Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu + LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" @@ -148,24 +160,37 @@ Linux|GNU|GNU/*) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc - #else + #elif defined(__GLIBC__) LIBC=gnu + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" - # If ldd exists, use it to detect musl libc. - if command -v ldd >/dev/null && \ - ldd --version 2>&1 | grep -q ^musl - then - LIBC=musl + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu fi ;; esac # Note: order is significant - the case branches are not exclusive. -case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -177,12 +202,12 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - "/sbin/$sysctl" 2>/dev/null || \ - "/usr/sbin/$sysctl" 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; @@ -191,13 +216,13 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` - machine="${arch}${endian}"-unknown + machine=${arch}${endian}-unknown ;; - *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; @@ -218,7 +243,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in ;; esac # Determine ABI tags. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` @@ -229,7 +254,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "$UNAME_VERSION" in + case $UNAME_VERSION in Debian*) release='-gnu' ;; @@ -240,45 +265,57 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "$machine-${os}${release}${abi-}" - exit ;; + GUESS=$machine-${os}${release}${abi-} + ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; *:MidnightBSD:*:*) - echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; *:ekkoBSD:*:*) - echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; *:SolidBSD:*:*) - echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; *:MirBSD:*:*) - echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; *:Sortix:*:*) - echo "$UNAME_MACHINE"-unknown-sortix - exit ;; + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; *:Redox:*:*) - echo "$UNAME_MACHINE"-unknown-redox - exit ;; + GUESS=$UNAME_MACHINE-unknown-redox + ;; mips:OSF1:*.*) - echo mips-dec-osf1 - exit ;; + GUESS=mips-dec-osf1 + ;; alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` @@ -292,7 +329,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in + case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") @@ -329,112 +366,121 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; + GUESS=m68k-unknown-sysv4 + ;; *:[Aa]miga[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-amigaos - exit ;; + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; *:[Mm]orph[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-morphos - exit ;; + GUESS=$UNAME_MACHINE-unknown-morphos + ;; *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; + GUESS=i370-ibm-openedition + ;; *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; + GUESS=s390-ibm-zvmoe + ;; *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; + GUESS=powerpc-ibm-os400 + ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix"$UNAME_RELEASE" - exit ;; + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; + GUESS=arm-unknown-riscos + ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; + GUESS=hppa1.1-hitachi-hiuxmpp + ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; + GUESS=pyramid-pyramid-svr4 + ;; DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; + GUESS=sparc-icl-nx6 + ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; s390x:SunOS:*:*) - echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux"$UNAME_RELEASE" - exit ;; + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - UNAME_REL="`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - case `isainfo -b` in - 32) - echo i386-pc-solaris2"$UNAME_REL" - ;; - 64) - echo x86_64-pc-solaris2"$UNAME_REL" - ;; - esac - exit ;; + set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in + case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 - case "`/bin/arch`" in + case `/bin/arch` in sun3) - echo m68k-sun-sunos"$UNAME_RELEASE" + GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) - echo sparc-sun-sunos"$UNAME_RELEASE" + GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac - exit ;; + ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -444,41 +490,41 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; m68k:machten:*:*) - echo m68k-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; powerpc:machten:*:*) - echo powerpc-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; + GUESS=mips-dec-mach_bsd4.3 + ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix"$UNAME_RELEASE" - exit ;; + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -506,75 +552,76 @@ EOF dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos"$UNAME_RELEASE" - exit ;; + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; + GUESS=powerpc-motorola-powermax + ;; Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; + GUESS=powerpc-harris-powerunix + ;; m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; + GUESS=m88k-harris-cxux7 + ;; m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; + GUESS=m88k-motorola-sysv4 + ;; m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then - if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ - [ "$TARGET_BINARY_INTERFACE"x = x ] + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x then - echo m88k-dg-dgux"$UNAME_RELEASE" + GUESS=m88k-dg-dgux$UNAME_RELEASE else - echo m88k-dg-dguxbcs"$UNAME_RELEASE" + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else - echo i586-dg-dgux"$UNAME_RELEASE" + GUESS=i586-dg-dgux$UNAME_RELEASE fi - exit ;; + ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; + GUESS=m88k-dolphin-sysv3 + ;; M88*:*:R3*:*) # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; + GUESS=m88k-tektronix-sysv3 + ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; + GUESS=m68k-tektronix-bsd + ;; *:IRIX*:*:*) - echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" - exit ;; + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; + GUESS=i386-ibm-aix + ;; ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then + if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build @@ -591,16 +638,16 @@ EOF EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then - echo "$SYSTEM_NAME" + GUESS=$SYSTEM_NAME else - echo rs6000-ibm-aix3.2.5 + GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 + GUESS=rs6000-ibm-aix3.2.4 else - echo rs6000-ibm-aix3.2 + GUESS=rs6000-ibm-aix3.2 fi - exit ;; + ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then @@ -608,56 +655,56 @@ EOF else IBM_ARCH=powerpc fi - if [ -x /usr/bin/lslpp ] ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + if test -x /usr/bin/lslpp ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$IBM_ARCH"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; + GUESS=rs6000-ibm-aix + ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) - echo romp-ibm-bsd4.4 - exit ;; + GUESS=romp-ibm-bsd4.4 + ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; + GUESS=rs6000-bull-bosx + ;; DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; + GUESS=m68k-bull-sysv3 + ;; 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; + GUESS=m68k-hp-bsd + ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; + GUESS=m68k-hp-bsd4.4 + ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - case "$UNAME_MACHINE" in + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then + if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "$sc_cpu_version" in + case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "$sc_kernel_bits" in + case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi - if [ "$HP_ARCH" = "" ]; then + if test "$HP_ARCH" = ""; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -696,7 +743,7 @@ EOF test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ "$HP_ARCH" = hppa2.0w ] + if test "$HP_ARCH" = hppa2.0w then set_cc_for_build @@ -717,12 +764,12 @@ EOF HP_ARCH=hppa64 fi fi - echo "$HP_ARCH"-hp-hpux"$HPUX_REV" - exit ;; + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; ia64:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux"$HPUX_REV" - exit ;; + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -752,36 +799,36 @@ EOF EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; + GUESS=unknown-hitachi-hiuxwe2 + ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) - echo hppa1.1-hp-bsd - exit ;; + GUESS=hppa1.1-hp-bsd + ;; 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; + GUESS=hppa1.0-hp-bsd + ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; + GUESS=hppa1.0-hp-mpeix + ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) - echo hppa1.1-hp-osf - exit ;; + GUESS=hppa1.1-hp-osf + ;; hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; + GUESS=hppa1.0-hp-osf + ;; i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo "$UNAME_MACHINE"-unknown-osf1mk + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk else - echo "$UNAME_MACHINE"-unknown-osf1 + GUESS=$UNAME_MACHINE-unknown-osf1 fi - exit ;; + ;; parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; + GUESS=hppa1.1-hp-lites + ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; + GUESS=c1-convex-bsd + ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd @@ -789,17 +836,18 @@ EOF fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; + GUESS=c34-convex-bsd + ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; + GUESS=c38-convex-bsd + ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; + GUESS=c4-convex-bsd + ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ @@ -807,114 +855,129 @@ EOF -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; *:BSD/OS:*:*) - echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi - exit ;; + ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` - case "$UNAME_PROCESSOR" in + case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac - echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; i*:CYGWIN*:*) - echo "$UNAME_MACHINE"-pc-cygwin - exit ;; + GUESS=$UNAME_MACHINE-pc-cygwin + ;; *:MINGW64*:*) - echo "$UNAME_MACHINE"-pc-mingw64 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; *:MINGW*:*) - echo "$UNAME_MACHINE"-pc-mingw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; *:MSYS*:*) - echo "$UNAME_MACHINE"-pc-msys - exit ;; + GUESS=$UNAME_MACHINE-pc-msys + ;; i*:PW*:*) - echo "$UNAME_MACHINE"-pc-pw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; *:Interix*:*) - case "$UNAME_MACHINE" in + case $UNAME_MACHINE in x86) - echo i586-pc-interix"$UNAME_RELEASE" - exit ;; + GUESS=i586-pc-interix$UNAME_RELEASE + ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; IA64) - echo ia64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; esac ;; i*:UWIN*:*) - echo "$UNAME_MACHINE"-pc-uwin - exit ;; + GUESS=$UNAME_MACHINE-pc-uwin + ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; + GUESS=x86_64-pc-cygwin + ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; *:GNU:*:*) # the GNU system - echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" - exit ;; + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" - exit ;; + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; *:Minix:*:*) - echo "$UNAME_MACHINE"-unknown-minix - exit ;; + GUESS=$UNAME_MACHINE-unknown-minix + ;; aarch64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; @@ -925,183 +988,225 @@ EOF esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi - exit ;; + ;; avr32*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; cris:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; crisv32:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; e2k:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; frv:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; hexagon:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; ia64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; k1om:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m32r*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m68*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el + MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} + MIPS_ENDIAN= #else - CPU= + MIPS_ENDIAN= #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" - test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; openrisc*:Linux:*:*) - echo or1k-unknown-linux-"$LIBC" - exit ;; + GUESS=or1k-unknown-linux-$LIBC + ;; or32:Linux:*:* | or1k*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; padre:Linux:*:*) - echo sparc-unknown-linux-"$LIBC" - exit ;; + GUESS=sparc-unknown-linux-$LIBC + ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-"$LIBC" - exit ;; + GUESS=hppa64-unknown-linux-$LIBC + ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; - PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; - *) echo hppa-unknown-linux-"$LIBC" ;; + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; esac - exit ;; + ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64-unknown-linux-$LIBC + ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc-unknown-linux-$LIBC + ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64le-unknown-linux-$LIBC + ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-"$LIBC" - exit ;; - riscv32:Linux:*:* | riscv64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; s390:Linux:*:* | s390x:Linux:*:*) - echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; sh64*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sh*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; tile*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; vax:Linux:*:*) - echo "$UNAME_MACHINE"-dec-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; x86_64:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" - exit ;; + set_cc_for_build + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_X32 >/dev/null + then + LIBCABI=${LIBC}x32 + fi + fi + GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI + ;; xtensa*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; + GUESS=i386-sequent-sysv4 + ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" - exit ;; + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. - echo "$UNAME_MACHINE"-pc-os2-emx - exit ;; + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; i*86:XTS-300:*:STOP) - echo "$UNAME_MACHINE"-unknown-stop - exit ;; + GUESS=$UNAME_MACHINE-unknown-stop + ;; i*86:atheos:*:*) - echo "$UNAME_MACHINE"-unknown-atheos - exit ;; + GUESS=$UNAME_MACHINE-unknown-atheos + ;; i*86:syllable:*:*) - echo "$UNAME_MACHINE"-pc-syllable - exit ;; + GUESS=$UNAME_MACHINE-pc-syllable + ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; i*86:*DOS:*:*) - echo "$UNAME_MACHINE"-pc-msdosdjgpp - exit ;; + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi - exit ;; + ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in @@ -1109,12 +1214,12 @@ EOF *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}" - exit ;; + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1124,11 +1229,11 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv32 + GUESS=$UNAME_MACHINE-pc-sysv32 fi - exit ;; + ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about @@ -1136,31 +1241,31 @@ EOF # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; + GUESS=i586-pc-msdosdjgpp + ;; Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; + GUESS=i386-pc-mach3 + ;; paragon:*:*:*) - echo i860-intel-osf1 - exit ;; + GUESS=i860-intel-osf1 + ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi - exit ;; + ;; mini*:CTIX:SYS*5:*) # "miniframe" - echo m68010-convergent-sysv - exit ;; + GUESS=m68010-convergent-sysv + ;; mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; + GUESS=m68k-convergent-sysv + ;; M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; + GUESS=m68k-diab-dnix + ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) @@ -1185,250 +1290,404 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; + GUESS=m68k-atari-sysv4 + ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv"$UNAME_RELEASE" - exit ;; + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo "$UNAME_MACHINE"-sni-sysv4 + GUESS=$UNAME_MACHINE-sni-sysv4 else - echo ns32k-sni-sysv + GUESS=ns32k-sni-sysv fi - exit ;; + ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says - echo i586-unisys-sysv4 - exit ;; + GUESS=i586-unisys-sysv4 + ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; + GUESS=hppa1.1-stratus-sysv4 + ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; + GUESS=i860-stratus-sysv4 + ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. - echo "$UNAME_MACHINE"-stratus-vos - exit ;; + GUESS=$UNAME_MACHINE-stratus-vos + ;; *:VOS:*:*) # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; + GUESS=hppa1.1-stratus-vos + ;; mc68*:A/UX:*:*) - echo m68k-apple-aux"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; + GUESS=mips-sony-newsos6 + ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv"$UNAME_RELEASE" + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE else - echo mips-unknown-sysv"$UNAME_RELEASE" + GUESS=mips-unknown-sysv$UNAME_RELEASE fi - exit ;; + ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; + GUESS=powerpc-be-beos + ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; + GUESS=powerpc-apple-beos + ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; + GUESS=i586-pc-beos + ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; + GUESS=i586-pc-haiku + ;; x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; + GUESS=x86_64-unknown-haiku + ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; SX-ACE:SUPER-UX:*:*) - echo sxace-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; *:Rhapsody:*:*) - echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - set_cc_for_build - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build fi - if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc - if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_PPC >/dev/null - then - UNAME_PROCESSOR=powerpc - fi + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE fi - echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; *:QNX:*:4*) - echo i386-pc-qnx - exit ;; + GUESS=i386-pc-qnx + ;; NEO-*:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; NSR-*:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; NSV-*:NONSTOP_KERNEL:*:*) - echo nsv-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; NSX-*:NONSTOP_KERNEL:*:*) - echo nsx-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; + GUESS=mips-compaq-nonstopux + ;; BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; + GUESS=bs2000-siemens-sysv + ;; DS/*:UNIX_System_V:*:*) - echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - # shellcheck disable=SC2154 - if test "$cputype" = 386; then + if test "${cputype-}" = 386; then UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype fi - echo "$UNAME_MACHINE"-unknown-plan9 - exit ;; + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; + GUESS=pdp10-unknown-tops10 + ;; *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; + GUESS=pdp10-unknown-tenex + ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; + GUESS=pdp10-dec-tops20 + ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; + GUESS=pdp10-xkl-tops20 + ;; *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; + GUESS=pdp10-unknown-tops20 + ;; *:ITS:*:*) - echo pdp10-unknown-its - exit ;; + GUESS=pdp10-unknown-its + ;; SEI:*:*:SEIUX) - echo mips-sei-seiux"$UNAME_RELEASE" - exit ;; + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; *:DragonFly:*:*) - echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "$UNAME_MACHINE" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; + GUESS=i386-pc-xenix + ;; i*86:skyos:*:*) - echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" - exit ;; + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; i*86:rdos:*:*) - echo "$UNAME_MACHINE"-pc-rdos - exit ;; - i*86:AROS:*:*) - echo "$UNAME_MACHINE"-pc-aros - exit ;; + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; x86_64:VMkernel:*:*) - echo "$UNAME_MACHINE"-unknown-esx - exit ;; + GUESS=$UNAME_MACHINE-unknown-esx + ;; amd64:Isilon\ OneFS:*:*) - echo x86_64-unknown-onefs - exit ;; + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; esac +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + echo "$0: unable to guess system type" >&2 -case "$UNAME_MACHINE:$UNAME_SYSTEM" in +case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 < header file. */ -#define HAVE_MEMORY_H 1 - /* Define to 1 if you have the `memset' function. */ #define HAVE_MEMSET 1 @@ -222,7 +219,7 @@ #define HAVE_PTHREAD_SPIN_LOCK 1 /* Define to 1 if you have the `pthread_yield' function. */ -#define HAVE_PTHREAD_YIELD 1 +/* #undef HAVE_PTHREAD_YIELD */ /* Define to 1 if you have the `PTRACE_GETREGS' ptrace request. */ #define HAVE_PTRACE_GETREGS 1 @@ -251,6 +248,9 @@ /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 +/* Define to 1 if you have the header file. */ +#define HAVE_STDIO_H 1 + /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 @@ -467,10 +467,13 @@ constants. */ /* #undef SOLARIS_ZONE_DEFUNCT */ -/* Define to 1 if you have the ANSI C header files. */ +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ #define STDC_HEADERS 1 -/* Define to 1 if you can safely include both and . */ +/* Define to 1 if you can safely include both and . This + macro is obsolete. */ #define TIME_WITH_SYS_TIME 1 /* Version number of package */ diff --git a/config.h.in b/config.h.in index 644d645..a189816 100644 --- a/config.h.in +++ b/config.h.in @@ -141,9 +141,6 @@ /* Define to 1 if you have the `memchr' function. */ #undef HAVE_MEMCHR -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET @@ -250,6 +247,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H +/* Define to 1 if you have the header file. */ +#undef HAVE_STDIO_H + /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H @@ -466,10 +466,13 @@ constants. */ #undef SOLARIS_ZONE_DEFUNCT -/* Define to 1 if you have the ANSI C header files. */ +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ #undef STDC_HEADERS -/* Define to 1 if you can safely include both and . */ +/* Define to 1 if you can safely include both and . This + macro is obsolete. */ #undef TIME_WITH_SYS_TIME /* Version number of package */ diff --git a/config.sub b/config.sub index b51fb8c..dba16e8 100755 --- a/config.sub +++ b/config.sub @@ -1,12 +1,14 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2018 Free Software Foundation, Inc. +# Copyright 1992-2022 Free Software Foundation, Inc. -timestamp='2018-08-29' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2022-01-03' # 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 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -33,7 +35,7 @@ timestamp='2018-08-29' # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub +# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -50,6 +52,13 @@ timestamp='2018-08-29' # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + me=`echo "$0" | sed -e 's,.*/,,'` usage="\ @@ -67,7 +76,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2018 Free Software Foundation, Inc. +Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -89,7 +98,7 @@ while test $# -gt 0 ; do - ) # Use stdin as input. break ;; -* ) - echo "$me: invalid option $1$help" + echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) @@ -111,9 +120,12 @@ case $# in esac # Split fields of configuration type -IFS="-" read -r field1 field2 field3 field4 <&2 - exit 1 + # No normalization, but not necessarily accepted, that comes below. ;; esac + else # Here we handle the default operating systems that come with various machines. @@ -1525,6 +1527,7 @@ else # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. +kernel= case $cpu-$vendor in score-*) os=elf @@ -1536,7 +1539,8 @@ case $cpu-$vendor in os=riscix1.2 ;; arm*-rebel) - os=linux + kernel=linux + os=gnu ;; arm*-semi) os=aout @@ -1702,84 +1706,180 @@ case $cpu-$vendor in os=none ;; esac + fi +# Now, validate our (potentially fixed-up) OS. +case $os in + # Sometimes we do "kernel-libc", so those need to count as OSes. + musl* | newlib* | relibc* | uclibc*) + ;; + # Likewise for "kernel-abi" + eabi* | gnueabi*) + ;; + # VxWorks passes extra cpu info in the 4th filed. + simlinux | simwindows | spe) + ;; + # Now accept the basic system types. + # The portable systems comes first. + # Each alternative MUST end in a * to match a version number. + gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ + | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ + | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ + | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ + | hiux* | abug | nacl* | netware* | windows* \ + | os9* | macos* | osx* | ios* \ + | mpw* | magic* | mmixware* | mon960* | lnews* \ + | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ + | aos* | aros* | cloudabi* | sortix* | twizzler* \ + | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ + | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ + | mirbsd* | netbsd* | dicos* | openedition* | ose* \ + | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ + | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ + | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ + | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ + | udi* | lites* | ieee* | go32* | aux* | hcos* \ + | chorusrdb* | cegcc* | glidix* | serenity* \ + | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ + | midipix* | mingw32* | mingw64* | mint* \ + | uxpv* | beos* | mpeix* | udk* | moxiebox* \ + | interix* | uwin* | mks* | rhapsody* | darwin* \ + | openstep* | oskit* | conix* | pw32* | nonstopux* \ + | storm-chaos* | tops10* | tenex* | tops20* | its* \ + | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ + | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ + | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ + | skyos* | haiku* | rdos* | toppers* | drops* | es* \ + | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ + | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ + | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ + | fiwix* ) + ;; + # This one is extra strict with allowed versions + sco3.2v2 | sco3.2v[4-9]* | sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + ;; + none) + ;; + *) + echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os in + linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ + | linux-musl* | linux-relibc* | linux-uclibc* ) + ;; + uclinux-uclibc* ) + ;; + -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 + exit 1 + ;; + kfreebsd*-gnu* | kopensolaris*-gnu*) + ;; + vxworks-simlinux | vxworks-simwindows | vxworks-spe) + ;; + nto-qnx*) + ;; + os2-emx) + ;; + *-eabi* | *-gnueabi*) + ;; + -*) + # Blank kernel with real OS is always fine. + ;; + *-*) + echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + exit 1 + ;; +esac + # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) - case $os in - riscix*) + case $cpu-$os in + *-riscix*) vendor=acorn ;; - sunos*) + *-sunos*) vendor=sun ;; - cnk*|-aix*) + *-cnk* | *-aix*) vendor=ibm ;; - beos*) + *-beos*) vendor=be ;; - hpux*) + *-hpux*) vendor=hp ;; - mpeix*) + *-mpeix*) vendor=hp ;; - hiux*) + *-hiux*) vendor=hitachi ;; - unos*) + *-unos*) vendor=crds ;; - dgux*) + *-dgux*) vendor=dg ;; - luna*) + *-luna*) vendor=omron ;; - genix*) + *-genix*) vendor=ns ;; - clix*) + *-clix*) vendor=intergraph ;; - mvs* | opened*) + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) vendor=ibm ;; - os400*) + s390-* | s390x-*) vendor=ibm ;; - ptx*) + *-ptx*) vendor=sequent ;; - tpf*) + *-tpf*) vendor=ibm ;; - vxsim* | vxworks* | windiss*) + *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; - aux*) + *-aux*) vendor=apple ;; - hms*) + *-hms*) vendor=hitachi ;; - mpw* | macos*) + *-mpw* | *-macos*) vendor=apple ;; - *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; - vos*) + *-vos*) vendor=stratus ;; esac ;; esac -echo "$cpu-$vendor-$os" +echo "$cpu-$vendor-${kernel:+$kernel-}$os" exit # Local variables: diff --git a/configure b/configure index ce987b6..00a2719 100755 --- a/configure +++ b/configure @@ -1,11 +1,12 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Valgrind 3.16.0. +# Generated by GNU Autoconf 2.71 for Valgrind 3.16.0. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. # # # This configure script is free software; the Free Software Foundation @@ -16,14 +17,16 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -33,46 +36,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -81,13 +84,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -96,8 +92,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -109,30 +109,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. @@ -154,20 +134,22 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else +else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( @@ -187,42 +169,53 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : -else +else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : + if (eval "$as_required") 2>/dev/null +then : as_have_required=yes -else +else $as_nop as_have_required=no fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : -else +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base + as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : break 2 fi fi @@ -230,14 +223,21 @@ fi esac as_found=false done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi - if test "x$CONFIG_SHELL" != x; then : + if test "x$CONFIG_SHELL" != x +then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also @@ -255,18 +255,19 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else - $as_echo "$0: Please tell bug-autoconf@gnu.org and + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and $0: valgrind-users@lists.sourceforge.net about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run @@ -294,6 +295,7 @@ as_fn_unset () } as_unset=as_fn_unset + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -311,6 +313,14 @@ as_fn_exit () as_fn_set_status $1 exit $1 } # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_mkdir_p # ------------- @@ -325,7 +335,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -334,7 +344,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -373,12 +383,13 @@ as_fn_executable_p () # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -390,18 +401,27 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- @@ -413,9 +433,9 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -442,7 +462,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -486,7 +506,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall @@ -500,6 +520,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits exit } + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -513,6 +537,13 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -588,41 +619,37 @@ PACKAGE_URL='' ac_unique_file="coregrind/m_main.c" # Factoring default headers for most tests. ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include +#include +#ifdef HAVE_STDIO_H +# include #endif -#ifdef STDC_HEADERS +#ifdef HAVE_STDLIB_H # include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif #endif #ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif # include #endif -#ifdef HAVE_STRINGS_H -# include -#endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif #ifdef HAVE_UNISTD_H # include #endif" -ac_header_list= +ac_header_c_list= +ac_func_c_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS @@ -897,6 +924,8 @@ VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN_FALSE VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN_TRUE VGCONF_PLATFORMS_INCLUDE_X86_DARWIN_FALSE VGCONF_PLATFORMS_INCLUDE_X86_DARWIN_TRUE +VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_FALSE +VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_TRUE VGCONF_PLATFORMS_INCLUDE_NANOMIPS_LINUX_FALSE VGCONF_PLATFORMS_INCLUDE_NANOMIPS_LINUX_TRUE VGCONF_PLATFORMS_INCLUDE_MIPS64_LINUX_FALSE @@ -919,6 +948,8 @@ VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_FALSE VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_TRUE VGCONF_PLATFORMS_INCLUDE_X86_LINUX_FALSE VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE +VGCONF_ARCHS_INCLUDE_LOONGARCH64_FALSE +VGCONF_ARCHS_INCLUDE_LOONGARCH64_TRUE VGCONF_ARCHS_INCLUDE_NANOMIPS_FALSE VGCONF_ARCHS_INCLUDE_NANOMIPS_TRUE VGCONF_ARCHS_INCLUDE_MIPS64_FALSE @@ -1000,6 +1031,9 @@ AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V +CSCOPE +ETAGS +CTAGS am__untar am__tar AMTAR @@ -1042,6 +1076,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -1133,6 +1168,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1162,8 +1198,6 @@ do *) ac_optarg=yes ;; esac - # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; @@ -1204,9 +1238,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1230,9 +1264,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1385,6 +1419,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1434,9 +1477,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1450,9 +1493,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1496,9 +1539,9 @@ Try \`$0 --help' for more information" *) # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; @@ -1514,7 +1557,7 @@ if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1522,7 +1565,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1578,7 +1621,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | +printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1675,6 +1718,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1772,9 +1816,9 @@ if test "$ac_init_help" = "recursive"; then case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1802,7 +1846,8 @@ esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive @@ -1810,7 +1855,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1820,9 +1865,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF Valgrind configure 3.16.0 -generated by GNU Autoconf 2.69 +generated by GNU Autoconf 2.71 -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1839,14 +1884,14 @@ fi ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1854,14 +1899,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1883,7 +1929,7 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1891,14 +1937,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1914,14 +1961,14 @@ fi ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1929,14 +1976,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1952,14 +2000,14 @@ fi ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1967,17 +2015,18 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1992,139 +2041,6 @@ fi } # ac_fn_c_try_link -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## --------------------------------------------------- ## -## Report this to valgrind-users@lists.sourceforge.net ## -## --------------------------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in @@ -2132,26 +2048,28 @@ fi ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile @@ -2163,17 +2081,18 @@ $as_echo "$ac_res" >&6; } ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { if (sizeof ($2)) return 0; @@ -2181,12 +2100,13 @@ if (sizeof ($2)) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { if (sizeof (($2))) return 0; @@ -2194,18 +2114,19 @@ if (sizeof (($2))) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop eval "$3=yes" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type @@ -2217,16 +2138,17 @@ $as_echo "$ac_res" >&6; } ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 -$as_echo_n "checking for $2.$3... " >&6; } -if eval \${$4+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int -main () +main (void) { static $2 ac_aggr; if (ac_aggr.$3) @@ -2235,14 +2157,15 @@ return 0; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$4=yes" -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int -main () +main (void) { static $2 ac_aggr; if (sizeof ac_aggr.$3) @@ -2251,33 +2174,78 @@ return 0; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$4=yes" -else +else $as_nop eval "$4=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$4 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_member +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: program exited with status $ac_status" >&5 + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. @@ -2285,16 +2253,9 @@ else #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif + which can conflict with char $2 (); below. */ +#include #undef $2 /* Override any GCC internal prototype to avoid an error. @@ -2312,24 +2273,25 @@ choke me #endif int -main () +main (void) { return $2 (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func @@ -2340,14 +2302,14 @@ $as_echo "$ac_res" >&6; } ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -2355,17 +2317,18 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -2379,14 +2342,34 @@ fi as_fn_set_status $ac_retval } # ac_fn_cxx_try_link +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Valgrind $as_me 3.16.0, which was -generated by GNU Autoconf 2.69. Invocation command line was +generated by GNU Autoconf 2.71. Invocation command line was - $ $0 $@ + $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log @@ -2419,8 +2402,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS @@ -2455,7 +2442,7 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; @@ -2490,11 +2477,13 @@ done # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo - $as_echo "## ---------------- ## + printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo @@ -2505,8 +2494,8 @@ trap 'exit_status=$? case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -2530,7 +2519,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ) echo - $as_echo "## ----------------- ## + printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo @@ -2538,14 +2527,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## + printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo @@ -2553,15 +2542,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - $as_echo "## ----------- ## + printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo @@ -2569,8 +2558,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; echo fi test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && @@ -2584,63 +2573,48 @@ ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h -$as_echo "/* confdefs.h */" > confdefs.h +printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac + ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" + +for ac_site_file in $ac_site_files do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi @@ -2650,86 +2624,718 @@ if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi -as_fn_append ac_header_list " stdlib.h" -as_fn_append ac_header_list " unistd.h" -as_fn_append ac_header_list " sys/param.h" -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +// Does the compiler advertise C99 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +// Does the compiler advertise C11 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +# Test code for whether the C++ compiler supports C++98 (global declarations) +ac_cxx_conftest_cxx98_globals=' +// Does the compiler advertise C++98 conformance? +#if !defined __cplusplus || __cplusplus < 199711L +# error "Compiler does not advertise C++98 conformance" +#endif + +// These inclusions are to reject old compilers that +// lack the unsuffixed header files. +#include +#include + +// and are *not* freestanding headers in C++98. +extern void assert (int); +namespace std { + extern int strcmp (const char *, const char *); +} + +// Namespaces, exceptions, and templates were all added after "C++ 2.0". +using std::exception; +using std::strcmp; + +namespace { + +void test_exception_syntax() +{ + try { + throw "test"; + } catch (const char *s) { + // Extra parentheses suppress a warning when building autoconf itself, + // due to lint rules shared with more typical C programs. + assert (!(strcmp) (s, "test")); + } +} + +template struct test_template +{ + T const val; + explicit test_template(T t) : val(t) {} + template T add(U u) { return static_cast(u) + val; } +}; + +} // anonymous namespace +' + +# Test code for whether the C++ compiler supports C++98 (body of main) +ac_cxx_conftest_cxx98_main=' + assert (argc); + assert (! argv[0]); +{ + test_exception_syntax (); + test_template tt (2.0); + assert (tt.add (4) == 6.0); + assert (true && !false); +} +' + +# Test code for whether the C++ compiler supports C++11 (global declarations) +ac_cxx_conftest_cxx11_globals=' +// Does the compiler advertise C++ 2011 conformance? +#if !defined __cplusplus || __cplusplus < 201103L +# error "Compiler does not advertise C++11 conformance" +#endif + +namespace cxx11test +{ + constexpr int get_val() { return 20; } + + struct testinit + { + int i; + double d; + }; + + class delegate + { + public: + delegate(int n) : n(n) {} + delegate(): delegate(2354) {} + + virtual int getval() { return this->n; }; + protected: + int n; + }; + + class overridden : public delegate + { + public: + overridden(int n): delegate(n) {} + virtual int getval() override final { return this->n * 2; } + }; + + class nocopy + { + public: + nocopy(int i): i(i) {} + nocopy() = default; + nocopy(const nocopy&) = delete; + nocopy & operator=(const nocopy&) = delete; + private: + int i; + }; + + // for testing lambda expressions + template Ret eval(Fn f, Ret v) + { + return f(v); + } + + // for testing variadic templates and trailing return types + template auto sum(V first) -> V + { + return first; + } + template auto sum(V first, Args... rest) -> V + { + return first + sum(rest...); + } +} +' + +# Test code for whether the C++ compiler supports C++11 (body of main) +ac_cxx_conftest_cxx11_main=' +{ + // Test auto and decltype + auto a1 = 6538; + auto a2 = 48573953.4; + auto a3 = "String literal"; + + int total = 0; + for (auto i = a3; *i; ++i) { total += *i; } + + decltype(a2) a4 = 34895.034; +} +{ + // Test constexpr + short sa[cxx11test::get_val()] = { 0 }; +} +{ + // Test initializer lists + cxx11test::testinit il = { 4323, 435234.23544 }; +} +{ + // Test range-based for + int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, + 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; + for (auto &x : array) { x += 23; } +} +{ + // Test lambda expressions + using cxx11test::eval; + assert (eval ([](int x) { return x*2; }, 21) == 42); + double d = 2.0; + assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); + assert (d == 5.0); + assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); + assert (d == 5.0); +} +{ + // Test use of variadic templates + using cxx11test::sum; + auto a = sum(1); + auto b = sum(1, 2); + auto c = sum(1.0, 2.0, 3.0); +} +{ + // Test constructor delegation + cxx11test::delegate d1; + cxx11test::delegate d2(); + cxx11test::delegate d3(45); +} +{ + // Test override and final + cxx11test::overridden o1(55464); +} +{ + // Test nullptr + char *c = nullptr; +} +{ + // Test template brackets + test_template<::test_template> v(test_template(12)); +} +{ + // Unicode literals + char const *utf8 = u8"UTF-8 string \u2500"; + char16_t const *utf16 = u"UTF-8 string \u2500"; + char32_t const *utf32 = U"UTF-32 string \u2500"; +} +' + +# Test code for whether the C compiler supports C++11 (complete). +ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} +${ac_cxx_conftest_cxx11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_cxx_conftest_cxx98_main} + ${ac_cxx_conftest_cxx11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C++98 (complete). +ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_cxx_conftest_cxx98_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H" +as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" +as_fn_append ac_func_c_list " getpagesize HAVE_GETPAGESIZE" + +# Auxiliary files required by this configure script. +ac_aux_files="config.guess config.sub compile missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -2739,36 +3345,9 @@ ac_config_headers="$ac_config_headers config.h" am__api_version='1.16' -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. -# Find a good install program. We prefer a C program (faster), + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install @@ -2782,20 +3361,25 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; @@ -2805,13 +3389,13 @@ case $as_dir/ in #(( # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else @@ -2819,12 +3403,12 @@ case $as_dir/ in #(( echo one > conftest.one echo two > conftest.two mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi @@ -2840,7 +3424,7 @@ IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi - if test "${ac_cv_path_install+set}" = set; then + if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a @@ -2850,8 +3434,8 @@ fi INSTALL=$ac_install_sh fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -2861,8 +3445,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -2916,8 +3500,8 @@ else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= @@ -2936,26 +3520,23 @@ test "$program_suffix" != NONE && # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` +program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` + # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then @@ -2975,11 +3556,12 @@ if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else @@ -2987,11 +3569,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3002,11 +3588,11 @@ fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3015,11 +3601,12 @@ if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else @@ -3027,11 +3614,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3042,11 +3633,11 @@ fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then @@ -3054,8 +3645,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -3067,25 +3658,31 @@ fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + 'BusyBox '* | \ 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done @@ -3096,7 +3693,7 @@ IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then + if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a @@ -3106,18 +3703,19 @@ fi MKDIR_P="$ac_install_sh -d" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else @@ -3125,11 +3723,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3140,24 +3742,25 @@ fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @@ -3173,12 +3776,12 @@ esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } SET_MAKE= else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -3192,7 +3795,8 @@ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : +if test ${enable_silent_rules+y} +then : enableval=$enable_silent_rules; fi @@ -3202,12 +3806,13 @@ case $enable_silent_rules in # ((( *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 @@ -3219,8 +3824,8 @@ else am_cv_make_support_nested_variables=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' @@ -3255,14 +3860,10 @@ fi VERSION='3.16.0' -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF +printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF +printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. @@ -3302,6 +3903,20 @@ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile @@ -3347,17 +3962,18 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 -$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +printf %s "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then : +if test ${enable_maintainer_mode+y} +then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval -else +else $as_nop USE_MAINTAINER_MODE=no fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 -$as_echo "$USE_MAINTAINER_MODE" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +printf "%s\n" "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' @@ -3381,17 +3997,26 @@ CXXFLAGS="$CXXFLAGS" # Checks for various programs. #---------------------------------------------------------------------------- -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +printf "%s\n" "no, using $LN_S" >&6; } fi + + + + + + + + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -3400,11 +4025,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3412,11 +4038,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3427,11 +4057,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3440,11 +4070,12 @@ if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -3452,11 +4083,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3467,11 +4102,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -3479,8 +4114,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -3493,11 +4128,12 @@ if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3505,11 +4141,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3520,11 +4160,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3533,11 +4173,12 @@ fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3546,15 +4187,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3570,18 +4215,18 @@ if test $ac_prog_rejected = yes; then # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3592,11 +4237,12 @@ if test -z "$CC"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3604,11 +4250,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3619,11 +4269,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3636,11 +4286,12 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -3648,11 +4299,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3663,11 +4318,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3679,34 +4334,138 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi +else + CC="$ac_cv_prog_CC" fi fi -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion; do +for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -3716,7 +4475,7 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done @@ -3724,7 +4483,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -3736,9 +4495,9 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" @@ -3759,11 +4518,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -3780,7 +4540,7 @@ do # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -3796,44 +4556,46 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else +else $as_nop ac_file='' fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -3847,15 +4609,15 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext @@ -3864,7 +4626,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; @@ -3876,8 +4638,8 @@ _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in @@ -3885,10 +4647,10 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in @@ -3896,39 +4658,40 @@ $as_echo "$ac_try_echo"; } >&5 *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -3942,11 +4705,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in @@ -3955,31 +4719,32 @@ $as_echo "$ac_try_echo"; } >&5 break;; esac done -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -3989,29 +4754,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi -ac_test_CFLAGS=${CFLAGS+set} +ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no @@ -4020,57 +4789,60 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes -else +else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then @@ -4085,94 +4857,144 @@ else CFLAGS= fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_c89=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC - fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi fi ac_ext=c @@ -4181,21 +5003,23 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -ac_ext=c + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -4223,8 +5047,8 @@ _ACEOF rm -f core conftest* unset am_i fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. @@ -4243,8 +5067,8 @@ DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 -$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out @@ -4280,11 +5104,12 @@ esac fi done rm -f confinc.* confmf.* -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 -$as_echo "${_am_result}" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : +if test ${enable_dependency_tracking+y} +then : enableval=$enable_dependency_tracking; fi @@ -4305,11 +5130,12 @@ fi depcc="$CC" am_compiler_list= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For @@ -4416,8 +5242,8 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if @@ -4437,40 +5263,36 @@ ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif +#include Syntax error _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : -else +else $as_nop # Broken: fails on valid input. continue fi @@ -4482,10 +5304,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : # Broken: success on invalid input. continue -else +else $as_nop # Passes both tests. ac_preproc_ok=: break @@ -4495,7 +5318,8 @@ rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : +if $ac_preproc_ok +then : break fi @@ -4507,29 +5331,24 @@ fi else ac_cv_prog_CPP=$CPP fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif +#include Syntax error _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : -else +else $as_nop # Broken: fails on valid input. continue fi @@ -4541,10 +5360,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : # Broken: success on invalid input. continue -else +else $as_nop # Passes both tests. ac_preproc_ok=: break @@ -4554,20 +5374,27 @@ rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : +if $ac_preproc_ok +then : -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' @@ -4579,15 +5406,16 @@ if test -z "$CXX"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else @@ -4595,11 +5423,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4610,11 +5442,11 @@ fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf "%s\n" "$CXX" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4623,15 +5455,16 @@ fi fi if test -z "$CXX"; then ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else @@ -4639,11 +5472,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4654,11 +5491,11 @@ fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +printf "%s\n" "$ac_ct_CXX" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4670,8 +5507,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX @@ -4681,7 +5518,7 @@ fi fi fi # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do @@ -4691,7 +5528,7 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -4701,20 +5538,21 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 +printf %s "checking whether the compiler supports GNU C++... " >&6; } +if test ${ac_cv_cxx_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -4724,29 +5562,33 @@ main () return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi -ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +printf %s "checking whether $CXX accepts -g... " >&6; } +if test ${ac_cv_prog_cxx_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no @@ -4755,57 +5597,60 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : ac_cv_prog_cxx_g=yes -else +else $as_nop CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : -else +else $as_nop ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : ac_cv_prog_cxx_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } +if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then @@ -4820,6 +5665,100 @@ else CXXFLAGS= fi fi +ac_prog_cxx_stdcxx=no +if test x$ac_prog_cxx_stdcxx = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 +printf %s "checking for $CXX option to enable C++11 features... " >&6; } +if test ${ac_cv_prog_cxx_11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cxx_11=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx11_program +_ACEOF +for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx11" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX +fi + +if test "x$ac_cv_prog_cxx_cxx11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cxx_cxx11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx11" +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 + ac_prog_cxx_stdcxx=cxx11 +fi +fi +if test x$ac_prog_cxx_stdcxx = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 +printf %s "checking for $CXX option to enable C++98 features... " >&6; } +if test ${ac_cv_prog_cxx_98+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cxx_98=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx98_program +_ACEOF +for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx98=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx98" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX +fi + +if test "x$ac_cv_prog_cxx_cxx98" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cxx_cxx98" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx98" +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 + ac_prog_cxx_stdcxx=cxx98 +fi +fi + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -4828,11 +5767,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CXX_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CXX_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For @@ -4939,8 +5879,8 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if @@ -4970,11 +5910,12 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else @@ -4982,11 +5923,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4997,11 +5942,11 @@ fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5010,11 +5955,12 @@ if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else @@ -5022,11 +5968,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5037,11 +5987,11 @@ fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then @@ -5049,8 +5999,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB @@ -5065,11 +6015,12 @@ if test "x$LTO_RANLIB" = "x"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_LTO_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_LTO_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $LTO_RANLIB in [\\/]* | ?:[\\/]*) ac_cv_path_LTO_RANLIB="$LTO_RANLIB" # Let the user override the test with a path. @@ -5079,11 +6030,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_LTO_RANLIB="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_LTO_RANLIB="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5095,11 +6050,11 @@ esac fi LTO_RANLIB=$ac_cv_path_LTO_RANLIB if test -n "$LTO_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LTO_RANLIB" >&5 -$as_echo "$LTO_RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LTO_RANLIB" >&5 +printf "%s\n" "$LTO_RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5112,11 +6067,12 @@ fi # provide a very basic definition for AC_PROG_SED if it's not provided by # autoconf (as e.g. in autoconf 2.59). -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" @@ -5130,10 +6086,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED @@ -5142,13 +6103,13 @@ case `"$ac_path_SED" --version 2>&1` in ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" + printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -5176,8 +6137,8 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed @@ -5189,11 +6150,12 @@ if test "x$AR" = "x"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $AR in [\\/]* | ?:[\\/]*) ac_cv_path_AR="$AR" # Let the user override the test with a path. @@ -5203,11 +6165,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_AR="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5219,11 +6185,11 @@ esac fi AR=$ac_cv_path_AR if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5240,11 +6206,12 @@ if test "x$LTO_AR" = "x"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_LTO_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_LTO_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $LTO_AR in [\\/]* | ?:[\\/]*) ac_cv_path_LTO_AR="$LTO_AR" # Let the user override the test with a path. @@ -5254,11 +6221,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_LTO_AR="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_LTO_AR="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5270,11 +6241,11 @@ esac fi LTO_AR=$ac_cv_path_LTO_AR if test -n "$LTO_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LTO_AR" >&5 -$as_echo "$LTO_AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LTO_AR" >&5 +printf "%s\n" "$LTO_AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5293,11 +6264,12 @@ fi # figure out where perl lives # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PERL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PERL+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. @@ -5307,11 +6279,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PERL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5323,11 +6299,11 @@ esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 -$as_echo "$PERL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf "%s\n" "$PERL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5335,11 +6311,12 @@ fi # figure out where gdb lives # Extract the first word of "gdb", so it can be a program name with args. set dummy gdb; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GDB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GDB+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $GDB in [\\/]* | ?:[\\/]*) ac_cv_path_GDB="$GDB" # Let the user override the test with a path. @@ -5349,11 +6326,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GDB="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GDB="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5366,18 +6347,16 @@ esac fi GDB=$ac_cv_path_GDB if test -n "$GDB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GDB" >&5 -$as_echo "$GDB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GDB" >&5 +printf "%s\n" "$GDB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -cat >>confdefs.h <<_ACEOF -#define GDB_PATH "$GDB" -_ACEOF +printf "%s\n" "#define GDB_PATH \"$GDB\"" >>confdefs.h # some older automake's don't have it so try something on our own @@ -5390,11 +6369,12 @@ test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS depcc="$CCAS" am_compiler_list= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CCAS_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For @@ -5499,8 +6479,8 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CCAS_dependencies_compiler_type" >&6; } CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type if @@ -5518,209 +6498,33 @@ fi # Check if 'diff' supports -u (universal diffs) and use it if possible. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for diff -u" >&5 -$as_echo_n "checking for diff -u... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for diff -u" >&5 +printf %s "checking for diff -u... " >&6; } # Comparing two identical files results in 0. tmpfile="tmp-xxx-yyy-zzz" touch $tmpfile; if diff -u $tmpfile $tmpfile ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } DIFF="diff -u" else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } DIFF="diff" fi rm $tmpfile # Make sure we can compile in C99 mode. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 -$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } -if ${ac_cv_prog_cc_c99+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c99=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -#include - -// Check varargs macros. These examples are taken from C99 6.10.3.5. -#define debug(...) fprintf (stderr, __VA_ARGS__) -#define showlist(...) puts (#__VA_ARGS__) -#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) -static void -test_varargs_macros (void) -{ - int x = 1234; - int y = 5678; - debug ("Flag"); - debug ("X = %d\n", x); - showlist (The first, second, and third items.); - report (x>y, "x is %d but y is %d", x, y); -} - -// Check long long types. -#define BIG64 18446744073709551615ull -#define BIG32 4294967295ul -#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) -#if !BIG_OK - your preprocessor is broken; -#endif -#if BIG_OK -#else - your preprocessor is broken; -#endif -static long long int bignum = -9223372036854775807LL; -static unsigned long long int ubignum = BIG64; - -struct incomplete_array -{ - int datasize; - double data[]; -}; - -struct named_init { - int number; - const wchar_t *name; - double average; -}; - -typedef const char *ccp; - -static inline int -test_restrict (ccp restrict text) -{ - // See if C++-style comments work. - // Iterate through items via the restricted pointer. - // Also check for declarations in for loops. - for (unsigned int i = 0; *(text+i) != '\0'; ++i) - continue; - return 0; -} - -// Check varargs and va_copy. -static void -test_varargs (const char *format, ...) -{ - va_list args; - va_start (args, format); - va_list args_copy; - va_copy (args_copy, args); - - const char *str; - int number; - float fnumber; - - while (*format) - { - switch (*format++) - { - case 's': // string - str = va_arg (args_copy, const char *); - break; - case 'd': // int - number = va_arg (args_copy, int); - break; - case 'f': // float - fnumber = va_arg (args_copy, double); - break; - default: - break; - } - } - va_end (args_copy); - va_end (args); -} - -int -main () -{ - - // Check bool. - _Bool success = false; - - // Check restrict. - if (test_restrict ("String literal") == 0) - success = true; - char *restrict newvar = "Another string"; - - // Check varargs. - test_varargs ("s, d' f .", "string", 65, 34.234); - test_varargs_macros (); - - // Check flexible array members. - struct incomplete_array *ia = - malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); - ia->datasize = 10; - for (int i = 0; i < ia->datasize; ++i) - ia->data[i] = i * 1.234; - - // Check named initializers. - struct named_init ni = { - .number = 34, - .name = L"Test wide string", - .average = 543.34343, - }; - - ni.number = 58; - - int dynamic_array[ni.number]; - dynamic_array[ni.number - 1] = 543; - - // work around unused variable warnings - return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' - || dynamic_array[ni.number - 1] != 543); - - ; - return 0; -} -_ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c99=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c99" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c99" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c99" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c99" != xno; then : - -fi - if test "$ac_cv_prog_cc_c99" == "no"; then as_fn_error $? "Valgrind relies on a C compiler supporting C99" "$LINENO" 5 fi # We don't want gcc < 3.0 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a supported version of gcc" >&5 -$as_echo_n "checking for a supported version of gcc... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a supported version of gcc" >&5 +printf %s "checking for a supported version of gcc... " >&6; } # Obtain the compiler version. # @@ -5787,24 +6591,24 @@ fi # statements have to be quoted. case "${is_clang}-${gcc_version}" in applellvm-5.1|applellvm-[6-9].*|applellvm-[1-9][0-9]*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (Apple LLVM version ${gcc_version})" >&5 -$as_echo "ok (Apple LLVM version ${gcc_version})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (Apple LLVM version ${gcc_version})" >&5 +printf "%s\n" "ok (Apple LLVM version ${gcc_version})" >&6; } ;; icc-1[3-9].*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (ICC version ${gcc_version})" >&5 -$as_echo "ok (ICC version ${gcc_version})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (ICC version ${gcc_version})" >&5 +printf "%s\n" "ok (ICC version ${gcc_version})" >&6; } ;; notclang-[3-9]|notclang-[3-9].*|notclang-[1-9][0-9]*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${gcc_version})" >&5 -$as_echo "ok (${gcc_version})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${gcc_version})" >&5 +printf "%s\n" "ok (${gcc_version})" >&6; } ;; clang-2.9|clang-[3-9].*|clang-[1-9][0-9]*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (clang-${gcc_version})" >&5 -$as_echo "ok (clang-${gcc_version})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (clang-${gcc_version})" >&5 +printf "%s\n" "ok (clang-${gcc_version})" >&6; } ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (${is_clang}-${gcc_version})" >&5 -$as_echo "no (${is_clang}-${gcc_version})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (${is_clang}-${gcc_version})" >&5 +printf "%s\n" "no (${is_clang}-${gcc_version})" >&6; } as_fn_error $? "please use gcc >= 3.0 or clang >= 2.9 or icc >= 13.0 or Apple LLVM >= 5.1" "$LINENO" 5 ;; esac @@ -5817,26 +6621,29 @@ esac # configure-time, and distinguishes them from the VGA_*/VGO_*/VGP_* # variables used when compiling C files. -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; @@ -5855,21 +6662,22 @@ IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; @@ -5889,8 +6697,8 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a supported CPU" >&5 -$as_echo_n "checking for a supported CPU... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a supported CPU" >&5 +printf %s "checking for a supported CPU... " >&6; } # ARCH_MAX reflects the most that this CPU can do: for example if it # is a 64-bit capable PowerPC, then it must be set to ppc64 and not ppc32. @@ -5910,94 +6718,100 @@ $as_echo_n "checking for a supported CPU... " >&6; } case "${host_cpu}" in i?86) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 -$as_echo "ok (${host_cpu})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 +printf "%s\n" "ok (${host_cpu})" >&6; } ARCH_MAX="x86" ;; x86_64) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 -$as_echo "ok (${host_cpu})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 +printf "%s\n" "ok (${host_cpu})" >&6; } ARCH_MAX="amd64" ;; powerpc64) # this only referrs to 64-bit Big Endian - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 -$as_echo "ok (${host_cpu})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 +printf "%s\n" "ok (${host_cpu})" >&6; } ARCH_MAX="ppc64be" ;; powerpc64le) # this only referrs to 64-bit Little Endian - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 -$as_echo "ok (${host_cpu})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 +printf "%s\n" "ok (${host_cpu})" >&6; } ARCH_MAX="ppc64le" ;; powerpc) # On Linux this means only a 32-bit capable CPU. - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 -$as_echo "ok (${host_cpu})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 +printf "%s\n" "ok (${host_cpu})" >&6; } ARCH_MAX="ppc32" ;; s390x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 -$as_echo "ok (${host_cpu})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 +printf "%s\n" "ok (${host_cpu})" >&6; } ARCH_MAX="s390x" ;; armv7*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 -$as_echo "ok (${host_cpu})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 +printf "%s\n" "ok (${host_cpu})" >&6; } ARCH_MAX="arm" ;; aarch64*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 -$as_echo "ok (${host_cpu})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 +printf "%s\n" "ok (${host_cpu})" >&6; } ARCH_MAX="arm64" ;; mips) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 -$as_echo "ok (${host_cpu})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 +printf "%s\n" "ok (${host_cpu})" >&6; } ARCH_MAX="mips32" ;; mipsel) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 -$as_echo "ok (${host_cpu})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 +printf "%s\n" "ok (${host_cpu})" >&6; } ARCH_MAX="mips32" ;; mipsisa32r2) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 -$as_echo "ok (${host_cpu})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 +printf "%s\n" "ok (${host_cpu})" >&6; } ARCH_MAX="mips32" ;; mips64*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 -$as_echo "ok (${host_cpu})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 +printf "%s\n" "ok (${host_cpu})" >&6; } ARCH_MAX="mips64" ;; mipsisa64*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 -$as_echo "ok (${host_cpu})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 +printf "%s\n" "ok (${host_cpu})" >&6; } ARCH_MAX="mips64" ;; nanomips) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 -$as_echo "ok (${host_cpu})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 +printf "%s\n" "ok (${host_cpu})" >&6; } ARCH_MAX="nanomips" ;; + loongarch64*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 +printf "%s\n" "ok (${host_cpu})" >&6; } + ARCH_MAX="loongarch64" + ;; + *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (${host_cpu})" >&5 -$as_echo "no (${host_cpu})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (${host_cpu})" >&5 +printf "%s\n" "no (${host_cpu})" >&6; } as_fn_error $? "Unsupported host architecture. Sorry" "$LINENO" 5 ;; esac @@ -6013,38 +6827,42 @@ esac # used. --njn] # Check if a 64-bit only build has been requested -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a 64-bit only build" >&5 -$as_echo_n "checking for a 64-bit only build... " >&6; } -if ${vg_cv_only64bit+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a 64-bit only build" >&5 +printf %s "checking for a 64-bit only build... " >&6; } +if test ${vg_cv_only64bit+y} +then : + printf %s "(cached) " >&6 +else $as_nop # Check whether --enable-only64bit was given. -if test "${enable_only64bit+set}" = set; then : +if test ${enable_only64bit+y} +then : enableval=$enable_only64bit; vg_cv_only64bit=$enableval -else +else $as_nop vg_cv_only64bit=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vg_cv_only64bit" >&5 -$as_echo "$vg_cv_only64bit" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vg_cv_only64bit" >&5 +printf "%s\n" "$vg_cv_only64bit" >&6; } # Check if a 32-bit only build has been requested -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a 32-bit only build" >&5 -$as_echo_n "checking for a 32-bit only build... " >&6; } -if ${vg_cv_only32bit+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a 32-bit only build" >&5 +printf %s "checking for a 32-bit only build... " >&6; } +if test ${vg_cv_only32bit+y} +then : + printf %s "(cached) " >&6 +else $as_nop # Check whether --enable-only32bit was given. -if test "${enable_only32bit+set}" = set; then : +if test ${enable_only32bit+y} +then : enableval=$enable_only32bit; vg_cv_only32bit=$enableval -else +else $as_nop vg_cv_only32bit=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vg_cv_only32bit" >&5 -$as_echo "$vg_cv_only32bit" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vg_cv_only32bit" >&5 +printf "%s\n" "$vg_cv_only32bit" >&6; } # Stay sane if test x$vg_cv_only64bit = xyes -a x$vg_cv_only32bit = xyes; then @@ -6056,73 +6874,73 @@ fi # VGCONF_OS is the primary build OS, eg. "linux". It is passed in to # compilation of many C files via -VGO_$(VGCONF_OS) and # -VGP_$(VGCONF_ARCH_PRI)_$(VGCONF_OS). -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a supported OS" >&5 -$as_echo_n "checking for a supported OS... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a supported OS" >&5 +printf %s "checking for a supported OS... " >&6; } DEFAULT_SUPP="" case "${host_os}" in *linux*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_os})" >&5 -$as_echo "ok (${host_os})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_os})" >&5 +printf "%s\n" "ok (${host_os})" >&6; } VGCONF_OS="linux" # Ok, this is linux. Check the kernel version - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the kernel version" >&5 -$as_echo_n "checking for the kernel version... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the kernel version" >&5 +printf %s "checking for the kernel version... " >&6; } kernel=`uname -r` case "${kernel}" in 0.*|1.*|2.0.*|2.1.*|2.2.*|2.3.*|2.4.*|2.5.*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported (${kernel})" >&5 -$as_echo "unsupported (${kernel})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported (${kernel})" >&5 +printf "%s\n" "unsupported (${kernel})" >&6; } as_fn_error $? "Valgrind needs a Linux kernel >= 2.6" "$LINENO" 5 ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.6 or later (${kernel})" >&5 -$as_echo "2.6 or later (${kernel})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: 2.6 or later (${kernel})" >&5 +printf "%s\n" "2.6 or later (${kernel})" >&6; } ;; esac ;; *darwin*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_os})" >&5 -$as_echo "ok (${host_os})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_os})" >&5 +printf "%s\n" "ok (${host_os})" >&6; } VGCONF_OS="darwin" -$as_echo "#define DARWIN_10_5 100500" >>confdefs.h +printf "%s\n" "#define DARWIN_10_5 100500" >>confdefs.h -$as_echo "#define DARWIN_10_6 100600" >>confdefs.h +printf "%s\n" "#define DARWIN_10_6 100600" >>confdefs.h -$as_echo "#define DARWIN_10_7 100700" >>confdefs.h +printf "%s\n" "#define DARWIN_10_7 100700" >>confdefs.h -$as_echo "#define DARWIN_10_8 100800" >>confdefs.h +printf "%s\n" "#define DARWIN_10_8 100800" >>confdefs.h -$as_echo "#define DARWIN_10_9 100900" >>confdefs.h +printf "%s\n" "#define DARWIN_10_9 100900" >>confdefs.h -$as_echo "#define DARWIN_10_10 101000" >>confdefs.h +printf "%s\n" "#define DARWIN_10_10 101000" >>confdefs.h -$as_echo "#define DARWIN_10_11 101100" >>confdefs.h +printf "%s\n" "#define DARWIN_10_11 101100" >>confdefs.h -$as_echo "#define DARWIN_10_12 101200" >>confdefs.h +printf "%s\n" "#define DARWIN_10_12 101200" >>confdefs.h -$as_echo "#define DARWIN_10_13 101300" >>confdefs.h +printf "%s\n" "#define DARWIN_10_13 101300" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the kernel version" >&5 -$as_echo_n "checking for the kernel version... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the kernel version" >&5 +printf %s "checking for the kernel version... " >&6; } kernel=`uname -r` # Nb: for Darwin we set DEFAULT_SUPP here. That's because Darwin @@ -6143,97 +6961,97 @@ $as_echo_n "checking for the kernel version... " >&6; } # assuming that 3.7.0 is a Snow Leopard and Lion-only release. case "${kernel}" in 9.*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin 9.x (${kernel}) / Mac OS X 10.5 Leopard" >&5 -$as_echo "Darwin 9.x (${kernel}) / Mac OS X 10.5 Leopard" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Darwin 9.x (${kernel}) / Mac OS X 10.5 Leopard" >&5 +printf "%s\n" "Darwin 9.x (${kernel}) / Mac OS X 10.5 Leopard" >&6; } -$as_echo "#define DARWIN_VERS DARWIN_10_5" >>confdefs.h +printf "%s\n" "#define DARWIN_VERS DARWIN_10_5" >>confdefs.h DEFAULT_SUPP="darwin9.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="darwin9-drd.supp ${DEFAULT_SUPP}" ;; 10.*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin 10.x (${kernel}) / Mac OS X 10.6 Snow Leopard" >&5 -$as_echo "Darwin 10.x (${kernel}) / Mac OS X 10.6 Snow Leopard" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Darwin 10.x (${kernel}) / Mac OS X 10.6 Snow Leopard" >&5 +printf "%s\n" "Darwin 10.x (${kernel}) / Mac OS X 10.6 Snow Leopard" >&6; } -$as_echo "#define DARWIN_VERS DARWIN_10_6" >>confdefs.h +printf "%s\n" "#define DARWIN_VERS DARWIN_10_6" >>confdefs.h DEFAULT_SUPP="darwin10.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}" ;; 11.*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin 11.x (${kernel}) / Mac OS X 10.7 Lion" >&5 -$as_echo "Darwin 11.x (${kernel}) / Mac OS X 10.7 Lion" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Darwin 11.x (${kernel}) / Mac OS X 10.7 Lion" >&5 +printf "%s\n" "Darwin 11.x (${kernel}) / Mac OS X 10.7 Lion" >&6; } -$as_echo "#define DARWIN_VERS DARWIN_10_7" >>confdefs.h +printf "%s\n" "#define DARWIN_VERS DARWIN_10_7" >>confdefs.h DEFAULT_SUPP="darwin11.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}" ;; 12.*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin 12.x (${kernel}) / Mac OS X 10.8 Mountain Lion" >&5 -$as_echo "Darwin 12.x (${kernel}) / Mac OS X 10.8 Mountain Lion" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Darwin 12.x (${kernel}) / Mac OS X 10.8 Mountain Lion" >&5 +printf "%s\n" "Darwin 12.x (${kernel}) / Mac OS X 10.8 Mountain Lion" >&6; } -$as_echo "#define DARWIN_VERS DARWIN_10_8" >>confdefs.h +printf "%s\n" "#define DARWIN_VERS DARWIN_10_8" >>confdefs.h DEFAULT_SUPP="darwin12.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}" ;; 13.*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin 13.x (${kernel}) / Mac OS X 10.9 Mavericks" >&5 -$as_echo "Darwin 13.x (${kernel}) / Mac OS X 10.9 Mavericks" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Darwin 13.x (${kernel}) / Mac OS X 10.9 Mavericks" >&5 +printf "%s\n" "Darwin 13.x (${kernel}) / Mac OS X 10.9 Mavericks" >&6; } -$as_echo "#define DARWIN_VERS DARWIN_10_9" >>confdefs.h +printf "%s\n" "#define DARWIN_VERS DARWIN_10_9" >>confdefs.h DEFAULT_SUPP="darwin13.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}" ;; 14.*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin 14.x (${kernel}) / Mac OS X 10.10 Yosemite" >&5 -$as_echo "Darwin 14.x (${kernel}) / Mac OS X 10.10 Yosemite" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Darwin 14.x (${kernel}) / Mac OS X 10.10 Yosemite" >&5 +printf "%s\n" "Darwin 14.x (${kernel}) / Mac OS X 10.10 Yosemite" >&6; } -$as_echo "#define DARWIN_VERS DARWIN_10_10" >>confdefs.h +printf "%s\n" "#define DARWIN_VERS DARWIN_10_10" >>confdefs.h DEFAULT_SUPP="darwin14.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}" ;; 15.*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin 15.x (${kernel}) / Mac OS X 10.11 El Capitan" >&5 -$as_echo "Darwin 15.x (${kernel}) / Mac OS X 10.11 El Capitan" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Darwin 15.x (${kernel}) / Mac OS X 10.11 El Capitan" >&5 +printf "%s\n" "Darwin 15.x (${kernel}) / Mac OS X 10.11 El Capitan" >&6; } -$as_echo "#define DARWIN_VERS DARWIN_10_11" >>confdefs.h +printf "%s\n" "#define DARWIN_VERS DARWIN_10_11" >>confdefs.h DEFAULT_SUPP="darwin15.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}" ;; 16.*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin 16.x (${kernel}) / macOS 10.12 Sierra" >&5 -$as_echo "Darwin 16.x (${kernel}) / macOS 10.12 Sierra" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Darwin 16.x (${kernel}) / macOS 10.12 Sierra" >&5 +printf "%s\n" "Darwin 16.x (${kernel}) / macOS 10.12 Sierra" >&6; } -$as_echo "#define DARWIN_VERS DARWIN_10_12" >>confdefs.h +printf "%s\n" "#define DARWIN_VERS DARWIN_10_12" >>confdefs.h DEFAULT_SUPP="darwin16.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}" ;; 17.*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin 17.x (${kernel}) / macOS 10.13 High Sierra" >&5 -$as_echo "Darwin 17.x (${kernel}) / macOS 10.13 High Sierra" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Darwin 17.x (${kernel}) / macOS 10.13 High Sierra" >&5 +printf "%s\n" "Darwin 17.x (${kernel}) / macOS 10.13 High Sierra" >&6; } -$as_echo "#define DARWIN_VERS DARWIN_10_13" >>confdefs.h +printf "%s\n" "#define DARWIN_VERS DARWIN_10_13" >>confdefs.h DEFAULT_SUPP="darwin17.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}" ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported (${kernel})" >&5 -$as_echo "unsupported (${kernel})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported (${kernel})" >&5 +printf "%s\n" "unsupported (${kernel})" >&6; } as_fn_error $? "Valgrind works on Darwin 10.x, 11.x, 12.x, 13.x, 14.x, 15.x, 16.x and 17.x (Mac OS X 10.6/7/8/9/10/11 and macOS 10.12/13)" "$LINENO" 5 ;; esac ;; solaris2.11*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_os})" >&5 -$as_echo "ok (${host_os})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_os})" >&5 +printf "%s\n" "ok (${host_os})" >&6; } VGCONF_OS="solaris" uname_v=$( uname -v ) @@ -6248,15 +7066,15 @@ $as_echo "ok (${host_os})" >&6; } ;; solaris2.12*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_os})" >&5 -$as_echo "ok (${host_os})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_os})" >&5 +printf "%s\n" "ok (${host_os})" >&6; } VGCONF_OS="solaris" DEFAULT_SUPP="solaris12.supp ${DEFAULT_SUPP}" ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (${host_os})" >&5 -$as_echo "no (${host_os})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (${host_os})" >&5 +printf "%s\n" "no (${host_os})" >&6; } as_fn_error $? "Valgrind is operating system specific. Sorry." "$LINENO" 5 ;; esac @@ -6269,8 +7087,8 @@ esac case "$ARCH_MAX-$VGCONF_OS" in amd64-linux|ppc64be-linux|arm64-linux|amd64-solaris) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 32 bit build support" >&5 -$as_echo_n "checking for 32 bit build support... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 32 bit build support" >&5 +printf %s "checking for 32 bit build support... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-m32" @@ -6278,7 +7096,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -6287,24 +7105,25 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop vg_cv_only64bit="yes" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS=$safe_CFLAGS;; mips64-linux) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 32 bit build support" >&5 -$as_echo_n "checking for 32 bit build support... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 32 bit build support" >&5 +printf %s "checking for 32 bit build support... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -mips32 -mabi=32" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -6313,26 +7132,27 @@ $as_echo_n "checking for 32 bit build support... " >&6; } #include int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop vg_cv_only64bit="yes" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS=$safe_CFLAGS;; esac @@ -6378,8 +7198,8 @@ fi # on a 64 bit machine but have been requested only to do a 32 bit build. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a supported CPU/OS combination" >&5 -$as_echo_n "checking for a supported CPU/OS combination... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a supported CPU/OS combination" >&5 +printf %s "checking for a supported CPU/OS combination... " >&6; } # NB. The load address for a given platform may be specified in more # than one place, in some cases, depending on whether we're doing a biarch, @@ -6398,8 +7218,8 @@ case "$ARCH_MAX-$VGCONF_OS" in valt_load_address_pri_inner="0x38000000" valt_load_address_sec_norml="0xUNSET" valt_load_address_sec_inner="0xUNSET" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 -$as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 +printf "%s\n" "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } ;; amd64-linux) valt_load_address_sec_norml="0xUNSET" @@ -6428,8 +7248,8 @@ $as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } valt_load_address_sec_norml="0x58000000" valt_load_address_sec_inner="0x38000000" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 -$as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 +printf "%s\n" "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } ;; ppc32-linux) VGCONF_ARCH_PRI="ppc32" @@ -6440,8 +7260,8 @@ $as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } valt_load_address_pri_inner="0x38000000" valt_load_address_sec_norml="0xUNSET" valt_load_address_sec_inner="0xUNSET" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 -$as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 +printf "%s\n" "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } ;; ppc64be-linux) valt_load_address_sec_norml="0xUNSET" @@ -6470,8 +7290,8 @@ $as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } valt_load_address_sec_norml="0x58000000" valt_load_address_sec_inner="0x38000000" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 -$as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 +printf "%s\n" "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } ;; ppc64le-linux) # Little Endian is only supported on PPC64 @@ -6483,8 +7303,8 @@ $as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } VGCONF_PLATFORM_SEC_CAPS="" valt_load_address_pri_norml="0x58000000" valt_load_address_pri_inner="0x38000000" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 -$as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 +printf "%s\n" "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } ;; # Darwin gets identified as 32-bit even when it supports 64-bit. # (Not sure why, possibly because 'uname' returns "i386"?) Just about @@ -6520,8 +7340,8 @@ $as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } valt_load_address_sec_norml="0x58000000" valt_load_address_sec_inner="0x38000000" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 -$as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 +printf "%s\n" "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } ;; arm-linux) VGCONF_ARCH_PRI="arm" @@ -6531,8 +7351,8 @@ $as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } valt_load_address_pri_inner="0x38000000" valt_load_address_sec_norml="0xUNSET" valt_load_address_sec_inner="0xUNSET" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu}-${host_os})" >&5 -$as_echo "ok (${host_cpu}-${host_os})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu}-${host_os})" >&5 +printf "%s\n" "ok (${host_cpu}-${host_os})" >&6; } ;; arm64-linux) valt_load_address_sec_norml="0xUNSET" @@ -6561,8 +7381,8 @@ $as_echo "ok (${host_cpu}-${host_os})" >&6; } valt_load_address_sec_norml="0x58000000" valt_load_address_sec_inner="0x38000000" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 -$as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 +printf "%s\n" "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } ;; s390x-linux) VGCONF_ARCH_PRI="s390x" @@ -6575,8 +7395,8 @@ $as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } valt_load_address_pri_inner="0x810000000" valt_load_address_sec_norml="0xUNSET" valt_load_address_sec_inner="0xUNSET" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 -$as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 +printf "%s\n" "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } ;; mips32-linux) VGCONF_ARCH_PRI="mips32" @@ -6587,8 +7407,8 @@ $as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } valt_load_address_pri_inner="0x38000000" valt_load_address_sec_norml="0xUNSET" valt_load_address_sec_inner="0xUNSET" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 -$as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 +printf "%s\n" "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } ;; mips64-linux) valt_load_address_sec_norml="0xUNSET" @@ -6617,8 +7437,8 @@ $as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } valt_load_address_sec_norml="0x58000000" valt_load_address_sec_inner="0x38000000" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 -$as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 +printf "%s\n" "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } ;; nanomips-linux) VGCONF_ARCH_PRI="nanomips" @@ -6629,8 +7449,20 @@ $as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } valt_load_address_pri_inner="0x38000000" valt_load_address_sec_norml="0xUNSET" valt_load_address_sec_inner="0xUNSET" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 -$as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 +printf "%s\n" "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } + ;; + loongarch64-linux) + VGCONF_ARCH_PRI="loongarch64" + VGCONF_ARCH_SEC="" + VGCONF_PLATFORM_PRI_CAPS="LOONGARCH64_LINUX" + VGCONF_PLATFORM_SEC_CAPS="" + valt_load_address_pri_norml="0x58000000" + valt_load_address_pri_inner="0x38000000" + valt_load_address_sec_norml="0xUNSET" + valt_load_address_sec_inner="0xUNSET" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 +printf "%s\n" "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } ;; x86-solaris) VGCONF_ARCH_PRI="x86" @@ -6641,8 +7473,8 @@ $as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } valt_load_address_pri_inner="0x38000000" valt_load_address_sec_norml="0xUNSET" valt_load_address_sec_inner="0xUNSET" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 -$as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 +printf "%s\n" "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } ;; amd64-solaris) valt_load_address_sec_norml="0xUNSET" @@ -6671,8 +7503,8 @@ $as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } valt_load_address_sec_norml="0x58000000" valt_load_address_sec_inner="0x38000000" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 -$as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 +printf "%s\n" "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } ;; *) VGCONF_ARCH_PRI="unknown" @@ -6683,8 +7515,8 @@ $as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } valt_load_address_pri_inner="0xUNSET" valt_load_address_sec_norml="0xUNSET" valt_load_address_sec_inner="0xUNSET" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (${ARCH_MAX}-${VGCONF_OS})" >&5 -$as_echo "no (${ARCH_MAX}-${VGCONF_OS})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (${ARCH_MAX}-${VGCONF_OS})" >&5 +printf "%s\n" "no (${ARCH_MAX}-${VGCONF_OS})" >&6; } as_fn_error $? "Valgrind is platform specific. Sorry. Please consider doing a port." "$LINENO" 5 ;; esac @@ -6784,6 +7616,14 @@ else VGCONF_ARCHS_INCLUDE_NANOMIPS_FALSE= fi + if test x$VGCONF_PLATFORM_PRI_CAPS = xLOONGARCH64_LINUX ; then + VGCONF_ARCHS_INCLUDE_LOONGARCH64_TRUE= + VGCONF_ARCHS_INCLUDE_LOONGARCH64_FALSE='#' +else + VGCONF_ARCHS_INCLUDE_LOONGARCH64_TRUE='#' + VGCONF_ARCHS_INCLUDE_LOONGARCH64_FALSE= +fi + # Set up VGCONF_PLATFORMS_INCLUDE_. Either one or two of these # become defined. @@ -6880,6 +7720,14 @@ else VGCONF_PLATFORMS_INCLUDE_NANOMIPS_LINUX_FALSE= fi + if test x$VGCONF_PLATFORM_PRI_CAPS = xLOONGARCH64_LINUX; then + VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_TRUE= + VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_FALSE='#' +else + VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_TRUE='#' + VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_FALSE= +fi + if test x$VGCONF_PLATFORM_PRI_CAPS = xX86_DARWIN \ -o x$VGCONF_PLATFORM_SEC_CAPS = xX86_DARWIN; then VGCONF_PLATFORMS_INCLUDE_X86_DARWIN_TRUE= @@ -6929,7 +7777,8 @@ fi -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX \ -o x$VGCONF_PLATFORM_PRI_CAPS = xMIPS32_LINUX \ -o x$VGCONF_PLATFORM_PRI_CAPS = xMIPS64_LINUX \ - -o x$VGCONF_PLATFORM_PRI_CAPS = xNANOMIPS_LINUX; then + -o x$VGCONF_PLATFORM_PRI_CAPS = xNANOMIPS_LINUX \ + -o x$VGCONF_PLATFORM_PRI_CAPS = xLOONGARCH64_LINUX; then VGCONF_OS_IS_LINUX_TRUE= VGCONF_OS_IS_LINUX_FALSE='#' else @@ -6978,24 +7827,26 @@ fi # another Valgrind. Choose the load address accordingly. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for use as an inner Valgrind" >&5 -$as_echo_n "checking for use as an inner Valgrind... " >&6; } -if ${vg_cv_inner+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for use as an inner Valgrind" >&5 +printf %s "checking for use as an inner Valgrind... " >&6; } +if test ${vg_cv_inner+y} +then : + printf %s "(cached) " >&6 +else $as_nop # Check whether --enable-inner was given. -if test "${enable_inner+set}" = set; then : +if test ${enable_inner+y} +then : enableval=$enable_inner; vg_cv_inner=$enableval -else +else $as_nop vg_cv_inner=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vg_cv_inner" >&5 -$as_echo "$vg_cv_inner" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vg_cv_inner" >&5 +printf "%s\n" "$vg_cv_inner" >&6; } if test "$vg_cv_inner" = yes; then -$as_echo "#define ENABLE_INNER 1" >>confdefs.h +printf "%s\n" "#define ENABLE_INNER 1" >>confdefs.h VALT_LOAD_ADDRESS_PRI=$valt_load_address_pri_inner VALT_LOAD_ADDRESS_SEC=$valt_load_address_sec_inner @@ -7009,37 +7860,38 @@ fi #---------------------------------------------------------------------------- # Check whether we should build with the undefined beahviour sanitiser. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for using the undefined behaviour sanitiser" >&5 -$as_echo_n "checking for using the undefined behaviour sanitiser... " >&6; } -if ${vg_cv_ubsan+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for using the undefined behaviour sanitiser" >&5 +printf %s "checking for using the undefined behaviour sanitiser... " >&6; } +if test ${vg_cv_ubsan+y} +then : + printf %s "(cached) " >&6 +else $as_nop # Check whether --enable-ubsan was given. -if test "${enable_ubsan+set}" = set; then : +if test ${enable_ubsan+y} +then : enableval=$enable_ubsan; vg_cv_ubsan=$enableval -else +else $as_nop vg_cv_ubsan=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vg_cv_ubsan" >&5 -$as_echo "$vg_cv_ubsan" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vg_cv_ubsan" >&5 +printf "%s\n" "$vg_cv_ubsan" >&6; } #---------------------------------------------------------------------------- # Extra fine-tuning of installation directories #---------------------------------------------------------------------------- # Check whether --with-tmpdir was given. -if test "${with_tmpdir+set}" = set; then : +if test ${with_tmpdir+y} +then : withval=$with_tmpdir; tmpdir="$withval" -else +else $as_nop tmpdir="/tmp" fi -cat >>confdefs.h <<_ACEOF -#define VG_TMPDIR "$tmpdir" -_ACEOF +printf "%s\n" "#define VG_TMPDIR \"$tmpdir\"" >>confdefs.h VG_TMPDIR=$tmpdir @@ -7051,11 +7903,12 @@ VG_TMPDIR=$tmpdir if test -z "$VGCONF_OS_IS_DARWIN_TRUE"; then : # Extract the first word of "xcrun", so it can be a program name with args. set dummy xcrun; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_XCRUN+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_XCRUN+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$XCRUN"; then ac_cv_prog_XCRUN="$XCRUN" # Let the user override the test. else @@ -7063,11 +7916,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_XCRUN="yes" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7079,21 +7936,22 @@ fi fi XCRUN=$ac_cv_prog_XCRUN if test -n "$XCRUN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XCRUN" >&5 -$as_echo "$XCRUN" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XCRUN" >&5 +printf "%s\n" "$XCRUN" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for xcode sdk include path" >&5 -$as_echo_n "checking for xcode sdk include path... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for xcode sdk include path" >&5 +printf %s "checking for xcode sdk include path... " >&6; } # Check whether --with-xcodedir was given. -if test "${with_xcodedir+set}" = set; then : +if test ${with_xcodedir+y} +then : withval=$with_xcodedir; xcodedir="$withval" -else +else $as_nop if test "x$XCRUN" != "xno" -a ! -d /usr/include; then xcrundir=`xcrun --sdk macosx --show-sdk-path` @@ -7106,31 +7964,78 @@ else xcodedir="/usr/include" fi -fi +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xcodedir" >&5 +printf "%s\n" "$xcodedir" >&6; } + +printf "%s\n" "#define XCODE_DIR \"$xcodedir\"" >>confdefs.h + +XCODE_DIR=$xcodedir + +fi + +#---------------------------------------------------------------------------- +# Libc and suppressions +#---------------------------------------------------------------------------- +# This variable will collect the suppression files to be used. + + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xcodedir" >&5 -$as_echo "$xcodedir" >&6; } -cat >>confdefs.h <<_ACEOF -#define XCODE_DIR "$xcodedir" -_ACEOF -XCODE_DIR=$xcodedir +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "features.h" "ac_cv_header_features_h" "$ac_includes_default" +if test "x$ac_cv_header_features_h" = xyes +then : fi -#---------------------------------------------------------------------------- -# Libc and suppressions -#---------------------------------------------------------------------------- -# This variable will collect the suppression files to be used. +if test x$ac_cv_header_features_h = xyes; then + rm -f conftest.$ac_ext + cat <<_ACEOF >conftest.$ac_ext +#include +#if defined(__GNU_LIBRARY__) && defined(__GLIBC__) && defined(__GLIBC_MINOR__) +glibc version is: __GLIBC__ __GLIBC_MINOR__ +#endif +_ACEOF + GLIBC_VERSION="`$CPP -P conftest.$ac_ext | $SED -n 's/^glibc version is: //p' | $SED 's/ /./g'`" +fi +# not really a version check -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST @@ -7138,10 +8043,15 @@ else for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP @@ -7150,13 +8060,13 @@ case `"$ac_path_GREP" --version 2>&1` in ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" + printf "%s\n" 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -7184,16 +8094,17 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else @@ -7204,10 +8115,15 @@ else for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP @@ -7216,13 +8132,13 @@ case `"$ac_path_EGREP" --version 2>&1` in ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -7251,159 +8167,11 @@ fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -ac_fn_c_check_header_mongrel "$LINENO" "features.h" "ac_cv_header_features_h" "$ac_includes_default" -if test "x$ac_cv_header_features_h" = xyes; then : - -fi - - - -if test x$ac_cv_header_features_h = xyes; then - rm -f conftest.$ac_ext - cat <<_ACEOF >conftest.$ac_ext -#include -#if defined(__GNU_LIBRARY__) && defined(__GLIBC__) && defined(__GLIBC_MINOR__) -glibc version is: __GLIBC__ __GLIBC_MINOR__ -#endif -_ACEOF - GLIBC_VERSION="`$CPP -P conftest.$ac_ext | $SED -n 's/^glibc version is: //p' | $SED 's/ /./g'`" -fi - -# not really a version check cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7414,10 +8182,11 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "DARWIN_LIBC" >/dev/null 2>&1; then : + $EGREP "DARWIN_LIBC" >/dev/null 2>&1 +then : GLIBC_VERSION="darwin" fi -rm -f conftest* +rm -rf conftest* # not really a version check @@ -7430,10 +8199,11 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "BIONIC_LIBC" >/dev/null 2>&1; then : + $EGREP "BIONIC_LIBC" >/dev/null 2>&1 +then : GLIBC_VERSION="bionic" fi -rm -f conftest* +rm -rf conftest* # there is only one version of libc on Solaris @@ -7450,87 +8220,87 @@ if test x$GLIBC_VERSION = x; then fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the glibc version" >&5 -$as_echo_n "checking the glibc version... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the glibc version" >&5 +printf %s "checking the glibc version... " >&6; } case "${GLIBC_VERSION}" in 2.2) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${GLIBC_VERSION} family" >&5 -$as_echo "${GLIBC_VERSION} family" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${GLIBC_VERSION} family" >&5 +printf "%s\n" "${GLIBC_VERSION} family" >&6; } DEFAULT_SUPP="glibc-2.2.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.2-LinuxThreads-helgrind.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" ;; 2.[3-6]) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${GLIBC_VERSION} family" >&5 -$as_echo "${GLIBC_VERSION} family" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${GLIBC_VERSION} family" >&5 +printf "%s\n" "${GLIBC_VERSION} family" >&6; } DEFAULT_SUPP="glibc-${GLIBC_VERSION}.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" ;; 2.[7-9]) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${GLIBC_VERSION} family" >&5 -$as_echo "${GLIBC_VERSION} family" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${GLIBC_VERSION} family" >&5 +printf "%s\n" "${GLIBC_VERSION} family" >&6; } DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" ;; 2.10|2.11) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${GLIBC_VERSION} family" >&5 -$as_echo "${GLIBC_VERSION} family" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${GLIBC_VERSION} family" >&5 +printf "%s\n" "${GLIBC_VERSION} family" >&6; } -$as_echo "#define GLIBC_MANDATORY_STRLEN_REDIRECT 1" >>confdefs.h +printf "%s\n" "#define GLIBC_MANDATORY_STRLEN_REDIRECT 1" >>confdefs.h DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" ;; 2.*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${GLIBC_VERSION} family" >&5 -$as_echo "${GLIBC_VERSION} family" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${GLIBC_VERSION} family" >&5 +printf "%s\n" "${GLIBC_VERSION} family" >&6; } -$as_echo "#define GLIBC_MANDATORY_STRLEN_REDIRECT 1" >>confdefs.h +printf "%s\n" "#define GLIBC_MANDATORY_STRLEN_REDIRECT 1" >>confdefs.h -$as_echo "#define GLIBC_MANDATORY_INDEX_AND_STRLEN_REDIRECT 1" >>confdefs.h +printf "%s\n" "#define GLIBC_MANDATORY_INDEX_AND_STRLEN_REDIRECT 1" >>confdefs.h DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" ;; darwin) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5 -$as_echo "Darwin" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5 +printf "%s\n" "Darwin" >&6; } -$as_echo "#define DARWIN_LIBC 1" >>confdefs.h +printf "%s\n" "#define DARWIN_LIBC 1" >>confdefs.h # DEFAULT_SUPP set by kernel version check above. ;; bionic) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Bionic" >&5 -$as_echo "Bionic" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Bionic" >&5 +printf "%s\n" "Bionic" >&6; } -$as_echo "#define BIONIC_LIBC 1" >>confdefs.h +printf "%s\n" "#define BIONIC_LIBC 1" >>confdefs.h DEFAULT_SUPP="bionic.supp ${DEFAULT_SUPP}" ;; solaris) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Solaris" >&5 -$as_echo "Solaris" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Solaris" >&5 +printf "%s\n" "Solaris" >&6; } # DEFAULT_SUPP set in host_os switch-case above. # No other suppression file is used. ;; musl) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Musl" >&5 -$as_echo "Musl" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Musl" >&5 +printf "%s\n" "Musl" >&6; } -$as_echo "#define MUSL_LIBC 1" >>confdefs.h +printf "%s\n" "#define MUSL_LIBC 1" >>confdefs.h # no DEFAULT_SUPP file yet for musl libc. ;; 2.0|2.1|*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported version ${GLIBC_VERSION}" >&5 -$as_echo "unsupported version ${GLIBC_VERSION}" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported version ${GLIBC_VERSION}" >&5 +printf "%s\n" "unsupported version ${GLIBC_VERSION}" >&6; } as_fn_error $? "Valgrind requires glibc version 2.2 or later, uClibc," "$LINENO" 5 as_fn_error $? "musl libc, Darwin libc, Bionic libc or Solaris libc" "$LINENO" 5 ;; @@ -7622,8 +8392,8 @@ fi # Check for AT_FDCWD -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AT_FDCWD" >&5 -$as_echo_n "checking for AT_FDCWD... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for AT_FDCWD" >&5 +printf %s "checking for AT_FDCWD... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7632,7 +8402,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { int a = AT_FDCWD; @@ -7641,20 +8411,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_at_fdcwd=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_at_fdcwd=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_at_fdcwd = xyes; then HAVE_AT_FDCWD_TRUE= @@ -7670,8 +8441,8 @@ fi # used in the test case (some systems might define it without anyway # since stpncpy is part of The Open Group Base Specifications Issue 7 # IEEE Std 1003.1-2008. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stpncpy" >&5 -$as_echo_n "checking for stpncpy... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stpncpy" >&5 +printf %s "checking for stpncpy... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7679,7 +8450,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { char *d; @@ -7691,20 +8462,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_have_gnu_stpncpy=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_gnu_stpncpy=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test x$ac_have_gnu_stpncpy = xyes; then @@ -7718,8 +8490,8 @@ fi # Check for PTRACE_GETREGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTRACE_GETREGS" >&5 -$as_echo_n "checking for PTRACE_GETREGS... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTRACE_GETREGS" >&5 +printf %s "checking for PTRACE_GETREGS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7729,7 +8501,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { void *p; @@ -7739,27 +8511,28 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define HAVE_PTRACE_GETREGS 1" >>confdefs.h +printf "%s\n" "#define HAVE_PTRACE_GETREGS 1" >>confdefs.h -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Check for CLOCK_MONOTONIC -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CLOCK_MONOTONIC" >&5 -$as_echo_n "checking for CLOCK_MONOTONIC... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CLOCK_MONOTONIC" >&5 +printf %s "checking for CLOCK_MONOTONIC... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7767,7 +8540,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { struct timespec t; @@ -7778,42 +8551,41 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define HAVE_CLOCK_MONOTONIC 1" >>confdefs.h +printf "%s\n" "#define HAVE_CLOCK_MONOTONIC 1" >>confdefs.h -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Check for ELF32/64_CHDR ac_fn_c_check_type "$LINENO" "Elf32_Chdr" "ac_cv_type_Elf32_Chdr" "#include " -if test "x$ac_cv_type_Elf32_Chdr" = xyes; then : +if test "x$ac_cv_type_Elf32_Chdr" = xyes +then : -cat >>confdefs.h <<_ACEOF -#define HAVE_ELF32_CHDR 1 -_ACEOF +printf "%s\n" "#define HAVE_ELF32_CHDR 1" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "Elf64_Chdr" "ac_cv_type_Elf64_Chdr" "#include " -if test "x$ac_cv_type_Elf64_Chdr" = xyes; then : +if test "x$ac_cv_type_Elf64_Chdr" = xyes +then : -cat >>confdefs.h <<_ACEOF -#define HAVE_ELF64_CHDR 1 -_ACEOF +printf "%s\n" "#define HAVE_ELF64_CHDR 1" >>confdefs.h fi @@ -7822,8 +8594,8 @@ fi # Check for PTHREAD_RWLOCK_T -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_rwlock_t" >&5 -$as_echo_n "checking for pthread_rwlock_t... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_rwlock_t" >&5 +printf %s "checking for pthread_rwlock_t... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7832,7 +8604,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { pthread_rwlock_t rwl; @@ -7841,27 +8613,28 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define HAVE_PTHREAD_RWLOCK_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_PTHREAD_RWLOCK_T 1" >>confdefs.h -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Check for PTHREAD_MUTEX_ADAPTIVE_NP -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_MUTEX_ADAPTIVE_NP" >&5 -$as_echo_n "checking for PTHREAD_MUTEX_ADAPTIVE_NP... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_MUTEX_ADAPTIVE_NP" >&5 +printf %s "checking for PTHREAD_MUTEX_ADAPTIVE_NP... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7870,7 +8643,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { return (PTHREAD_MUTEX_ADAPTIVE_NP); @@ -7879,27 +8652,28 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define HAVE_PTHREAD_MUTEX_ADAPTIVE_NP 1" >>confdefs.h +printf "%s\n" "#define HAVE_PTHREAD_MUTEX_ADAPTIVE_NP 1" >>confdefs.h -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Check for PTHREAD_MUTEX_ERRORCHECK_NP -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_MUTEX_ERRORCHECK_NP" >&5 -$as_echo_n "checking for PTHREAD_MUTEX_ERRORCHECK_NP... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_MUTEX_ERRORCHECK_NP" >&5 +printf %s "checking for PTHREAD_MUTEX_ERRORCHECK_NP... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7908,7 +8682,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { return (PTHREAD_MUTEX_ERRORCHECK_NP); @@ -7917,27 +8691,28 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define HAVE_PTHREAD_MUTEX_ERRORCHECK_NP 1" >>confdefs.h +printf "%s\n" "#define HAVE_PTHREAD_MUTEX_ERRORCHECK_NP 1" >>confdefs.h -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Check for PTHREAD_MUTEX_RECURSIVE_NP -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_MUTEX_RECURSIVE_NP" >&5 -$as_echo_n "checking for PTHREAD_MUTEX_RECURSIVE_NP... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_MUTEX_RECURSIVE_NP" >&5 +printf %s "checking for PTHREAD_MUTEX_RECURSIVE_NP... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7946,7 +8721,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { return (PTHREAD_MUTEX_RECURSIVE_NP); @@ -7955,27 +8730,28 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define HAVE_PTHREAD_MUTEX_RECURSIVE_NP 1" >>confdefs.h +printf "%s\n" "#define HAVE_PTHREAD_MUTEX_RECURSIVE_NP 1" >>confdefs.h -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Check for PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP" >&5 -$as_echo_n "checking for PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP" >&5 +printf %s "checking for PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7984,7 +8760,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { pthread_mutex_t m = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; @@ -7994,30 +8770,32 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define HAVE_PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP 1" >>confdefs.h +printf "%s\n" "#define HAVE_PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP 1" >>confdefs.h -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Check whether pthread_mutex_t has a member called __m_kind. ac_fn_c_check_member "$LINENO" "pthread_mutex_t" "__m_kind" "ac_cv_member_pthread_mutex_t___m_kind" "#include " -if test "x$ac_cv_member_pthread_mutex_t___m_kind" = xyes; then : +if test "x$ac_cv_member_pthread_mutex_t___m_kind" = xyes +then : -$as_echo "#define HAVE_PTHREAD_MUTEX_T__M_KIND 1" >>confdefs.h +printf "%s\n" "#define HAVE_PTHREAD_MUTEX_T__M_KIND 1" >>confdefs.h fi @@ -8028,9 +8806,10 @@ fi ac_fn_c_check_member "$LINENO" "pthread_mutex_t" "__data.__kind" "ac_cv_member_pthread_mutex_t___data___kind" "#include " -if test "x$ac_cv_member_pthread_mutex_t___data___kind" = xyes; then : +if test "x$ac_cv_member_pthread_mutex_t___data___kind" = xyes +then : -$as_echo "#define HAVE_PTHREAD_MUTEX_T__DATA__KIND 1" >>confdefs.h +printf "%s\n" "#define HAVE_PTHREAD_MUTEX_T__DATA__KIND 1" >>confdefs.h fi @@ -8048,129 +8827,129 @@ fi # gather hardware capabilities. (hardware/kernel/libc) AUXV_CHECK_FOR=altivec - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator" >&5 -$as_echo_n "checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator" >&5 +printf %s "checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator... " >&6; } if LD_SHOW_AUXV=1 `which true` | grep ^AT_HWCAP | grep -q -w ${AUXV_CHECK_FOR} then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } HWCAP_HAS_ALTIVEC=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi AUXV_CHECK_FOR=vsx - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator" >&5 -$as_echo_n "checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator" >&5 +printf %s "checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator... " >&6; } if LD_SHOW_AUXV=1 `which true` | grep ^AT_HWCAP | grep -q -w ${AUXV_CHECK_FOR} then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } HWCAP_HAS_VSX=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi AUXV_CHECK_FOR=dfp - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator" >&5 -$as_echo_n "checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator" >&5 +printf %s "checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator... " >&6; } if LD_SHOW_AUXV=1 `which true` | grep ^AT_HWCAP | grep -q -w ${AUXV_CHECK_FOR} then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } HWCAP_HAS_DFP=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi AUXV_CHECK_FOR=arch_2_05 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator" >&5 -$as_echo_n "checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator" >&5 +printf %s "checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator... " >&6; } if LD_SHOW_AUXV=1 `which true` | grep ^AT_HWCAP | grep -q -w ${AUXV_CHECK_FOR} then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } HWCAP_HAS_ISA_2_05=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi AUXV_CHECK_FOR=arch_2_06 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator" >&5 -$as_echo_n "checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator" >&5 +printf %s "checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator... " >&6; } if LD_SHOW_AUXV=1 `which true` | grep ^AT_HWCAP | grep -q -w ${AUXV_CHECK_FOR} then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } HWCAP_HAS_ISA_2_06=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi AUXV_CHECK_FOR=arch_2_07 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator" >&5 -$as_echo_n "checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator" >&5 +printf %s "checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator... " >&6; } if LD_SHOW_AUXV=1 `which true` | grep ^AT_HWCAP | grep -q -w ${AUXV_CHECK_FOR} then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } HWCAP_HAS_ISA_2_07=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi AUXV_CHECK_FOR=arch_3_00 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator" >&5 -$as_echo_n "checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator" >&5 +printf %s "checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator... " >&6; } if LD_SHOW_AUXV=1 `which true` | grep ^AT_HWCAP | grep -q -w ${AUXV_CHECK_FOR} then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } HWCAP_HAS_ISA_3_00=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi AUXV_CHECK_FOR=htm - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator" >&5 -$as_echo_n "checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator" >&5 +printf %s "checking if AT_HWCAP contains the $AUXV_CHECK_FOR indicator... " >&6; } if LD_SHOW_AUXV=1 `which true` | grep ^AT_HWCAP | grep -q -w ${AUXV_CHECK_FOR} then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } HWCAP_HAS_HTM=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8193,14 +8972,14 @@ else fi # compiler support for isa 2.07 level instructions -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that assembler knows ISA 2.07 instructions " >&5 -$as_echo_n "checking that assembler knows ISA 2.07 instructions ... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that assembler knows ISA 2.07 instructions " >&5 +printf %s "checking that assembler knows ISA 2.07 instructions ... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { __asm__ __volatile__("mtvsrd 1,2 "); @@ -8209,20 +8988,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_asm_have_isa_2_07=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_asm_have_isa_2_07=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_asm_have_isa_2_07 = xyes \ -a x$HWCAP_HAS_ISA_2_07 = xyes; then HAS_ISA_2_07_TRUE= @@ -8236,8 +9016,8 @@ fi # altivec (vsx) support. # does this compiler support -maltivec and does it have the include file # ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Altivec support in the compiler " >&5 -$as_echo_n "checking for Altivec support in the compiler ... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Altivec support in the compiler " >&5 +printf %s "checking for Altivec support in the compiler ... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-maltivec -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -8246,7 +9026,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { vector unsigned int v; @@ -8255,20 +9035,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_altivec=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_altivec=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS if test x$ac_have_altivec = xyes \ -a x$HWCAP_HAS_ALTIVEC = xyes; then @@ -8283,8 +9064,8 @@ fi # Check that both: the compiler supports -mvsx and that the assembler # understands VSX instructions. If either of those doesn't work, # conclude that we can't do VSX. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for VSX compiler flag support" >&5 -$as_echo_n "checking for VSX compiler flag support... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for VSX compiler flag support" >&5 +printf %s "checking for VSX compiler flag support... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-mvsx -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -8292,7 +9073,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext int -main () +main (void) { @@ -8300,24 +9081,25 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_supports_vsx_flag=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_compiler_supports_vsx_flag=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for VSX support in the assembler " >&5 -$as_echo_n "checking for VSX support in the assembler ... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for VSX support in the assembler " >&5 +printf %s "checking for VSX support in the assembler ... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-mvsx -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -8326,7 +9108,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { vector unsigned int v; @@ -8336,20 +9118,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_supports_vsx=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_compiler_supports_vsx=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS if test x$ac_compiler_supports_vsx_flag = xyes \ -a x$ac_compiler_supports_vsx = xyes \ @@ -8363,14 +9146,14 @@ fi # DFP (Decimal Float) -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that assembler knows DFP" >&5 -$as_echo_n "checking that assembler knows DFP... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that assembler knows DFP" >&5 +printf %s "checking that assembler knows DFP... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifdef __s390__ @@ -8384,22 +9167,23 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_asm_have_dfp=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_asm_have_dfp=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that compiler knows -mhard-dfp switch" >&5 -$as_echo_n "checking that compiler knows -mhard-dfp switch... " >&6; } +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that compiler knows -mhard-dfp switch" >&5 +printf %s "checking that compiler knows -mhard-dfp switch... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-mhard-dfp -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -8407,7 +9191,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext int -main () +main (void) { #ifdef __s390__ @@ -8421,20 +9205,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_have_dfp=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_compiler_have_dfp=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS if test x$ac_asm_have_dfp = xyes \ -a x$ac_compiler_have_dfp = xyes \ @@ -8447,14 +9232,14 @@ else fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that compiler knows DFP datatypes" >&5 -$as_echo_n "checking that compiler knows DFP datatypes... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that compiler knows DFP datatypes" >&5 +printf %s "checking that compiler knows DFP datatypes... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { _Decimal64 x = 0.0DD; @@ -8463,20 +9248,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_have_dfp_type=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_compiler_have_dfp_type=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_compiler_have_dfp_type = xyes \ -a x$HWCAP_HAS_DFP = xyes ; then BUILD_DFP_TESTS_TRUE= @@ -8489,8 +9275,8 @@ fi # HTM (Hardware Transactional Memory) -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler accepts the -mhtm flag" >&5 -$as_echo_n "checking if compiler accepts the -mhtm flag... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler accepts the -mhtm flag" >&5 +printf %s "checking if compiler accepts the -mhtm flag... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-mhtm -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -8498,7 +9284,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext int -main () +main (void) { return 0; @@ -8507,24 +9293,25 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } ac_compiler_supports_htm=yes -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ac_compiler_supports_htm=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler can find the htm builtins" >&5 -$as_echo_n "checking if compiler can find the htm builtins... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler can find the htm builtins" >&5 +printf %s "checking if compiler can find the htm builtins... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-mhtm -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -8532,7 +9319,7 @@ CFLAGS="-mhtm -Werror" int -main () +main (void) { if (__builtin_tbegin (0)) @@ -8542,20 +9329,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } ac_compiler_sees_htm_builtins=yes -else +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ac_compiler_sees_htm_builtins=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS if test x$ac_compiler_supports_htm = xyes \ @@ -8570,15 +9358,15 @@ fi # isa 3.0 checking -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that assembler knows ISA 3.00 " >&5 -$as_echo_n "checking that assembler knows ISA 3.00 ... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that assembler knows ISA 3.00 " >&5 +printf %s "checking that assembler knows ISA 3.00 ... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { __asm__ __volatile__("cnttzw 1,2 "); @@ -8587,20 +9375,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_asm_have_isa_3_00=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_asm_have_isa_3_00=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_asm_have_isa_3_00 = xyes \ -a x$HWCAP_HAS_ISA_3_00 = xyes; then @@ -8613,8 +9402,8 @@ fi # Check for pthread_create@GLIBC2.0 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create@GLIBC2.0()" >&5 -$as_echo_n "checking for pthread_create@GLIBC2.0()... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create@GLIBC2.0()" >&5 +printf %s "checking for pthread_create@GLIBC2.0()... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-lpthread -Werror" @@ -8626,7 +9415,7 @@ extern int pthread_create_glibc_2_0(void*, const void*, __asm__(".symver pthread_create_glibc_2_0, pthread_create@GLIBC_2.0"); int -main () +main (void) { #ifdef __powerpc__ @@ -8644,23 +9433,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_have_pthread_create_glibc_2_0=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define HAVE_PTHREAD_CREATE_GLIBC_2_0 1" >>confdefs.h +printf "%s\n" "#define HAVE_PTHREAD_CREATE_GLIBC_2_0 1" >>confdefs.h -else +else $as_nop ac_have_pthread_create_glibc_2_0=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS=$safe_CFLAGS @@ -8675,8 +9465,8 @@ fi # Check for dlinfo RTLD_DI_TLS_MODID -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlinfo RTLD_DI_TLS_MODID" >&5 -$as_echo_n "checking for dlinfo RTLD_DI_TLS_MODID... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlinfo RTLD_DI_TLS_MODID" >&5 +printf %s "checking for dlinfo RTLD_DI_TLS_MODID... " >&6; } safe_LIBS="$LIBS" LIBS="-ldl" @@ -8690,7 +9480,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { size_t sizes[10000]; @@ -8702,23 +9492,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_have_dlinfo_rtld_di_tls_modid=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define HAVE_DLINFO_RTLD_DI_TLS_MODID 1" >>confdefs.h +printf "%s\n" "#define HAVE_DLINFO_RTLD_DI_TLS_MODID 1" >>confdefs.h -else +else $as_nop ac_have_dlinfo_rtld_di_tls_modid=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$safe_LIBS @@ -8733,8 +9524,8 @@ fi # Check for eventfd_t, eventfd() and eventfd_read() -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for eventfd()" >&5 -$as_echo_n "checking for eventfd()... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for eventfd()" >&5 +printf %s "checking for eventfd()... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8742,7 +9533,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { eventfd_t ev; @@ -8756,32 +9547,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define HAVE_EVENTFD 1" >>confdefs.h +printf "%s\n" "#define HAVE_EVENTFD 1" >>confdefs.h -$as_echo "#define HAVE_EVENTFD_READ 1" >>confdefs.h +printf "%s\n" "#define HAVE_EVENTFD_READ 1" >>confdefs.h -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # Check whether compiler can process #include without errors # clang 3.3 cannot process from e.g. # gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that C++ compiler can include header file" >&5 -$as_echo_n "checking that C++ compiler can include header file... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that C++ compiler can include header file" >&5 +printf %s "checking that C++ compiler can include header file... " >&6; } ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -8798,20 +9590,21 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : ac_cxx_can_include_thread_header=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_cxx_can_include_thread_header=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CXXFLAGS=$safe_CXXFLAGS ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -8838,27 +9631,28 @@ ac_fn_c_check_type "$LINENO" "struct user_regs_struct" "ac_cv_type_struct_user_r #include #include " -if test "x$ac_cv_type_struct_user_regs_struct" = xyes; then : +if test "x$ac_cv_type_struct_user_regs_struct" = xyes +then : sys_user_has_user_regs=yes -else +else $as_nop sys_user_has_user_regs=no fi if test "$sys_user_has_user_regs" = "yes"; then -$as_echo "#define HAVE_SYS_USER_REGS 1" >>confdefs.h +printf "%s\n" "#define HAVE_SYS_USER_REGS 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __NR_membarrier" >&5 -$as_echo_n "checking for __NR_membarrier... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __NR_membarrier" >&5 +printf %s "checking for __NR_membarrier... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return __NR_membarrier @@ -8867,20 +9661,21 @@ return __NR_membarrier return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_nr_membarrier=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_nr_membarrier=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_nr_membarrier = xyes; then HAVE_NR_MEMBARRIER_TRUE= @@ -8900,8 +9695,8 @@ case "${host_cpu}" in ARCH=$(echo "$CFLAGS" | grep -E -e '-march=[^ ]+' -e '\B-mips[^ +]') if test -z "$ARCH"; then # does this compiler support -march=mips32 (mips32 default) ? - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -march=mips32 -mabi=32" >&5 -$as_echo_n "checking if gcc accepts -march=mips32 -mabi=32... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -march=mips32 -mabi=32" >&5 +printf %s "checking if gcc accepts -march=mips32 -mabi=32... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -mips32 -mabi=32 -Werror" @@ -8910,7 +9705,7 @@ $as_echo_n "checking if gcc accepts -march=mips32 -mabi=32... " >&6; } /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -8919,28 +9714,29 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_M32="-mips32 -mabi=32" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop FLAG_M32="" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS # does this compiler support -march=mips64r2 (mips64r2 default) ? - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -march=mips64r2 -mabi=64" >&5 -$as_echo_n "checking if gcc accepts -march=mips64r2 -mabi=64... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -march=mips64r2 -mabi=64" >&5 +printf %s "checking if gcc accepts -march=mips64r2 -mabi=64... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -march=mips64r2 -mabi=64 -Werror" @@ -8949,7 +9745,7 @@ $as_echo_n "checking if gcc accepts -march=mips64r2 -mabi=64... " >&6; } /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -8958,20 +9754,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_M64="-march=mips64r2 -mabi=64" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop FLAG_M64="" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS @@ -8981,8 +9778,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; *) # does this compiler support -m32 ? - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -m32" >&5 -$as_echo_n "checking if gcc accepts -m32... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -m32" >&5 +printf %s "checking if gcc accepts -m32... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-m32 -Werror" @@ -8991,7 +9788,7 @@ $as_echo_n "checking if gcc accepts -m32... " >&6; } /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -9000,28 +9797,29 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_M32="-m32" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop FLAG_M32="" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS # does this compiler support -m64 ? - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -m64" >&5 -$as_echo_n "checking if gcc accepts -m64... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -m64" >&5 +printf %s "checking if gcc accepts -m64... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-m64 -Werror" @@ -9030,7 +9828,7 @@ $as_echo_n "checking if gcc accepts -m64... " >&6; } /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -9039,20 +9837,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_M64="-m64" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop FLAG_M64="" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS @@ -9063,8 +9862,8 @@ esac ARCH=$(echo "$CFLAGS" | grep -E -e '-march=[^ ]+' -e '\B-mips[^ +]') if test -z "$ARCH"; then # does this compiler support -march=octeon (Cavium OCTEON I Specific) ? - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -march=octeon" >&5 -$as_echo_n "checking if gcc accepts -march=octeon... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -march=octeon" >&5 +printf %s "checking if gcc accepts -march=octeon... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="$CFLAGS $FLAG_M64 -march=octeon -Werror" @@ -9073,7 +9872,7 @@ $as_echo_n "checking if gcc accepts -march=octeon... " >&6; } /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -9082,28 +9881,29 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_OCTEON="-march=octeon" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop FLAG_OCTEON="" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS # does this compiler support -march=octeon2 (Cavium OCTEON II Specific) ? - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -march=octeon2" >&5 -$as_echo_n "checking if gcc accepts -march=octeon2... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -march=octeon2" >&5 +printf %s "checking if gcc accepts -march=octeon2... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="$CFLAGS $FLAG_M64 -march=octeon2 -Werror" @@ -9112,7 +9912,7 @@ $as_echo_n "checking if gcc accepts -march=octeon2... " >&6; } /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -9121,20 +9921,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_OCTEON2="-march=octeon2" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop FLAG_OCTEON2="" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS @@ -9142,8 +9943,8 @@ fi # does this compiler support -mmsa (MIPS MSA ASE) ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -mmsa" >&5 -$as_echo_n "checking if gcc accepts -mmsa... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -mmsa" >&5 +printf %s "checking if gcc accepts -mmsa... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -mmsa -Werror" @@ -9152,7 +9953,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -9161,27 +9962,28 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_MSA="-mmsa" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop FLAG_MSA="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS # Are we compiling for the MIPS64 n32 ABI? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc is producing mips n32 binaries" >&5 -$as_echo_n "checking if gcc is producing mips n32 binaries... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc is producing mips n32 binaries" >&5 +printf %s "checking if gcc is producing mips n32 binaries... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9190,24 +9992,25 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : VGCONF_ABI=N32 FLAG_M64="-march=mips64r2 -mabi=n32" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Are we compiling for the MIPS64 n64 ABI? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc is producing mips n64 binaries" >&5 -$as_echo_n "checking if gcc is producing mips n64 binaries... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc is producing mips n64 binaries" >&5 +printf %s "checking if gcc is producing mips n64 binaries... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9216,19 +10019,20 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : VGCONF_ABI=64 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # We enter the code block below in the following case: # Target architecture is set to mips64, the desired abi @@ -9239,13 +10043,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test "$ARCH_MAX" = "mips64" -a "x$VGCONF_ABI" = "x"; then safe_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -mabi=64 -Werror" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc is n64 capable" >&5 -$as_echo_n "checking if gcc is n64 capable... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc is n64 capable" >&5 +printf %s "checking if gcc is n64 capable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -9254,32 +10058,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : VGCONF_ABI=64 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS=$safe_CFLAGS if test "x$VGCONF_ABI" = "x"; then safe_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -mabi=n32 -Werror" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc is n32 capable" >&5 -$as_echo_n "checking if gcc is n32 capable... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc is n32 capable" >&5 +printf %s "checking if gcc is n32 capable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -9288,20 +10093,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : VGCONF_ABI=N32 FLAG_M64="-march=mips64r2 -mabi=n32" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS=$safe_CFLAGS fi @@ -9319,8 +10125,8 @@ fi # does this compiler support -mmmx ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -mmmx" >&5 -$as_echo_n "checking if gcc accepts -mmmx... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -mmmx" >&5 +printf %s "checking if gcc accepts -mmmx... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-mmmx -Werror" @@ -9329,7 +10135,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -9338,28 +10144,29 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_MMMX="-mmmx" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop FLAG_MMMX="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS # does this compiler support -msse ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -msse" >&5 -$as_echo_n "checking if gcc accepts -msse... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -msse" >&5 +printf %s "checking if gcc accepts -msse... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-msse -Werror" @@ -9368,7 +10175,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -9377,20 +10184,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_MSSE="-msse" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop FLAG_MSSE="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS @@ -9402,8 +10210,8 @@ CFLAGS=$safe_CFLAGS # doesn't recognise -m32 it's no big deal. We'll just get code for # the Memcheck and other helper functions, that is a bit slower than # it could be, on x86; and no difference at all on any other platform. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -mpreferred-stack-boundary=2 -m32" >&5 -$as_echo_n "checking if gcc accepts -mpreferred-stack-boundary=2 -m32... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -mpreferred-stack-boundary=2 -m32" >&5 +printf %s "checking if gcc accepts -mpreferred-stack-boundary=2 -m32... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-mpreferred-stack-boundary=2 -m32 -Werror" @@ -9412,7 +10220,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -9421,35 +10229,36 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : PREFERRED_STACK_BOUNDARY_2="-mpreferred-stack-boundary=2" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop PREFERRED_STACK_BOUNDARY_2="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS # does this compiler support -mlong-double-128 ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -mlong-double-128" >&5 -$as_echo_n "checking if gcc accepts -mlong-double-128... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -mlong-double-128" >&5 +printf %s "checking if gcc accepts -mlong-double-128... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-mlong-double-128 -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -9458,20 +10267,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_supports_mlong_double_128=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_compiler_supports_mlong_double_128=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS if test x$ac_compiler_supports_mlong_double_128 = xyes; then HAS_MLONG_DOUBLE_128_TRUE= @@ -9490,25 +10300,27 @@ FLAG_MLONG_DOUBLE_128="-mlong-double-128" # If not enable-lto=* arg is provided, default to no, as lto builds are # a lot slower, and so not appropriate for Valgrind developments. # --enable-lto=yes should be used by distro packagers. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for using the link time optimisation" >&5 -$as_echo_n "checking for using the link time optimisation... " >&6; } -if ${vg_cv_lto+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for using the link time optimisation" >&5 +printf %s "checking for using the link time optimisation... " >&6; } +if test ${vg_cv_lto+y} +then : + printf %s "(cached) " >&6 +else $as_nop # Check whether --enable-lto was given. -if test "${enable_lto+set}" = set; then : +if test ${enable_lto+y} +then : enableval=$enable_lto; vg_cv_lto=$enableval -else +else $as_nop vg_cv_lto=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vg_cv_lto" >&5 -$as_echo "$vg_cv_lto" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vg_cv_lto" >&5 +printf "%s\n" "$vg_cv_lto" >&6; } if test "x${vg_cv_lto}" != "xno" -a "x${LTO_AR}" != "x" -a "x${LTO_RANLIB}" != "x"; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if toolchain accepts lto" >&5 -$as_echo_n "checking if toolchain accepts lto... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if toolchain accepts lto" >&5 +printf %s "checking if toolchain accepts lto... " >&6; } safe_CFLAGS=$CFLAGS TEST_LTO_CFLAGS="-flto -flto-partition=one -fuse-linker-plugin" # Note : using 'one' partition is giving a slightly smaller/faster memcheck @@ -9519,7 +10331,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { extern void somefun(void); @@ -9530,20 +10342,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : LTO_CFLAGS=$TEST_LTO_CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop LTO_CFLAGS="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS fi @@ -9561,7 +10374,7 @@ if test "x${LTO_CFLAGS}" = "x"; then else vg_cv_lto=yes -$as_echo "#define ENABLE_LTO 1" >>confdefs.h +printf "%s\n" "#define ENABLE_LTO 1" >>confdefs.h fi @@ -9579,624 +10392,644 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wmemset-transposed-args" >&5 -$as_echo_n "checking if gcc accepts -Wmemset-transposed-args... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wmemset-transposed-args" >&5 +printf %s "checking if gcc accepts -Wmemset-transposed-args... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wmemset-transposed-args -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_NO_MEMSET_TRANSPOSED_ARGS=-Wno-memset-transposed-args - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wnonnull" >&5 -$as_echo_n "checking if gcc accepts -Wnonnull... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wnonnull" >&5 +printf %s "checking if gcc accepts -Wnonnull... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wnonnull -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_NO_NONNULL=-Wno-nonnull - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Woverflow" >&5 -$as_echo_n "checking if gcc accepts -Woverflow... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Woverflow" >&5 +printf %s "checking if gcc accepts -Woverflow... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Woverflow -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_NO_OVERFLOW=-Wno-overflow - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wpointer-sign" >&5 -$as_echo_n "checking if gcc accepts -Wpointer-sign... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wpointer-sign" >&5 +printf %s "checking if gcc accepts -Wpointer-sign... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wpointer-sign -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_NO_POINTER_SIGN=-Wno-pointer-sign - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wuninitialized" >&5 -$as_echo_n "checking if gcc accepts -Wuninitialized... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wuninitialized" >&5 +printf %s "checking if gcc accepts -Wuninitialized... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wuninitialized -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_NO_UNINITIALIZED=-Wno-uninitialized - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wunused-function" >&5 -$as_echo_n "checking if gcc accepts -Wunused-function... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wunused-function" >&5 +printf %s "checking if gcc accepts -Wunused-function... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wunused-function -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_NO_UNUSED_FUNCTION=-Wno-unused-function - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wstatic-local-in-inline" >&5 -$as_echo_n "checking if gcc accepts -Wstatic-local-in-inline... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wstatic-local-in-inline" >&5 +printf %s "checking if gcc accepts -Wstatic-local-in-inline... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wstatic-local-in-inline -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_NO_STATIC_LOCAL_IN_INLINE=-Wno-static-local-in-inline - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wmismatched-new-delete" >&5 -$as_echo_n "checking if gcc accepts -Wmismatched-new-delete... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wmismatched-new-delete" >&5 +printf %s "checking if gcc accepts -Wmismatched-new-delete... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wmismatched-new-delete -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_NO_MISMATCHED_NEW_DELETE=-Wno-mismatched-new-delete - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Winfinite-recursion" >&5 -$as_echo_n "checking if gcc accepts -Winfinite-recursion... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Winfinite-recursion" >&5 +printf %s "checking if gcc accepts -Winfinite-recursion... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Winfinite-recursion -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_NO_INFINITE_RECURSION=-Wno-infinite-recursion - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wwrite-strings" >&5 -$as_echo_n "checking if gcc accepts -Wwrite-strings... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wwrite-strings" >&5 +printf %s "checking if gcc accepts -Wwrite-strings... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wwrite-strings -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_WRITE_STRINGS=-Wwrite-strings - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wempty-body" >&5 -$as_echo_n "checking if gcc accepts -Wempty-body... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wempty-body" >&5 +printf %s "checking if gcc accepts -Wempty-body... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wempty-body -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_EMPTY_BODY=-Wempty-body - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wformat" >&5 -$as_echo_n "checking if gcc accepts -Wformat... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wformat" >&5 +printf %s "checking if gcc accepts -Wformat... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wformat -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_FORMAT=-Wformat - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wformat-signedness" >&5 -$as_echo_n "checking if gcc accepts -Wformat-signedness... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wformat-signedness" >&5 +printf %s "checking if gcc accepts -Wformat-signedness... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wformat-signedness -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_FORMAT_SIGNEDNESS=-Wformat-signedness - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wcast-qual" >&5 -$as_echo_n "checking if gcc accepts -Wcast-qual... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wcast-qual" >&5 +printf %s "checking if gcc accepts -Wcast-qual... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wcast-qual -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_CAST_QUAL=-Wcast-qual - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wold-style-declaration" >&5 -$as_echo_n "checking if gcc accepts -Wold-style-declaration... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wold-style-declaration" >&5 +printf %s "checking if gcc accepts -Wold-style-declaration... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wold-style-declaration -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_OLD_STYLE_DECLARATION=-Wold-style-declaration - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wignored-qualifiers" >&5 -$as_echo_n "checking if gcc accepts -Wignored-qualifiers... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wignored-qualifiers" >&5 +printf %s "checking if gcc accepts -Wignored-qualifiers... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wignored-qualifiers -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_IGNORED_QUALIFIERS=-Wignored-qualifiers - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wmissing-parameter-type" >&5 -$as_echo_n "checking if gcc accepts -Wmissing-parameter-type... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wmissing-parameter-type" >&5 +printf %s "checking if gcc accepts -Wmissing-parameter-type... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wmissing-parameter-type -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_MISSING_PARAMETER_TYPE=-Wmissing-parameter-type - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wlogical-op" >&5 -$as_echo_n "checking if gcc accepts -Wlogical-op... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wlogical-op" >&5 +printf %s "checking if gcc accepts -Wlogical-op... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wlogical-op -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_LOGICAL_OP=-Wlogical-op - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wenum-conversion" >&5 -$as_echo_n "checking if gcc accepts -Wenum-conversion... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wenum-conversion" >&5 +printf %s "checking if gcc accepts -Wenum-conversion... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wenum-conversion -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_ENUM_CONVERSION=-Wenum-conversion - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wimplicit-fallthrough=2" >&5 -$as_echo_n "checking if gcc accepts -Wimplicit-fallthrough=2... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wimplicit-fallthrough=2" >&5 +printf %s "checking if gcc accepts -Wimplicit-fallthrough=2... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wimplicit-fallthrough=2 -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_IMPLICIT_FALLTHROUGH=-Wimplicit-fallthrough=2 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS @@ -10206,40 +11039,41 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # However, AC_GCC_WARNING_SUBST will stick in -Werror (see r15323 for rationale). # And with that the warning will be turned into an error with the result # that -Wformat-security is believed to be unsupported when in fact it is. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wformat-security" >&5 -$as_echo_n "checking if gcc accepts -Wformat-security... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wformat-security" >&5 +printf %s "checking if gcc accepts -Wformat-security... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wformat -Wformat-security -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_FORMAT_SECURITY=-Wformat-security -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS # does this compiler support -Wextra or the older -W ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wextra or -W" >&5 -$as_echo_n "checking if gcc accepts -Wextra or -W... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wextra or -W" >&5 +printf %s "checking if gcc accepts -Wextra or -W... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wextra -Werror" @@ -10248,7 +11082,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -10257,21 +11091,22 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_EXTRA=-Wextra -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: -Wextra" >&5 -$as_echo "-Wextra" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: -Wextra" >&5 +printf "%s\n" "-Wextra" >&6; } -else +else $as_nop CFLAGS="-W -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -10280,24 +11115,25 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_W_EXTRA=-W - { $as_echo "$as_me:${as_lineno-$LINENO}: result: -W" >&5 -$as_echo "-W" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: -W" >&5 +printf "%s\n" "-W" >&6; } -else +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not supported" >&5 -$as_echo "not supported" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not supported" >&5 +printf "%s\n" "not supported" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS # On ARM we do not want to pass -Wcast-align as that produces loads @@ -10312,8 +11148,8 @@ else fi # does this compiler support -faligned-new ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if g++ accepts -faligned-new" >&5 -$as_echo_n "checking if g++ accepts -faligned-new... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if g++ accepts -faligned-new" >&5 +printf %s "checking if g++ accepts -faligned-new... " >&6; } safe_CXXFLAGS=$CXXFLAGS CXXFLAGS="-faligned-new -Werror" @@ -10328,7 +11164,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -10337,20 +11173,21 @@ main () return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : FLAG_FALIGNED_NEW="-faligned-new" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop FLAG_FALIGNED_NEW="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CXXFLAGS=$safe_CXXFLAGS ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -10362,8 +11199,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # does this compiler support -fno-stack-protector ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -fno-stack-protector" >&5 -$as_echo_n "checking if gcc accepts -fno-stack-protector... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -fno-stack-protector" >&5 +printf %s "checking if gcc accepts -fno-stack-protector... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-fno-stack-protector -Werror" @@ -10372,7 +11209,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -10381,29 +11218,30 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : no_stack_protector=yes FLAG_FNO_STACK_PROTECTOR="-fno-stack-protector" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop no_stack_protector=no FLAG_FNO_STACK_PROTECTOR="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS # does this compiler support -finline-functions ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -finline-functions" >&5 -$as_echo_n "checking if gcc accepts -finline-functions... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -finline-functions" >&5 +printf %s "checking if gcc accepts -finline-functions... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-finline-functions -Werror" @@ -10412,7 +11250,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -10421,22 +11259,23 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : inline_functions=yes FLAG_FINLINE_FUNCTIONS="-finline-functions" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop inline_functions=no FLAG_FINLINE_FUNCTIONS="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS @@ -10448,8 +11287,8 @@ CFLAGS=$safe_CFLAGS # "The optimization reduces code size and may disturb # unwind stacks by replacing a function by equivalent # one with a different name." -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -fno-ipa-icf" >&5 -$as_echo_n "checking if gcc accepts -fno-ipa-icf... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -fno-ipa-icf" >&5 +printf %s "checking if gcc accepts -fno-ipa-icf... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-fno-ipa-icf -Werror" @@ -10458,7 +11297,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -10467,22 +11306,23 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : no_ipa_icf=yes FLAG_FNO_IPA_ICF="-fno-ipa-icf" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop no_ipa_icf=no FLAG_FNO_IPA_ICF="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS @@ -10498,15 +11338,15 @@ CFLAGS=$safe_CFLAGS # # Only checked for if --enable-ubsan was given. if test "x${vg_cv_ubsan}" = "xyes"; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -fsanitize=undefined -fno-sanitize=alignment" >&5 -$as_echo_n "checking if gcc accepts -fsanitize=undefined -fno-sanitize=alignment... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -fsanitize=undefined -fno-sanitize=alignment" >&5 +printf %s "checking if gcc accepts -fsanitize=undefined -fno-sanitize=alignment... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-fsanitize=undefined -fno-sanitize=alignment -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -10515,21 +11355,22 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_FSANITIZE="-fsanitize=undefined -fno-sanitize=alignment" LIB_UBSAN="-static-libubsan" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop CFLAGS="-fsanitize=undefined -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -10538,33 +11379,34 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_FSANITIZE="-fsanitize=undefined" LIB_UBSAN="-static-libubsan" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop FLAG_FSANITIZE="" LIB_UBSAN="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS fi # does this compiler support --param inline-unit-growth=... ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts --param inline-unit-growth" >&5 -$as_echo_n "checking if gcc accepts --param inline-unit-growth... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts --param inline-unit-growth" >&5 +printf %s "checking if gcc accepts --param inline-unit-growth... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="--param inline-unit-growth=900 -Werror" @@ -10573,7 +11415,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -10582,29 +11424,30 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_UNLIMITED_INLINE_UNIT_GROWTH="--param inline-unit-growth=900" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop FLAG_UNLIMITED_INLINE_UNIT_GROWTH="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS # does this compiler support -gdwarf-4 -fdebug-types-section ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -gdwarf-4 -fdebug-types-section" >&5 -$as_echo_n "checking if gcc accepts -gdwarf-4 -fdebug-types-section... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -gdwarf-4 -fdebug-types-section" >&5 +printf %s "checking if gcc accepts -gdwarf-4 -fdebug-types-section... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-gdwarf-4 -fdebug-types-section -Werror" @@ -10613,7 +11456,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -10622,20 +11465,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_dwarf4=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_dwarf4=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_dwarf4 = xyes; then DWARF4_TRUE= DWARF4_FALSE='#' @@ -10649,8 +11493,8 @@ CFLAGS=$safe_CFLAGS # does this compiler support -g -gz=zlib ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -g -gz=zlib" >&5 -$as_echo_n "checking if gcc accepts -g -gz=zlib... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -g -gz=zlib" >&5 +printf %s "checking if gcc accepts -g -gz=zlib... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-g -gz=zlib" @@ -10659,7 +11503,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -10668,20 +11512,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_have_gz_zlib=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_gz_zlib=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test x$ac_have_gz_zlib = xyes; then GZ_ZLIB_TRUE= @@ -10696,8 +11541,8 @@ CFLAGS=$safe_CFLAGS # does this compiler support -g -gz=zlib-gnu ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -g -gz=zlib-gnu" >&5 -$as_echo_n "checking if gcc accepts -g -gz=zlib-gnu... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -g -gz=zlib-gnu" >&5 +printf %s "checking if gcc accepts -g -gz=zlib-gnu... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-g -gz=zlib-gnu" @@ -10706,7 +11551,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -10715,20 +11560,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_have_gz_zlib_gnu=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_gz_zlib_gnu=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test x$ac_have_gz_zlib_gnu = xyes; then GZ_ZLIB_GNU_TRUE= @@ -10743,14 +11589,14 @@ CFLAGS=$safe_CFLAGS # does this compiler support nested functions ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts nested functions" >&5 -$as_echo_n "checking if gcc accepts nested functions... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts nested functions" >&5 +printf %s "checking if gcc accepts nested functions... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { int foo() { return 1; } @@ -10760,20 +11606,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_nested_functions=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_nested_functions=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_nested_functions = xyes; then HAVE_NESTED_FUNCTIONS_TRUE= HAVE_NESTED_FUNCTIONS_FALSE='#' @@ -10786,14 +11633,14 @@ fi # does this compiler support the 'p' constraint in ASM statements ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts the 'p' constraint in asm statements" >&5 -$as_echo_n "checking if gcc accepts the 'p' constraint in asm statements... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts the 'p' constraint in asm statements" >&5 +printf %s "checking if gcc accepts the 'p' constraint in asm statements... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { char *p; @@ -10803,20 +11650,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_asm_constraint_p=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_asm_constraint_p=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_asm_constraint_p = xyes; then HAVE_ASM_CONSTRAINT_P_TRUE= HAVE_ASM_CONSTRAINT_P_FALSE='#' @@ -10831,8 +11679,8 @@ fi # Some compilers actually do not support -pie and report its usage # as an error. We need to check if it is safe to use it first. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -pie" >&5 -$as_echo_n "checking if gcc accepts -pie... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -pie" >&5 +printf %s "checking if gcc accepts -pie... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-pie" @@ -10841,7 +11689,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -10850,22 +11698,23 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : FLAG_PIE="-pie" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop FLAG_PIE="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS=$safe_CFLAGS @@ -10875,8 +11724,8 @@ CFLAGS=$safe_CFLAGS # default. However this gets in the way with some tests, we use -no-pie # for these. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -no-pie" >&5 -$as_echo_n "checking if gcc accepts -no-pie... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -no-pie" >&5 +printf %s "checking if gcc accepts -no-pie... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-no-pie" @@ -10885,7 +11734,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; @@ -10894,22 +11743,23 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : FLAG_NO_PIE="-no-pie" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop FLAG_NO_PIE="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS @@ -10927,8 +11777,8 @@ CFLAGS=$safe_CFLAGS # version of gold and we can fall back to using -Ttext which has the # right semantics. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker accepts -Wl,-Ttext-segment" >&5 -$as_echo_n "checking if the linker accepts -Wl,-Ttext-segment... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker accepts -Wl,-Ttext-segment" >&5 +printf %s "checking if the linker accepts -Wl,-Ttext-segment... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-static -nodefaultlibs -nostartfiles -Wl,-Ttext-segment=$valt_load_address_pri_norml -Werror" @@ -10937,24 +11787,25 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int _start () { return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : linker_using_t_text="no" FLAG_T_TEXT="-Ttext-segment" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop linker_using_t_text="yes" FLAG_T_TEXT="-Ttext" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS=$safe_CFLAGS @@ -10965,14 +11816,14 @@ CFLAGS=$safe_CFLAGS # gold versions also support -Ttext-segment. So just assume that unless # we can use -Ttext-segment we need to strip the build-id NOTEs. if test "x${linker_using_t_text}" = "xyes"; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: ld -Ttext used, need to strip build-id NOTEs." >&5 -$as_echo "$as_me: ld -Ttext used, need to strip build-id NOTEs." >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ld -Ttext used, need to strip build-id NOTEs." >&5 +printf "%s\n" "$as_me: ld -Ttext used, need to strip build-id NOTEs." >&6;} # does the linker support -Wl,--build-id=none ? Note, it's # important that we test indirectly via whichever C compiler # is selected, rather than testing /usr/bin/ld or whatever # directly. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker accepts -Wl,--build-id=none" >&5 -$as_echo_n "checking if the linker accepts -Wl,--build-id=none... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker accepts -Wl,--build-id=none" >&5 +printf %s "checking if the linker accepts -Wl,--build-id=none... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-Wl,--build-id=none -Werror" @@ -10980,47 +11831,48 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return 0; ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : FLAG_NO_BUILD_ID="-Wl,--build-id=none" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop FLAG_NO_BUILD_ID="" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext else -{ $as_echo "$as_me:${as_lineno-$LINENO}: ld -Ttext-segment used, no need to strip build-id NOTEs." >&5 -$as_echo "$as_me: ld -Ttext-segment used, no need to strip build-id NOTEs." >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ld -Ttext-segment used, no need to strip build-id NOTEs." >&5 +printf "%s\n" "$as_me: ld -Ttext-segment used, no need to strip build-id NOTEs." >&6;} FLAG_NO_BUILD_ID="" fi CFLAGS=$safe_CFLAGS # does the ppc assembler support "mtocrf" et al? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if ppc32/64 as supports mtocrf/mfocrf" >&5 -$as_echo_n "checking if ppc32/64 as supports mtocrf/mfocrf... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ppc32/64 as supports mtocrf/mfocrf" >&5 +printf %s "checking if ppc32/64 as supports mtocrf/mfocrf... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { __asm__ __volatile__("mtocrf 4,0"); @@ -11030,36 +11882,37 @@ __asm__ __volatile__("mfocrf 0,4"); return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_ppc_mftocrf=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_ppc_mftocrf=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_ppc_mftocrf = xyes ; then -$as_echo "#define HAVE_AS_PPC_MFTOCRF 1" >>confdefs.h +printf "%s\n" "#define HAVE_AS_PPC_MFTOCRF 1" >>confdefs.h fi # does the ppc assembler support "lfdp" and other phased out floating point insns? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if ppc32/64 asm supports phased out floating point instructions" >&5 -$as_echo_n "checking if ppc32/64 asm supports phased out floating point instructions... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ppc32/64 asm supports phased out floating point instructions" >&5 +printf %s "checking if ppc32/64 asm supports phased out floating point instructions... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { typedef struct { @@ -11074,36 +11927,37 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_ppc_fpPO=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_ppc_fpPO=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_ppc_fpPO = xyes ; then -$as_echo "#define HAVE_AS_PPC_FPPO 1" >>confdefs.h +printf "%s\n" "#define HAVE_AS_PPC_FPPO 1" >>confdefs.h fi # does the amd64 assembler understand "fxsave64" and "fxrstor64"? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if amd64 assembler supports fxsave64/fxrstor64" >&5 -$as_echo_n "checking if amd64 assembler supports fxsave64/fxrstor64... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if amd64 assembler supports fxsave64/fxrstor64" >&5 +printf %s "checking if amd64 assembler supports fxsave64/fxrstor64... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { void* p; @@ -11114,37 +11968,38 @@ asm __volatile__("fxrstor64 (%0)" : : "r" (p) : "memory" ); return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_amd64_fxsave64=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_amd64_fxsave64=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_amd64_fxsave64 = xyes ; then -$as_echo "#define HAVE_AS_AMD64_FXSAVE64 1" >>confdefs.h +printf "%s\n" "#define HAVE_AS_AMD64_FXSAVE64 1" >>confdefs.h fi # does the x86/amd64 assembler understand SSE3 instructions? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_SSE3_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks SSE3" >&5 -$as_echo_n "checking if x86/amd64 assembler speaks SSE3... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks SSE3" >&5 +printf %s "checking if x86/amd64 assembler speaks SSE3... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { long long int x; @@ -11155,20 +12010,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_sse3=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_sse3=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_sse3 = xyes; then BUILD_SSE3_TESTS_TRUE= @@ -11183,8 +12039,8 @@ fi # Ditto for SSSE3 instructions (note extra S) # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_SSSE3_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks SSSE3" >&5 -$as_echo_n "checking if x86/amd64 assembler speaks SSSE3... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks SSSE3" >&5 +printf %s "checking if x86/amd64 assembler speaks SSSE3... " >&6; } save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -msse -Werror" @@ -11192,7 +12048,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { long long int x; @@ -11204,20 +12060,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_ssse3=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_ssse3=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$save_CFLAGS" if test x$ac_have_as_ssse3 = xyes; then @@ -11233,13 +12090,13 @@ fi # does the x86/amd64 assembler understand the PCLMULQDQ instruction? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_PCLMULQDQ_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler supports 'pclmulqdq'" >&5 -$as_echo_n "checking if x86/amd64 assembler supports 'pclmulqdq'... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler supports 'pclmulqdq'" >&5 +printf %s "checking if x86/amd64 assembler supports 'pclmulqdq'... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { @@ -11251,20 +12108,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_pclmulqdq=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_pclmulqdq=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_pclmulqdq = xyes; then BUILD_PCLMULQDQ_TESTS_TRUE= @@ -11279,13 +12137,13 @@ fi # does the x86/amd64 assembler understand the VPCLMULQDQ instruction? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_VPCLMULQDQ_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler supports 'vpclmulqdq'" >&5 -$as_echo_n "checking if x86/amd64 assembler supports 'vpclmulqdq'... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler supports 'vpclmulqdq'" >&5 +printf %s "checking if x86/amd64 assembler supports 'vpclmulqdq'... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { @@ -11302,20 +12160,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_vpclmulqdq=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_vpclmulqdq=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_vpclmulqdq = xyes; then BUILD_VPCLMULQDQ_TESTS_TRUE= @@ -11330,13 +12189,13 @@ fi # does the x86/amd64 assembler understand FMA4 instructions? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_AFM4_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler supports FMA4 'vfmaddpd'" >&5 -$as_echo_n "checking if x86/amd64 assembler supports FMA4 'vfmaddpd'... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler supports FMA4 'vfmaddpd'" >&5 +printf %s "checking if x86/amd64 assembler supports FMA4 'vfmaddpd'... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { @@ -11348,20 +12207,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_vfmaddpd=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_vfmaddpd=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_vfmaddpd = xyes; then BUILD_FMA4_TESTS_TRUE= @@ -11376,14 +12236,14 @@ fi # does the x86/amd64 assembler understand the LZCNT instruction? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_LZCNT_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler supports 'lzcnt'" >&5 -$as_echo_n "checking if x86/amd64 assembler supports 'lzcnt'... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler supports 'lzcnt'" >&5 +printf %s "checking if x86/amd64 assembler supports 'lzcnt'... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { @@ -11394,20 +12254,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_lzcnt=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_lzcnt=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_lzcnt = xyes; then BUILD_LZCNT_TESTS_TRUE= @@ -11422,14 +12283,14 @@ fi # does the x86/amd64 assembler understand the LOOPNEL instruction? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_LOOPNEL_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler supports 'loopnel'" >&5 -$as_echo_n "checking if x86/amd64 assembler supports 'loopnel'... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler supports 'loopnel'" >&5 +printf %s "checking if x86/amd64 assembler supports 'loopnel'... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { @@ -11440,20 +12301,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_loopnel=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_loopnel=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_loopnel = xyes; then BUILD_LOOPNEL_TESTS_TRUE= @@ -11468,14 +12330,14 @@ fi # does the x86/amd64 assembler understand ADDR32 ? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_ADDR32_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler supports 'addr32'" >&5 -$as_echo_n "checking if x86/amd64 assembler supports 'addr32'... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler supports 'addr32'" >&5 +printf %s "checking if x86/amd64 assembler supports 'addr32'... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { @@ -11486,20 +12348,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_addr32=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_addr32=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_addr32 = xyes; then BUILD_ADDR32_TESTS_TRUE= @@ -11514,14 +12377,14 @@ fi # does the x86/amd64 assembler understand SSE 4.2 instructions? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_SSE42_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks SSE4.2" >&5 -$as_echo_n "checking if x86/amd64 assembler speaks SSE4.2... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks SSE4.2" >&5 +printf %s "checking if x86/amd64 assembler speaks SSE4.2... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { long long int x; @@ -11537,20 +12400,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_sse42=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_sse42=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_sse42 = xyes; then BUILD_SSE42_TESTS_TRUE= @@ -11565,14 +12429,14 @@ fi # does the x86/amd64 assembler understand AVX instructions? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_AVX_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks AVX" >&5 -$as_echo_n "checking if x86/amd64 assembler speaks AVX... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks AVX" >&5 +printf %s "checking if x86/amd64 assembler speaks AVX... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { long long int x; @@ -11586,20 +12450,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_avx=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_avx=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_avx = xyes; then BUILD_AVX_TESTS_TRUE= @@ -11614,14 +12479,14 @@ fi # does the x86/amd64 assembler understand AVX2 instructions? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_AVX2_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks AVX2" >&5 -$as_echo_n "checking if x86/amd64 assembler speaks AVX2... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks AVX2" >&5 +printf %s "checking if x86/amd64 assembler speaks AVX2... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { long long int x; @@ -11635,20 +12500,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_avx2=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_avx2=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_avx2 = xyes; then BUILD_AVX2_TESTS_TRUE= @@ -11664,14 +12530,14 @@ fi # the XACQUIRE/XRELEASE prefixes? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_TSX_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks TSX" >&5 -$as_echo_n "checking if x86/amd64 assembler speaks TSX... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks TSX" >&5 +printf %s "checking if x86/amd64 assembler speaks TSX... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { @@ -11687,20 +12553,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_tsx=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_tsx=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_tsx = xyes; then BUILD_TSX_TESTS_TRUE= @@ -11715,14 +12582,14 @@ fi # does the x86/amd64 assembler understand BMI1 and BMI2 instructions? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_BMI_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks BMI1 and BMI2" >&5 -$as_echo_n "checking if x86/amd64 assembler speaks BMI1 and BMI2... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks BMI1 and BMI2" >&5 +printf %s "checking if x86/amd64 assembler speaks BMI1 and BMI2... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { unsigned int h, l; @@ -11737,20 +12604,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_bmi=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_bmi=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_bmi = xyes; then BUILD_BMI_TESTS_TRUE= @@ -11765,14 +12633,14 @@ fi # does the x86/amd64 assembler understand FMA instructions? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_FMA_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks FMA" >&5 -$as_echo_n "checking if x86/amd64 assembler speaks FMA... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks FMA" >&5 +printf %s "checking if x86/amd64 assembler speaks FMA... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { unsigned int h, l; @@ -11788,20 +12656,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_fma=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_fma=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_fma = xyes; then BUILD_FMA_TESTS_TRUE= @@ -11816,14 +12685,14 @@ fi # does the amd64 assembler understand MPX instructions? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_MPX_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if amd64 assembler knows the MPX instructions" >&5 -$as_echo_n "checking if amd64 assembler knows the MPX instructions... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if amd64 assembler knows the MPX instructions" >&5 +printf %s "checking if amd64 assembler knows the MPX instructions... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { @@ -11839,20 +12708,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_mpx=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_mpx=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_mpx = xyes; then BUILD_MPX_TESTS_TRUE= @@ -11867,14 +12737,14 @@ fi # does the amd64 assembler understand ADX instructions? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_ADX_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if amd64 assembler knows the ADX instructions" >&5 -$as_echo_n "checking if amd64 assembler knows the ADX instructions... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if amd64 assembler knows the ADX instructions" >&5 +printf %s "checking if amd64 assembler knows the ADX instructions... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { @@ -11885,20 +12755,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_adx=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_adx=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_adx = xyes; then BUILD_ADX_TESTS_TRUE= @@ -11913,14 +12784,14 @@ fi # does the amd64 assembler understand the RDRAND instruction? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_RDRAND_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if amd64 assembler knows the RDRAND instruction" >&5 -$as_echo_n "checking if amd64 assembler knows the RDRAND instruction... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if amd64 assembler knows the RDRAND instruction" >&5 +printf %s "checking if amd64 assembler knows the RDRAND instruction... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { @@ -11933,20 +12804,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_rdrand=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_rdrand=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_rdrand = xyes; then BUILD_RDRAND_TESTS_TRUE= @@ -11962,14 +12834,14 @@ fi # VCVTPS2PH) ? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_F16C_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if amd64 assembler knows the F16C instructions" >&5 -$as_echo_n "checking if amd64 assembler knows the F16C instructions... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if amd64 assembler knows the F16C instructions" >&5 +printf %s "checking if amd64 assembler knows the F16C instructions... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { @@ -11983,20 +12855,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_f16c=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_f16c=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_f16c = xyes; then BUILD_F16C_TESTS_TRUE= @@ -12011,14 +12884,14 @@ fi # does the x86/amd64 assembler understand MOVBE? # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_MOVBE_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler knows the MOVBE insn" >&5 -$as_echo_n "checking if x86/amd64 assembler knows the MOVBE insn... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler knows the MOVBE insn" >&5 +printf %s "checking if x86/amd64 assembler knows the MOVBE insn... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { do { long long int x; @@ -12030,20 +12903,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_as_movbe=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_as_movbe=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$ac_have_as_movbe = xyes; then BUILD_MOVBE_TESTS_TRUE= @@ -12058,8 +12932,8 @@ fi # Does the C compiler support the "ifunc" attribute # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_IFUNC_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc supports the ifunc attribute" >&5 -$as_echo_n "checking if gcc supports the ifunc attribute... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc supports the ifunc attribute" >&5 +printf %s "checking if gcc supports the ifunc attribute... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -12080,20 +12954,21 @@ int main() } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_have_ifunc_attr=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_ifunc_attr=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test x$ac_have_ifunc_attr = xyes; then @@ -12108,8 +12983,8 @@ fi # Does the C compiler support the armv8 crc feature flag # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_ARMV8_CRC_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc supports the armv8 crc feature flag" >&5 -$as_echo_n "checking if gcc supports the armv8 crc feature flag... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc supports the armv8 crc feature flag" >&5 +printf %s "checking if gcc supports the armv8 crc feature flag... " >&6; } save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -march=armv8-a+crc -Werror" @@ -12122,20 +12997,21 @@ int main() } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_armv8_crc_feature=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_armv8_crc_feature=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$save_CFLAGS" if test x$ac_have_armv8_crc_feature = xyes; then @@ -12151,8 +13027,8 @@ fi # Does the C compiler support the armv81 flag and the assembler v8.1 instructions # Note, this doesn't generate a C-level symbol. It generates a # automake-level symbol (BUILD_ARMV81_TESTS), used in test Makefile.am's -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc supports the armv81 feature flag and assembler supports v8.1 instructions" >&5 -$as_echo_n "checking if gcc supports the armv81 feature flag and assembler supports v8.1 instructions... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc supports the armv81 feature flag and assembler supports v8.1 instructions" >&5 +printf %s "checking if gcc supports the armv81 feature flag and assembler supports v8.1 instructions... " >&6; } save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -march=armv8.1-a -Werror" @@ -12166,20 +13042,21 @@ int main() } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_armv81_feature=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_armv81_feature=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$save_CFLAGS" if test x$ac_have_armv81_feature = xyes; then @@ -12200,50 +13077,55 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ static __thread int foo; int -main () +main (void) { return foo; ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : vg_cv_linktime_tls=yes -else +else $as_nop vg_cv_linktime_tls=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # Native compilation: check whether running a program using TLS succeeds. # Linking only is not sufficient -- e.g. on Red Hat 7.3 linking TLS programs # succeeds but running programs using TLS fails. # Cross-compiling: check whether linking a program using TLS succeeds. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for TLS support" >&5 -$as_echo_n "checking for TLS support... " >&6; } -if ${vg_cv_tls+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for TLS support" >&5 +printf %s "checking for TLS support... " >&6; } +if test ${vg_cv_tls+y} +then : + printf %s "(cached) " >&6 +else $as_nop # Check whether --enable-tls was given. -if test "${enable_tls+set}" = set; then : +if test ${enable_tls+y} +then : enableval=$enable_tls; vg_cv_tls=$enableval -else - if test "$cross_compiling" = yes; then : +else $as_nop + if test "$cross_compiling" = yes +then : vg_cv_tls=$vg_cv_linktime_tls -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ static __thread int foo; int -main () +main (void) { return foo; ; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : vg_cv_tls=yes -else +else $as_nop vg_cv_tls=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -12253,12 +13135,12 @@ fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vg_cv_tls" >&5 -$as_echo "$vg_cv_tls" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vg_cv_tls" >&5 +printf "%s\n" "$vg_cv_tls" >&6; } if test "$vg_cv_tls" = yes -a $is_clang != applellvm; then -$as_echo "#define HAVE_TLS 1" >>confdefs.h +printf "%s\n" "#define HAVE_TLS 1" >>confdefs.h fi @@ -12268,18 +13150,13 @@ fi #---------------------------------------------------------------------------- if test "$VGCONF_OS" = "solaris" ; then -for ac_header in sys/lgrp_user_impl.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/lgrp_user_impl.h" "ac_cv_header_sys_lgrp_user_impl_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_lgrp_user_impl_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_LGRP_USER_IMPL_H 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "sys/lgrp_user_impl.h" "ac_cv_header_sys_lgrp_user_impl_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_lgrp_user_impl_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_LGRP_USER_IMPL_H 1" >>confdefs.h fi -done - # Solaris-specific check determining if the Sun Studio Assembler is used to # build Valgrind. The test checks if the x86/amd64 assembler understands the @@ -12288,14 +13165,14 @@ done # C-level symbol: none # Automake-level symbol: SOLARIS_SUN_STUDIO_AS # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks cmovl.l (Solaris-specific)" >&5 -$as_echo_n "checking if x86/amd64 assembler speaks cmovl.l (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if x86/amd64 assembler speaks cmovl.l (Solaris-specific)" >&5 +printf %s "checking if x86/amd64 assembler speaks cmovl.l (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { __asm__ __volatile__("cmovl.l %edx, %eax"); @@ -12304,20 +13181,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_have_sun_studio_as=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop solaris_have_sun_studio_as=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_have_sun_studio_as = xyes; then SOLARIS_SUN_STUDIO_AS_TRUE= SOLARIS_SUN_STUDIO_AS_FALSE='#' @@ -12338,8 +13216,8 @@ fi # save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -std=gnu99" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if xpg symbols are present with -std=gnu99 (Solaris-specific)" >&5 -$as_echo_n "checking if xpg symbols are present with -std=gnu99 (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if xpg symbols are present with -std=gnu99 (Solaris-specific)" >&5 +printf %s "checking if xpg symbols are present with -std=gnu99 (Solaris-specific)... " >&6; } temp_dir=$( /usr/bin/mktemp -d ) cat <<_ACEOF >${temp_dir}/mylib.c #include @@ -12349,12 +13227,12 @@ ${CC} ${CFLAGS} -fpic -shared -o ${temp_dir}/mylib.so ${temp_dir}/mylib.c xpg_present=$( /usr/bin/nm ${temp_dir}/mylib.so | ${EGREP} '(__xpg4|__xpg6)' ) if test "x${xpg_present}" = "x" ; then solaris_xpg_symbols_present=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } else solaris_xpg_symbols_present=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } fi rm -rf ${temp_dir} if test x$solaris_xpg_symbols_present = xyes; then @@ -12372,15 +13250,15 @@ CFLAGS="$save_CFLAGS" # default for 32-bit executables. If it does, then set SOLARIS_UNDEF_LARGESOURCE # variable with gcc flags which disable it. # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc enables largefile support for 32-bit apps (Solaris-specific)" >&5 -$as_echo_n "checking if gcc enables largefile support for 32-bit apps (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc enables largefile support for 32-bit apps (Solaris-specific)" >&5 +printf %s "checking if gcc enables largefile support for 32-bit apps (Solaris-specific)... " >&6; } save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -m32" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { return _LARGEFILE_SOURCE; @@ -12389,20 +13267,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : SOLARIS_UNDEF_LARGESOURCE="-U_LARGEFILE_SOURCE -U_LARGEFILE64_SOURCE -U_FILE_OFFSET_BITS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop SOLARIS_UNDEF_LARGESOURCE="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$safe_CFLAGS @@ -12413,11 +13292,12 @@ CFLAGS=$safe_CFLAGS # C-level symbol: SOLARIS_PROC_CMDLINE # Automake-level symbol: SOLARIS_PROC_CMDLINE # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /proc/self/cmdline" >&5 -$as_echo_n "checking for /proc/self/cmdline... " >&6; } -if ${ac_cv_file__proc_self_cmdline+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /proc/self/cmdline" >&5 +printf %s "checking for /proc/self/cmdline... " >&6; } +if test ${ac_cv_file__proc_self_cmdline+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "/proc/self/cmdline"; then @@ -12426,16 +13306,17 @@ else ac_cv_file__proc_self_cmdline=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__proc_self_cmdline" >&5 -$as_echo "$ac_cv_file__proc_self_cmdline" >&6; } -if test "x$ac_cv_file__proc_self_cmdline" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__proc_self_cmdline" >&5 +printf "%s\n" "$ac_cv_file__proc_self_cmdline" >&6; } +if test "x$ac_cv_file__proc_self_cmdline" = xyes +then : solaris_proc_cmdline=yes -$as_echo "#define SOLARIS_PROC_CMDLINE 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_PROC_CMDLINE 1" >>confdefs.h -else +else $as_nop solaris_proc_cmdline=no @@ -12458,8 +13339,8 @@ fi # C-level symbol: SOLARIS_LAUNCHER_DEFAULT_PLATFORM # Automake-level symbol: none # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for default platform of Valgrind launcher (Solaris-specific)" >&5 -$as_echo_n "checking for default platform of Valgrind launcher (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for default platform of Valgrind launcher (Solaris-specific)" >&5 +printf %s "checking for default platform of Valgrind launcher (Solaris-specific)... " >&6; } # Get the ELF class of /bin/sh first. if ! test -f /bin/sh; then as_fn_error $? "Shell interpreter \`/bin/sh' not found." "$LINENO" 5 @@ -12481,12 +13362,10 @@ case "$elf_class" in ;; esac default_platform="$default_arch-$VGCONF_OS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $default_platform" >&5 -$as_echo "$default_platform" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $default_platform" >&5 +printf "%s\n" "$default_platform" >&6; } -cat >>confdefs.h <<_ACEOF -#define SOLARIS_LAUNCHER_DEFAULT_PLATFORM "$default_platform" -_ACEOF +printf "%s\n" "#define SOLARIS_LAUNCHER_DEFAULT_PLATFORM \"$default_platform\"" >>confdefs.h @@ -12495,15 +13374,15 @@ _ACEOF # C-level symbol: SOLARIS_OLD_SYSCALLS # Automake-level symbol: SOLARIS_OLD_SYSCALLS # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the old Solaris syscalls (Solaris-specific)" >&5 -$as_echo_n "checking for the old Solaris syscalls (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the old Solaris syscalls (Solaris-specific)" >&5 +printf %s "checking for the old Solaris syscalls (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !SYS_open; @@ -12512,23 +13391,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_old_syscalls=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_OLD_SYSCALLS 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_OLD_SYSCALLS 1" >>confdefs.h -else +else $as_nop solaris_old_syscalls=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_old_syscalls = xyes; then SOLARIS_OLD_SYSCALLS_TRUE= SOLARIS_OLD_SYSCALLS_FALSE='#' @@ -12557,14 +13437,15 @@ fi # C-level symbol: SOLARIS_NEW_ACCEPT_SYSCALL # Automake-level symbol: none # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the new \`accept' syscall (Solaris-specific)" >&5 -$as_echo_n "checking for the new \`accept' syscall (Solaris-specific)... " >&6; } -if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the new \`accept' syscall (Solaris-specific)" >&5 +printf %s "checking for the new \`accept' syscall (Solaris-specific)... " >&6; } +if test "$cross_compiling" = yes +then : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -12572,7 +13453,7 @@ else #include int -main () +main (void) { errno = 0; @@ -12583,18 +13464,19 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_NEW_ACCEPT_SYSCALL 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_NEW_ACCEPT_SYSCALL 1" >>confdefs.h -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -12619,14 +13501,15 @@ fi # C-level symbol: SOLARIS_NEW_PIPE_SYSCALL # Automake-level symbol: none # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the new \`pipe' syscall (Solaris-specific)" >&5 -$as_echo_n "checking for the new \`pipe' syscall (Solaris-specific)... " >&6; } -if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the new \`pipe' syscall (Solaris-specific)" >&5 +printf %s "checking for the new \`pipe' syscall (Solaris-specific)... " >&6; } +if test "$cross_compiling" = yes +then : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -12634,7 +13517,7 @@ else #include int -main () +main (void) { errno = 0; @@ -12645,18 +13528,19 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_NEW_PIPE_SYSCALL 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_NEW_PIPE_SYSCALL 1" >>confdefs.h -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -12678,15 +13562,15 @@ fi # C-level symbol: SOLARIS_LWP_SIGQUEUE_SYSCALL # Automake-level symbol: SOLARIS_LWP_SIGQUEUE_SYSCALL # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the new \`lwp_sigqueue' syscall (Solaris-specific)" >&5 -$as_echo_n "checking for the new \`lwp_sigqueue' syscall (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the new \`lwp_sigqueue' syscall (Solaris-specific)" >&5 +printf %s "checking for the new \`lwp_sigqueue' syscall (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !SYS_lwp_sigqueue; @@ -12695,23 +13579,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_lwp_sigqueue_syscall=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_LWP_SIGQUEUE_SYSCALL 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_LWP_SIGQUEUE_SYSCALL 1" >>confdefs.h -else +else $as_nop solaris_lwp_sigqueue_syscall=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_lwp_sigqueue_syscall = xyes; then SOLARIS_LWP_SIGQUEUE_SYSCALL_TRUE= SOLARIS_LWP_SIGQUEUE_SYSCALL_FALSE='#' @@ -12743,14 +13628,15 @@ fi # if test -z "$SOLARIS_LWP_SIGQUEUE_SYSCALL_TRUE"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the \`lwp_sigqueue' syscall accepts pid (Solaris-specific)" >&5 -$as_echo_n "checking if the \`lwp_sigqueue' syscall accepts pid (Solaris-specific)... " >&6; } -if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the \`lwp_sigqueue' syscall accepts pid (Solaris-specific)" >&5 +printf %s "checking if the \`lwp_sigqueue' syscall accepts pid (Solaris-specific)... " >&6; } +if test "$cross_compiling" = yes +then : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -12758,7 +13644,7 @@ else #include int -main () +main (void) { errno = 0; @@ -12769,20 +13655,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : solaris_lwp_sigqueue_syscall_takes_pid=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_LWP_SIGQUEUE_SYSCALL_TAKES_PID 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_LWP_SIGQUEUE_SYSCALL_TAKES_PID 1" >>confdefs.h -else +else $as_nop solaris_lwp_sigqueue_syscall_takes_pid=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -12820,15 +13707,15 @@ fi # C-level symbol: SOLARIS_LWP_NAME_SYSCALL # Automake-level symbol: SOLARIS_LWP_NAME_SYSCALL # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the new \`lwp_name' syscall (Solaris-specific)" >&5 -$as_echo_n "checking for the new \`lwp_name' syscall (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the new \`lwp_name' syscall (Solaris-specific)" >&5 +printf %s "checking for the new \`lwp_name' syscall (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !SYS_lwp_name; @@ -12837,23 +13724,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_lwp_name_syscall=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_LWP_NAME_SYSCALL 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_LWP_NAME_SYSCALL 1" >>confdefs.h -else +else $as_nop solaris_lwp_name_syscall=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_lwp_name_syscall = xyes; then SOLARIS_LWP_NAME_SYSCALL_TRUE= SOLARIS_LWP_NAME_SYSCALL_FALSE='#' @@ -12873,15 +13761,15 @@ fi # C-level symbol: SOLARIS_GETRANDOM_SYSCALL # Automake-level symbol: SOLARIS_GETRANDOM_SYSCALL # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the new \`getrandom' syscall (Solaris-specific)" >&5 -$as_echo_n "checking for the new \`getrandom' syscall (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the new \`getrandom' syscall (Solaris-specific)" >&5 +printf %s "checking for the new \`getrandom' syscall (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !SYS_getrandom; @@ -12890,23 +13778,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_getrandom_syscall=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_GETRANDOM_SYSCALL 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_GETRANDOM_SYSCALL 1" >>confdefs.h -else +else $as_nop solaris_getrandom_syscall=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_getrandom_syscall = xyes; then SOLARIS_GETRANDOM_SYSCALL_TRUE= SOLARIS_GETRANDOM_SYSCALL_FALSE='#' @@ -12924,15 +13813,15 @@ fi # C-level symbol: SOLARIS_ZONE_DEFUNCT # Automake-level symbol: SOLARIS_ZONE_DEFUNCT # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZONE_LIST_DEFUNCT and ZONE_GETATTR_DEFUNCT (Solaris-specific)" >&5 -$as_echo_n "checking for ZONE_LIST_DEFUNCT and ZONE_GETATTR_DEFUNCT (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ZONE_LIST_DEFUNCT and ZONE_GETATTR_DEFUNCT (Solaris-specific)" >&5 +printf %s "checking for ZONE_LIST_DEFUNCT and ZONE_GETATTR_DEFUNCT (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !(ZONE_LIST_DEFUNCT && ZONE_GETATTR_DEFUNCT); @@ -12941,23 +13830,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_zone_defunct=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_ZONE_DEFUNCT 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_ZONE_DEFUNCT 1" >>confdefs.h -else +else $as_nop solaris_zone_defunct=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_zone_defunct = xyes; then SOLARIS_ZONE_DEFUNCT_TRUE= SOLARIS_ZONE_DEFUNCT_FALSE='#' @@ -12976,15 +13866,15 @@ fi # C-level symbol: SOLARIS_AUDITON_STAT # Automake-level symbol: SOLARIS_AUDITON_STAT # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for A_GETSTAT and A_SETSTAT auditon(2) commands (Solaris-specific)" >&5 -$as_echo_n "checking for A_GETSTAT and A_SETSTAT auditon(2) commands (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for A_GETSTAT and A_SETSTAT auditon(2) commands (Solaris-specific)" >&5 +printf %s "checking for A_GETSTAT and A_SETSTAT auditon(2) commands (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !(A_GETSTAT && A_SETSTAT); @@ -12993,23 +13883,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_auditon_stat=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_AUDITON_STAT 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_AUDITON_STAT 1" >>confdefs.h -else +else $as_nop solaris_auditon_stat=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_auditon_stat = xyes; then SOLARIS_AUDITON_STAT_TRUE= SOLARIS_AUDITON_STAT_FALSE='#' @@ -13027,8 +13918,8 @@ fi # C-level symbol: SOLARIS_SHM_NEW # Automake-level symbol: SOLARIS_SHM_NEW # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SHMADV, SHM_ADV_GET, SHM_ADV_SET and SHMGET_OSM (Solaris-specific)" >&5 -$as_echo_n "checking for SHMADV, SHM_ADV_GET, SHM_ADV_SET and SHMGET_OSM (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SHMADV, SHM_ADV_GET, SHM_ADV_SET and SHMGET_OSM (Solaris-specific)" >&5 +printf %s "checking for SHMADV, SHM_ADV_GET, SHM_ADV_SET and SHMGET_OSM (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -13037,7 +13928,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { return !(IPC_XSTAT64 && SHMADV && SHM_ADV_GET && SHM_ADV_SET && SHMGET_OSM); @@ -13046,23 +13937,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_shm_new=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_SHM_NEW 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_SHM_NEW 1" >>confdefs.h -else +else $as_nop solaris_shm_new=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_shm_new = xyes; then SOLARIS_SHM_NEW_TRUE= SOLARIS_SHM_NEW_FALSE='#' @@ -13079,15 +13971,15 @@ fi # C-level symbol: SOLARIS_PRXREGSET_T # Automake-level symbol: SOLARIS_PRXREGSET_T # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the \`prxregset_t' type (Solaris-specific)" >&5 -$as_echo_n "checking for the \`prxregset_t' type (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the \`prxregset_t' type (Solaris-specific)" >&5 +printf %s "checking for the \`prxregset_t' type (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !sizeof(prxregset_t); @@ -13096,23 +13988,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_prxregset_t=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_PRXREGSET_T 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_PRXREGSET_T 1" >>confdefs.h -else +else $as_nop solaris_prxregset_t=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_prxregset_t = xyes; then SOLARIS_PRXREGSET_T_TRUE= SOLARIS_PRXREGSET_T_FALSE='#' @@ -13132,15 +14025,15 @@ fi # C-level symbol: SOLARIS_FREALPATHAT_SYSCALL # Automake-level symbol: SOLARIS_FREALPATHAT_SYSCALL # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the new \`frealpathat' syscall (Solaris-specific)" >&5 -$as_echo_n "checking for the new \`frealpathat' syscall (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the new \`frealpathat' syscall (Solaris-specific)" >&5 +printf %s "checking for the new \`frealpathat' syscall (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !SYS_frealpathat; @@ -13149,23 +14042,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_frealpathat_syscall=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_FREALPATHAT_SYSCALL 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_FREALPATHAT_SYSCALL 1" >>confdefs.h -else +else $as_nop solaris_frealpathat_syscall=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_frealpathat_syscall = xyes; then SOLARIS_FREALPATHAT_SYSCALL_TRUE= SOLARIS_FREALPATHAT_SYSCALL_FALSE='#' @@ -13185,15 +14079,15 @@ fi # C-level symbol: SOLARIS_UUIDSYS_SYSCALL # Automake-level symbol: SOLARIS_UUIDSYS_SYSCALL # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the new \`uuidsys' syscall (Solaris-specific)" >&5 -$as_echo_n "checking for the new \`uuidsys' syscall (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the new \`uuidsys' syscall (Solaris-specific)" >&5 +printf %s "checking for the new \`uuidsys' syscall (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !SYS_uuidsys; @@ -13202,23 +14096,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_uuidsys_syscall=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_UUIDSYS_SYSCALL 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_UUIDSYS_SYSCALL 1" >>confdefs.h -else +else $as_nop solaris_uuidsys_syscall=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_uuidsys_syscall = xyes; then SOLARIS_UUIDSYS_SYSCALL_TRUE= SOLARIS_UUIDSYS_SYSCALL_FALSE='#' @@ -13236,15 +14131,15 @@ fi # C-level symbol: SOLARIS_TNDB_GET_TNIP # Automake-level symbol: SOLARIS_TNDB_GET_TNIP # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for TNDB_GET_TNIP (Solaris-specific)" >&5 -$as_echo_n "checking for TNDB_GET_TNIP (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for TNDB_GET_TNIP (Solaris-specific)" >&5 +printf %s "checking for TNDB_GET_TNIP (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !TNDB_GET_TNIP; @@ -13253,23 +14148,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_tndb_get_tnip=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_TNDB_GET_TNIP 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_TNDB_GET_TNIP 1" >>confdefs.h -else +else $as_nop solaris_tndb_get_tnip=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_tndb_get_tnip = xyes; then SOLARIS_TNDB_GET_TNIP_TRUE= SOLARIS_TNDB_GET_TNIP_FALSE='#' @@ -13287,15 +14183,15 @@ fi # C-level symbol: SOLARIS_TSOL_CLEARANCE # Automake-level symbol: SOLARIS_TSOL_CLEARANCE # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for TSOL_GETCLEARANCE and TSOL_SETCLEARANCE (Solaris-specific)" >&5 -$as_echo_n "checking for TSOL_GETCLEARANCE and TSOL_SETCLEARANCE (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for TSOL_GETCLEARANCE and TSOL_SETCLEARANCE (Solaris-specific)" >&5 +printf %s "checking for TSOL_GETCLEARANCE and TSOL_SETCLEARANCE (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !(TSOL_GETCLEARANCE && TSOL_SETCLEARANCE); @@ -13304,23 +14200,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_tsol_clearance=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_TSOL_CLEARANCE 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_TSOL_CLEARANCE 1" >>confdefs.h -else +else $as_nop solaris_tsol_clearance=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_tsol_clearance = xyes; then SOLARIS_TSOL_CLEARANCE_TRUE= SOLARIS_TSOL_CLEARANCE_FALSE='#' @@ -13338,15 +14235,15 @@ fi # C-level symbol: SOLARIS_PSET_GET_NAME # Automake-level symbol: SOLARIS_PSET_GET_NAME # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PSET_GET_NAME (Solaris-specific)" >&5 -$as_echo_n "checking for PSET_GET_NAME (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PSET_GET_NAME (Solaris-specific)" >&5 +printf %s "checking for PSET_GET_NAME (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !(PSET_GET_NAME); @@ -13355,23 +14252,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_pset_get_name=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_PSET_GET_NAME 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_PSET_GET_NAME 1" >>confdefs.h -else +else $as_nop solaris_pset_get_name=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_pset_get_name = xyes; then SOLARIS_PSET_GET_NAME_TRUE= SOLARIS_PSET_GET_NAME_FALSE='#' @@ -13388,15 +14286,15 @@ fi # C-level symbol: SOLARIS_UTIMESYS_SYSCALL # Automake-level symbol: SOLARIS_UTIMESYS_SYSCALL # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the \`utimesys' syscall (Solaris-specific)" >&5 -$as_echo_n "checking for the \`utimesys' syscall (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the \`utimesys' syscall (Solaris-specific)" >&5 +printf %s "checking for the \`utimesys' syscall (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !SYS_utimesys; @@ -13405,23 +14303,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_utimesys_syscall=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_UTIMESYS_SYSCALL 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_UTIMESYS_SYSCALL 1" >>confdefs.h -else +else $as_nop solaris_utimesys_syscall=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_utimesys_syscall = xyes; then SOLARIS_UTIMESYS_SYSCALL_TRUE= SOLARIS_UTIMESYS_SYSCALL_FALSE='#' @@ -13438,15 +14337,15 @@ fi # C-level symbol: SOLARIS_UTIMENSAT_SYSCALL # Automake-level symbol: SOLARIS_UTIMENSAT_SYSCALL # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the \`utimensat' syscall (Solaris-specific)" >&5 -$as_echo_n "checking for the \`utimensat' syscall (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the \`utimensat' syscall (Solaris-specific)" >&5 +printf %s "checking for the \`utimensat' syscall (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !SYS_utimensat; @@ -13455,23 +14354,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_utimensat_syscall=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_UTIMENSAT_SYSCALL 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_UTIMENSAT_SYSCALL 1" >>confdefs.h -else +else $as_nop solaris_utimensat_syscall=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_utimensat_syscall = xyes; then SOLARIS_UTIMENSAT_SYSCALL_TRUE= SOLARIS_UTIMENSAT_SYSCALL_FALSE='#' @@ -13488,15 +14388,15 @@ fi # C-level symbol: SOLARIS_SPAWN_SYSCALL # Automake-level symbol: SOLARIS_SPAWN_SYSCALL # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the \`spawn' syscall (Solaris-specific)" >&5 -$as_echo_n "checking for the \`spawn' syscall (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the \`spawn' syscall (Solaris-specific)" >&5 +printf %s "checking for the \`spawn' syscall (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !SYS_spawn; @@ -13505,23 +14405,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_spawn_syscall=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_SPAWN_SYSCALL 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_SPAWN_SYSCALL 1" >>confdefs.h -else +else $as_nop solaris_spawn_syscall=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_spawn_syscall = xyes; then SOLARIS_SPAWN_SYSCALL_TRUE= SOLARIS_SPAWN_SYSCALL_FALSE='#' @@ -13538,15 +14439,15 @@ fi # C-level symbol: SOLARIS_MODCTL_MODNVL # Automake-level symbol: SOLARIS_MODCTL_MODNVL # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MODNVL_CTRLMAP through MODDEVINFO_CACHE_TS modctl(2) commands (Solaris-specific)" >&5 -$as_echo_n "checking for MODNVL_CTRLMAP through MODDEVINFO_CACHE_TS modctl(2) commands (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MODNVL_CTRLMAP through MODDEVINFO_CACHE_TS modctl(2) commands (Solaris-specific)" >&5 +printf %s "checking for MODNVL_CTRLMAP through MODDEVINFO_CACHE_TS modctl(2) commands (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !(MODNVL_CTRLMAP && MODDEVINFO_CACHE_TS); @@ -13555,23 +14456,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_modctl_modnvl=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_MODCTL_MODNVL 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_MODCTL_MODNVL 1" >>confdefs.h -else +else $as_nop solaris_modctl_modnvl=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_modctl_modnvl = xyes; then SOLARIS_MODCTL_MODNVL_TRUE= SOLARIS_MODCTL_MODNVL_FALSE='#' @@ -13592,19 +14494,19 @@ fi # C-level symbol: SOLARIS_NSCD_DOOR_SYSTEM_VOLATILE # Automake-level symbol: SOLARIS_NSCD_DOOR_SYSTEM_VOLATILE # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nscd door location (Solaris-specific)" >&5 -$as_echo_n "checking for nscd door location (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nscd door location (Solaris-specific)" >&5 +printf %s "checking for nscd door location (Solaris-specific)... " >&6; } if test -e /system/volatile/name_service_door; then solaris_nscd_door_system_volatile=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: /system/volatile/name_service_door" >&5 -$as_echo "/system/volatile/name_service_door" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: /system/volatile/name_service_door" >&5 +printf "%s\n" "/system/volatile/name_service_door" >&6; } -$as_echo "#define SOLARIS_NSCD_DOOR_SYSTEM_VOLATILE 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_NSCD_DOOR_SYSTEM_VOLATILE 1" >>confdefs.h else solaris_nscd_door_system_volatile=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: /var/run/name_service_door" >&5 -$as_echo "/var/run/name_service_door" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: /var/run/name_service_door" >&5 +printf "%s\n" "/var/run/name_service_door" >&6; } fi if test x$solaris_nscd_door_system_volatile = xyes; then SOLARIS_NSCD_DOOR_SYSTEM_VOLATILE_TRUE= @@ -13624,15 +14526,15 @@ fi # C-level symbol: SOLARIS_GETHRT_FASTTRAP # Automake-level symbol: SOLARIS_GETHRT_FASTTRAP # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the new \`gethrt' fasttrap (Solaris-specific)" >&5 -$as_echo_n "checking for the new \`gethrt' fasttrap (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the new \`gethrt' fasttrap (Solaris-specific)" >&5 +printf %s "checking for the new \`gethrt' fasttrap (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !T_GETHRT; @@ -13641,23 +14543,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_gethrt_fasttrap=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_GETHRT_FASTTRAP 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_GETHRT_FASTTRAP 1" >>confdefs.h -else +else $as_nop solaris_gethrt_fasttrap=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_gethrt_fasttrap = xyes; then SOLARIS_GETHRT_FASTTRAP_TRUE= SOLARIS_GETHRT_FASTTRAP_FALSE='#' @@ -13677,15 +14580,15 @@ fi # C-level symbol: SOLARIS_GETZONEOFFSET_FASTTRAP # Automake-level symbol: SOLARIS_GETZONEOFFSET_FASTTRAP # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the new \`get_zone_offset' fasttrap (Solaris-specific)" >&5 -$as_echo_n "checking for the new \`get_zone_offset' fasttrap (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the new \`get_zone_offset' fasttrap (Solaris-specific)" >&5 +printf %s "checking for the new \`get_zone_offset' fasttrap (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !T_GETZONEOFFSET; @@ -13694,23 +14597,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_getzoneoffset_fasttrap=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_GETZONEOFFSET_FASTTRAP 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_GETZONEOFFSET_FASTTRAP 1" >>confdefs.h -else +else $as_nop solaris_getzoneoffset_fasttrap=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_getzoneoffset_fasttrap = xyes; then SOLARIS_GETZONEOFFSET_FASTTRAP_TRUE= SOLARIS_GETZONEOFFSET_FASTTRAP_FALSE='#' @@ -13737,14 +14641,15 @@ fi # C-level symbol: SOLARIS_EXECVE_SYSCALL_TAKES_FLAGS # Automake-level symbol: SOLARIS_EXECVE_SYSCALL_TAKES_FLAGS # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the \`execve' syscall accepts flags (Solaris-specific)" >&5 -$as_echo_n "checking if the \`execve' syscall accepts flags (Solaris-specific)... " >&6; } -if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the \`execve' syscall accepts flags (Solaris-specific)" >&5 +printf %s "checking if the \`execve' syscall accepts flags (Solaris-specific)... " >&6; } +if test "$cross_compiling" = yes +then : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -13752,7 +14657,7 @@ else #include int -main () +main (void) { errno = 0; @@ -13763,20 +14668,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : solaris_execve_syscall_takes_flags=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_EXECVE_SYSCALL_TAKES_FLAGS 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_EXECVE_SYSCALL_TAKES_FLAGS 1" >>confdefs.h -else +else $as_nop solaris_execve_syscall_takes_flags=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -13802,11 +14708,12 @@ fi # # Extract the first word of "dis", so it can be a program name with args. set dummy dis; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_DIS_PATH+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_DIS_PATH+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $DIS_PATH in [\\/]* | ?:[\\/]*) ac_cv_path_DIS_PATH="$DIS_PATH" # Let the user override the test with a path. @@ -13816,11 +14723,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_DIS_PATH="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_DIS_PATH="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -13833,25 +14744,26 @@ esac fi DIS_PATH=$ac_cv_path_DIS_PATH if test -n "$DIS_PATH"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DIS_PATH" >&5 -$as_echo "$DIS_PATH" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DIS_PATH" >&5 +printf "%s\n" "$DIS_PATH" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$DIS_PATH" = "xfalse"; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Object code disassembler (\`dis') not found. See \`config.log' for more details" "$LINENO" 5; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for scf_handle_bind in -lscf" >&5 -$as_echo_n "checking for scf_handle_bind in -lscf... " >&6; } -if ${ac_cv_lib_scf_scf_handle_bind+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for scf_handle_bind in -lscf" >&5 +printf %s "checking for scf_handle_bind in -lscf... " >&6; } +if test ${ac_cv_lib_scf_scf_handle_bind+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lscf $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -13860,70 +14772,65 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char scf_handle_bind (); int -main () +main (void) { return scf_handle_bind (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_scf_scf_handle_bind=yes -else +else $as_nop ac_cv_lib_scf_scf_handle_bind=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_scf_scf_handle_bind" >&5 -$as_echo "$ac_cv_lib_scf_scf_handle_bind" >&6; } -if test "x$ac_cv_lib_scf_scf_handle_bind" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBSCF 1 -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_scf_scf_handle_bind" >&5 +printf "%s\n" "$ac_cv_lib_scf_scf_handle_bind" >&6; } +if test "x$ac_cv_lib_scf_scf_handle_bind" = xyes +then : + printf "%s\n" "#define HAVE_LIBSCF 1" >>confdefs.h LIBS="-lscf $LIBS" -else +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Function \`scf_handle_bind' was not found in \`libscf'." >&5 -$as_echo "$as_me: WARNING: Function \`scf_handle_bind' was not found in \`libscf'." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Function \`scf_handle_bind' was not found in \`libscf'." >&5 +printf "%s\n" "$as_me: WARNING: Function \`scf_handle_bind' was not found in \`libscf'." >&2;} as_fn_error $? "Cannot determine version of the repository cache protocol." "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for version of the repository cache protocol (Solaris-specific)" >&5 -$as_echo_n "checking for version of the repository cache protocol (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for version of the repository cache protocol (Solaris-specific)" >&5 +printf %s "checking for version of the repository cache protocol (Solaris-specific)... " >&6; } if test "X$VGCONF_ARCH_PRI" = "Xamd64"; then libscf=/usr/lib/64/libscf.so.1 else libscf=/usr/lib/libscf.so.1 fi if ! $DIS_PATH -F scf_handle_bind $libscf | grep -q 0x526570; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Function \`scf_handle_bind' does not contain repository cache protocol version." >&5 -$as_echo "$as_me: WARNING: Function \`scf_handle_bind' does not contain repository cache protocol version." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Function \`scf_handle_bind' does not contain repository cache protocol version." >&5 +printf "%s\n" "$as_me: WARNING: Function \`scf_handle_bind' does not contain repository cache protocol version." >&2;} as_fn_error $? "Cannot determine version of the repository cache protocol." "$LINENO" 5 fi hex=$( $DIS_PATH -F scf_handle_bind $libscf | sed -n 's/.*0x526570\(..\).*/\1/p' ) if test -z "$hex"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Version of the repository cache protocol is empty?!" >&5 -$as_echo "$as_me: WARNING: Version of the repository cache protocol is empty?!" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Version of the repository cache protocol is empty?!" >&5 +printf "%s\n" "$as_me: WARNING: Version of the repository cache protocol is empty?!" >&2;} as_fn_error $? "Cannot determine version of the repository cache protocol." "$LINENO" 5 fi version=$( printf "%d\n" 0x$hex ) -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $version" >&5 -$as_echo "$version" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $version" >&5 +printf "%s\n" "$version" >&6; } -cat >>confdefs.h <<_ACEOF -#define SOLARIS_REPCACHE_PROTOCOL_VERSION $version -_ACEOF +printf "%s\n" "#define SOLARIS_REPCACHE_PROTOCOL_VERSION $version" >>confdefs.h @@ -13937,15 +14844,15 @@ _ACEOF # C-level symbol: SOLARIS_RESERVE_SYSSTAT_ADDR # Automake-level symbol: SOLARIS_RESERVE_SYSSTAT_ADDR # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the new \`sysstat' segment reservation (Solaris-specific)" >&5 -$as_echo_n "checking for the new \`sysstat' segment reservation (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the new \`sysstat' segment reservation (Solaris-specific)" >&5 +printf %s "checking for the new \`sysstat' segment reservation (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !AT_SUN_SYSSTAT_ADDR; @@ -13954,23 +14861,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_reserve_sysstat_addr=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_RESERVE_SYSSTAT_ADDR 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_RESERVE_SYSSTAT_ADDR 1" >>confdefs.h -else +else $as_nop solaris_reserve_sysstat_addr=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_reserve_sysstat_addr = xyes; then SOLARIS_RESERVE_SYSSTAT_ADDR_TRUE= SOLARIS_RESERVE_SYSSTAT_ADDR_FALSE='#' @@ -13991,15 +14899,15 @@ fi # C-level symbol: SOLARIS_RESERVE_SYSSTAT_ZONE_ADDR # Automake-level symbol: SOLARIS_RESERVE_SYSSTAT_ZONE_ADDR # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the new \`sysstat_zone' segment reservation (Solaris-specific)" >&5 -$as_echo_n "checking for the new \`sysstat_zone' segment reservation (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the new \`sysstat_zone' segment reservation (Solaris-specific)" >&5 +printf %s "checking for the new \`sysstat_zone' segment reservation (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !AT_SUN_SYSSTAT_ZONE_ADDR; @@ -14008,23 +14916,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_reserve_sysstat_zone_addr=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_RESERVE_SYSSTAT_ZONE_ADDR 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_RESERVE_SYSSTAT_ZONE_ADDR 1" >>confdefs.h -else +else $as_nop solaris_reserve_sysstat_zone_addr=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_reserve_sysstat_zone_addr = xyes; then SOLARIS_RESERVE_SYSSTAT_ZONE_ADDR_TRUE= SOLARIS_RESERVE_SYSSTAT_ZONE_ADDR_FALSE='#' @@ -14041,15 +14950,15 @@ fi # C-level symbol: SOLARIS_SYSTEM_STATS_SYSCALL # Automake-level symbol: SOLARIS_SYSTEM_STATS_SYSCALL # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the \`system_stats' syscall (Solaris-specific)" >&5 -$as_echo_n "checking for the \`system_stats' syscall (Solaris-specific)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the \`system_stats' syscall (Solaris-specific)" >&5 +printf %s "checking for the \`system_stats' syscall (Solaris-specific)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !SYS_system_stats; @@ -14058,23 +14967,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : solaris_system_stats_syscall=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_SYSTEM_STATS_SYSCALL 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_SYSTEM_STATS_SYSCALL 1" >>confdefs.h -else +else $as_nop solaris_system_stats_syscall=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test x$solaris_system_stats_syscall = xyes; then SOLARIS_SYSTEM_STATS_SYSCALL_TRUE= SOLARIS_SYSTEM_STATS_SYSCALL_FALSE='#' @@ -14093,15 +15003,16 @@ fi # ac_fn_c_check_type "$LINENO" "struct _fpchip_state" "ac_cv_type_struct__fpchip_state" "#include " -if test "x$ac_cv_type_struct__fpchip_state" = xyes; then : +if test "x$ac_cv_type_struct__fpchip_state" = xyes +then : solaris_fpchip_state_takes_underscore=yes -else +else $as_nop solaris_fpchip_state_takes_underscore=no fi if test "$solaris_fpchip_state_takes_underscore" = "yes"; then -$as_echo "#define SOLARIS_FPCHIP_STATE_TAKES_UNDERSCORE 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_FPCHIP_STATE_TAKES_UNDERSCORE 1" >>confdefs.h fi @@ -14113,14 +15024,15 @@ fi # C-level symbol: SOLARIS_SCHEDCTL_PAGE_EXEC # Automake-level symbol: none # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if schedctl page is executable (Solaris-specific)" >&5 -$as_echo_n "checking if schedctl page is executable (Solaris-specific)... " >&6; } -if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if schedctl page is executable (Solaris-specific)" >&5 +printf %s "checking if schedctl page is executable (Solaris-specific)... " >&6; } +if test "$cross_compiling" = yes +then : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -14132,7 +15044,7 @@ else #include int -main () +main (void) { schedctl_t *scp = schedctl_init(); @@ -14158,19 +15070,20 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : solaris_schedctl_page_exec=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } -else +else $as_nop solaris_schedctl_page_exec=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_SCHEDCTL_PAGE_EXEC 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_SCHEDCTL_PAGE_EXEC 1" >>confdefs.h fi @@ -14187,21 +15100,22 @@ fi # C-level symbol: SOLARIS_PT_SUNDWTRACE_THRP # Automake-level symbol: none # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if PT_SUNWDTRACE serves for initial thread pointer (Solaris-specific)" >&5 -$as_echo_n "checking if PT_SUNWDTRACE serves for initial thread pointer (Solaris-specific)... " >&6; } -if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if PT_SUNWDTRACE serves for initial thread pointer (Solaris-specific)" >&5 +printf %s "checking if PT_SUNWDTRACE serves for initial thread pointer (Solaris-specific)... " >&6; } +if test "$cross_compiling" = yes +then : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return !FT_SCRATCHSIZE; @@ -14210,20 +15124,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : solaris_pt_sunwdtrace_thrp=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define SOLARIS_PT_SUNDWTRACE_THRP 1" >>confdefs.h +printf "%s\n" "#define SOLARIS_PT_SUNDWTRACE_THRP 1" >>confdefs.h -else +else $as_nop solaris_pt_sunwdtrace_thrp=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -14463,39 +15378,101 @@ fi # test "$VGCONF_OS" = "solaris" # Checks for C header files. #---------------------------------------------------------------------------- -for ac_header in \ - asm/unistd.h \ - endian.h \ - mqueue.h \ - sys/endian.h \ - sys/epoll.h \ - sys/eventfd.h \ - sys/klog.h \ - sys/poll.h \ - sys/prctl.h \ - sys/signal.h \ - sys/signalfd.h \ - sys/syscall.h \ - sys/sysnvl.h \ - sys/time.h \ - sys/types.h \ - -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "asm/unistd.h" "ac_cv_header_asm_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_asm_unistd_h" = xyes +then : + printf "%s\n" "#define HAVE_ASM_UNISTD_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "endian.h" "ac_cv_header_endian_h" "$ac_includes_default" +if test "x$ac_cv_header_endian_h" = xyes +then : + printf "%s\n" "#define HAVE_ENDIAN_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "mqueue.h" "ac_cv_header_mqueue_h" "$ac_includes_default" +if test "x$ac_cv_header_mqueue_h" = xyes +then : + printf "%s\n" "#define HAVE_MQUEUE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/endian.h" "ac_cv_header_sys_endian_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_endian_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_ENDIAN_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/epoll.h" "ac_cv_header_sys_epoll_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_epoll_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_EPOLL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/eventfd.h" "ac_cv_header_sys_eventfd_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_eventfd_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_EVENTFD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/klog.h" "ac_cv_header_sys_klog_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_klog_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_KLOG_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/poll.h" "ac_cv_header_sys_poll_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_poll_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_POLL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/prctl.h" "ac_cv_header_sys_prctl_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_prctl_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_PRCTL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/signal.h" "ac_cv_header_sys_signal_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_signal_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SIGNAL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/signalfd.h" "ac_cv_header_sys_signalfd_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_signalfd_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SIGNALFD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/syscall.h" "ac_cv_header_sys_syscall_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_syscall_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SYSCALL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/sysnvl.h" "ac_cv_header_sys_sysnvl_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_sysnvl_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SYSNVL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_types_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h + +fi # Verify whether the header is usable. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if is usable" >&5 -$as_echo_n "checking if is usable... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if is usable" >&5 +printf %s "checking if is usable... " >&6; } save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -D__user=" @@ -14505,7 +15482,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { return FUTEX_WAIT; @@ -14514,134 +15491,112 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_have_usable_linux_futex_h=yes -$as_echo "#define HAVE_USABLE_LINUX_FUTEX_H 1" >>confdefs.h +printf "%s\n" "#define HAVE_USABLE_LINUX_FUTEX_H 1" >>confdefs.h -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_usable_linux_futex_h=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$save_CFLAGS" #---------------------------------------------------------------------------- # Checks for typedefs, structures, and compiler characteristics. #---------------------------------------------------------------------------- -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 -$as_echo_n "checking for uid_t in sys/types.h... " >&6; } -if ${ac_cv_type_uid_t+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 +printf %s "checking for uid_t in sys/types.h... " >&6; } +if test ${ac_cv_type_uid_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "uid_t" >/dev/null 2>&1; then : + $EGREP "uid_t" >/dev/null 2>&1 +then : ac_cv_type_uid_t=yes -else +else $as_nop ac_cv_type_uid_t=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 -$as_echo "$ac_cv_type_uid_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 +printf "%s\n" "$ac_cv_type_uid_t" >&6; } if test $ac_cv_type_uid_t = no; then -$as_echo "#define uid_t int" >>confdefs.h +printf "%s\n" "#define uid_t int" >>confdefs.h -$as_echo "#define gid_t int" >>confdefs.h +printf "%s\n" "#define gid_t int" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" -if test "x$ac_cv_type_off_t" = xyes; then : +if test "x$ac_cv_type_off_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define off_t long int -_ACEOF +printf "%s\n" "#define off_t long int" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : +if test "x$ac_cv_type_size_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF +printf "%s\n" "#define size_t unsigned int" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 -$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } -if ${ac_cv_header_time+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_time=yes -else - ac_cv_header_time=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 -$as_echo "$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then -$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h +# Obsolete code to be removed. +if test $ac_cv_header_sys_time_h = yes; then + +printf "%s\n" "#define TIME_WITH_SYS_TIME 1" >>confdefs.h fi +# End of obsolete code. #---------------------------------------------------------------------------- # Checks for library functions. #---------------------------------------------------------------------------- -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 -$as_echo_n "checking for working memcmp... " >&6; } -if ${ac_cv_func_memcmp_working+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 +printf %s "checking for working memcmp... " >&6; } +if test ${ac_cv_func_memcmp_working+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : ac_cv_func_memcmp_working=no -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int -main () +main (void) { /* Some versions of memcmp are not 8-bit clean. */ @@ -14672,9 +15627,10 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_func_memcmp_working=yes -else +else $as_nop ac_cv_func_memcmp_working=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -14682,8 +15638,8 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 -$as_echo "$ac_cv_func_memcmp_working" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 +printf "%s\n" "$ac_cv_func_memcmp_working" >&6; } test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in *" memcmp.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" @@ -14692,48 +15648,36 @@ esac - - - for ac_header in $ac_header_list -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi done - - - - - - -for ac_func in getpagesize -do : - ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" -if test "x$ac_cv_func_getpagesize" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETPAGESIZE 1 -_ACEOF - -fi -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 -$as_echo_n "checking for working mmap... " >&6; } -if ${ac_cv_func_mmap_fixed_mapped+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_mmap_fixed_mapped=no -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 +printf %s "checking for working mmap... " >&6; } +if test ${ac_cv_func_mmap_fixed_mapped+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on platforms where we know the result. + linux*) ac_cv_func_mmap_fixed_mapped=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_mmap_fixed_mapped=no ;; + esac +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default @@ -14765,10 +15709,6 @@ $ac_includes_default #include #include -#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H -char *malloc (); -#endif - /* This mess was copied from the GNU getpagesize.h. */ #ifndef HAVE_GETPAGESIZE # ifdef _SC_PAGESIZE @@ -14802,7 +15742,7 @@ char *malloc (); #endif /* no HAVE_GETPAGESIZE */ int -main () +main (void) { char *data, *data2, *data3; const char *cdata2; @@ -14870,12 +15810,15 @@ main () if (*(data + i) != *(data3 + i)) return 14; close (fd); + free (data); + free (data3); return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_func_mmap_fixed_mapped=yes -else +else $as_nop ac_cv_func_mmap_fixed_mapped=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -14883,21 +15826,22 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 -$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 +printf "%s\n" "$ac_cv_func_mmap_fixed_mapped" >&6; } if test $ac_cv_func_mmap_fixed_mapped = yes; then -$as_echo "#define HAVE_MMAP 1" >>confdefs.h +printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h fi rm -f conftest.mmap conftest.txt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 -$as_echo_n "checking for pthread_create in -lpthread... " >&6; } -if ${ac_cv_lib_pthread_pthread_create+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 +printf %s "checking for pthread_create in -lpthread... " >&6; } +if test ${ac_cv_lib_pthread_pthread_create+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -14906,43 +15850,41 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char pthread_create (); int -main () +main (void) { return pthread_create (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_pthread_pthread_create=yes -else +else $as_nop ac_cv_lib_pthread_pthread_create=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 -$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } -if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBPTHREAD 1 -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 +printf "%s\n" "$ac_cv_lib_pthread_pthread_create" >&6; } +if test "x$ac_cv_lib_pthread_pthread_create" = xyes +then : + printf "%s\n" "#define HAVE_LIBPTHREAD 1" >>confdefs.h LIBS="-lpthread $LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 -$as_echo_n "checking for clock_gettime in -lrt... " >&6; } -if ${ac_cv_lib_rt_clock_gettime+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 +printf %s "checking for clock_gettime in -lrt... " >&6; } +if test ${ac_cv_lib_rt_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lrt $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -14951,87 +15893,252 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char clock_gettime (); int -main () +main (void) { return clock_gettime (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_rt_clock_gettime=yes -else +else $as_nop ac_cv_lib_rt_clock_gettime=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 -$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } -if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBRT 1 -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 +printf "%s\n" "$ac_cv_lib_rt_clock_gettime" >&6; } +if test "x$ac_cv_lib_rt_clock_gettime" = xyes +then : + printf "%s\n" "#define HAVE_LIBRT 1" >>confdefs.h LIBS="-lrt $LIBS" fi -for ac_func in \ - clock_gettime\ - epoll_create \ - epoll_pwait \ - klogctl \ - mallinfo \ - memchr \ - memset \ - mkdir \ - mremap \ - ppoll \ - pthread_barrier_init \ - pthread_condattr_setclock \ - pthread_mutex_timedlock \ - pthread_rwlock_timedrdlock \ - pthread_rwlock_timedwrlock \ - pthread_spin_lock \ - pthread_yield \ - pthread_setname_np \ - readlinkat \ - semtimedop \ - signalfd \ - sigwaitinfo \ - strchr \ - strdup \ - strpbrk \ - strrchr \ - strstr \ - syscall \ - utimensat \ - process_vm_readv \ - process_vm_writev \ - copy_file_range \ - preadv \ - pwritev \ - preadv2 \ - pwritev2 \ - -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime" +if test "x$ac_cv_func_clock_gettime" = xyes +then : + printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "epoll_create" "ac_cv_func_epoll_create" +if test "x$ac_cv_func_epoll_create" = xyes +then : + printf "%s\n" "#define HAVE_EPOLL_CREATE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "epoll_pwait" "ac_cv_func_epoll_pwait" +if test "x$ac_cv_func_epoll_pwait" = xyes +then : + printf "%s\n" "#define HAVE_EPOLL_PWAIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "klogctl" "ac_cv_func_klogctl" +if test "x$ac_cv_func_klogctl" = xyes +then : + printf "%s\n" "#define HAVE_KLOGCTL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mallinfo" "ac_cv_func_mallinfo" +if test "x$ac_cv_func_mallinfo" = xyes +then : + printf "%s\n" "#define HAVE_MALLINFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memchr" "ac_cv_func_memchr" +if test "x$ac_cv_func_memchr" = xyes +then : + printf "%s\n" "#define HAVE_MEMCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memset" "ac_cv_func_memset" +if test "x$ac_cv_func_memset" = xyes +then : + printf "%s\n" "#define HAVE_MEMSET 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkdir" "ac_cv_func_mkdir" +if test "x$ac_cv_func_mkdir" = xyes +then : + printf "%s\n" "#define HAVE_MKDIR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mremap" "ac_cv_func_mremap" +if test "x$ac_cv_func_mremap" = xyes +then : + printf "%s\n" "#define HAVE_MREMAP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ppoll" "ac_cv_func_ppoll" +if test "x$ac_cv_func_ppoll" = xyes +then : + printf "%s\n" "#define HAVE_PPOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pthread_barrier_init" "ac_cv_func_pthread_barrier_init" +if test "x$ac_cv_func_pthread_barrier_init" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_BARRIER_INIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pthread_condattr_setclock" "ac_cv_func_pthread_condattr_setclock" +if test "x$ac_cv_func_pthread_condattr_setclock" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pthread_mutex_timedlock" "ac_cv_func_pthread_mutex_timedlock" +if test "x$ac_cv_func_pthread_mutex_timedlock" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_MUTEX_TIMEDLOCK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pthread_rwlock_timedrdlock" "ac_cv_func_pthread_rwlock_timedrdlock" +if test "x$ac_cv_func_pthread_rwlock_timedrdlock" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pthread_rwlock_timedwrlock" "ac_cv_func_pthread_rwlock_timedwrlock" +if test "x$ac_cv_func_pthread_rwlock_timedwrlock" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pthread_spin_lock" "ac_cv_func_pthread_spin_lock" +if test "x$ac_cv_func_pthread_spin_lock" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_SPIN_LOCK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pthread_yield" "ac_cv_func_pthread_yield" +if test "x$ac_cv_func_pthread_yield" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_YIELD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pthread_setname_np" "ac_cv_func_pthread_setname_np" +if test "x$ac_cv_func_pthread_setname_np" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_SETNAME_NP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlinkat" "ac_cv_func_readlinkat" +if test "x$ac_cv_func_readlinkat" = xyes +then : + printf "%s\n" "#define HAVE_READLINKAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "semtimedop" "ac_cv_func_semtimedop" +if test "x$ac_cv_func_semtimedop" = xyes +then : + printf "%s\n" "#define HAVE_SEMTIMEDOP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "signalfd" "ac_cv_func_signalfd" +if test "x$ac_cv_func_signalfd" = xyes +then : + printf "%s\n" "#define HAVE_SIGNALFD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigwaitinfo" "ac_cv_func_sigwaitinfo" +if test "x$ac_cv_func_sigwaitinfo" = xyes +then : + printf "%s\n" "#define HAVE_SIGWAITINFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strchr" "ac_cv_func_strchr" +if test "x$ac_cv_func_strchr" = xyes +then : + printf "%s\n" "#define HAVE_STRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes +then : + printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strpbrk" "ac_cv_func_strpbrk" +if test "x$ac_cv_func_strpbrk" = xyes +then : + printf "%s\n" "#define HAVE_STRPBRK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strrchr" "ac_cv_func_strrchr" +if test "x$ac_cv_func_strrchr" = xyes +then : + printf "%s\n" "#define HAVE_STRRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strstr" "ac_cv_func_strstr" +if test "x$ac_cv_func_strstr" = xyes +then : + printf "%s\n" "#define HAVE_STRSTR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "syscall" "ac_cv_func_syscall" +if test "x$ac_cv_func_syscall" = xyes +then : + printf "%s\n" "#define HAVE_SYSCALL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "utimensat" "ac_cv_func_utimensat" +if test "x$ac_cv_func_utimensat" = xyes +then : + printf "%s\n" "#define HAVE_UTIMENSAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "process_vm_readv" "ac_cv_func_process_vm_readv" +if test "x$ac_cv_func_process_vm_readv" = xyes +then : + printf "%s\n" "#define HAVE_PROCESS_VM_READV 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "process_vm_writev" "ac_cv_func_process_vm_writev" +if test "x$ac_cv_func_process_vm_writev" = xyes +then : + printf "%s\n" "#define HAVE_PROCESS_VM_WRITEV 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "copy_file_range" "ac_cv_func_copy_file_range" +if test "x$ac_cv_func_copy_file_range" = xyes +then : + printf "%s\n" "#define HAVE_COPY_FILE_RANGE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "preadv" "ac_cv_func_preadv" +if test "x$ac_cv_func_preadv" = xyes +then : + printf "%s\n" "#define HAVE_PREADV 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pwritev" "ac_cv_func_pwritev" +if test "x$ac_cv_func_pwritev" = xyes +then : + printf "%s\n" "#define HAVE_PWRITEV 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "preadv2" "ac_cv_func_preadv2" +if test "x$ac_cv_func_preadv2" = xyes +then : + printf "%s\n" "#define HAVE_PREADV2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pwritev2" "ac_cv_func_pwritev2" +if test "x$ac_cv_func_pwritev2" = xyes +then : + printf "%s\n" "#define HAVE_PWRITEV2 1" >>confdefs.h fi -done # AC_CHECK_LIB adds any library found to the variable LIBS, and links these @@ -15100,7 +16207,7 @@ if test x$VGCONF_PLATFORM_PRI_CAPS = xMIPS32_LINUX \ -o x$VGCONF_PLATFORM_PRI_CAPS = xMIPS64_LINUX \ -o x$VGCONF_PLATFORM_PRI_CAPS = xNANOMIPS_LINUX; then -$as_echo "#define DISABLE_PTHREAD_SPINLOCK_INTERCEPT 1" >>confdefs.h +printf "%s\n" "#define DISABLE_PTHREAD_SPINLOCK_INTERCEPT 1" >>confdefs.h fi @@ -15114,11 +16221,12 @@ fi # --with-mpicc=. # Extract the first word of "mpicc", so it can be a program name with args. set dummy mpicc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MPI_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MPI_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $MPI_CC in [\\/]* | ?:[\\/]*) ac_cv_path_MPI_CC="$MPI_CC" # Let the user override the test with a path. @@ -15129,11 +16237,15 @@ as_dummy="$PATH:/usr/lib/openmpi/bin:/usr/lib64/openmpi/bin" for as_dir in $as_dummy do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_MPI_CC="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_MPI_CC="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -15146,11 +16258,11 @@ esac fi MPI_CC=$ac_cv_path_MPI_CC if test -n "$MPI_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPI_CC" >&5 -$as_echo "$MPI_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MPI_CC" >&5 +printf "%s\n" "$MPI_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -15167,7 +16279,8 @@ elif test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \ -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX \ -o x$VGCONF_PLATFORM_PRI_CAPS = xARM64_LINUX \ -o x$VGCONF_PLATFORM_PRI_CAPS = xMIPS64_LINUX \ - -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX ; then + -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX \ + -o x$VGCONF_PLATFORM_PRI_CAPS = xLOONGARCH64_LINUX; then mflag_primary=$FLAG_M64 elif test x$VGCONF_PLATFORM_PRI_CAPS = xX86_DARWIN ; then mflag_primary="$FLAG_M32 -arch i386" @@ -15188,7 +16301,8 @@ fi # Check whether --with-mpicc was given. -if test "${with_mpicc+set}" = set; then : +if test ${with_mpicc+y} +then : withval=$with_mpicc; MPI_CC=$withval fi @@ -15222,8 +16336,8 @@ fi ## See if MPI_CC works for the primary target ## -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking primary target for usable MPI2-compliant C compiler and mpi.h" >&5 -$as_echo_n "checking primary target for usable MPI2-compliant C compiler and mpi.h... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking primary target for usable MPI2-compliant C compiler and mpi.h" >&5 +printf %s "checking primary target for usable MPI2-compliant C compiler and mpi.h... " >&6; } saved_CC=$CC saved_CFLAGS=$CFLAGS CC=$MPI_CC @@ -15237,7 +16351,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { int ni, na, nd, comb; @@ -15250,20 +16364,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_have_mpi2_pri=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, $MPI_CC" >&5 -$as_echo "yes, $MPI_CC" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes, $MPI_CC" >&5 +printf "%s\n" "yes, $MPI_CC" >&6; } -else +else $as_nop ac_have_mpi2_pri=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CC=$saved_CC CFLAGS=$saved_CFLAGS @@ -15282,8 +16397,8 @@ fi ## Kludge this by making MPI_CC something which will surely fail in ## such a case. ## -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking secondary target for usable MPI2-compliant C compiler and mpi.h" >&5 -$as_echo_n "checking secondary target for usable MPI2-compliant C compiler and mpi.h... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking secondary target for usable MPI2-compliant C compiler and mpi.h" >&5 +printf %s "checking secondary target for usable MPI2-compliant C compiler and mpi.h... " >&6; } saved_CC=$CC saved_CFLAGS=$CFLAGS saved_LDFLAGS="$LDFLAGS" @@ -15301,7 +16416,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { int ni, na, nd, comb; @@ -15314,20 +16429,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_have_mpi2_sec=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, $MPI_CC" >&5 -$as_echo "yes, $MPI_CC" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes, $MPI_CC" >&5 +printf "%s\n" "yes, $MPI_CC" >&6; } -else +else $as_nop ac_have_mpi2_sec=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CC=$saved_CC CFLAGS=$saved_CFLAGS @@ -15364,8 +16480,8 @@ fi # Check whether the boost library 1.35 or later has been installed. # The Boost.Threads library has undergone a major rewrite in version 1.35.0. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for boost" >&5 -$as_echo_n "checking for boost... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for boost" >&5 +printf %s "checking for boost... " >&6; } ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' @@ -15391,23 +16507,24 @@ int main(int argc, char** argv) } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : ac_have_boost_1_35=yes BOOST_LIBS="-lboost_thread-mt -lboost_system-mt" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_boost_1_35=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$safe_LIBS" @@ -15432,8 +16549,8 @@ fi # does this compiler support -fopenmp, does it have the include file # and does it have libgomp ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenMP" >&5 -$as_echo_n "checking for OpenMP... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OpenMP" >&5 +printf %s "checking for OpenMP... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="-fopenmp $mflag_primary -Werror" @@ -15449,20 +16566,21 @@ int main(int argc, char** argv) } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_have_openmp=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_openmp=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS=$safe_CFLAGS @@ -15477,14 +16595,14 @@ fi # Check for __builtin_popcount -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_popcount()" >&5 -$as_echo_n "checking for __builtin_popcount()... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_popcount()" >&5 +printf %s "checking for __builtin_popcount()... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { __builtin_popcount(2); @@ -15494,32 +16612,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define HAVE_BUILTIN_POPCOUT 1" >>confdefs.h +printf "%s\n" "#define HAVE_BUILTIN_POPCOUT 1" >>confdefs.h -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # Check for __builtin_clz -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_clz()" >&5 -$as_echo_n "checking for __builtin_clz()... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_clz()" >&5 +printf %s "checking for __builtin_clz()... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { __builtin_clz(2); @@ -15529,32 +16648,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define HAVE_BUILTIN_CLZ 1" >>confdefs.h +printf "%s\n" "#define HAVE_BUILTIN_CLZ 1" >>confdefs.h -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # Check for __builtin_ctz -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_ctz()" >&5 -$as_echo_n "checking for __builtin_ctz()... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_ctz()" >&5 +printf %s "checking for __builtin_ctz()... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { __builtin_ctz(2); @@ -15564,27 +16684,28 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define HAVE_BUILTIN_CTZ 1" >>confdefs.h +printf "%s\n" "#define HAVE_BUILTIN_CTZ 1" >>confdefs.h -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext # does this compiler have built-in functions for atomic memory access for the # primary target ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc supports __sync_add_and_fetch for the primary target" >&5 -$as_echo_n "checking if gcc supports __sync_add_and_fetch for the primary target... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc supports __sync_add_and_fetch for the primary target" >&5 +printf %s "checking if gcc supports __sync_add_and_fetch for the primary target... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="$mflag_primary" @@ -15593,7 +16714,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { int variable = 1; @@ -15604,23 +16725,24 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_have_builtin_atomic_primary=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define HAVE_BUILTIN_ATOMIC 1" >>confdefs.h +printf "%s\n" "#define HAVE_BUILTIN_ATOMIC 1" >>confdefs.h -else +else $as_nop ac_have_builtin_atomic_primary=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS=$safe_CFLAGS @@ -15640,8 +16762,8 @@ fi if test x$VGCONF_PLATFORM_SEC_CAPS != x; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc supports __sync_add_and_fetch for the secondary target" >&5 -$as_echo_n "checking if gcc supports __sync_add_and_fetch for the secondary target... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc supports __sync_add_and_fetch for the secondary target" >&5 +printf %s "checking if gcc supports __sync_add_and_fetch for the secondary target... " >&6; } safe_CFLAGS=$CFLAGS CFLAGS="$mflag_secondary" @@ -15650,7 +16772,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { int variable = 1; @@ -15660,20 +16782,21 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_have_builtin_atomic_secondary=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -else +else $as_nop ac_have_builtin_atomic_secondary=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS=$safe_CFLAGS @@ -15692,8 +16815,8 @@ fi # does this compiler have built-in functions for atomic memory access on # 64-bit integers for all targets ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc supports __sync_add_and_fetch on uint64_t for all targets" >&5 -$as_echo_n "checking if gcc supports __sync_add_and_fetch on uint64_t for all targets... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc supports __sync_add_and_fetch on uint64_t for all targets" >&5 +printf %s "checking if gcc supports __sync_add_and_fetch on uint64_t for all targets... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -15701,7 +16824,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { uint64_t variable = 1; @@ -15711,16 +16834,17 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_have_builtin_atomic64_primary=yes -else +else $as_nop ac_have_builtin_atomic64_primary=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test x$VGCONF_PLATFORM_SEC_CAPS != x; then @@ -15734,7 +16858,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { uint64_t variable = 1; @@ -15744,16 +16868,17 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_have_builtin_atomic64_secondary=yes -else +else $as_nop ac_have_builtin_atomic64_secondary=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS=$safe_CFLAGS @@ -15763,12 +16888,12 @@ fi if test x$ac_have_builtin_atomic64_primary = xyes && \ test x$VGCONF_PLATFORM_SEC_CAPS = x \ -o x$ac_have_builtin_atomic64_secondary = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } ac_have_builtin_atomic64=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ac_have_builtin_atomic64=no fi @@ -15783,8 +16908,8 @@ fi # does g++ have built-in functions for atomic memory access ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if g++ supports __sync_add_and_fetch" >&5 -$as_echo_n "checking if g++ supports __sync_add_and_fetch... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if g++ supports __sync_add_and_fetch" >&5 +printf %s "checking if g++ supports __sync_add_and_fetch... " >&6; } safe_CXXFLAGS=$CXXFLAGS CXXFLAGS="$mflag_primary" @@ -15799,7 +16924,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { int variable = 1; @@ -15810,23 +16935,24 @@ main () return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : ac_have_builtin_atomic_cxx=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define HAVE_BUILTIN_ATOMIC_CXX 1" >>confdefs.h +printf "%s\n" "#define HAVE_BUILTIN_ATOMIC_CXX 1" >>confdefs.h -else +else $as_nop ac_have_builtin_atomic_cxx=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -15876,8 +17002,8 @@ fi # does libstdc++ support annotating shared pointers ? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libstdc++ supports annotating shared pointers" >&5 -$as_echo_n "checking if libstdc++ supports annotating shared pointers... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libstdc++ supports annotating shared pointers" >&5 +printf %s "checking if libstdc++ supports annotating shared pointers... " >&6; } safe_CXXFLAGS=$CXXFLAGS CXXFLAGS="-std=c++0x" @@ -15894,7 +17020,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #include int -main () +main (void) { std::shared_ptr p @@ -15903,16 +17029,17 @@ main () return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : ac_have_shared_ptr=yes -else +else $as_nop ac_have_shared_ptr=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test x$ac_have_shared_ptr = xyes; then # If compilation of the program below fails because of a syntax error @@ -15926,7 +17053,7 @@ if test x$ac_have_shared_ptr = xyes; then #include int -main () +main (void) { std::shared_ptr p @@ -15935,28 +17062,29 @@ main () return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : ac_have_shared_pointer_annotation=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } -else +else $as_nop ac_have_shared_pointer_annotation=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define HAVE_SHARED_POINTER_ANNOTATION 1" >>confdefs.h +printf "%s\n" "#define HAVE_SHARED_POINTER_ANNOTATION 1" >>confdefs.h fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext else ac_have_shared_pointer_annotation=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -15982,7 +17110,7 @@ fi #---------------------------------------------------------------------------- # Nb: VEX/Makefile is generated from Makefile.vex.in. -ac_config_files="$ac_config_files Makefile VEX/Makefile:Makefile.vex.in valgrind.spec valgrind.pc glibc-2.X.supp docs/Makefile tests/Makefile tests/vg_regtest perf/Makefile perf/vg_perf gdbserver_tests/Makefile gdbserver_tests/solaris/Makefile include/Makefile auxprogs/Makefile mpi/Makefile coregrind/Makefile memcheck/Makefile memcheck/tests/Makefile memcheck/tests/common/Makefile memcheck/tests/amd64/Makefile memcheck/tests/x86/Makefile memcheck/tests/linux/Makefile memcheck/tests/darwin/Makefile memcheck/tests/solaris/Makefile memcheck/tests/amd64-linux/Makefile memcheck/tests/arm64-linux/Makefile memcheck/tests/x86-linux/Makefile memcheck/tests/amd64-solaris/Makefile memcheck/tests/x86-solaris/Makefile memcheck/tests/ppc32/Makefile memcheck/tests/ppc64/Makefile memcheck/tests/s390x/Makefile memcheck/tests/mips32/Makefile memcheck/tests/mips64/Makefile memcheck/tests/vbit-test/Makefile cachegrind/Makefile cachegrind/tests/Makefile cachegrind/tests/x86/Makefile cachegrind/cg_annotate cachegrind/cg_diff callgrind/Makefile callgrind/callgrind_annotate callgrind/callgrind_control callgrind/tests/Makefile helgrind/Makefile helgrind/tests/Makefile drd/Makefile drd/scripts/download-and-build-splash2 drd/tests/Makefile massif/Makefile massif/tests/Makefile massif/ms_print dhat/Makefile dhat/tests/Makefile lackey/Makefile lackey/tests/Makefile none/Makefile none/tests/Makefile none/tests/scripts/Makefile none/tests/amd64/Makefile none/tests/ppc32/Makefile none/tests/ppc64/Makefile none/tests/x86/Makefile none/tests/arm/Makefile none/tests/arm64/Makefile none/tests/s390x/Makefile none/tests/mips32/Makefile none/tests/mips64/Makefile none/tests/nanomips/Makefile none/tests/linux/Makefile none/tests/darwin/Makefile none/tests/solaris/Makefile none/tests/amd64-linux/Makefile none/tests/x86-linux/Makefile none/tests/amd64-darwin/Makefile none/tests/x86-darwin/Makefile none/tests/amd64-solaris/Makefile none/tests/x86-solaris/Makefile exp-bbv/Makefile exp-bbv/tests/Makefile exp-bbv/tests/x86/Makefile exp-bbv/tests/x86-linux/Makefile exp-bbv/tests/amd64-linux/Makefile exp-bbv/tests/ppc32-linux/Makefile exp-bbv/tests/arm-linux/Makefile shared/Makefile solaris/Makefile" +ac_config_files="$ac_config_files Makefile VEX/Makefile:Makefile.vex.in valgrind.spec valgrind.pc glibc-2.X.supp docs/Makefile tests/Makefile tests/vg_regtest perf/Makefile perf/vg_perf gdbserver_tests/Makefile gdbserver_tests/solaris/Makefile include/Makefile auxprogs/Makefile mpi/Makefile coregrind/Makefile memcheck/Makefile memcheck/tests/Makefile memcheck/tests/common/Makefile memcheck/tests/amd64/Makefile memcheck/tests/x86/Makefile memcheck/tests/linux/Makefile memcheck/tests/darwin/Makefile memcheck/tests/solaris/Makefile memcheck/tests/amd64-linux/Makefile memcheck/tests/arm64-linux/Makefile memcheck/tests/x86-linux/Makefile memcheck/tests/loongarch64-linux/Makefile memcheck/tests/amd64-solaris/Makefile memcheck/tests/x86-solaris/Makefile memcheck/tests/ppc32/Makefile memcheck/tests/ppc64/Makefile memcheck/tests/s390x/Makefile memcheck/tests/mips32/Makefile memcheck/tests/mips64/Makefile memcheck/tests/vbit-test/Makefile cachegrind/Makefile cachegrind/tests/Makefile cachegrind/tests/x86/Makefile cachegrind/cg_annotate cachegrind/cg_diff callgrind/Makefile callgrind/callgrind_annotate callgrind/callgrind_control callgrind/tests/Makefile helgrind/Makefile helgrind/tests/Makefile drd/Makefile drd/scripts/download-and-build-splash2 drd/tests/Makefile massif/Makefile massif/tests/Makefile massif/ms_print dhat/Makefile dhat/tests/Makefile lackey/Makefile lackey/tests/Makefile none/Makefile none/tests/Makefile none/tests/scripts/Makefile none/tests/amd64/Makefile none/tests/ppc32/Makefile none/tests/ppc64/Makefile none/tests/x86/Makefile none/tests/arm/Makefile none/tests/arm64/Makefile none/tests/s390x/Makefile none/tests/mips32/Makefile none/tests/mips64/Makefile none/tests/nanomips/Makefile none/tests/loongarch64/Makefile none/tests/linux/Makefile none/tests/darwin/Makefile none/tests/solaris/Makefile none/tests/amd64-linux/Makefile none/tests/x86-linux/Makefile none/tests/amd64-darwin/Makefile none/tests/x86-darwin/Makefile none/tests/amd64-solaris/Makefile none/tests/x86-solaris/Makefile exp-bbv/Makefile exp-bbv/tests/Makefile exp-bbv/tests/x86/Makefile exp-bbv/tests/x86-linux/Makefile exp-bbv/tests/amd64-linux/Makefile exp-bbv/tests/ppc32-linux/Makefile exp-bbv/tests/arm-linux/Makefile shared/Makefile solaris/Makefile" ac_config_files="$ac_config_files coregrind/link_tool_exe_linux" @@ -16017,8 +17145,8 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -16048,15 +17176,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; /^ac_cv_env_/b end t clear :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else @@ -16070,8 +17198,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;} fi fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -16088,7 +17216,7 @@ U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" @@ -16099,14 +17227,14 @@ LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -$as_echo_n "checking that generated files are newer than configure... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -$as_echo "done" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf "%s\n" "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' @@ -16183,6 +17311,10 @@ if test -z "${VGCONF_ARCHS_INCLUDE_NANOMIPS_TRUE}" && test -z "${VGCONF_ARCHS_IN as_fn_error $? "conditional \"VGCONF_ARCHS_INCLUDE_NANOMIPS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${VGCONF_ARCHS_INCLUDE_LOONGARCH64_TRUE}" && test -z "${VGCONF_ARCHS_INCLUDE_LOONGARCH64_FALSE}"; then + as_fn_error $? "conditional \"VGCONF_ARCHS_INCLUDE_LOONGARCH64\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_X86_LINUX_FALSE}"; then as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_X86_LINUX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -16227,6 +17359,10 @@ if test -z "${VGCONF_PLATFORMS_INCLUDE_NANOMIPS_LINUX_TRUE}" && test -z "${VGCON as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_NANOMIPS_LINUX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_FALSE}"; then + as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${VGCONF_PLATFORMS_INCLUDE_X86_DARWIN_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_X86_DARWIN_FALSE}"; then as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_X86_DARWIN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -16748,8 +17884,8 @@ fi ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL @@ -16772,14 +17908,16 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -16789,46 +17927,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -16837,13 +17975,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -16852,8 +17983,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -16865,30 +18000,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] @@ -16901,13 +18016,14 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -16934,18 +18050,20 @@ as_fn_unset () { eval $1=; unset $1;} } as_unset=as_fn_unset + # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -16957,12 +18075,13 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` @@ -16993,7 +18112,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -17015,6 +18134,10 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -17028,6 +18151,12 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -17069,7 +18198,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -17078,7 +18207,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -17141,7 +18270,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by Valgrind $as_me 3.16.0, which was -generated by GNU Autoconf 2.69. Invocation command line was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -17203,14 +18332,16 @@ $config_commands Report bugs to ." _ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ Valgrind config.status 3.16.0 -configured by $0, generated by GNU Autoconf 2.69, +configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -17250,15 +18381,15 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; + printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; + printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" @@ -17266,7 +18397,7 @@ do --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; @@ -17275,7 +18406,7 @@ do as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; + printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; @@ -17303,7 +18434,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" @@ -17317,7 +18448,7 @@ exec 5>>config.log sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - $as_echo "$ac_log" + printf "%s\n" "$ac_log" } >&5 _ACEOF @@ -17364,6 +18495,7 @@ do "memcheck/tests/amd64-linux/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/amd64-linux/Makefile" ;; "memcheck/tests/arm64-linux/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/arm64-linux/Makefile" ;; "memcheck/tests/x86-linux/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/x86-linux/Makefile" ;; + "memcheck/tests/loongarch64-linux/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/loongarch64-linux/Makefile" ;; "memcheck/tests/amd64-solaris/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/amd64-solaris/Makefile" ;; "memcheck/tests/x86-solaris/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/x86-solaris/Makefile" ;; "memcheck/tests/ppc32/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/ppc32/Makefile" ;; @@ -17406,6 +18538,7 @@ do "none/tests/mips32/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/mips32/Makefile" ;; "none/tests/mips64/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/mips64/Makefile" ;; "none/tests/nanomips/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/nanomips/Makefile" ;; + "none/tests/loongarch64/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/loongarch64/Makefile" ;; "none/tests/linux/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/linux/Makefile" ;; "none/tests/darwin/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/darwin/Makefile" ;; "none/tests/solaris/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/solaris/Makefile" ;; @@ -17438,9 +18571,9 @@ done # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree @@ -17776,7 +18909,7 @@ do esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done @@ -17784,17 +18917,17 @@ do # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | + ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac @@ -17811,7 +18944,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | +printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -17835,9 +18968,9 @@ $as_echo X"$ac_file" | case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -17899,8 +19032,8 @@ ac_sed_dataroot=' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' @@ -17944,9 +19077,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" @@ -17962,20 +19095,20 @@ which seems to be undefined. Please make sure it is defined" >&2;} # if test x"$ac_file" != x-; then { - $as_echo "/* $configure_input */" \ + printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else - $as_echo "/* $configure_input */" \ + printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi @@ -17995,7 +19128,7 @@ $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | +printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -18015,8 +19148,8 @@ $as_echo X"$_am_arg" | s/.*/./; q'`/stamp-h$_am_stamp_count ;; - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} + :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac @@ -18042,7 +19175,7 @@ esac for am_mf do # Strip MF so we end up with the name of the file. - am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line @@ -18054,7 +19187,7 @@ $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$am_mf" | +printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -18076,7 +19209,7 @@ $as_echo X"$am_mf" | $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$am_mf" | +printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -18101,10 +19234,12 @@ $as_echo X/"$am_mf" | (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments - for automatic dependency tracking. Try re-running configure with the + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See \`config.log' for more details" "$LINENO" 5; } @@ -18153,8 +19288,8 @@ if test "$no_create" != yes; then $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi @@ -18172,3 +19307,4 @@ cat<. Either one or two of these # become defined. @@ -918,6 +936,8 @@ AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_MIPS64_LINUX, test x$VGCONF_PLATFORM_PRI_CAPS = xMIPS64_LINUX) AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_NANOMIPS_LINUX, test x$VGCONF_PLATFORM_PRI_CAPS = xNANOMIPS_LINUX) +AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX, + test x$VGCONF_PLATFORM_PRI_CAPS = xLOONGARCH64_LINUX) AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_X86_DARWIN, test x$VGCONF_PLATFORM_PRI_CAPS = xX86_DARWIN \ -o x$VGCONF_PLATFORM_SEC_CAPS = xX86_DARWIN) @@ -944,7 +964,8 @@ AM_CONDITIONAL(VGCONF_OS_IS_LINUX, -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX \ -o x$VGCONF_PLATFORM_PRI_CAPS = xMIPS32_LINUX \ -o x$VGCONF_PLATFORM_PRI_CAPS = xMIPS64_LINUX \ - -o x$VGCONF_PLATFORM_PRI_CAPS = xNANOMIPS_LINUX) + -o x$VGCONF_PLATFORM_PRI_CAPS = xNANOMIPS_LINUX \ + -o x$VGCONF_PLATFORM_PRI_CAPS = xLOONGARCH64_LINUX) AM_CONDITIONAL(VGCONF_OS_IS_DARWIN, test x$VGCONF_PLATFORM_PRI_CAPS = xX86_DARWIN \ -o x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_DARWIN) @@ -4334,7 +4355,8 @@ elif test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \ -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX \ -o x$VGCONF_PLATFORM_PRI_CAPS = xARM64_LINUX \ -o x$VGCONF_PLATFORM_PRI_CAPS = xMIPS64_LINUX \ - -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX ; then + -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX \ + -o x$VGCONF_PLATFORM_PRI_CAPS = xLOONGARCH64_LINUX; then mflag_primary=$FLAG_M64 elif test x$VGCONF_PLATFORM_PRI_CAPS = xX86_DARWIN ; then mflag_primary="$FLAG_M32 -arch i386" @@ -4799,6 +4821,7 @@ AC_CONFIG_FILES([ memcheck/tests/amd64-linux/Makefile memcheck/tests/arm64-linux/Makefile memcheck/tests/x86-linux/Makefile + memcheck/tests/loongarch64-linux/Makefile memcheck/tests/amd64-solaris/Makefile memcheck/tests/x86-solaris/Makefile memcheck/tests/ppc32/Makefile @@ -4841,6 +4864,7 @@ AC_CONFIG_FILES([ none/tests/mips32/Makefile none/tests/mips64/Makefile none/tests/nanomips/Makefile + none/tests/loongarch64/Makefile none/tests/linux/Makefile none/tests/darwin/Makefile none/tests/solaris/Makefile diff --git a/coregrind/Makefile.am b/coregrind/Makefile.am index 1753fb6..7c46c8b 100644 --- a/coregrind/Makefile.am +++ b/coregrind/Makefile.am @@ -377,6 +377,7 @@ COREGRIND_SOURCES_COMMON = \ m_dispatch/dispatch-mips32-linux.S \ m_dispatch/dispatch-mips64-linux.S \ m_dispatch/dispatch-nanomips-linux.S \ + m_dispatch/dispatch-loongarch64-linux.S \ m_dispatch/dispatch-x86-darwin.S \ m_dispatch/dispatch-amd64-darwin.S \ m_dispatch/dispatch-x86-solaris.S \ @@ -399,6 +400,7 @@ COREGRIND_SOURCES_COMMON = \ m_gdbserver/valgrind-low-mips32.c \ m_gdbserver/valgrind-low-mips64.c \ m_gdbserver/valgrind-low-nanomips.c \ + m_gdbserver/valgrind-low-loongarch64.c \ m_gdbserver/version.c \ m_initimg/initimg-linux.c \ m_initimg/initimg-darwin.c \ @@ -424,6 +426,7 @@ COREGRIND_SOURCES_COMMON = \ m_sigframe/sigframe-mips32-linux.c \ m_sigframe/sigframe-mips64-linux.c \ m_sigframe/sigframe-nanomips-linux.c \ + m_sigframe/sigframe-loongarch64-linux.c \ m_sigframe/sigframe-x86-darwin.c \ m_sigframe/sigframe-amd64-darwin.c \ m_sigframe/sigframe-solaris.c \ @@ -438,6 +441,7 @@ COREGRIND_SOURCES_COMMON = \ m_syswrap/syscall-mips32-linux.S \ m_syswrap/syscall-mips64-linux.S \ m_syswrap/syscall-nanomips-linux.S \ + m_syswrap/syscall-loongarch64-linux.S \ m_syswrap/syscall-x86-darwin.S \ m_syswrap/syscall-amd64-darwin.S \ m_syswrap/syscall-x86-solaris.S \ @@ -458,6 +462,7 @@ COREGRIND_SOURCES_COMMON = \ m_syswrap/syswrap-mips32-linux.c \ m_syswrap/syswrap-mips64-linux.c \ m_syswrap/syswrap-nanomips-linux.c \ + m_syswrap/syswrap-loongarch64-linux.c \ m_syswrap/syswrap-x86-darwin.c \ m_syswrap/syswrap-amd64-darwin.c \ m_syswrap/syswrap-xen.c \ @@ -742,7 +747,12 @@ GDBSERVER_XML_FILES = \ m_gdbserver/mips64-linux-valgrind.xml \ m_gdbserver/mips64-fpu-valgrind-s1.xml \ m_gdbserver/mips64-fpu-valgrind-s2.xml \ - m_gdbserver/mips64-fpu.xml + m_gdbserver/mips64-fpu.xml \ + m_gdbserver/loongarch-base64.xml \ + m_gdbserver/loongarch64-linux.xml \ + m_gdbserver/loongarch-base64-valgrind-s1.xml \ + m_gdbserver/loongarch-base64-valgrind-s2.xml \ + m_gdbserver/loongarch64-linux-valgrind.xml # so as to make sure these get copied into the install tree vglibdir = $(pkglibdir) diff --git a/coregrind/Makefile.in b/coregrind/Makefile.in index 2145686..fb68dd4 100644 --- a/coregrind/Makefile.in +++ b/coregrind/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -278,6 +278,7 @@ am__libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES_DIST = \ m_dispatch/dispatch-mips32-linux.S \ m_dispatch/dispatch-mips64-linux.S \ m_dispatch/dispatch-nanomips-linux.S \ + m_dispatch/dispatch-loongarch64-linux.S \ m_dispatch/dispatch-x86-darwin.S \ m_dispatch/dispatch-amd64-darwin.S \ m_dispatch/dispatch-x86-solaris.S \ @@ -294,7 +295,8 @@ am__libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES_DIST = \ m_gdbserver/valgrind-low-s390x.c \ m_gdbserver/valgrind-low-mips32.c \ m_gdbserver/valgrind-low-mips64.c \ - m_gdbserver/valgrind-low-nanomips.c m_gdbserver/version.c \ + m_gdbserver/valgrind-low-nanomips.c \ + m_gdbserver/valgrind-low-loongarch64.c m_gdbserver/version.c \ m_initimg/initimg-linux.c m_initimg/initimg-darwin.c \ m_initimg/initimg-solaris.c m_initimg/initimg-pathscan.c \ m_mach/mach_basics.c m_mach/mach_msg.c \ @@ -313,6 +315,7 @@ am__libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES_DIST = \ m_sigframe/sigframe-mips32-linux.c \ m_sigframe/sigframe-mips64-linux.c \ m_sigframe/sigframe-nanomips-linux.c \ + m_sigframe/sigframe-loongarch64-linux.c \ m_sigframe/sigframe-x86-darwin.c \ m_sigframe/sigframe-amd64-darwin.c \ m_sigframe/sigframe-solaris.c m_syswrap/syscall-x86-linux.S \ @@ -325,6 +328,7 @@ am__libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES_DIST = \ m_syswrap/syscall-mips32-linux.S \ m_syswrap/syscall-mips64-linux.S \ m_syswrap/syscall-nanomips-linux.S \ + m_syswrap/syscall-loongarch64-linux.S \ m_syswrap/syscall-x86-darwin.S \ m_syswrap/syscall-amd64-darwin.S \ m_syswrap/syscall-x86-solaris.S \ @@ -340,6 +344,7 @@ am__libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES_DIST = \ m_syswrap/syswrap-mips32-linux.c \ m_syswrap/syswrap-mips64-linux.c \ m_syswrap/syswrap-nanomips-linux.c \ + m_syswrap/syswrap-loongarch64-linux.c \ m_syswrap/syswrap-x86-darwin.c \ m_syswrap/syswrap-amd64-darwin.c m_syswrap/syswrap-xen.c \ m_syswrap/syswrap-x86-solaris.c \ @@ -427,6 +432,7 @@ am__objects_1 = libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips32-linux.$(OBJEXT) \ m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips64-linux.$(OBJEXT) \ m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-nanomips-linux.$(OBJEXT) \ + m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.$(OBJEXT) \ m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-darwin.$(OBJEXT) \ m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-amd64-darwin.$(OBJEXT) \ m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-solaris.$(OBJEXT) \ @@ -449,6 +455,7 @@ am__objects_1 = libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips32.$(OBJEXT) \ m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips64.$(OBJEXT) \ m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-nanomips.$(OBJEXT) \ + m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.$(OBJEXT) \ m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.$(OBJEXT) \ m_initimg/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-initimg-linux.$(OBJEXT) \ m_initimg/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-initimg-darwin.$(OBJEXT) \ @@ -474,6 +481,7 @@ am__objects_1 = libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips32-linux.$(OBJEXT) \ m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips64-linux.$(OBJEXT) \ m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-nanomips-linux.$(OBJEXT) \ + m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.$(OBJEXT) \ m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.$(OBJEXT) \ m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-amd64-darwin.$(OBJEXT) \ m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-solaris.$(OBJEXT) \ @@ -488,6 +496,7 @@ am__objects_1 = libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips32-linux.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips64-linux.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-nanomips-linux.$(OBJEXT) \ + m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-darwin.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-amd64-darwin.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-solaris.$(OBJEXT) \ @@ -508,6 +517,7 @@ am__objects_1 = libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips32-linux.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips64-linux.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-nanomips-linux.$(OBJEXT) \ + m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-amd64-darwin.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-xen.$(OBJEXT) \ @@ -569,6 +579,7 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST = \ m_dispatch/dispatch-mips32-linux.S \ m_dispatch/dispatch-mips64-linux.S \ m_dispatch/dispatch-nanomips-linux.S \ + m_dispatch/dispatch-loongarch64-linux.S \ m_dispatch/dispatch-x86-darwin.S \ m_dispatch/dispatch-amd64-darwin.S \ m_dispatch/dispatch-x86-solaris.S \ @@ -585,7 +596,8 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST = \ m_gdbserver/valgrind-low-s390x.c \ m_gdbserver/valgrind-low-mips32.c \ m_gdbserver/valgrind-low-mips64.c \ - m_gdbserver/valgrind-low-nanomips.c m_gdbserver/version.c \ + m_gdbserver/valgrind-low-nanomips.c \ + m_gdbserver/valgrind-low-loongarch64.c m_gdbserver/version.c \ m_initimg/initimg-linux.c m_initimg/initimg-darwin.c \ m_initimg/initimg-solaris.c m_initimg/initimg-pathscan.c \ m_mach/mach_basics.c m_mach/mach_msg.c \ @@ -604,6 +616,7 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST = \ m_sigframe/sigframe-mips32-linux.c \ m_sigframe/sigframe-mips64-linux.c \ m_sigframe/sigframe-nanomips-linux.c \ + m_sigframe/sigframe-loongarch64-linux.c \ m_sigframe/sigframe-x86-darwin.c \ m_sigframe/sigframe-amd64-darwin.c \ m_sigframe/sigframe-solaris.c m_syswrap/syscall-x86-linux.S \ @@ -616,6 +629,7 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST = \ m_syswrap/syscall-mips32-linux.S \ m_syswrap/syscall-mips64-linux.S \ m_syswrap/syscall-nanomips-linux.S \ + m_syswrap/syscall-loongarch64-linux.S \ m_syswrap/syscall-x86-darwin.S \ m_syswrap/syscall-amd64-darwin.S \ m_syswrap/syscall-x86-solaris.S \ @@ -631,6 +645,7 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST = \ m_syswrap/syswrap-mips32-linux.c \ m_syswrap/syswrap-mips64-linux.c \ m_syswrap/syswrap-nanomips-linux.c \ + m_syswrap/syswrap-loongarch64-linux.c \ m_syswrap/syswrap-x86-darwin.c \ m_syswrap/syswrap-amd64-darwin.c m_syswrap/syswrap-xen.c \ m_syswrap/syswrap-x86-solaris.c \ @@ -717,6 +732,7 @@ am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips32-linux.$(OBJEXT) \ m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips64-linux.$(OBJEXT) \ m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-nanomips-linux.$(OBJEXT) \ + m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.$(OBJEXT) \ m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-darwin.$(OBJEXT) \ m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-amd64-darwin.$(OBJEXT) \ m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-solaris.$(OBJEXT) \ @@ -739,6 +755,7 @@ am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips32.$(OBJEXT) \ m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips64.$(OBJEXT) \ m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-nanomips.$(OBJEXT) \ + m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.$(OBJEXT) \ m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.$(OBJEXT) \ m_initimg/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-initimg-linux.$(OBJEXT) \ m_initimg/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-initimg-darwin.$(OBJEXT) \ @@ -764,6 +781,7 @@ am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips32-linux.$(OBJEXT) \ m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips64-linux.$(OBJEXT) \ m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-nanomips-linux.$(OBJEXT) \ + m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.$(OBJEXT) \ m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.$(OBJEXT) \ m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-amd64-darwin.$(OBJEXT) \ m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-solaris.$(OBJEXT) \ @@ -778,6 +796,7 @@ am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips32-linux.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips64-linux.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-nanomips-linux.$(OBJEXT) \ + m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-darwin.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-amd64-darwin.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-solaris.$(OBJEXT) \ @@ -798,6 +817,7 @@ am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips32-linux.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips64-linux.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-nanomips-linux.$(OBJEXT) \ + m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-amd64-darwin.$(OBJEXT) \ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-xen.$(OBJEXT) \ @@ -1085,6 +1105,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-amd64-solaris.Po \ m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm-linux.Po \ m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm64-linux.Po \ + m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po \ m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips32-linux.Po \ m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips64-linux.Po \ m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-nanomips-linux.Po \ @@ -1100,6 +1121,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-amd64-solaris.Po \ m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm-linux.Po \ m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm64-linux.Po \ + m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po \ m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips32-linux.Po \ m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips64-linux.Po \ m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-nanomips-linux.Po \ @@ -1121,6 +1143,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.Po \ m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.Po \ m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm64.Po \ + m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po \ m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips32.Po \ m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips64.Po \ m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-nanomips.Po \ @@ -1140,6 +1163,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.Po \ m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.Po \ m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm64.Po \ + m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po \ m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips32.Po \ m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips64.Po \ m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-nanomips.Po \ @@ -1191,6 +1215,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm-linux.Po \ m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm64-linux.Po \ m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-common.Po \ + m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po \ m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips32-linux.Po \ m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips64-linux.Po \ m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-nanomips-linux.Po \ @@ -1205,6 +1230,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm-linux.Po \ m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm64-linux.Po \ m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-common.Po \ + m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po \ m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips32-linux.Po \ m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips64-linux.Po \ m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-nanomips-linux.Po \ @@ -1219,6 +1245,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-amd64-solaris.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm-linux.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm64-linux.Po \ + m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips32-linux.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips64-linux.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-nanomips-linux.Po \ @@ -1238,6 +1265,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-generic.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-linux-variants.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-linux.Po \ + m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-main.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips32-linux.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips64-linux.Po \ @@ -1255,6 +1283,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-amd64-solaris.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm-linux.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm64-linux.Po \ + m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips32-linux.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips64-linux.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-nanomips-linux.Po \ @@ -1274,6 +1303,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-generic.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-linux-variants.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-linux.Po \ + m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-main.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips32-linux.Po \ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips64-linux.Po \ @@ -1365,8 +1395,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(srcdir)/link_tool_exe_darwin.in \ $(srcdir)/link_tool_exe_linux.in \ @@ -1394,6 +1422,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -1407,6 +1437,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -1552,6 +1583,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -1700,6 +1732,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -1745,6 +1783,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ @@ -2018,6 +2057,7 @@ COREGRIND_SOURCES_COMMON = \ m_dispatch/dispatch-mips32-linux.S \ m_dispatch/dispatch-mips64-linux.S \ m_dispatch/dispatch-nanomips-linux.S \ + m_dispatch/dispatch-loongarch64-linux.S \ m_dispatch/dispatch-x86-darwin.S \ m_dispatch/dispatch-amd64-darwin.S \ m_dispatch/dispatch-x86-solaris.S \ @@ -2040,6 +2080,7 @@ COREGRIND_SOURCES_COMMON = \ m_gdbserver/valgrind-low-mips32.c \ m_gdbserver/valgrind-low-mips64.c \ m_gdbserver/valgrind-low-nanomips.c \ + m_gdbserver/valgrind-low-loongarch64.c \ m_gdbserver/version.c \ m_initimg/initimg-linux.c \ m_initimg/initimg-darwin.c \ @@ -2065,6 +2106,7 @@ COREGRIND_SOURCES_COMMON = \ m_sigframe/sigframe-mips32-linux.c \ m_sigframe/sigframe-mips64-linux.c \ m_sigframe/sigframe-nanomips-linux.c \ + m_sigframe/sigframe-loongarch64-linux.c \ m_sigframe/sigframe-x86-darwin.c \ m_sigframe/sigframe-amd64-darwin.c \ m_sigframe/sigframe-solaris.c \ @@ -2079,6 +2121,7 @@ COREGRIND_SOURCES_COMMON = \ m_syswrap/syscall-mips32-linux.S \ m_syswrap/syscall-mips64-linux.S \ m_syswrap/syscall-nanomips-linux.S \ + m_syswrap/syscall-loongarch64-linux.S \ m_syswrap/syscall-x86-darwin.S \ m_syswrap/syscall-amd64-darwin.S \ m_syswrap/syscall-x86-solaris.S \ @@ -2099,6 +2142,7 @@ COREGRIND_SOURCES_COMMON = \ m_syswrap/syswrap-mips32-linux.c \ m_syswrap/syswrap-mips64-linux.c \ m_syswrap/syswrap-nanomips-linux.c \ + m_syswrap/syswrap-loongarch64-linux.c \ m_syswrap/syswrap-x86-darwin.c \ m_syswrap/syswrap-amd64-darwin.c \ m_syswrap/syswrap-xen.c \ @@ -2349,7 +2393,12 @@ GDBSERVER_XML_FILES = \ m_gdbserver/mips64-linux-valgrind.xml \ m_gdbserver/mips64-fpu-valgrind-s1.xml \ m_gdbserver/mips64-fpu-valgrind-s2.xml \ - m_gdbserver/mips64-fpu.xml + m_gdbserver/mips64-fpu.xml \ + m_gdbserver/loongarch-base64.xml \ + m_gdbserver/loongarch64-linux.xml \ + m_gdbserver/loongarch-base64-valgrind-s1.xml \ + m_gdbserver/loongarch-base64-valgrind-s2.xml \ + m_gdbserver/loongarch64-linux-valgrind.xml # so as to make sure these get copied into the install tree @@ -2619,6 +2668,9 @@ m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips64-linux.$( m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-nanomips-linux.$(OBJEXT): \ m_dispatch/$(am__dirstamp) \ m_dispatch/$(DEPDIR)/$(am__dirstamp) +m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.$(OBJEXT): \ + m_dispatch/$(am__dirstamp) \ + m_dispatch/$(DEPDIR)/$(am__dirstamp) m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-darwin.$(OBJEXT): \ m_dispatch/$(am__dirstamp) \ m_dispatch/$(DEPDIR)/$(am__dirstamp) @@ -2691,6 +2743,9 @@ m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips64.$(O m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-nanomips.$(OBJEXT): \ m_gdbserver/$(am__dirstamp) \ m_gdbserver/$(DEPDIR)/$(am__dirstamp) +m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.$(OBJEXT): \ + m_gdbserver/$(am__dirstamp) \ + m_gdbserver/$(DEPDIR)/$(am__dirstamp) m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.$(OBJEXT): \ m_gdbserver/$(am__dirstamp) \ m_gdbserver/$(DEPDIR)/$(am__dirstamp) @@ -2788,6 +2843,9 @@ m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips64-linux.$( m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-nanomips-linux.$(OBJEXT): \ m_sigframe/$(am__dirstamp) \ m_sigframe/$(DEPDIR)/$(am__dirstamp) +m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.$(OBJEXT): \ + m_sigframe/$(am__dirstamp) \ + m_sigframe/$(DEPDIR)/$(am__dirstamp) m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.$(OBJEXT): \ m_sigframe/$(am__dirstamp) \ m_sigframe/$(DEPDIR)/$(am__dirstamp) @@ -2825,6 +2883,8 @@ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips64-linux.$(OB m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-nanomips-linux.$(OBJEXT): \ m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) +m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.$(OBJEXT): \ + m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-darwin.$(OBJEXT): \ m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-amd64-darwin.$(OBJEXT): \ @@ -2865,6 +2925,8 @@ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips64-linux.$(OB m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-nanomips-linux.$(OBJEXT): \ m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) +m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.$(OBJEXT): \ + m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.$(OBJEXT): \ m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-amd64-darwin.$(OBJEXT): \ @@ -3019,6 +3081,9 @@ m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips64-linux.$( m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-nanomips-linux.$(OBJEXT): \ m_dispatch/$(am__dirstamp) \ m_dispatch/$(DEPDIR)/$(am__dirstamp) +m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.$(OBJEXT): \ + m_dispatch/$(am__dirstamp) \ + m_dispatch/$(DEPDIR)/$(am__dirstamp) m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-darwin.$(OBJEXT): \ m_dispatch/$(am__dirstamp) \ m_dispatch/$(DEPDIR)/$(am__dirstamp) @@ -3085,6 +3150,9 @@ m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips64.$(O m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-nanomips.$(OBJEXT): \ m_gdbserver/$(am__dirstamp) \ m_gdbserver/$(DEPDIR)/$(am__dirstamp) +m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.$(OBJEXT): \ + m_gdbserver/$(am__dirstamp) \ + m_gdbserver/$(DEPDIR)/$(am__dirstamp) m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.$(OBJEXT): \ m_gdbserver/$(am__dirstamp) \ m_gdbserver/$(DEPDIR)/$(am__dirstamp) @@ -3152,6 +3220,9 @@ m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips64-linux.$( m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-nanomips-linux.$(OBJEXT): \ m_sigframe/$(am__dirstamp) \ m_sigframe/$(DEPDIR)/$(am__dirstamp) +m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.$(OBJEXT): \ + m_sigframe/$(am__dirstamp) \ + m_sigframe/$(DEPDIR)/$(am__dirstamp) m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.$(OBJEXT): \ m_sigframe/$(am__dirstamp) \ m_sigframe/$(DEPDIR)/$(am__dirstamp) @@ -3183,6 +3254,8 @@ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips64-linux.$(OB m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-nanomips-linux.$(OBJEXT): \ m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) +m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.$(OBJEXT): \ + m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-darwin.$(OBJEXT): \ m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-amd64-darwin.$(OBJEXT): \ @@ -3223,6 +3296,8 @@ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips64-linux.$(OB m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-nanomips-linux.$(OBJEXT): \ m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) +m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.$(OBJEXT): \ + m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.$(OBJEXT): \ m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-amd64-darwin.$(OBJEXT): \ @@ -3489,6 +3564,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-amd64-solaris.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm64-linux.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips32-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips64-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-nanomips-linux.Po@am__quote@ # am--include-marker @@ -3504,6 +3580,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-amd64-solaris.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm64-linux.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips32-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips64-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-nanomips-linux.Po@am__quote@ # am--include-marker @@ -3525,6 +3602,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm64.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips32.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips64.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-nanomips.Po@am__quote@ # am--include-marker @@ -3544,6 +3622,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm64.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips32.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips64.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-nanomips.Po@am__quote@ # am--include-marker @@ -3595,6 +3674,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm64-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-common.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips32-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips64-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-nanomips-linux.Po@am__quote@ # am--include-marker @@ -3609,6 +3689,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm64-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-common.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips32-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips64-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-nanomips-linux.Po@am__quote@ # am--include-marker @@ -3623,6 +3704,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-amd64-solaris.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm64-linux.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips32-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips64-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-nanomips-linux.Po@am__quote@ # am--include-marker @@ -3642,6 +3724,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-generic.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-linux-variants.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-linux.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-main.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips32-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips64-linux.Po@am__quote@ # am--include-marker @@ -3659,6 +3742,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-amd64-solaris.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm64-linux.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips32-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips64-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-nanomips-linux.Po@am__quote@ # am--include-marker @@ -3678,6 +3762,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-generic.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-linux-variants.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-linux.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-main.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips32-linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips64-linux.Po@am__quote@ # am--include-marker @@ -3903,6 +3988,20 @@ m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-nanomips-linux. @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-nanomips-linux.obj `if test -f 'm_dispatch/dispatch-nanomips-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-nanomips-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-nanomips-linux.S'; fi` +m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o: m_dispatch/dispatch-loongarch64-linux.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o -MD -MP -MF m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Tpo -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o `test -f 'm_dispatch/dispatch-loongarch64-linux.S' || echo '$(srcdir)/'`m_dispatch/dispatch-loongarch64-linux.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Tpo m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='m_dispatch/dispatch-loongarch64-linux.S' object='m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o `test -f 'm_dispatch/dispatch-loongarch64-linux.S' || echo '$(srcdir)/'`m_dispatch/dispatch-loongarch64-linux.S + +m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj: m_dispatch/dispatch-loongarch64-linux.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj -MD -MP -MF m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Tpo -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj `if test -f 'm_dispatch/dispatch-loongarch64-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-loongarch64-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-loongarch64-linux.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Tpo m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='m_dispatch/dispatch-loongarch64-linux.S' object='m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj `if test -f 'm_dispatch/dispatch-loongarch64-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-loongarch64-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-loongarch64-linux.S'; fi` + m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-darwin.o: m_dispatch/dispatch-x86-darwin.S @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-darwin.o -MD -MP -MF m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-darwin.Tpo -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-darwin.o `test -f 'm_dispatch/dispatch-x86-darwin.S' || echo '$(srcdir)/'`m_dispatch/dispatch-x86-darwin.S @am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-darwin.Tpo m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-darwin.Po @@ -4141,6 +4240,20 @@ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-nanomips-linux.ob @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-nanomips-linux.obj `if test -f 'm_syswrap/syscall-nanomips-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-nanomips-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-nanomips-linux.S'; fi` +m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.o: m_syswrap/syscall-loongarch64-linux.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.o -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.o `test -f 'm_syswrap/syscall-loongarch64-linux.S' || echo '$(srcdir)/'`m_syswrap/syscall-loongarch64-linux.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='m_syswrap/syscall-loongarch64-linux.S' object='m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.o `test -f 'm_syswrap/syscall-loongarch64-linux.S' || echo '$(srcdir)/'`m_syswrap/syscall-loongarch64-linux.S + +m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj: m_syswrap/syscall-loongarch64-linux.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj `if test -f 'm_syswrap/syscall-loongarch64-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-loongarch64-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-loongarch64-linux.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='m_syswrap/syscall-loongarch64-linux.S' object='m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj `if test -f 'm_syswrap/syscall-loongarch64-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-loongarch64-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-loongarch64-linux.S'; fi` + m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-darwin.o: m_syswrap/syscall-x86-darwin.S @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-darwin.o -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-darwin.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-darwin.o `test -f 'm_syswrap/syscall-x86-darwin.S' || echo '$(srcdir)/'`m_syswrap/syscall-x86-darwin.S @am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-darwin.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-darwin.Po @@ -4379,6 +4492,20 @@ m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-nanomips-linux. @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-nanomips-linux.obj `if test -f 'm_dispatch/dispatch-nanomips-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-nanomips-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-nanomips-linux.S'; fi` +m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o: m_dispatch/dispatch-loongarch64-linux.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o -MD -MP -MF m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Tpo -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o `test -f 'm_dispatch/dispatch-loongarch64-linux.S' || echo '$(srcdir)/'`m_dispatch/dispatch-loongarch64-linux.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Tpo m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='m_dispatch/dispatch-loongarch64-linux.S' object='m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o `test -f 'm_dispatch/dispatch-loongarch64-linux.S' || echo '$(srcdir)/'`m_dispatch/dispatch-loongarch64-linux.S + +m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj: m_dispatch/dispatch-loongarch64-linux.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj -MD -MP -MF m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Tpo -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj `if test -f 'm_dispatch/dispatch-loongarch64-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-loongarch64-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-loongarch64-linux.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Tpo m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='m_dispatch/dispatch-loongarch64-linux.S' object='m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj `if test -f 'm_dispatch/dispatch-loongarch64-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-loongarch64-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-loongarch64-linux.S'; fi` + m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-darwin.o: m_dispatch/dispatch-x86-darwin.S @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-darwin.o -MD -MP -MF m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-darwin.Tpo -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-darwin.o `test -f 'm_dispatch/dispatch-x86-darwin.S' || echo '$(srcdir)/'`m_dispatch/dispatch-x86-darwin.S @am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-darwin.Tpo m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-darwin.Po @@ -4617,6 +4744,20 @@ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-nanomips-linux.ob @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-nanomips-linux.obj `if test -f 'm_syswrap/syscall-nanomips-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-nanomips-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-nanomips-linux.S'; fi` +m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.o: m_syswrap/syscall-loongarch64-linux.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.o -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.o `test -f 'm_syswrap/syscall-loongarch64-linux.S' || echo '$(srcdir)/'`m_syswrap/syscall-loongarch64-linux.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='m_syswrap/syscall-loongarch64-linux.S' object='m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.o `test -f 'm_syswrap/syscall-loongarch64-linux.S' || echo '$(srcdir)/'`m_syswrap/syscall-loongarch64-linux.S + +m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj: m_syswrap/syscall-loongarch64-linux.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj `if test -f 'm_syswrap/syscall-loongarch64-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-loongarch64-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-loongarch64-linux.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='m_syswrap/syscall-loongarch64-linux.S' object='m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj `if test -f 'm_syswrap/syscall-loongarch64-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-loongarch64-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-loongarch64-linux.S'; fi` + m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-darwin.o: m_syswrap/syscall-x86-darwin.S @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-darwin.o -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-darwin.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-darwin.o `test -f 'm_syswrap/syscall-x86-darwin.S' || echo '$(srcdir)/'`m_syswrap/syscall-x86-darwin.S @am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-darwin.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-darwin.Po @@ -5893,6 +6034,20 @@ m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-nanomips.o @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-nanomips.obj `if test -f 'm_gdbserver/valgrind-low-nanomips.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-nanomips.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-nanomips.c'; fi` +m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.o: m_gdbserver/valgrind-low-loongarch64.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.o -MD -MP -MF m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Tpo -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.o `test -f 'm_gdbserver/valgrind-low-loongarch64.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-loongarch64.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Tpo m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_gdbserver/valgrind-low-loongarch64.c' object='m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.o `test -f 'm_gdbserver/valgrind-low-loongarch64.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-loongarch64.c + +m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj: m_gdbserver/valgrind-low-loongarch64.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj -MD -MP -MF m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Tpo -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj `if test -f 'm_gdbserver/valgrind-low-loongarch64.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-loongarch64.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-loongarch64.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Tpo m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_gdbserver/valgrind-low-loongarch64.c' object='m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj `if test -f 'm_gdbserver/valgrind-low-loongarch64.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-loongarch64.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-loongarch64.c'; fi` + m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.o: m_gdbserver/version.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.o -MD -MP -MF m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.Tpo -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.o `test -f 'm_gdbserver/version.c' || echo '$(srcdir)/'`m_gdbserver/version.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.Tpo m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.Po @@ -6215,6 +6370,20 @@ m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-nanomips-linux. @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-nanomips-linux.obj `if test -f 'm_sigframe/sigframe-nanomips-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-nanomips-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-nanomips-linux.c'; fi` +m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o: m_sigframe/sigframe-loongarch64-linux.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o -MD -MP -MF m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Tpo -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o `test -f 'm_sigframe/sigframe-loongarch64-linux.c' || echo '$(srcdir)/'`m_sigframe/sigframe-loongarch64-linux.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Tpo m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_sigframe/sigframe-loongarch64-linux.c' object='m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o `test -f 'm_sigframe/sigframe-loongarch64-linux.c' || echo '$(srcdir)/'`m_sigframe/sigframe-loongarch64-linux.c + +m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj: m_sigframe/sigframe-loongarch64-linux.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj -MD -MP -MF m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Tpo -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj `if test -f 'm_sigframe/sigframe-loongarch64-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-loongarch64-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-loongarch64-linux.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Tpo m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_sigframe/sigframe-loongarch64-linux.c' object='m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj `if test -f 'm_sigframe/sigframe-loongarch64-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-loongarch64-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-loongarch64-linux.c'; fi` + m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.o: m_sigframe/sigframe-x86-darwin.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.o -MD -MP -MF m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.Tpo -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.o `test -f 'm_sigframe/sigframe-x86-darwin.c' || echo '$(srcdir)/'`m_sigframe/sigframe-x86-darwin.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.Tpo m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.Po @@ -6481,6 +6650,20 @@ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-nanomips-linux.ob @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-nanomips-linux.obj `if test -f 'm_syswrap/syswrap-nanomips-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-nanomips-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-nanomips-linux.c'; fi` +m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o: m_syswrap/syswrap-loongarch64-linux.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o `test -f 'm_syswrap/syswrap-loongarch64-linux.c' || echo '$(srcdir)/'`m_syswrap/syswrap-loongarch64-linux.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_syswrap/syswrap-loongarch64-linux.c' object='m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o `test -f 'm_syswrap/syswrap-loongarch64-linux.c' || echo '$(srcdir)/'`m_syswrap/syswrap-loongarch64-linux.c + +m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj: m_syswrap/syswrap-loongarch64-linux.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj `if test -f 'm_syswrap/syswrap-loongarch64-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-loongarch64-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-loongarch64-linux.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_syswrap/syswrap-loongarch64-linux.c' object='m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj `if test -f 'm_syswrap/syswrap-loongarch64-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-loongarch64-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-loongarch64-linux.c'; fi` + m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.o: m_syswrap/syswrap-x86-darwin.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.o -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.o `test -f 'm_syswrap/syswrap-x86-darwin.c' || echo '$(srcdir)/'`m_syswrap/syswrap-x86-darwin.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.Po @@ -7881,6 +8064,20 @@ m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-nanomips.o @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-nanomips.obj `if test -f 'm_gdbserver/valgrind-low-nanomips.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-nanomips.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-nanomips.c'; fi` +m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.o: m_gdbserver/valgrind-low-loongarch64.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.o -MD -MP -MF m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Tpo -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.o `test -f 'm_gdbserver/valgrind-low-loongarch64.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-loongarch64.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Tpo m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_gdbserver/valgrind-low-loongarch64.c' object='m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.o `test -f 'm_gdbserver/valgrind-low-loongarch64.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-loongarch64.c + +m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj: m_gdbserver/valgrind-low-loongarch64.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj -MD -MP -MF m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Tpo -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj `if test -f 'm_gdbserver/valgrind-low-loongarch64.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-loongarch64.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-loongarch64.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Tpo m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_gdbserver/valgrind-low-loongarch64.c' object='m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj `if test -f 'm_gdbserver/valgrind-low-loongarch64.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-loongarch64.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-loongarch64.c'; fi` + m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.o: m_gdbserver/version.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.o -MD -MP -MF m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.Tpo -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.o `test -f 'm_gdbserver/version.c' || echo '$(srcdir)/'`m_gdbserver/version.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.Tpo m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.Po @@ -8203,6 +8400,20 @@ m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-nanomips-linux. @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-nanomips-linux.obj `if test -f 'm_sigframe/sigframe-nanomips-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-nanomips-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-nanomips-linux.c'; fi` +m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o: m_sigframe/sigframe-loongarch64-linux.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o -MD -MP -MF m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Tpo -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o `test -f 'm_sigframe/sigframe-loongarch64-linux.c' || echo '$(srcdir)/'`m_sigframe/sigframe-loongarch64-linux.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Tpo m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_sigframe/sigframe-loongarch64-linux.c' object='m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o `test -f 'm_sigframe/sigframe-loongarch64-linux.c' || echo '$(srcdir)/'`m_sigframe/sigframe-loongarch64-linux.c + +m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj: m_sigframe/sigframe-loongarch64-linux.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj -MD -MP -MF m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Tpo -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj `if test -f 'm_sigframe/sigframe-loongarch64-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-loongarch64-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-loongarch64-linux.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Tpo m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_sigframe/sigframe-loongarch64-linux.c' object='m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj `if test -f 'm_sigframe/sigframe-loongarch64-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-loongarch64-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-loongarch64-linux.c'; fi` + m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.o: m_sigframe/sigframe-x86-darwin.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.o -MD -MP -MF m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.Tpo -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.o `test -f 'm_sigframe/sigframe-x86-darwin.c' || echo '$(srcdir)/'`m_sigframe/sigframe-x86-darwin.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.Tpo m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.Po @@ -8469,6 +8680,20 @@ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-nanomips-linux.ob @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-nanomips-linux.obj `if test -f 'm_syswrap/syswrap-nanomips-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-nanomips-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-nanomips-linux.c'; fi` +m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o: m_syswrap/syswrap-loongarch64-linux.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o `test -f 'm_syswrap/syswrap-loongarch64-linux.c' || echo '$(srcdir)/'`m_syswrap/syswrap-loongarch64-linux.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_syswrap/syswrap-loongarch64-linux.c' object='m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o `test -f 'm_syswrap/syswrap-loongarch64-linux.c' || echo '$(srcdir)/'`m_syswrap/syswrap-loongarch64-linux.c + +m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj: m_syswrap/syswrap-loongarch64-linux.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj `if test -f 'm_syswrap/syswrap-loongarch64-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-loongarch64-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-loongarch64-linux.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_syswrap/syswrap-loongarch64-linux.c' object='m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj `if test -f 'm_syswrap/syswrap-loongarch64-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-loongarch64-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-loongarch64-linux.c'; fi` + m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.o: m_syswrap/syswrap-x86-darwin.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.o -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.o `test -f 'm_syswrap/syswrap-x86-darwin.c' || echo '$(srcdir)/'`m_syswrap/syswrap-x86-darwin.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.Po @@ -8975,7 +9200,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am @@ -9019,7 +9243,8 @@ installdirs: done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am -install-exec: install-exec-am +install-exec: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data: install-data-am uninstall: uninstall-am @@ -9243,6 +9468,7 @@ distclean: distclean-am -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-amd64-solaris.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm-linux.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm64-linux.Po + -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips32-linux.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips64-linux.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-nanomips-linux.Po @@ -9258,6 +9484,7 @@ distclean: distclean-am -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-amd64-solaris.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm-linux.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm64-linux.Po + -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips32-linux.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips64-linux.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-nanomips-linux.Po @@ -9279,6 +9506,7 @@ distclean: distclean-am -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm64.Po + -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips32.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips64.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-nanomips.Po @@ -9298,6 +9526,7 @@ distclean: distclean-am -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm64.Po + -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips32.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips64.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-nanomips.Po @@ -9349,6 +9578,7 @@ distclean: distclean-am -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm64-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-common.Po + -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips32-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips64-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-nanomips-linux.Po @@ -9363,6 +9593,7 @@ distclean: distclean-am -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm64-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-common.Po + -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips32-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips64-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-nanomips-linux.Po @@ -9377,6 +9608,7 @@ distclean: distclean-am -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-amd64-solaris.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm64-linux.Po + -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips32-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips64-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-nanomips-linux.Po @@ -9396,6 +9628,7 @@ distclean: distclean-am -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-generic.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-linux-variants.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-linux.Po + -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-main.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips32-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips64-linux.Po @@ -9413,6 +9646,7 @@ distclean: distclean-am -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-amd64-solaris.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm64-linux.Po + -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips32-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips64-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-nanomips-linux.Po @@ -9432,6 +9666,7 @@ distclean: distclean-am -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-generic.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-linux-variants.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-linux.Po + -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-main.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips32-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips64-linux.Po @@ -9658,6 +9893,7 @@ maintainer-clean: maintainer-clean-am -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-amd64-solaris.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm-linux.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm64-linux.Po + -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips32-linux.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips64-linux.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-nanomips-linux.Po @@ -9673,6 +9909,7 @@ maintainer-clean: maintainer-clean-am -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-amd64-solaris.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm-linux.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm64-linux.Po + -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips32-linux.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips64-linux.Po -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-nanomips-linux.Po @@ -9694,6 +9931,7 @@ maintainer-clean: maintainer-clean-am -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm64.Po + -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips32.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips64.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-nanomips.Po @@ -9713,6 +9951,7 @@ maintainer-clean: maintainer-clean-am -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm64.Po + -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips32.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips64.Po -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-nanomips.Po @@ -9764,6 +10003,7 @@ maintainer-clean: maintainer-clean-am -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm64-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-common.Po + -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips32-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips64-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-nanomips-linux.Po @@ -9778,6 +10018,7 @@ maintainer-clean: maintainer-clean-am -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm64-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-common.Po + -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips32-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips64-linux.Po -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-nanomips-linux.Po @@ -9792,6 +10033,7 @@ maintainer-clean: maintainer-clean-am -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-amd64-solaris.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm64-linux.Po + -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips32-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips64-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-nanomips-linux.Po @@ -9811,6 +10053,7 @@ maintainer-clean: maintainer-clean-am -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-generic.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-linux-variants.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-linux.Po + -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-main.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips32-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips64-linux.Po @@ -9828,6 +10071,7 @@ maintainer-clean: maintainer-clean-am -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-amd64-solaris.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm64-linux.Po + -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips32-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips64-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-nanomips-linux.Po @@ -9847,6 +10091,7 @@ maintainer-clean: maintainer-clean-am -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-generic.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-linux-variants.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-linux.Po + -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-main.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips32-linux.Po -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips64-linux.Po @@ -9885,7 +10130,7 @@ ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-local \ uninstall-pkglibLIBRARIES uninstall-vglibDATA -.MAKE: all check install install-am install-strip +.MAKE: all check install install-am install-exec install-strip .PHONY: CTAGS GTAGS TAGS all all-am all-local am--depfiles check \ check-am clean clean-binPROGRAMS clean-generic clean-local \ diff --git a/coregrind/launcher-linux.c b/coregrind/launcher-linux.c index 7a12248..73fdb15 100644 --- a/coregrind/launcher-linux.c +++ b/coregrind/launcher-linux.c @@ -67,6 +67,10 @@ #define EM_NANOMIPS 249 #endif +#ifndef EM_LOONGARCH +#define EM_LOONGARCH 258 +#endif + #ifndef E_MIPS_ABI_O32 #define E_MIPS_ABI_O32 0x00001000 #endif @@ -314,6 +318,10 @@ static const char *select_platform(const char *clientname) (header.ehdr64.e_ident[EI_OSABI] == ELFOSABI_SYSV || header.ehdr64.e_ident[EI_OSABI] == ELFOSABI_LINUX)) { platform = "ppc64le-linux"; + } else if (header.ehdr64.e_machine == EM_LOONGARCH && + (header.ehdr64.e_ident[EI_OSABI] == ELFOSABI_SYSV || + header.ehdr64.e_ident[EI_OSABI] == ELFOSABI_LINUX)) { + platform = "loongarch64-linux"; } } else if (header.c[EI_DATA] == ELFDATA2MSB) { # if !defined(VGPV_arm_linux_android) \ @@ -415,7 +423,8 @@ int main(int argc, char** argv, char** envp) (0==strcmp(VG_PLATFORM,"s390x-linux")) || (0==strcmp(VG_PLATFORM,"mips32-linux")) || (0==strcmp(VG_PLATFORM,"mips64-linux")) || - (0==strcmp(VG_PLATFORM,"nanomips-linux"))) + (0==strcmp(VG_PLATFORM,"nanomips-linux")) || + (0==strcmp(VG_PLATFORM,"loongarch64-linux"))) default_platform = VG_PLATFORM; # elif defined(VGO_solaris) if ((0==strcmp(VG_PLATFORM,"x86-solaris")) || diff --git a/coregrind/m_aspacemgr/aspacemgr-common.c b/coregrind/m_aspacemgr/aspacemgr-common.c index 214b54a..bcbbf2d 100644 --- a/coregrind/m_aspacemgr/aspacemgr-common.c +++ b/coregrind/m_aspacemgr/aspacemgr-common.c @@ -156,7 +156,8 @@ SysRes VG_(am_do_mmap_NO_NOTIFY)( Addr start, SizeT length, UInt prot, # elif defined(VGP_amd64_linux) \ || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \ || defined(VGP_s390x_linux) || defined(VGP_mips32_linux) \ - || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) + || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \ + || defined(VGP_loongarch64_linux) res = VG_(do_syscall6)(__NR_mmap, (UWord)start, length, prot, flags, fd, offset); # elif defined(VGP_x86_darwin) @@ -251,7 +252,8 @@ SysRes ML_(am_do_relocate_nooverlap_mapping_NO_NOTIFY)( SysRes ML_(am_open) ( const HChar* pathname, Int flags, Int mode ) { -# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) +# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) /* ARM64 wants to use __NR_openat rather than __NR_open. */ SysRes res = VG_(do_syscall4)(__NR_openat, VKI_AT_FDCWD, (UWord)pathname, flags, mode); @@ -280,7 +282,8 @@ void ML_(am_close) ( Int fd ) Int ML_(am_readlink)(const HChar* path, HChar* buf, UInt bufsiz) { SysRes res; -# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) +# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) res = VG_(do_syscall4)(__NR_readlinkat, VKI_AT_FDCWD, (UWord)path, (UWord)buf, bufsiz); # elif defined(VGO_linux) || defined(VGO_darwin) diff --git a/coregrind/m_aspacemgr/aspacemgr-linux.c b/coregrind/m_aspacemgr/aspacemgr-linux.c index 0eb3143..fe21a44 100644 --- a/coregrind/m_aspacemgr/aspacemgr-linux.c +++ b/coregrind/m_aspacemgr/aspacemgr-linux.c @@ -2680,7 +2680,8 @@ static SysRes VG_(am_mmap_file_float_valgrind_flags) ( SizeT length, UInt prot, req.rkind = MAny; req.start = 0; #if defined(VGA_arm) || defined(VGA_arm64) \ - || defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_nanomips) + || defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_nanomips) \ + || defined(VGA_loongarch64) aspacem_assert(VKI_SHMLBA >= VKI_PAGE_SIZE); #else aspacem_assert(VKI_SHMLBA == VKI_PAGE_SIZE); diff --git a/coregrind/m_cache.c b/coregrind/m_cache.c index 428a4df..38fa44e 100644 --- a/coregrind/m_cache.c +++ b/coregrind/m_cache.c @@ -660,6 +660,239 @@ get_cache_info(VexArchInfo *vai) return True; } +#elif defined(VGA_loongarch64) + +/* + * LoongArch method is straightforward, just extract appropriate bits via + * cpucfg instruction (__builtin_loongarch_cpucfg). + * + * 1. Get the properties of the cache from cpucfg16. + * 2. For each level of cache, get the properties from cpucfg17/18/19/20. + * + * It's a bit nasty since we have to get the total number of caches first. + * To avoid duplicating reads, I use "struct cache_status" to store some + * necessary information. + */ + +#define BIT(x) (1UL << (x)) +#define GENMASK(h, l) (((~0UL) - (1UL << (l)) + 1) & (~0UL >> (64 - 1 - (h)))) + +#define LOONGARCH_CPUCFG16 0x10 +#define CPUCFG16_L1_IUPRE BIT(0) +#define CPUCFG16_L1_IUUNIFY BIT(1) +#define CPUCFG16_L1_DPRE BIT(2) +#define CPUCFG16_L2_IUPRE BIT(3) +#define CPUCFG16_L2_IUUNIFY BIT(4) +#define CPUCFG16_L2_DPRE BIT(7) +#define CPUCFG16_L3_IUPRE BIT(10) +#define CPUCFG16_L3_IUUNIFY BIT(11) +#define CPUCFG16_L3_DPRE BIT(14) + +#define LOONGARCH_CPUCFG17 0x11 +#define CPUCFG17_L1I_WAYS_M GENMASK(15, 0) +#define CPUCFG17_L1I_SETS_M GENMASK(23, 16) +#define CPUCFG17_L1I_SIZE_M GENMASK(30, 24) +#define CPUCFG17_L1I_WAYS 0 +#define CPUCFG17_L1I_SETS 16 +#define CPUCFG17_L1I_SIZE 24 + +#define LOONGARCH_CPUCFG18 0x12 +#define CPUCFG18_L1D_WAYS_M GENMASK(15, 0) +#define CPUCFG18_L1D_SETS_M GENMASK(23, 16) +#define CPUCFG18_L1D_SIZE_M GENMASK(30, 24) +#define CPUCFG18_L1D_WAYS 0 +#define CPUCFG18_L1D_SETS 16 +#define CPUCFG18_L1D_SIZE 24 + +#define LOONGARCH_CPUCFG19 0x13 +#define CPUCFG19_L2_WAYS_M GENMASK(15, 0) +#define CPUCFG19_L2_SETS_M GENMASK(23, 16) +#define CPUCFG19_L2_SIZE_M GENMASK(30, 24) +#define CPUCFG19_L2_WAYS 0 +#define CPUCFG19_L2_SETS 16 +#define CPUCFG19_L2_SIZE 24 + +#define LOONGARCH_CPUCFG20 0x14 +#define CPUCFG20_L3_WAYS_M GENMASK(15, 0) +#define CPUCFG20_L3_SETS_M GENMASK(23, 16) +#define CPUCFG20_L3_SIZE_M GENMASK(30, 24) +#define CPUCFG20_L3_WAYS 0 +#define CPUCFG20_L3_SETS 16 +#define CPUCFG20_L3_SIZE 24 + +struct cache_status { + Bool has_iu; + Bool is_u; + Bool has_d; + Bool exist; + UInt num; +}; + +static inline UInt +cpucfg(UInt reg) +{ + return (UInt)__builtin_loongarch_cpucfg(reg); +} + +static void +get_status(struct cache_status status[], UInt n) +{ + Bool has_iu = status[n].has_iu; + Bool is_u = status[n].is_u; + Bool has_d = status[n].has_d; + + /* has_d only works with no ucache */ + status[n].has_d = has_d = toBool(!(has_iu && is_u) && has_d); + + status[n].exist = toBool(has_iu || has_d); + status[n].num = has_iu + has_d; +} + +static void +get_cache(VexCacheInfo *ci, VexCacheKind kind, UInt level, + UInt line_size, UInt sets, UInt ways, UInt index) +{ + UInt assoc = ways; + UInt size = sets * ways * line_size; + ci->caches[index] = VEX_CACHE_INIT(kind, level, size, line_size, assoc); +} + +static void +get_cache_info_for_l1(VexCacheInfo *ci, struct cache_status status[]) +{ + UInt config; + UInt line_size, sets, ways; + UInt index = 0; + + if (!status[0].exist) + return; + + if (status[0].has_iu) { + config = cpucfg(LOONGARCH_CPUCFG17); + line_size = 1 << ((config & CPUCFG17_L1I_SIZE_M) >> CPUCFG17_L1I_SIZE); + sets = 1 << ((config & CPUCFG17_L1I_SETS_M) >> CPUCFG17_L1I_SETS); + ways = ((config & CPUCFG17_L1I_WAYS_M) >> CPUCFG17_L1I_WAYS) + 1; + get_cache(ci, status[0].is_u ? UNIFIED_CACHE : INSN_CACHE, + 1, line_size, sets, ways, index++); + } + + if (status[0].has_d) { + config = cpucfg(LOONGARCH_CPUCFG18); + line_size = 1 << ((config & CPUCFG18_L1D_SIZE_M) >> CPUCFG18_L1D_SIZE); + sets = 1 << ((config & CPUCFG18_L1D_SETS_M) >> CPUCFG18_L1D_SETS); + ways = ((config & CPUCFG18_L1D_WAYS_M) >> CPUCFG18_L1D_WAYS) + 1; + get_cache(ci, DATA_CACHE, 1, line_size, sets, ways, index++); + } + + /* Sanity check */ + vg_assert(index == status[0].num); +} + +static void +get_cache_info_for_l2(VexCacheInfo *ci, struct cache_status status[]) +{ + UInt config; + UInt line_size, sets, ways; + UInt index = status[0].num; + + if (!status[1].exist) + return; + + config = cpucfg(LOONGARCH_CPUCFG19); + line_size = 1 << ((config & CPUCFG19_L2_SIZE_M) >> CPUCFG19_L2_SIZE); + sets = 1 << ((config & CPUCFG19_L2_SETS_M) >> CPUCFG19_L2_SETS); + ways = ((config & CPUCFG19_L2_WAYS_M) >> CPUCFG19_L2_WAYS) + 1; + + if (status[1].has_iu) + get_cache(ci, status[1].is_u ? UNIFIED_CACHE : INSN_CACHE, + 2, line_size, sets, ways, index++); + + if (status[1].has_d) + get_cache(ci, DATA_CACHE, 2, line_size, sets, ways, index++); + + /* Sanity check */ + vg_assert(index == status[0].num + status[1].num); +} + +static void +get_cache_info_for_l3(VexCacheInfo *ci, struct cache_status status[]) +{ + UInt config; + UInt line_size, sets, ways; + UInt index = status[0].num + status[1].num; + + if (!status[2].exist) + return; + + config = cpucfg(LOONGARCH_CPUCFG20); + line_size = 1 << ((config & CPUCFG20_L3_SIZE_M) >> CPUCFG20_L3_SIZE); + sets = 1 << ((config & CPUCFG20_L3_SETS_M) >> CPUCFG20_L3_SETS); + ways = ((config & CPUCFG20_L3_WAYS_M) >> CPUCFG20_L3_WAYS) + 1; + + if (status[2].has_iu) + get_cache(ci, status[2].is_u ? UNIFIED_CACHE : INSN_CACHE, + 3, line_size, sets, ways, index++); + + if (status[2].has_d) + get_cache(ci, DATA_CACHE, 3, line_size, sets, ways, index++); + + /* Sanity check */ + vg_assert(index == status[0].num + status[1].num + status[2].num); +} + +static Bool +get_cache_info_from_cpucfg(VexCacheInfo *ci) +{ + Int i; + struct cache_status status[3]; + UInt config = cpucfg(LOONGARCH_CPUCFG16); + + /* NB: Bool is unsigned char! */ + /* For l1 */ + status[0].has_iu = toBool(config & CPUCFG16_L1_IUPRE); + status[0].is_u = toBool(config & CPUCFG16_L1_IUUNIFY); + status[0].has_d = toBool(config & CPUCFG16_L1_DPRE); + get_status(status, 0); + + /* For l2 */ + status[1].has_iu = toBool(config & CPUCFG16_L2_IUPRE); + status[1].is_u = toBool(config & CPUCFG16_L2_IUUNIFY); + status[1].has_d = toBool(config & CPUCFG16_L2_DPRE); + get_status(status, 1); + + /* For l3 */ + status[2].has_iu = toBool(config & CPUCFG16_L3_IUPRE); + status[2].is_u = toBool(config & CPUCFG16_L3_IUUNIFY); + status[2].has_d = toBool(config & CPUCFG16_L3_DPRE); + get_status(status, 2); + + ci->num_levels = 0; + ci->num_caches = 0; + for (i = 0; i < 3; i++) { + ci->num_levels += status[i].exist; + ci->num_caches += status[i].num; + } + + if (ci->num_caches == 0) { + VG_(debugLog)(1, "cache", "Autodetect failed\n"); + return False; + } + + ci->caches = VG_(malloc)("m_cache", ci->num_caches * sizeof(VexCache)); + get_cache_info_for_l1(ci, status); + get_cache_info_for_l2(ci, status); + get_cache_info_for_l3(ci, status); + return True; +} + +static Bool +get_cache_info(VexArchInfo *vai) +{ + VexCacheInfo *ci = &vai->hwcache_info; + ci->icaches_maintain_coherence = True; + return get_cache_info_from_cpucfg(ci); +} + #else #error "Unknown arch" diff --git a/coregrind/m_coredump/coredump-elf.c b/coregrind/m_coredump/coredump-elf.c index daf85e6..b168bbb 100644 --- a/coregrind/m_coredump/coredump-elf.c +++ b/coregrind/m_coredump/coredump-elf.c @@ -461,6 +461,40 @@ static void fill_prstatus(const ThreadState *tst, regs[VKI_MIPS32_EF_CP0_STATUS] = arch->vex.guest_CP0_status; regs[VKI_MIPS32_EF_CP0_EPC] = arch->vex.guest_PC; # undef DO +#elif defined(VGP_loongarch64_linux) + regs->regs[0] = arch->vex.guest_R0; + regs->regs[1] = arch->vex.guest_R1; + regs->regs[2] = arch->vex.guest_R2; + regs->regs[3] = arch->vex.guest_R3; + regs->regs[4] = arch->vex.guest_R4; + regs->regs[5] = arch->vex.guest_R5; + regs->regs[6] = arch->vex.guest_R6; + regs->regs[7] = arch->vex.guest_R7; + regs->regs[8] = arch->vex.guest_R8; + regs->regs[9] = arch->vex.guest_R9; + regs->regs[10] = arch->vex.guest_R10; + regs->regs[11] = arch->vex.guest_R11; + regs->regs[12] = arch->vex.guest_R12; + regs->regs[13] = arch->vex.guest_R13; + regs->regs[14] = arch->vex.guest_R14; + regs->regs[15] = arch->vex.guest_R15; + regs->regs[16] = arch->vex.guest_R16; + regs->regs[17] = arch->vex.guest_R17; + regs->regs[18] = arch->vex.guest_R18; + regs->regs[19] = arch->vex.guest_R19; + regs->regs[20] = arch->vex.guest_R20; + regs->regs[21] = arch->vex.guest_R21; + regs->regs[22] = arch->vex.guest_R22; + regs->regs[23] = arch->vex.guest_R23; + regs->regs[24] = arch->vex.guest_R24; + regs->regs[25] = arch->vex.guest_R25; + regs->regs[26] = arch->vex.guest_R26; + regs->regs[27] = arch->vex.guest_R27; + regs->regs[28] = arch->vex.guest_R28; + regs->regs[29] = arch->vex.guest_R29; + regs->regs[30] = arch->vex.guest_R30; + regs->regs[31] = arch->vex.guest_R31; + regs->csr_era = arch->vex.guest_PC; #else # error Unknown ELF platform #endif @@ -587,6 +621,14 @@ static void fill_fpu(const ThreadState *tst, vki_elf_fpregset_t *fpu) # undef DO #elif defined(VGP_nanomips_linux) +#elif defined(VGP_loongarch64_linux) +# define DO(n) (*fpu)[n] = *(const double*)(&arch->vex.guest_F##n) + DO(0); DO(1); DO(2); DO(3); DO(4); DO(5); DO(6); DO(7); + DO(8); DO(9); DO(10); DO(11); DO(12); DO(13); DO(14); DO(15); + DO(16); DO(17); DO(18); DO(19); DO(20); DO(21); DO(22); DO(23); + DO(24); DO(25); DO(26); DO(27); DO(28); DO(29); DO(30); DO(31); +# undef DO + #else # error Unknown ELF platform #endif diff --git a/coregrind/m_debuginfo/d3basics.c b/coregrind/m_debuginfo/d3basics.c index b6d13c1..9faf90c 100644 --- a/coregrind/m_debuginfo/d3basics.c +++ b/coregrind/m_debuginfo/d3basics.c @@ -424,6 +424,9 @@ static Bool get_Dwarf_Reg( /*OUT*/Addr* a, Word regno, const RegSummary* regs ) if (regno == 30) { *a = regs->fp; return True; } # elif defined(VGP_arm64_linux) if (regno == 31) { *a = regs->sp; return True; } +# elif defined(VGP_loongarch64_linux) + if (regno == 3) { *a = regs->sp; return True; } + if (regno == 22) { *a = regs->fp; return True; } # else # error "Unknown platform" # endif diff --git a/coregrind/m_debuginfo/debuginfo.c b/coregrind/m_debuginfo/debuginfo.c index 13e528e..4557c27 100644 --- a/coregrind/m_debuginfo/debuginfo.c +++ b/coregrind/m_debuginfo/debuginfo.c @@ -1174,7 +1174,7 @@ ULong VG_(di_notify_mmap)( Addr a, Bool allow_SkFileV, Int use_fd ) is_ro_map = False; # if defined(VGA_x86) || defined(VGA_ppc32) || defined(VGA_mips32) \ - || defined(VGA_mips64) || defined(VGA_nanomips) + || defined(VGA_mips64) || defined(VGA_nanomips) || defined(VGA_loongarch64) is_rx_map = seg->hasR && seg->hasX; is_rw_map = seg->hasR && seg->hasW; # elif defined(VGA_amd64) || defined(VGA_ppc64be) || defined(VGA_ppc64le) \ @@ -2876,6 +2876,11 @@ UWord evalCfiExpr ( const XArray* exprs, Int ix, || defined(VGA_ppc64le) # elif defined(VGP_arm64_linux) case Creg_ARM64_X30: return eec->uregs->x30; +# elif defined(VGA_loongarch64) + case Creg_LOONGARCH64_PC: return eec->uregs->pc; + case Creg_LOONGARCH64_RA: return eec->uregs->ra; + case Creg_LOONGARCH64_SP: return eec->uregs->sp; + case Creg_LOONGARCH64_FP: return eec->uregs->fp; # else # error "Unsupported arch" # endif @@ -3147,6 +3152,13 @@ static Addr compute_cfa ( const D3UnwindRegs* uregs, case CFIC_ARM64_X29REL: cfa = cfsi_m->cfa_off + uregs->x29; break; +# elif defined(VGA_loongarch64) + case CFIC_IA_SPREL: + cfa = cfsi_m->cfa_off + uregs->sp; + break; + case CFIC_IA_BPREL: + cfa = cfsi_m->cfa_off + uregs->fp; + break; # else # error "Unsupported arch" # endif @@ -3218,6 +3230,14 @@ Addr ML_(get_CFA) ( Addr ip, Addr sp, Addr fp, return compute_cfa(&uregs, min_accessible, max_accessible, ce->di, ce->cfsi_m); } +#elif defined(VGA_loongarch64) + { D3UnwindRegs uregs; + uregs.pc = ip; + uregs.sp = sp; + uregs.fp = fp; + return compute_cfa(&uregs, + min_accessible, max_accessible, ce->di, ce->cfsi_m); + } # else return 0; /* indicates failure */ @@ -3269,6 +3289,8 @@ void VG_(ppUnwindInfo) (Addr from, Addr to) For arm64, the unwound registers are: X29(FP) X30(LR) SP PC. For s390, the unwound registers are: R11(FP) R14(LR) R15(SP) F0..F7 PC. + + For loongarch64, the unwound registers are: FP SP PC */ Bool VG_(use_CF_info) ( /*MOD*/D3UnwindRegs* uregsHere, Addr min_accessible, @@ -3292,6 +3314,8 @@ Bool VG_(use_CF_info) ( /*MOD*/D3UnwindRegs* uregsHere, # elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le) # elif defined(VGP_arm64_linux) ipHere = uregsHere->pc; +# elif defined(VGA_loongarch64) + ipHere = uregsHere->pc; # else # error "Unknown arch" # endif @@ -3437,6 +3461,10 @@ Bool VG_(use_CF_info) ( /*MOD*/D3UnwindRegs* uregsHere, COMPUTE(uregsPrev.sp, uregsHere->sp, cfsi_m->sp_how, cfsi_m->sp_off); COMPUTE(uregsPrev.x30, uregsHere->x30, cfsi_m->x30_how, cfsi_m->x30_off); COMPUTE(uregsPrev.x29, uregsHere->x29, cfsi_m->x29_how, cfsi_m->x29_off); +# elif defined(VGA_loongarch64) + COMPUTE(uregsPrev.pc, uregsHere->ra, cfsi_m->ra_how, cfsi_m->ra_off); + COMPUTE(uregsPrev.sp, uregsHere->sp, cfsi_m->sp_how, cfsi_m->sp_off); + COMPUTE(uregsPrev.fp, uregsHere->fp, cfsi_m->fp_how, cfsi_m->fp_off); # else # error "Unknown arch" # endif diff --git a/coregrind/m_debuginfo/priv_storage.h b/coregrind/m_debuginfo/priv_storage.h index 39456ec..8eb764d 100644 --- a/coregrind/m_debuginfo/priv_storage.h +++ b/coregrind/m_debuginfo/priv_storage.h @@ -367,6 +367,19 @@ typedef Int fp_off; } DiCfSI_m; +#elif defined(VGA_loongarch64) +typedef + struct { + UChar cfa_how; /* a CFIC_ value */ + UChar ra_how; /* a CFIR_ value */ + UChar sp_how; /* a CFIR_ value */ + UChar fp_how; /* a CFIR_ value */ + Int cfa_off; + Int ra_off; + Int sp_off; + Int fp_off; + } + DiCfSI_m; #else # error "Unknown arch" #endif @@ -420,7 +433,11 @@ typedef Creg_S390_SP, Creg_S390_FP, Creg_S390_LR, - Creg_MIPS_RA + Creg_MIPS_RA, + Creg_LOONGARCH64_PC, + Creg_LOONGARCH64_RA, + Creg_LOONGARCH64_SP, + Creg_LOONGARCH64_FP } CfiReg; diff --git a/coregrind/m_debuginfo/readdwarf.c b/coregrind/m_debuginfo/readdwarf.c index 5701c50..a4fe217 100644 --- a/coregrind/m_debuginfo/readdwarf.c +++ b/coregrind/m_debuginfo/readdwarf.c @@ -1730,6 +1730,10 @@ void ML_(read_debuginfo_dwarf1) ( # define FP_REG 30 # define SP_REG 29 # define RA_REG_DEFAULT 31 +#elif defined(VGP_loongarch64_linux) +# define FP_REG 22 +# define SP_REG 3 +# define RA_REG_DEFAULT 1 #else # error "Unknown platform" #endif @@ -1748,6 +1752,8 @@ void ML_(read_debuginfo_dwarf1) ( # define N_CFI_REGS 128 #elif defined(VGP_s390x_linux) # define N_CFI_REGS 66 +#elif defined(VGP_loongarch64_linux) +# define N_CFI_REGS 32 #else # define N_CFI_REGS 20 #endif @@ -1974,6 +1980,10 @@ static void initUnwindContext ( /*OUT*/UnwindContext* ctx ) start out as RR_Same. */ ctx->state[j].reg[29/*FP*/].tag = RR_Same; ctx->state[j].reg[30/*LR*/].tag = RR_Same; +# elif defined(VGA_loongarch64) + /* Registers fp and ra start out implicitly as RR_Same. */ + ctx->state[j].reg[FP_REG].tag = RR_Same; + ctx->state[j].reg[RA_REG_DEFAULT].tag = RR_Same; # endif } } @@ -2056,7 +2066,8 @@ static Bool summarise_context(/*OUT*/Addr* base, if (ctxs->cfa_is_regoff && ctxs->cfa_reg == SP_REG) { si_m->cfa_off = ctxs->cfa_off; # if defined(VGA_x86) || defined(VGA_amd64) || defined(VGA_s390x) \ - || defined(VGA_mips32) || defined(VGA_nanomips) || defined(VGA_mips64) + || defined(VGA_mips32) || defined(VGA_nanomips) || defined(VGA_mips64) \ + || defined(VGA_loongarch64) si_m->cfa_how = CFIC_IA_SPREL; # elif defined(VGA_arm) si_m->cfa_how = CFIC_ARM_R13REL; @@ -2070,7 +2081,8 @@ static Bool summarise_context(/*OUT*/Addr* base, if (ctxs->cfa_is_regoff && ctxs->cfa_reg == FP_REG) { si_m->cfa_off = ctxs->cfa_off; # if defined(VGA_x86) || defined(VGA_amd64) || defined(VGA_s390x) \ - || defined(VGA_mips32) || defined(VGA_nanomips) || defined(VGA_mips64) + || defined(VGA_mips32) || defined(VGA_nanomips) || defined(VGA_mips64) \ + || defined(VGA_loongarch64) si_m->cfa_how = CFIC_IA_BPREL; # elif defined(VGA_arm) si_m->cfa_how = CFIC_ARM_R12REL; @@ -2450,6 +2462,30 @@ static Bool summarise_context(/*OUT*/Addr* base, # elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le) /* These don't use CFI based unwinding (is that really true?) */ +# elif defined(VGA_loongarch64) + + /* --- entire tail of this fn specialised for loongarch64 --- */ + + SUMMARISE_HOW(si_m->ra_how, si_m->ra_off, ctxs->reg[ctx->ra_reg]); + SUMMARISE_HOW(si_m->fp_how, si_m->fp_off, ctxs->reg[FP_REG]); + + /* on loongarch64, it seems the old sp value before the call is always + the same as the CFA. Therefore ... */ + si_m->sp_how = CFIR_CFAREL; + si_m->sp_off = 0; + + /* bogus looking range? Note, we require that the difference is + representable in 32 bits. */ + if (loc_start >= ctx->loc) + { why = 4; goto failed; } + if (ctx->loc - loc_start > 10000000 /* let's say */) + { why = 5; goto failed; } + + *base = loc_start + ctx->initloc; + *len = (UInt)(ctx->loc - loc_start); + + return True; + # else # error "Unknown arch" # endif @@ -2544,6 +2580,13 @@ static Int copy_convert_CfiExpr_tree ( XArray* dstxa, I_die_here; # elif defined(VGA_ppc32) || defined(VGA_ppc64be) \ || defined(VGA_ppc64le) +# elif defined(VGA_loongarch64) + if (dwreg == SP_REG) + return ML_(CfiExpr_CfiReg)( dstxa, Creg_LOONGARCH64_SP ); + if (dwreg == FP_REG) + return ML_(CfiExpr_CfiReg)( dstxa, Creg_LOONGARCH64_FP ); + if (dwreg == srcuc->ra_reg) + return ML_(CfiExpr_CfiReg)( dstxa, Creg_LOONGARCH64_RA ); # else # error "Unknown arch" # endif diff --git a/coregrind/m_debuginfo/readelf.c b/coregrind/m_debuginfo/readelf.c index bc5a732..9ef75b6 100644 --- a/coregrind/m_debuginfo/readelf.c +++ b/coregrind/m_debuginfo/readelf.c @@ -1561,7 +1561,8 @@ static HChar* readlink_path (const HChar *path) while (tries > 0) { SysRes res; -#if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) +#if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) res = VG_(do_syscall4)(__NR_readlinkat, VKI_AT_FDCWD, (UWord)path, (UWord)buf, bufsiz); #elif defined(VGO_linux) || defined(VGO_darwin) @@ -2403,6 +2404,7 @@ Bool ML_(read_elf_debug_info) ( struct _DebugInfo* di ) || defined(VGP_arm_linux) || defined (VGP_s390x_linux) \ || defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \ || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) \ || defined(VGP_x86_solaris) || defined(VGP_amd64_solaris) /* Accept .plt where mapped as rx (code) */ if (0 == VG_(strcmp)(name, ".plt")) { diff --git a/coregrind/m_debuginfo/storage.c b/coregrind/m_debuginfo/storage.c index 2a975dc..9d5027b 100644 --- a/coregrind/m_debuginfo/storage.c +++ b/coregrind/m_debuginfo/storage.c @@ -260,6 +260,11 @@ void ML_(ppDiCfSI) ( const XArray* /* of CfiExpr */ exprs, SHOW_HOW(si_m->x30_how, si_m->x30_off); VG_(printf)(" X29="); SHOW_HOW(si_m->x29_how, si_m->x29_off); +# elif defined(VGP_loongarch64_linux) + VG_(printf)(" SP="); + SHOW_HOW(si_m->sp_how, si_m->sp_off); + VG_(printf)(" FP="); + SHOW_HOW(si_m->fp_how, si_m->fp_off); # else # error "Unknown arch" # endif @@ -1008,6 +1013,10 @@ static void ppCfiReg ( CfiReg reg ) case Creg_S390_SP: VG_(printf)("SP"); break; case Creg_S390_FP: VG_(printf)("FP"); break; case Creg_S390_LR: VG_(printf)("LR"); break; + case Creg_LOONGARCH64_PC: VG_(printf)("PC"); break; + case Creg_LOONGARCH64_RA: VG_(printf)("RA"); break; + case Creg_LOONGARCH64_SP: VG_(printf)("SP"); break; + case Creg_LOONGARCH64_FP: VG_(printf)("FP"); break; default: vg_assert(0); } } diff --git a/coregrind/m_debuglog.c b/coregrind/m_debuglog.c index ce4714d..4cf6323 100644 --- a/coregrind/m_debuglog.c +++ b/coregrind/m_debuglog.c @@ -518,6 +518,41 @@ static UInt local_sys_getpid ( void ) return a0; } +#elif defined(VGP_loongarch64_linux) + +static UInt local_sys_write_stderr ( const HChar* buf, Int n ) +{ + ULong ret; + __asm__ volatile ( + "li.w $a0, 2 \n\t" // stderr + "move $a1, %1 \n\t" + "move $a2, %2 \n\t" + "li.w $a7, " VG_STRINGIFY(__NR_write) " \n\t" + "syscall 0 \n\t" + "move %0, $a0 \n\t" + : "=r" (ret) + : "r" (buf), "r" (n) + : "memory", "$a0", "$a1", "$a2", "$a3", "$a4", "$a5", "$a6", "$a7", + "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8" + ); + return ret >= 0 ? (UInt)ret : -1; +} + +static UInt local_sys_getpid ( void ) +{ + ULong ret; + __asm__ volatile ( + "li.w $a7, " VG_STRINGIFY(__NR_getpid) " \n\t" + "syscall 0 \n\t" + "move %0, $a0 \n\t" + : "=r" (ret) + : + : "memory", "$a0", "$a1", "$a2", "$a3", "$a4", "$a5", "$a6", "$a7", + "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8" + ); + return (UInt)ret; +} + #elif defined(VGP_x86_solaris) static UInt local_sys_write_stderr ( const HChar* buf, Int n ) { diff --git a/coregrind/m_dispatch/dispatch-loongarch64-linux.S b/coregrind/m_dispatch/dispatch-loongarch64-linux.S new file mode 100644 index 0000000..dec1652 --- /dev/null +++ b/coregrind/m_dispatch/dispatch-loongarch64-linux.S @@ -0,0 +1,314 @@ + +/*--------------------------------------------------------------------*/ +/*--- The core dispatch loop, for jumping to a code address. ---*/ +/*--- dispatch-loongarch64-linux.S ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2021-2022 Loongson Technology Corporation Limited + + This program 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 2 of the + License, or (at your option) any later version. + + This program 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 this program; if not, see . + + The GNU General Public License is contained in the file COPYING. +*/ + +#include "pub_core_basics_asm.h" + +#if defined(VGP_loongarch64_linux) + +#include "pub_core_dispatch_asm.h" +#include "pub_core_transtab_asm.h" +#include "libvex_guest_offsets.h" /* for OFFSET_loongarch64_* */ + + +/*------------------------------------------------------------*/ +/*--- ---*/ +/*--- The dispatch loop. VG_(disp_run_translations) is ---*/ +/*--- used to run all translations, ---*/ +/*--- including no-redir ones. ---*/ +/*--- ---*/ +/*------------------------------------------------------------*/ + +/*----------------------------------------------------*/ +/*--- Entry and preamble (set everything up) ---*/ +/*----------------------------------------------------*/ + +/* signature: +void VG_(disp_run_translations)( UWord* two_words, + void* guest_state, + Addr host_addr ); +*/ + +.text +.globl VG_(disp_run_translations) +VG_(disp_run_translations): + /* a0 holds two_words */ + /* a1 holds guest_state */ + /* a2 holds host_addr */ + + /* New stack frame. Stack must remain 16 aligned (at least) */ + addi.d $sp, $sp, -96 + + /* Save ra */ + st.d $ra, $sp, 0 + + /* .. and s0 - s8 */ + st.d $s0, $sp, 8 + st.d $s1, $sp, 16 + st.d $s2, $sp, 24 + st.d $s3, $sp, 32 + st.d $s4, $sp, 40 + st.d $s5, $sp, 48 + st.d $s6, $sp, 56 + st.d $s7, $sp, 64 + st.d $s8, $sp, 72 + + /* ... and fp */ + st.d $fp, $sp, 80 + + /* and a0. In postamble it will be restored such that the + return values can be written */ + st.d $a0, $sp, 88 + + /* Load address of guest state into s8 */ + move $s8, $a1 + + /* and jump into the code cache. Chained translations in + the code cache run, until for whatever reason, they can't + continue. When that happens, the translation in question + will jump (or call) to one of the continuation points + VG_(cp_...) below. */ + ibar 0 /* Insn sync barrier */ + jr $a2 + /*NOTREACHED*/ + +/*----------------------------------------------------*/ +/*--- Postamble and exit. ---*/ +/*----------------------------------------------------*/ + +postamble: + /* At this point, a0 and a1 contain two + words to be returned to the caller. a0 + holds a TRC value, and a1 optionally may + hold another word (for CHAIN_ME exits, the + address of the place to patch.) */ + + /* Restore a0 from stack to t0; holds address of two_words */ + ld.d $t0, $sp, 88 + st.d $a0, $t0, 0 /* Store a0 to two_words[0] */ + st.d $a1, $t0, 8 /* Store a1 to two_words[1] */ + + /* Restore ra */ + ld.d $ra, $sp, 0 + + /* ... and s0 - s8 */ + ld.d $s0, $sp, 8 + ld.d $s1, $sp, 16 + ld.d $s2, $sp, 24 + ld.d $s3, $sp, 32 + ld.d $s4, $sp, 40 + ld.d $s5, $sp, 48 + ld.d $s6, $sp, 56 + ld.d $s7, $sp, 64 + ld.d $s8, $sp, 72 + + /* ... and fp */ + ld.d $fp, $sp, 80 + + addi.d $sp, $sp, 96 /* Restore sp */ + jr $ra + /*NOTREACHED*/ + +/*----------------------------------------------------*/ +/*--- Continuation points ---*/ +/*----------------------------------------------------*/ + +/* ------ Chain me to slow entry point ------ */ +.globl VG_(disp_cp_chain_me_to_slowEP) +VG_(disp_cp_chain_me_to_slowEP): + /* We got called. The return address indicates + where the patching needs to happen. Collect + the return address and, exit back to C land, + handing the caller the pair (Chain_me_S, RA) */ + li.w $a0, VG_TRC_CHAIN_ME_TO_SLOW_EP + move $a1, $ra + /* 4 * 4 = mkLoadImm_EXACTLY4 + 4 = jirl $ra, $t0, 0 */ + addi.d $a1, $a1, -20 + b postamble + /*NOTREACHED*/ + +/* ------ Chain me to fast entry point ------ */ +.globl VG_(disp_cp_chain_me_to_fastEP) +VG_(disp_cp_chain_me_to_fastEP): + /* We got called. The return address indicates + where the patching needs to happen. Collect + the return address and, exit back to C land, + handing the caller the pair (Chain_me_S, RA) */ + li.w $a0, VG_TRC_CHAIN_ME_TO_FAST_EP + move $a1, $ra + /* 4 * 4 = mkLoadImm_EXACTLY4 + 4 = jirl $ra, $t0, 0 */ + addi.d $a1, $a1, -20 + b postamble + /*NOTREACHED*/ + +/* ------ Indirect but boring jump ------ */ +.globl VG_(disp_cp_xindir) +VG_(disp_cp_xindir): + /* Where are we going? */ + ld.d $t0, $s8, OFFSET_loongarch64_PC + + /* Stats only */ + la.local $t4, VG_(stats__n_xIndirs_32) + ld.d $t1, $t4, 0 + addi.d $t1, $t1, 1 + st.w $t1, $t4, 0 + + /* LIVE: s8 (guest state ptr), t0 (guest address to go to). + We use 6 temporaries: + t6 (to point at the relevant FastCacheSet), + t1, t2, t3 (scratch, for swapping entries within a set) + t4, t5 (other scratch) + */ + + /* Try a fast lookup in the translation cache. This is pretty much + a handcoded version of VG_(lookupInFastCache). */ + + // Compute t6 = VG_TT_FAST_HASH(guest) + srli.d $t6, $t0, 2 // g2 = guest >> 2 + srli.d $t5, $t0, (VG_TT_FAST_BITS + 2) // (g2 >> VG_TT_FAST_BITS) + xor $t6, $t6, $t5 // (g2 >> VG_TT_FAST_BITS) ^ g2 + li.w $t5, VG_TT_FAST_MASK + and $t6, $t6, $t5 // setNo + + // Compute t6 = &VG_(tt_fast)[t6] + la.local $t5, VG_(tt_fast) + slli.d $t6, $t6, VG_FAST_CACHE_SET_BITS + add.d $t6, $t6, $t5 + + /* LIVE: s8 (guest state ptr), t0 (guest addr), t6 (cache set) */ +0: // try way 0 + ld.d $t4, $t6, FCS_g0 // .guest0 + ld.d $t5, $t6, FCS_h0 // .host0 + bne $t4, $t0, 1f // cmp against .guest0 + // hit at way 0 + // goto .host0 + jr $t5 + /*NOTREACHED*/ + +1: // try way 1 + ld.d $t4, $t6, FCS_g1 + bne $t4, $t0, 2f // cmp against .guest1 + // hit at way 1; swap upwards + ld.d $t1, $t6, FCS_g0 // $t1 = old .guest0 + ld.d $t2, $t6, FCS_h0 // $t2 = old .host0 + ld.d $t3, $t6, FCS_h1 // $t3 = old .host1 + st.d $t0, $t6, FCS_g0 // new .guest0 = guest + st.d $t3, $t6, FCS_h0 // new .host0 = old .host1 + st.d $t1, $t6, FCS_g1 // new .guest1 = old .guest0 + st.d $t2, $t6, FCS_h1 // new .host1 = old .host0 + + // stats only + la.local $t4, VG_(stats__n_xIndir_hits1_32) + ld.d $t5, $t4, 0 + addi.d $t5, $t5, 1 + st.w $t5, $t4, 0 + // goto old .host1 a.k.a. new .host0 + jr $t3 + /*NOTREACHED*/ + +2: // try way 2 + ld.d $t4, $t6, FCS_g2 + bne $t4, $t0, 3f // cmp against .guest2 + // hit at way 2; swap upwards + ld.d $t1, $t6, FCS_g1 + ld.d $t2, $t6, FCS_h1 + ld.d $t3, $t6, FCS_h2 + st.d $t0, $t6, FCS_g1 + st.d $t3, $t6, FCS_h1 + st.d $t1, $t6, FCS_g2 + st.d $t2, $t6, FCS_h2 + + // stats only + la.local $t4, VG_(stats__n_xIndir_hits2_32) + ld.d $t5, $t4, 0 + addi.d $t5, $t5, 1 + st.w $t5, $t4, 0 + // goto old .host2 a.k.a. new .host1 + jr $t3 + /*NOTREACHED*/ + +3: // try way 3 + ld.d $t4, $t6, FCS_g3 + bne $t4, $t0, 4f // cmp against .guest3 + // hit at way 3; swap upwards + ld.d $t1, $t6, FCS_g2 + ld.d $t2, $t6, FCS_h2 + ld.d $t3, $t6, FCS_h3 + st.d $t0, $t6, FCS_g2 + st.d $t3, $t6, FCS_h2 + st.d $t1, $t6, FCS_g3 + st.d $t2, $t6, FCS_h3 + + // stats only + la.local $t4, VG_(stats__n_xIndir_hits3_32) + ld.d $t5, $t4, 0 + addi.d $t5, $t5, 1 + st.w $t5, $t4, 0 + // goto old .host3 a.k.a. new .host2 + jr $t3 + /*NOTREACHED*/ + +4: // fast lookup failed: + /* stats only */ + la.local $t4, VG_(stats__n_xIndir_misses_32) + ld.d $t5, $t4, 0 + addi.d $t5, $t5, 1 + st.w $t5, $t4, 0 + + li.w $a0, VG_TRC_INNER_FASTMISS + move $a1, $zero + b postamble + /*NOTREACHED*/ + +/* ------ Assisted jump ------ */ +.globl VG_(disp_cp_xassisted) +VG_(disp_cp_xassisted): + /* guest-state-pointer contains the TRC. Put the value into the + return register */ + move $a0, $s8 + move $a1, $zero + b postamble + +/* ------ Event check failed ------ */ +.globl VG_(disp_cp_evcheck_fail) +VG_(disp_cp_evcheck_fail): + li.w $a0, VG_TRC_INNER_COUNTERZERO + move $a1, $zero + b postamble + +.size VG_(disp_run_translations), .-VG_(disp_run_translations) + +#endif // defined(VGP_loongarch64_linux) + +/* Let the linker know we don't need an executable stack */ +MARK_STACK_NO_EXEC + +/*--------------------------------------------------------------------*/ +/*--- end dispatch-loongarch64-linux.S ---*/ +/*--------------------------------------------------------------------*/ diff --git a/coregrind/m_gdbserver/loongarch-base64-valgrind-s1.xml b/coregrind/m_gdbserver/loongarch-base64-valgrind-s1.xml new file mode 100644 index 0000000..cab700c --- /dev/null +++ b/coregrind/m_gdbserver/loongarch-base64-valgrind-s1.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coregrind/m_gdbserver/loongarch-base64-valgrind-s2.xml b/coregrind/m_gdbserver/loongarch-base64-valgrind-s2.xml new file mode 100644 index 0000000..cbacbbb --- /dev/null +++ b/coregrind/m_gdbserver/loongarch-base64-valgrind-s2.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coregrind/m_gdbserver/loongarch-base64.xml b/coregrind/m_gdbserver/loongarch-base64.xml new file mode 100644 index 0000000..fadca8b --- /dev/null +++ b/coregrind/m_gdbserver/loongarch-base64.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coregrind/m_gdbserver/loongarch64-linux-valgrind.xml b/coregrind/m_gdbserver/loongarch64-linux-valgrind.xml new file mode 100644 index 0000000..dc997f1 --- /dev/null +++ b/coregrind/m_gdbserver/loongarch64-linux-valgrind.xml @@ -0,0 +1,15 @@ + + + + + + loongarch + GNU/Linux + + + + diff --git a/coregrind/m_gdbserver/loongarch64-linux.xml b/coregrind/m_gdbserver/loongarch64-linux.xml new file mode 100644 index 0000000..93ebc96 --- /dev/null +++ b/coregrind/m_gdbserver/loongarch64-linux.xml @@ -0,0 +1,13 @@ + + + + + + loongarch + GNU/Linux + + diff --git a/coregrind/m_gdbserver/target.c b/coregrind/m_gdbserver/target.c index b49d210..9adbf8e 100644 --- a/coregrind/m_gdbserver/target.c +++ b/coregrind/m_gdbserver/target.c @@ -902,6 +902,8 @@ void valgrind_initialize_target(void) mips64_init_architecture(&the_low_target); #elif defined(VGA_nanomips) nanomips_init_architecture(&the_low_target); +#elif defined(VGA_loongarch64) + loongarch64_init_architecture(&the_low_target); #else #error "architecture missing in target.c valgrind_initialize_target" #endif diff --git a/coregrind/m_gdbserver/valgrind-low-loongarch64.c b/coregrind/m_gdbserver/valgrind-low-loongarch64.c new file mode 100644 index 0000000..e1a10aa --- /dev/null +++ b/coregrind/m_gdbserver/valgrind-low-loongarch64.c @@ -0,0 +1,195 @@ +/* Low level interface to valgrind, for the remote server for GDB integrated + in valgrind. + Copyright (C) 2021 + Free Software Foundation, Inc. + + This file is part of VALGRIND. + It has been inspired from files from gdbserver in gdb 13. + + This program 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 2 of the License, or + (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#include "server.h" +#include "target.h" +#include "regdef.h" +#include "regcache.h" + +#include "pub_core_machine.h" +#include "pub_core_debuginfo.h" +#include "pub_core_threadstate.h" +#include "pub_core_transtab.h" +#include "pub_core_gdbserver.h" + +#include "valgrind_low.h" + +#include "libvex_guest_loongarch64.h" + +static struct reg regs[] = { + { "r0", 0, 64 }, + { "r1", 64, 64 }, + { "r2", 128, 64 }, + { "r3", 192, 64 }, + { "r4", 256, 64 }, + { "r5", 320, 64 }, + { "r6", 384, 64 }, + { "r7", 448, 64 }, + { "r8", 512, 64 }, + { "r9", 576, 64 }, + { "r10", 640, 64 }, + { "r11", 704, 64 }, + { "r12", 768, 64 }, + { "r13", 832, 64 }, + { "r14", 896, 64 }, + { "r15", 960, 64 }, + { "r16", 1024, 64 }, + { "r17", 1088, 64 }, + { "r18", 1152, 64 }, + { "r19", 1216, 64 }, + { "r20", 1280, 64 }, + { "r21", 1344, 64 }, + { "r22", 1408, 64 }, + { "r23", 1472, 64 }, + { "r24", 1536, 64 }, + { "r25", 1600, 64 }, + { "r26", 1664, 64 }, + { "r27", 1728, 64 }, + { "r28", 1792, 64 }, + { "r29", 1856, 64 }, + { "r30", 1920, 64 }, + { "r31", 1984, 64 }, + { "orig_a0", 2048, 64 }, + { "pc", 2112, 64 }, + { "badv", 2176, 64 } +}; + +#define num_regs (sizeof (regs) / sizeof (regs[0])) + +static const char* expedite_regs[] = { "r3", "pc", NULL }; + +static +CORE_ADDR get_pc (void) +{ + unsigned long pc; + + collect_register_by_name ("pc", &pc); + + dlog(1, "stop pc is %p\n", (void*) pc); + return pc; +} + +static +void set_pc (CORE_ADDR newpc) +{ + Bool mod; + supply_register_by_name ("pc", &newpc, &mod); + if (mod) + dlog(1, "set pc to %p\n", C2v (newpc)); + else + dlog(1, "set pc not changed %p\n", C2v (newpc)); +} + +/* store registers in the guest state (gdbserver_to_valgrind) + or fetch register from the guest state (valgrind_to_gdbserver). */ +static +void transfer_register (ThreadId tid, int abs_regno, void* buf, + transfer_direction dir, int size, Bool* mod) +{ + ThreadState* tst = VG_(get_ThreadState)(tid); + int set = abs_regno / num_regs; + int regno = abs_regno % num_regs; + *mod = False; + + VexGuestLOONGARCH64State* loongarch64 = (VexGuestLOONGARCH64State*) get_arch (set, tst); + + switch (regno) { + // numbers here have to match the order of regs above + // Attention: gdb order does not match valgrind order. + case 0: VG_(transfer) (&loongarch64->guest_R0, buf, dir, size, mod); break; + case 1: VG_(transfer) (&loongarch64->guest_R1, buf, dir, size, mod); break; + case 2: VG_(transfer) (&loongarch64->guest_R2, buf, dir, size, mod); break; + case 3: VG_(transfer) (&loongarch64->guest_R3, buf, dir, size, mod); break; + case 4: VG_(transfer) (&loongarch64->guest_R4, buf, dir, size, mod); break; + case 5: VG_(transfer) (&loongarch64->guest_R5, buf, dir, size, mod); break; + case 6: VG_(transfer) (&loongarch64->guest_R6, buf, dir, size, mod); break; + case 7: VG_(transfer) (&loongarch64->guest_R7, buf, dir, size, mod); break; + case 8: VG_(transfer) (&loongarch64->guest_R8, buf, dir, size, mod); break; + case 9: VG_(transfer) (&loongarch64->guest_R9, buf, dir, size, mod); break; + case 10: VG_(transfer) (&loongarch64->guest_R10, buf, dir, size, mod); break; + case 11: VG_(transfer) (&loongarch64->guest_R11, buf, dir, size, mod); break; + case 12: VG_(transfer) (&loongarch64->guest_R12, buf, dir, size, mod); break; + case 13: VG_(transfer) (&loongarch64->guest_R13, buf, dir, size, mod); break; + case 14: VG_(transfer) (&loongarch64->guest_R14, buf, dir, size, mod); break; + case 15: VG_(transfer) (&loongarch64->guest_R15, buf, dir, size, mod); break; + case 16: VG_(transfer) (&loongarch64->guest_R16, buf, dir, size, mod); break; + case 17: VG_(transfer) (&loongarch64->guest_R17, buf, dir, size, mod); break; + case 18: VG_(transfer) (&loongarch64->guest_R18, buf, dir, size, mod); break; + case 19: VG_(transfer) (&loongarch64->guest_R19, buf, dir, size, mod); break; + case 20: VG_(transfer) (&loongarch64->guest_R20, buf, dir, size, mod); break; + case 21: VG_(transfer) (&loongarch64->guest_R21, buf, dir, size, mod); break; + case 22: VG_(transfer) (&loongarch64->guest_R22, buf, dir, size, mod); break; + case 23: VG_(transfer) (&loongarch64->guest_R23, buf, dir, size, mod); break; + case 24: VG_(transfer) (&loongarch64->guest_R24, buf, dir, size, mod); break; + case 25: VG_(transfer) (&loongarch64->guest_R25, buf, dir, size, mod); break; + case 26: VG_(transfer) (&loongarch64->guest_R26, buf, dir, size, mod); break; + case 27: VG_(transfer) (&loongarch64->guest_R27, buf, dir, size, mod); break; + case 28: VG_(transfer) (&loongarch64->guest_R28, buf, dir, size, mod); break; + case 29: VG_(transfer) (&loongarch64->guest_R29, buf, dir, size, mod); break; + case 30: VG_(transfer) (&loongarch64->guest_R30, buf, dir, size, mod); break; + case 31: VG_(transfer) (&loongarch64->guest_R31, buf, dir, size, mod); break; + case 32: *mod = False; break; // GDBTD?? orig_a0 + case 33: VG_(transfer) (&loongarch64->guest_PC, buf, dir, size, mod); break; + case 34: *mod = False; break; // GDBTD?? badv + default: vg_assert(0); + } +} + +static +const char* target_xml (Bool shadow_mode) +{ + if (shadow_mode) { + return "loongarch64-linux-valgrind.xml"; + } else { + return "loongarch64-linux.xml"; + } +} + +static CORE_ADDR** target_get_dtv (ThreadState* tst) +{ + VexGuestLOONGARCH64State* loongarch64 = (VexGuestLOONGARCH64State*)&tst->arch.vex; + // Top of LoongArch tcbhead structure is located 0x0 bytes before the value + // of $r2. Dtv is the first of two pointers in tcbhead structure. + // More details can be found in GLIBC/sysdeps/nptl/tls.h. + return (CORE_ADDR**)((CORE_ADDR)loongarch64->guest_R2 + - 0x0 - 2 * sizeof(CORE_ADDR)); +} + +static struct valgrind_target_ops low_target = { + num_regs, + regs, + 3, // SP + transfer_register, + get_pc, + set_pc, + "loongarch64", + target_xml, + target_get_dtv +}; + +void loongarch64_init_architecture (struct valgrind_target_ops* target) +{ + *target = low_target; + set_register_cache (regs, num_regs); + gdbserver_expedite_regs = expedite_regs; +} diff --git a/coregrind/m_gdbserver/valgrind_low.h b/coregrind/m_gdbserver/valgrind_low.h index c6c0bb6..833f361 100644 --- a/coregrind/m_gdbserver/valgrind_low.h +++ b/coregrind/m_gdbserver/valgrind_low.h @@ -108,5 +108,6 @@ extern void s390x_init_architecture (struct valgrind_target_ops *target); extern void mips32_init_architecture (struct valgrind_target_ops *target); extern void mips64_init_architecture (struct valgrind_target_ops *target); extern void nanomips_init_architecture (struct valgrind_target_ops *target); +extern void loongarch64_init_architecture (struct valgrind_target_ops *target); #endif diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c index bab8aec..aff6b1f 100644 --- a/coregrind/m_initimg/initimg-linux.c +++ b/coregrind/m_initimg/initimg-linux.c @@ -803,7 +803,8 @@ Addr setup_client_stack( void* init_sp, # if !defined(VGP_ppc32_linux) && !defined(VGP_ppc64be_linux) \ && !defined(VGP_ppc64le_linux) \ && !defined(VGP_mips32_linux) && !defined(VGP_mips64_linux) \ - && !defined(VGP_nanomips_linux) + && !defined(VGP_nanomips_linux) \ + && !defined(VGP_loongarch64_linux) case AT_SYSINFO_EHDR: { /* Trash this, because we don't reproduce it */ const NSegment* ehdrseg = VG_(am_find_nsegment)((Addr)auxv->u.a_ptr); @@ -1214,6 +1215,20 @@ void VG_(ii_finalise_image)( IIFinaliseImageInfo iifii ) arch->vex.guest_PC = iifii.initial_client_IP; arch->vex.guest_r31 = iifii.initial_client_SP; +# elif defined(VGP_loongarch64_linux) + vg_assert(0 == sizeof(VexGuestLOONGARCH64State) % LibVEX_GUEST_STATE_ALIGN); + + /* Zero out the initial state, and set up the simulated FPU in a + sane way. */ + LibVEX_GuestLOONGARCH64_initialise(&arch->vex); + + /* Zero out the shadow areas. */ + VG_(memset)(&arch->vex_shadow1, 0, sizeof(VexGuestLOONGARCH64State)); + VG_(memset)(&arch->vex_shadow2, 0, sizeof(VexGuestLOONGARCH64State)); + + arch->vex.guest_R3 = iifii.initial_client_SP; + arch->vex.guest_PC = iifii.initial_client_IP; + # else # error Unknown platform # endif diff --git a/coregrind/m_libcassert.c b/coregrind/m_libcassert.c index ec63fcc..291f2e4 100644 --- a/coregrind/m_libcassert.c +++ b/coregrind/m_libcassert.c @@ -264,6 +264,26 @@ (srP)->misc.MIPS32.r31 = (UInt)ra; \ (srP)->misc.MIPS32.r28 = (UInt)gp; \ } +#elif defined(VGP_loongarch64_linux) +# define GET_STARTREGS(srP) \ + { \ + ULong pc, sp, fp, ra; \ + __asm__ __volatile__( \ + "pcaddi %0, 0 \n\t" \ + "move %1, $sp \n\t" \ + "move %2, $fp \n\t" \ + "move %3, $ra \n\t" \ + : "=r" (pc), \ + "=r" (sp), \ + "=r" (fp), \ + "=r" (ra) \ + : /* reads none */ \ + : /* no trashed */ ); \ + (srP)->r_pc = (ULong)pc; \ + (srP)->r_sp = (ULong)sp; \ + (srP)->misc.LOONGARCH64.r_fp = (ULong)fp; \ + (srP)->misc.LOONGARCH64.r_ra = (ULong)ra; \ + } #else # error Unknown platform #endif diff --git a/coregrind/m_libcfile.c b/coregrind/m_libcfile.c index 3a8fed8..8dd1819 100644 --- a/coregrind/m_libcfile.c +++ b/coregrind/m_libcfile.c @@ -136,7 +136,8 @@ Bool VG_(resolve_filename) ( Int fd, const HChar** result ) SysRes VG_(mknod) ( const HChar* pathname, Int mode, UWord dev ) { -# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) +# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) /* ARM64 wants to use __NR_mknodat rather than __NR_mknod. */ SysRes res = VG_(do_syscall4)(__NR_mknodat, VKI_AT_FDCWD, (UWord)pathname, mode, dev); @@ -154,7 +155,8 @@ SysRes VG_(mknod) ( const HChar* pathname, Int mode, UWord dev ) SysRes VG_(open) ( const HChar* pathname, Int flags, Int mode ) { -# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) +# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) /* ARM64 wants to use __NR_openat rather than __NR_open. */ SysRes res = VG_(do_syscall4)(__NR_openat, VKI_AT_FDCWD, (UWord)pathname, flags, mode); @@ -248,7 +250,8 @@ Int VG_(pipe) ( Int fd[2] ) } else { return -1; } -# elif defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) +# elif defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) SysRes res = VG_(do_syscall2)(__NR_pipe2, (UWord)fd, 0); return sr_isError(res) ? -1 : 0; # elif defined(VGO_linux) @@ -535,7 +538,8 @@ SysRes VG_(dup) ( Int oldfd ) SysRes VG_(dup2) ( Int oldfd, Int newfd ) { -# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) +# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) /* We only have dup3, that means we have to mimic dup2. The only real difference is when oldfd == newfd. dup3 always returns an error, but dup2 returns only an @@ -577,7 +581,7 @@ Int VG_(rename) ( const HChar* old_name, const HChar* new_name ) # if defined(VGO_solaris) || defined(VGP_arm64_linux) SysRes res = VG_(do_syscall4)(__NR_renameat, VKI_AT_FDCWD, (UWord)old_name, VKI_AT_FDCWD, (UWord)new_name); -# elif defined(VGP_nanomips_linux) +# elif defined(VGP_nanomips_linux) || defined(VGP_loongarch64_linux) SysRes res = VG_(do_syscall5)(__NR_renameat2, VKI_AT_FDCWD, (UWord)old_name, VKI_AT_FDCWD, (UWord)new_name, 0); @@ -591,7 +595,8 @@ Int VG_(rename) ( const HChar* old_name, const HChar* new_name ) Int VG_(unlink) ( const HChar* file_name ) { -# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) +# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) SysRes res = VG_(do_syscall2)(__NR_unlinkat, VKI_AT_FDCWD, (UWord)file_name); # elif defined(VGO_linux) || defined(VGO_darwin) @@ -666,7 +671,8 @@ const HChar *VG_(get_startup_wd) ( void ) SysRes VG_(poll) (struct vki_pollfd *fds, Int nfds, Int timeout) { SysRes res; -# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) +# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) /* ARM64 wants to use __NR_ppoll rather than __NR_poll. */ struct vki_timespec timeout_ts; if (timeout >= 0) { @@ -709,7 +715,8 @@ SSizeT VG_(readlink) (const HChar* path, HChar* buf, SizeT bufsiz) { SysRes res; /* res = readlink( path, buf, bufsiz ); */ -# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) +# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) res = VG_(do_syscall4)(__NR_readlinkat, VKI_AT_FDCWD, (UWord)path, (UWord)buf, bufsiz); # elif defined(VGO_linux) || defined(VGO_darwin) @@ -788,7 +795,8 @@ Int VG_(access) ( const HChar* path, Bool irusr, Bool iwusr, Bool ixusr ) UWord w = (irusr ? VKI_R_OK : 0) | (iwusr ? VKI_W_OK : 0) | (ixusr ? VKI_X_OK : 0); -# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) +# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) SysRes res = VG_(do_syscall3)(__NR_faccessat, VKI_AT_FDCWD, (UWord)path, w); # elif defined(VGO_linux) || defined(VGO_darwin) SysRes res = VG_(do_syscall2)(__NR_access, (UWord)path, w); @@ -934,7 +942,8 @@ SysRes VG_(pread) ( Int fd, void* buf, Int count, OffT offset ) return res; # elif defined(VGP_amd64_linux) || defined(VGP_s390x_linux) \ || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \ - || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) + || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \ + || defined(VGP_loongarch64_linux) res = VG_(do_syscall4)(__NR_pread64, fd, (UWord)buf, count, offset); return res; # elif defined(VGP_amd64_darwin) @@ -1189,7 +1198,8 @@ Int VG_(socket) ( Int domain, Int type, Int protocol ) # elif defined(VGP_amd64_linux) || defined(VGP_arm_linux) \ || defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \ - || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) + || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) SysRes res; res = VG_(do_syscall3)(__NR_socket, domain, type, protocol ); return sr_isError(res) ? -1 : sr_Res(res); @@ -1244,7 +1254,8 @@ Int my_connect ( Int sockfd, struct vki_sockaddr_in* serv_addr, Int addrlen ) # elif defined(VGP_amd64_linux) || defined(VGP_arm_linux) \ || defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \ - || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) + || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) SysRes res; res = VG_(do_syscall3)(__NR_connect, sockfd, (UWord)serv_addr, addrlen); return sr_isError(res) ? -1 : sr_Res(res); @@ -1291,7 +1302,8 @@ Int VG_(write_socket)( Int sd, const void *msg, Int count ) # elif defined(VGP_amd64_linux) || defined(VGP_arm_linux) \ || defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \ - || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) + || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) SysRes res; res = VG_(do_syscall6)(__NR_sendto, sd, (UWord)msg, count, VKI_MSG_NOSIGNAL, 0,0); @@ -1328,7 +1340,7 @@ Int VG_(getsockname) ( Int sd, struct vki_sockaddr *name, Int *namelen) # elif defined(VGP_amd64_linux) || defined(VGP_arm_linux) \ || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \ - || defined(VGP_nanomips_linux) + || defined(VGP_nanomips_linux) || defined(VGP_loongarch64_linux) SysRes res; res = VG_(do_syscall3)( __NR_getsockname, (UWord)sd, (UWord)name, (UWord)namelen ); @@ -1367,7 +1379,7 @@ Int VG_(getpeername) ( Int sd, struct vki_sockaddr *name, Int *namelen) # elif defined(VGP_amd64_linux) || defined(VGP_arm_linux) \ || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \ - || defined(VGP_nanomips_linux) + || defined(VGP_nanomips_linux) || defined(VGP_loongarch64_linux) SysRes res; res = VG_(do_syscall3)( __NR_getpeername, (UWord)sd, (UWord)name, (UWord)namelen ); @@ -1408,7 +1420,8 @@ Int VG_(getsockopt) ( Int sd, Int level, Int optname, void *optval, # elif defined(VGP_amd64_linux) || defined(VGP_arm_linux) \ || defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \ - || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) + || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) SysRes res; res = VG_(do_syscall5)( __NR_getsockopt, (UWord)sd, (UWord)level, (UWord)optname, @@ -1452,7 +1465,8 @@ Int VG_(setsockopt) ( Int sd, Int level, Int optname, void *optval, # elif defined(VGP_amd64_linux) || defined(VGP_arm_linux) \ || defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \ - || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) + || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) SysRes res; res = VG_(do_syscall5)( __NR_setsockopt, (UWord)sd, (UWord)level, (UWord)optname, diff --git a/coregrind/m_libcproc.c b/coregrind/m_libcproc.c index ae3804f..f120615 100644 --- a/coregrind/m_libcproc.c +++ b/coregrind/m_libcproc.c @@ -696,7 +696,8 @@ Int VG_(gettid)(void) * the /proc/self link is pointing... */ -# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) +# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) res = VG_(do_syscall4)(__NR_readlinkat, VKI_AT_FDCWD, (UWord)"/proc/self", (UWord)pid, sizeof(pid)); @@ -742,7 +743,8 @@ Int VG_(getpid) ( void ) Int VG_(getpgrp) ( void ) { /* ASSUMES SYSCALL ALWAYS SUCCEEDS */ -# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) +# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) return sr_Res( VG_(do_syscall1)(__NR_getpgid, 0) ); # elif defined(VGO_linux) || defined(VGO_darwin) return sr_Res( VG_(do_syscall0)(__NR_getpgrp) ); @@ -838,7 +840,8 @@ Int VG_(getgroups)( Int size, UInt* list ) || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \ || defined(VGO_darwin) || defined(VGP_s390x_linux) \ || defined(VGP_mips32_linux) || defined(VGP_arm64_linux) \ - || defined(VGO_solaris) || defined(VGP_nanomips_linux) + || defined(VGO_solaris) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) SysRes sres; sres = VG_(do_syscall2)(__NR_getgroups, size, (Addr)list); if (sr_isError(sres)) @@ -879,7 +882,8 @@ Int VG_(ptrace) ( Int request, Int pid, void *addr, void *data ) Int VG_(fork) ( void ) { -# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) +# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) SysRes res; res = VG_(do_syscall5)(__NR_clone, VKI_SIGCHLD, (UWord)NULL, (UWord)NULL, (UWord)NULL, (UWord)NULL); diff --git a/coregrind/m_libcsetjmp.c b/coregrind/m_libcsetjmp.c index abb8f23..b4f3b29 100644 --- a/coregrind/m_libcsetjmp.c +++ b/coregrind/m_libcsetjmp.c @@ -741,6 +741,72 @@ __asm__( ); #endif /* VGP_nanomips_linux */ +#if defined(VGP_loongarch64_linux) + +__asm__( +".text \n\t" +".globl VG_MINIMAL_SETJMP; \n\t" +"VG_MINIMAL_SETJMP: \n\t" +" st.d $ra, $a0, 0 \n\t" +" st.d $sp, $a0, 8 \n\t" +" st.d $x, $a0, 16 \n\t" +" st.d $fp, $a0, 24 \n\t" +" st.d $s0, $a0, 32 \n\t" +" st.d $s1, $a0, 40 \n\t" +" st.d $s2, $a0, 48 \n\t" +" st.d $s3, $a0, 56 \n\t" +" st.d $s4, $a0, 64 \n\t" +" st.d $s5, $a0, 72 \n\t" +" st.d $s6, $a0, 80 \n\t" +" st.d $s7, $a0, 88 \n\t" +" st.d $s8, $a0, 96 \n\t" +#if !defined(__loongarch_soft_float) +" fst.d $f24, $a0, 104 \n\t" +" fst.d $f25, $a0, 112 \n\t" +" fst.d $f26, $a0, 120 \n\t" +" fst.d $f27, $a0, 128 \n\t" +" fst.d $f28, $a0, 136 \n\t" +" fst.d $f29, $a0, 144 \n\t" +" fst.d $f30, $a0, 152 \n\t" +" fst.d $f30, $a0, 160 \n\t" +#endif +" move $a0, $zero \n\t" +" jr $ra \n\t" +" \n\t" +".text \n\t" +".globl VG_MINIMAL_LONGJMP; \n\t" +"VG_MINIMAL_LONGJMP: \n\t" +" ld.d $ra, $a0, 0 \n\t" +" ld.d $sp, $a0, 8 \n\t" +" ld.d $x, $a0, 16 \n\t" +" ld.d $fp, $a0, 24 \n\t" +" ld.d $s0, $a0, 32 \n\t" +" ld.d $s1, $a0, 40 \n\t" +" ld.d $s2, $a0, 48 \n\t" +" ld.d $s3, $a0, 56 \n\t" +" ld.d $s4, $a0, 64 \n\t" +" ld.d $s5, $a0, 72 \n\t" +" ld.d $s6, $a0, 80 \n\t" +" ld.d $s7, $a0, 88 \n\t" +" ld.d $s8, $a0, 96 \n\t" +#if !defined(__loongarch_soft_float) +" fld.d $f24, $a0, 104 \n\t" +" fld.d $f25, $a0, 112 \n\t" +" fld.d $f26, $a0, 120 \n\t" +" fld.d $f27, $a0, 128 \n\t" +" fld.d $f28, $a0, 136 \n\t" +" fld.d $f29, $a0, 144 \n\t" +" fld.d $f30, $a0, 152 \n\t" +" fld.d $f30, $a0, 160 \n\t" +#endif +" bnez $a1, 1f \n\t" +" addi.d $a1, $a1, 1 \n\t" +"1: \n\t" +" move $a0, $a1 \n\t" +" jr $ra \n\t" +); +#endif /* VGP_loongarch64_linux */ + /*--------------------------------------------------------------------*/ /*--- end ---*/ /*--------------------------------------------------------------------*/ diff --git a/coregrind/m_machine.c b/coregrind/m_machine.c index 0fd1d21..e61453b 100644 --- a/coregrind/m_machine.c +++ b/coregrind/m_machine.c @@ -151,6 +151,13 @@ void VG_(get_UnwindStartRegs) ( /*OUT*/UnwindStartRegs* regs, = VG_(threads)[tid].arch.vex.guest_r31; regs->misc.MIPS64.r28 = VG_(threads)[tid].arch.vex.guest_r28; +# elif defined(VGA_loongarch64) + regs->r_pc = VG_(threads)[tid].arch.vex.guest_PC; + regs->r_sp = VG_(threads)[tid].arch.vex.guest_R3; + regs->misc.LOONGARCH64.r_fp + = VG_(threads)[tid].arch.vex.guest_R22; + regs->misc.LOONGARCH64.r_ra + = VG_(threads)[tid].arch.vex.guest_R1; # else # error "Unknown arch" # endif @@ -368,6 +375,39 @@ static void apply_to_GPs_of_tid(ThreadId tid, void (*f)(ThreadId, (*f)(tid, "x28", vex->guest_X28); (*f)(tid, "x29", vex->guest_X29); (*f)(tid, "x30", vex->guest_X30); +#elif defined(VGA_loongarch64) + (*f)(tid, "r0" , vex->guest_R0 ); + (*f)(tid, "r1" , vex->guest_R1 ); + (*f)(tid, "r2" , vex->guest_R2 ); + (*f)(tid, "r3" , vex->guest_R3 ); + (*f)(tid, "r4" , vex->guest_R4 ); + (*f)(tid, "r5" , vex->guest_R5 ); + (*f)(tid, "r6" , vex->guest_R6 ); + (*f)(tid, "r7" , vex->guest_R7 ); + (*f)(tid, "r8" , vex->guest_R8 ); + (*f)(tid, "r9" , vex->guest_R9 ); + (*f)(tid, "r10", vex->guest_R10); + (*f)(tid, "r11", vex->guest_R11); + (*f)(tid, "r12", vex->guest_R12); + (*f)(tid, "r13", vex->guest_R13); + (*f)(tid, "r14", vex->guest_R14); + (*f)(tid, "r15", vex->guest_R15); + (*f)(tid, "r16", vex->guest_R16); + (*f)(tid, "r17", vex->guest_R17); + (*f)(tid, "r18", vex->guest_R18); + (*f)(tid, "r19", vex->guest_R19); + (*f)(tid, "r20", vex->guest_R20); + (*f)(tid, "r21", vex->guest_R21); + (*f)(tid, "r22", vex->guest_R22); + (*f)(tid, "r23", vex->guest_R23); + (*f)(tid, "r24", vex->guest_R24); + (*f)(tid, "r25", vex->guest_R25); + (*f)(tid, "r26", vex->guest_R26); + (*f)(tid, "r27", vex->guest_R27); + (*f)(tid, "r28", vex->guest_R28); + (*f)(tid, "r29", vex->guest_R29); + (*f)(tid, "r30", vex->guest_R30); + (*f)(tid, "r31", vex->guest_R31); #else # error Unknown arch #endif @@ -478,7 +518,7 @@ Int VG_(machine_arm_archlevel) = 4; testing, so we need a VG_MINIMAL_JMP_BUF. */ #if defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le) \ || defined(VGA_arm) || defined(VGA_s390x) || defined(VGA_mips32) \ - || defined(VGA_mips64) + || defined(VGA_mips64) || defined(VGA_loongarch64) #include "pub_core_libcsetjmp.h" static VG_MINIMAL_JMP_BUF(env_unsup_insn); static void handler_unsup_insn ( Int x ) { @@ -858,6 +898,105 @@ static Bool VG_(parse_cpuinfo)(void) #endif /* defined(VGP_arm64_linux) */ +#if defined(VGA_loongarch64) + +/* + * Initialize hwcaps by parsing /proc/cpuinfo. Returns False if it can not + * determine what CPU it is (it searches only for the models that are or may be + * supported by Valgrind). + */ +static Bool VG_(parse_cpuinfo)(void) +{ + Int n, fh; + SysRes fd; + SizeT num_bytes, file_buf_size; + HChar *file_buf; + + const char *search_Loongson_str = "Model Name\t\t: Loongson"; + + /* Slurp contents of /proc/cpuinfo into FILE_BUF */ + fd = VG_(open)("/proc/cpuinfo", 0, VKI_S_IRUSR); + if (sr_isError(fd)) + return False; + + fh = sr_Res(fd); + + /* Determine the size of /proc/cpuinfo. + Work around broken-ness in /proc file system implementation. + fstat returns a zero size for /proc/cpuinfo although it is + claimed to be a regular file. */ + num_bytes = 0; + file_buf_size = 1000; + file_buf = VG_(malloc)("cpuinfo", file_buf_size + 1); + while (True) { + n = VG_(read)(fh, file_buf, file_buf_size); + if (n < 0) + break; + + num_bytes += n; + if (n < file_buf_size) + break; /* reached EOF */ + } + + if (n < 0) + num_bytes = 0; /* read error; ignore contents */ + + if (num_bytes > file_buf_size) { + VG_(free)(file_buf); + VG_(lseek)(fh, 0, VKI_SEEK_SET); + file_buf = VG_(malloc)("cpuinfo", num_bytes + 1); + n = VG_(read)(fh, file_buf, num_bytes); + if (n < 0) + num_bytes = 0; + } + + file_buf[num_bytes] = '\0'; + VG_(close)(fh); + + /* Parse file */ + vai.hwcaps = 0; + if (VG_(strstr)(file_buf, search_Loongson_str) == NULL) { + /* Did not find string in the proc file. */ + VG_(free)(file_buf); + return False; + } + + if (VG_(strstr)(file_buf, "loongarch32") != NULL) + vai.hwcaps |= VEX_HWCAPS_LOONGARCH_ISA_32BIT; + if (VG_(strstr)(file_buf, "loongarch64") != NULL) + vai.hwcaps |= VEX_HWCAPS_LOONGARCH_ISA_64BIT; + + if (VG_(strstr)(file_buf, "cpucfg") != NULL) + vai.hwcaps |= VEX_HWCAPS_LOONGARCH_CPUCFG; + if (VG_(strstr)(file_buf, "lam") != NULL) + vai.hwcaps |= VEX_HWCAPS_LOONGARCH_LAM; + if (VG_(strstr)(file_buf, "ual") != NULL) + vai.hwcaps |= VEX_HWCAPS_LOONGARCH_UAL; + if (VG_(strstr)(file_buf, "fpu") != NULL) + vai.hwcaps |= VEX_HWCAPS_LOONGARCH_FP; + if (VG_(strstr)(file_buf, "lsx") != NULL) + vai.hwcaps |= VEX_HWCAPS_LOONGARCH_LSX; + if (VG_(strstr)(file_buf, "lasx") != NULL) + vai.hwcaps |= VEX_HWCAPS_LOONGARCH_LASX; + if (VG_(strstr)(file_buf, "complex") != NULL) + vai.hwcaps |= VEX_HWCAPS_LOONGARCH_COMPLEX; + if (VG_(strstr)(file_buf, "crypto") != NULL) + vai.hwcaps |= VEX_HWCAPS_LOONGARCH_CRYPTO; + if (VG_(strstr)(file_buf, "lvz") != NULL) + vai.hwcaps |= VEX_HWCAPS_LOONGARCH_LVZP; + if (VG_(strstr)(file_buf, "lbt_x86") != NULL) + vai.hwcaps |= VEX_HWCAPS_LOONGARCH_X86BT; + if (VG_(strstr)(file_buf, "lbt_arm") != NULL) + vai.hwcaps |= VEX_HWCAPS_LOONGARCH_ARMBT; + if (VG_(strstr)(file_buf, "lbt_mips") != NULL) + vai.hwcaps |= VEX_HWCAPS_LOONGARCH_MIPSBT; + + VG_(free)(file_buf); + return True; +} + +#endif /* defined(VGP_loongarch64) */ + Bool VG_(machine_get_hwcaps)( void ) { vg_assert(hwcaps_done == False); @@ -1949,6 +2088,54 @@ Bool VG_(machine_get_hwcaps)( void ) return True; } + +#elif defined(VGA_loongarch64) + { + va = VexArchLOONGARCH64; + vai.endness = VexEndnessLE; + vai.hwcaps = 0; + + if (!VG_(parse_cpuinfo)()) + return False; + + /* Same instruction set detection algorithm as for ppc32/arm... */ + vki_sigset_t saved_set, tmp_set; + vki_sigaction_fromK_t saved_sigill_act; + vki_sigaction_toK_t tmp_sigill_act; + + vg_assert(sizeof(vki_sigaction_fromK_t) == sizeof(vki_sigaction_toK_t)); + + VG_(sigemptyset)(&tmp_set); + VG_(sigaddset)(&tmp_set, VKI_SIGILL); + + Int r; + r = VG_(sigprocmask)(VKI_SIG_UNBLOCK, &tmp_set, &saved_set); + vg_assert(r == 0); + + r = VG_(sigaction)(VKI_SIGILL, NULL, &saved_sigill_act); + vg_assert(r == 0); + tmp_sigill_act = saved_sigill_act; + + /* NODEFER: signal handler does not return (from the kernel's point of + view), hence if it is to successfully catch a signal more than once, + we need the NODEFER flag. */ + tmp_sigill_act.sa_flags &= ~VKI_SA_RESETHAND; + tmp_sigill_act.sa_flags &= ~VKI_SA_SIGINFO; + tmp_sigill_act.sa_flags |= VKI_SA_NODEFER; + tmp_sigill_act.ksa_handler = handler_unsup_insn; + VG_(sigaction)(VKI_SIGILL, &tmp_sigill_act, NULL); + + VG_(convert_sigaction_fromK_to_toK)(&saved_sigill_act, &tmp_sigill_act); + VG_(sigaction)(VKI_SIGILL, &tmp_sigill_act, NULL); + VG_(sigprocmask)(VKI_SIG_SETMASK, &saved_set, NULL); + + VG_(debugLog)(1, "machine", "hwcaps = 0x%x\n", vai.hwcaps); + + VG_(machine_get_cache_info)(&vai); + + return True; + } + #else # error "Unknown arch" #endif @@ -2082,6 +2269,9 @@ Int VG_(machine_get_size_of_largest_guest_register) ( void ) # elif defined(VGA_mips64) return 8; +# elif defined(VGA_loongarch64) + return 8; + # else # error "Unknown arch" # endif @@ -2098,7 +2288,7 @@ void* VG_(fnptr_to_fnentry)( void* f ) || defined(VGP_s390x_linux) || defined(VGP_mips32_linux) \ || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \ || defined(VGP_x86_solaris) || defined(VGP_amd64_solaris) \ - || defined(VGP_nanomips_linux) + || defined(VGP_nanomips_linux) || defined(VGP_loongarch64_linux) return f; # elif defined(VGP_ppc64be_linux) /* ppc64-linux uses the AIX scheme, in which f is a pointer to a diff --git a/coregrind/m_main.c b/coregrind/m_main.c index c182fd9..72c546d 100644 --- a/coregrind/m_main.c +++ b/coregrind/m_main.c @@ -1428,6 +1428,7 @@ Int valgrind_main ( Int argc, HChar **argv, HChar **envp ) "AMD Athlon or above)\n"); VG_(printf)(" * AMD Athlon64/Opteron\n"); VG_(printf)(" * ARM (armv7)\n"); + VG_(printf)(" * LoongArch (3A5000 and above)\n"); VG_(printf)(" * MIPS (mips32 and above; mips64 and above)\n"); VG_(printf)(" * PowerPC (most; ppc405 and above)\n"); VG_(printf)(" * System z (64bit only - s390x; z990 and above)\n"); @@ -2449,6 +2450,11 @@ static void final_tidyup(ThreadId tid) VG_TRACK(post_reg_write, Vg_CoreClientReq, tid, offsetof(VexGuestS390XState, guest_r2), sizeof(VG_(threads)[tid].arch.vex.guest_r2)); +# elif defined(VGA_loongarch64) + VG_(threads)[tid].arch.vex.guest_R4 = to_run; + VG_TRACK(post_reg_write, Vg_CoreClientReq, tid, + offsetof(VexGuestLOONGARCH64State, guest_R4), + sizeof(VG_(threads)[tid].arch.vex.guest_R4)); #else I_die_here : architecture missing in m_main.c #endif @@ -2976,6 +2982,29 @@ asm( ".set pop \n\t" ".previous \n\t" ); +#elif defined(VGP_loongarch64_linux) +asm(" \n\t" + ".text \n\t" + ".globl _start \n\t" + ".type _start,@function \n\t" + "_start: \n\t" + /* t0 = &vgPlain_interim_stack + VG_STACK_GUARD_SZB + + VG_DEFAULT_STACK_ACTIVE_SZB */ + "la.local $t0, vgPlain_interim_stack \n\t" + "li.w $t1, "VG_STRINGIFY(VG_STACK_GUARD_SZB)" \n\t" + "add.d $t0, $t0, $t1 \n\t" + "li.w $t2, "VG_STRINGIFY(VG_DEFAULT_STACK_ACTIVE_SZB)" \n\t" + "add.d $t0, $t0, $t2 \n\t" + /* allocate 16 bytes on the new stack in t0, and aligned */ + "addi.d $t0, $t0, -16 \n\t" + "bstrins.d $t0, $zero, 3, 0 \n\t" + /* a0 = sp, sp = t0, and then call _start_in_C_linux */ + "move $a0, $sp \n\t" + "move $sp, $t0 \n\t" + "la.local $t0, _start_in_C_linux \n\t" + "jr $t0 \n\t" + ".previous \n\t" +); #else # error "Unknown linux platform" #endif @@ -3021,11 +3050,11 @@ void _start_in_C_linux ( UWord* pArgc ) # if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \ || defined(VGP_ppc64le_linux) || defined(VGP_arm64_linux) \ || defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \ - || defined(VGP_nanomips_linux) + || defined(VGP_nanomips_linux) || defined(VGP_loongarch64_linux) { - /* ppc32/ppc64, arm64, mips32/64 can be configured with different - page sizes. Determine this early. This is an ugly hack and really - should be moved into valgrind_main. */ + /* ppc32/ppc64, arm64, mips32/64, loongarch64 can be configured with + different page sizes. Determine this early. This is an ugly hack + and really should be moved into valgrind_main. */ UWord *sp = &pArgc[1+argc+1]; while (*sp++ != 0) ; diff --git a/coregrind/m_options.c b/coregrind/m_options.c index 10641d4..08a2535 100644 --- a/coregrind/m_options.c +++ b/coregrind/m_options.c @@ -194,7 +194,8 @@ UInt VG_(clo_unw_stack_scan_frames) = 5; VgSmc VG_(clo_smc_check) = Vg_SmcAllNonFile; #elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le) \ || defined(VGA_arm) || defined(VGA_arm64) \ - || defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_nanomips) + || defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_nanomips) \ + || defined(VGA_loongarch64) VgSmc VG_(clo_smc_check) = Vg_SmcStack; #else # error "Unknown arch" diff --git a/coregrind/m_redir.c b/coregrind/m_redir.c index 1a1117e..7075c17 100644 --- a/coregrind/m_redir.c +++ b/coregrind/m_redir.c @@ -1212,6 +1212,7 @@ Bool VG_(is_soname_ld_so) (const HChar *soname) if (VG_STREQ(soname, VG_U_LD_LINUX_AARCH64_SO_1)) return True; if (VG_STREQ(soname, VG_U_LD_LINUX_ARMHF_SO_3)) return True; if (VG_STREQ(soname, VG_U_LD_LINUX_MIPSN8_S0_1)) return True; + if (VG_STREQ(soname, VG_U_LD_LINUX_LOONGARCH_LP64D_SO_1)) return True; # elif defined(VGO_darwin) if (VG_STREQ(soname, VG_U_DYLD)) return True; # elif defined(VGO_solaris) @@ -1646,6 +1647,22 @@ void VG_(redir_initialise) ( void ) ); } +#elif defined(VGP_loongarch64_linux) + /* If we're using memcheck, use these intercepts right from + the start, otherwise ld.so makes a lot of noise. */ + if (0==VG_(strcmp)("Memcheck", VG_(details).name)) { + add_hardwired_spec( + "ld-linux-loongarch-lp64d.so.1", "strlen", + (Addr)&VG_(loongarch64_linux_REDIR_FOR_strlen), + complain_about_stripped_glibc_ldso + ); + add_hardwired_spec( + "ld-linux-loongarch-lp64d.so.1", "index", + (Addr)&VG_(loongarch64_linux_REDIR_FOR_index), + complain_about_stripped_glibc_ldso + ); + } + # elif defined(VGP_x86_solaris) /* If we're using memcheck, use these intercepts right from the start, otherwise ld.so makes a lot of noise. */ diff --git a/coregrind/m_scheduler/scheduler.c b/coregrind/m_scheduler/scheduler.c index 77f78eb..eade9df 100644 --- a/coregrind/m_scheduler/scheduler.c +++ b/coregrind/m_scheduler/scheduler.c @@ -276,6 +276,7 @@ const HChar* name_of_sched_event ( UInt event ) case VEX_TRC_JMP_SIGBUS: return "SIGBUS"; case VEX_TRC_JMP_SIGFPE_INTOVF: case VEX_TRC_JMP_SIGFPE_INTDIV: return "SIGFPE"; + case VEX_TRC_JMP_SIGSYS: return "SIGSYS"; case VEX_TRC_JMP_EMWARN: return "EMWARN"; case VEX_TRC_JMP_EMFAIL: return "EMFAIL"; case VEX_TRC_JMP_CLIENTREQ: return "CLIENTREQ"; @@ -1631,6 +1632,10 @@ VgSchedReturnCode VG_(scheduler) ( ThreadId tid ) VG_(synth_sigfpe)(tid, VKI_FPE_INTOVF); break; + case VEX_TRC_JMP_SIGSYS: + VG_(synth_sigsys)(tid); + break; + case VEX_TRC_JMP_NODECODE: { Addr addr = VG_(get_IP)(tid); @@ -1795,6 +1800,9 @@ void VG_(nuke_all_threads_except) ( ThreadId me, VgSchedReturnCode src ) #elif defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_nanomips) # define VG_CLREQ_ARGS guest_r12 # define VG_CLREQ_RET guest_r11 +#elif defined(VGA_loongarch64) +# define VG_CLREQ_ARGS guest_R12 +# define VG_CLREQ_RET guest_R11 #else # error Unknown arch #endif diff --git a/coregrind/m_sigframe/sigframe-loongarch64-linux.c b/coregrind/m_sigframe/sigframe-loongarch64-linux.c new file mode 100644 index 0000000..eda6c88 --- /dev/null +++ b/coregrind/m_sigframe/sigframe-loongarch64-linux.c @@ -0,0 +1,285 @@ + +/*--------------------------------------------------------------------*/ +/*--- Create/destroy signal delivery frames. ---*/ +/*--- sigframe-loongarch64-linux.c ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2021-2022 Loongson Technology Corporation Limited + + This program 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 2 of the + License, or (at your option) any later version. + + This program 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 this program; if not, see . + + The GNU General Public License is contained in the file COPYING. +*/ + +#if defined(VGP_loongarch64_linux) + +#include "pub_core_basics.h" +#include "pub_core_vki.h" +#include "pub_core_vkiscnums.h" +#include "pub_core_threadstate.h" +#include "pub_core_aspacemgr.h" +#include "pub_core_libcbase.h" +#include "pub_core_libcassert.h" +#include "pub_core_libcprint.h" +#include "pub_core_machine.h" +#include "pub_core_options.h" +#include "pub_core_sigframe.h" +#include "pub_core_signals.h" +#include "pub_core_tooliface.h" +#include "pub_core_trampoline.h" +#include "priv_sigframe.h" + + +/*------------------------------------------------------------*/ +/*--- Signal frame layouts ---*/ +/*------------------------------------------------------------*/ + +struct vg_sig_private { + UInt magicPI; + UInt sigNo_private; + VexGuestLOONGARCH64State vex_shadow1; + VexGuestLOONGARCH64State vex_shadow2; +}; + +struct rt_sigframe { + struct vki_siginfo rs_info; + struct vki_ucontext rs_uctx; + struct vg_sig_private priv; +}; + + +/*------------------------------------------------------------*/ +/*--- Creating signal frames ---*/ +/*------------------------------------------------------------*/ + +static void create_siginfo ( ThreadId tid, + struct rt_sigframe *frame, + const vki_siginfo_t *si) +{ + VG_TRACK(pre_mem_write, Vg_CoreSignal, tid, "signal frame siginfo", + (Addr)&frame->rs_info, sizeof(frame->rs_info)); + + VG_(memcpy)(&frame->rs_info, si, sizeof(vki_siginfo_t)); + + VG_TRACK(post_mem_write, Vg_CoreSignal, tid, + (Addr)&frame->rs_info, sizeof(frame->rs_info)); +} + +static void create_sigcontext ( ThreadState *tst, + struct vki_sigcontext **sc) +{ + struct vki_sigcontext *sctx = *sc; + + VG_TRACK(pre_mem_write, Vg_CoreSignal, tst->tid, "signal frame mcontext", + (Addr)sctx, sizeof(ULong) * 32); + + sctx->sc_regs[1] = tst->arch.vex.guest_R1; + sctx->sc_regs[2] = tst->arch.vex.guest_R2; + sctx->sc_regs[3] = tst->arch.vex.guest_R3; + sctx->sc_regs[4] = tst->arch.vex.guest_R4; + sctx->sc_regs[5] = tst->arch.vex.guest_R5; + sctx->sc_regs[6] = tst->arch.vex.guest_R6; + sctx->sc_regs[7] = tst->arch.vex.guest_R7; + sctx->sc_regs[8] = tst->arch.vex.guest_R8; + sctx->sc_regs[9] = tst->arch.vex.guest_R9; + sctx->sc_regs[10] = tst->arch.vex.guest_R10; + sctx->sc_regs[11] = tst->arch.vex.guest_R11; + sctx->sc_regs[12] = tst->arch.vex.guest_R12; + sctx->sc_regs[13] = tst->arch.vex.guest_R13; + sctx->sc_regs[14] = tst->arch.vex.guest_R14; + sctx->sc_regs[15] = tst->arch.vex.guest_R15; + sctx->sc_regs[16] = tst->arch.vex.guest_R16; + sctx->sc_regs[17] = tst->arch.vex.guest_R17; + sctx->sc_regs[18] = tst->arch.vex.guest_R18; + sctx->sc_regs[19] = tst->arch.vex.guest_R19; + sctx->sc_regs[20] = tst->arch.vex.guest_R20; + sctx->sc_regs[21] = tst->arch.vex.guest_R21; + sctx->sc_regs[22] = tst->arch.vex.guest_R22; + sctx->sc_regs[23] = tst->arch.vex.guest_R23; + sctx->sc_regs[24] = tst->arch.vex.guest_R24; + sctx->sc_regs[25] = tst->arch.vex.guest_R25; + sctx->sc_regs[26] = tst->arch.vex.guest_R26; + sctx->sc_regs[27] = tst->arch.vex.guest_R27; + sctx->sc_regs[28] = tst->arch.vex.guest_R28; + sctx->sc_regs[29] = tst->arch.vex.guest_R29; + sctx->sc_regs[30] = tst->arch.vex.guest_R30; + sctx->sc_regs[31] = tst->arch.vex.guest_R31; + sctx->sc_pc = tst->arch.vex.guest_PC; +} + +static void create_ucontext ( ThreadState *tst, + ThreadId tid, + struct vki_ucontext *uc, + const vki_sigset_t *mask, + struct vki_sigcontext **sc, + const vki_siginfo_t *siginfo) +{ + VG_TRACK(pre_mem_write, Vg_CoreSignal, tid, "signal frame ucontext", + (Addr)uc, offsetof(struct vki_ucontext, uc_mcontext)); + + uc->uc_flags = 0; + uc->uc_link = 0; + uc->uc_stack = tst->altstack; + uc->uc_sigmask = *mask; + + VG_TRACK(post_mem_write, Vg_CoreSignal, tid, (Addr)uc, + offsetof(struct vki_ucontext, uc_mcontext)); + + create_sigcontext(tst, sc); +} + +/* EXPORTED */ +void VG_(sigframe_create) ( ThreadId tid, + Bool on_altstack, + Addr sp_top_of_frame, + const vki_siginfo_t *siginfo, + const struct vki_ucontext *siguc, + void *handler, + UInt flags, + const vki_sigset_t *mask, + void *restorer ) +{ + UInt size = sizeof(struct rt_sigframe); + Addr sp = VG_ROUNDDN(sp_top_of_frame - size, 16); + + ThreadState *tst = VG_(get_ThreadState)(tid); + if (! ML_(sf_maybe_extend_stack)(tst, sp, size, flags)) + return; + + struct rt_sigframe *frame = (struct rt_sigframe *)sp; + create_siginfo(tid, frame, siginfo); + + struct vki_ucontext *uctx = &frame->rs_uctx; + struct vki_sigcontext *sctx = &(frame->rs_uctx.uc_mcontext); + create_ucontext(tst, tid, uctx, mask, &sctx, siginfo); + + /* + Arguments to signal handler: + + a0 = signal number + a1 = pointer to siginfo + a2 = pointer to ucontext + + csr_era point to the signal handler, $r3 (sp) points to + the struct rt_sigframe. + */ + + Int sigNo = siginfo->si_signo; + tst->arch.vex.guest_R4 = sigNo; + tst->arch.vex.guest_R5 = (Addr) &frame->rs_info; + tst->arch.vex.guest_R6 = (Addr) &frame->rs_uctx; + tst->arch.vex.guest_R3 = (Addr) frame; + tst->arch.vex.guest_R1 = (Addr) &VG_(loongarch64_linux_SUBST_FOR_rt_sigreturn); + + struct vg_sig_private *priv = &frame->priv; + priv->magicPI = 0x31415927; + priv->sigNo_private = sigNo; + priv->vex_shadow1 = tst->arch.vex_shadow1; + priv->vex_shadow2 = tst->arch.vex_shadow2; + + /* Set the thread so it will next run the handler. */ + VG_TRACK(post_reg_write, Vg_CoreSignal, tid, VG_O_STACK_PTR, sizeof(Addr)); + + if (VG_(clo_trace_signals)) + VG_(printf)("handler = %p\n", handler); + + tst->arch.vex.guest_PC = (Addr) handler; + /* This thread needs to be marked runnable, but we leave that + the caller to do. */ +} + + +/*------------------------------------------------------------*/ +/*--- Destroying signal frames ---*/ +/*------------------------------------------------------------*/ + +static void restore_regs ( ThreadState *tst, + struct vki_sigcontext *mc) +{ + tst->arch.vex.guest_R1 = mc->sc_regs[1]; + tst->arch.vex.guest_R2 = mc->sc_regs[2]; + tst->arch.vex.guest_R3 = mc->sc_regs[3]; + tst->arch.vex.guest_R4 = mc->sc_regs[4]; + tst->arch.vex.guest_R5 = mc->sc_regs[5]; + tst->arch.vex.guest_R6 = mc->sc_regs[6]; + tst->arch.vex.guest_R7 = mc->sc_regs[7]; + tst->arch.vex.guest_R8 = mc->sc_regs[8]; + tst->arch.vex.guest_R9 = mc->sc_regs[9]; + tst->arch.vex.guest_R10 = mc->sc_regs[10]; + tst->arch.vex.guest_R11 = mc->sc_regs[11]; + tst->arch.vex.guest_R12 = mc->sc_regs[12]; + tst->arch.vex.guest_R13 = mc->sc_regs[13]; + tst->arch.vex.guest_R14 = mc->sc_regs[14]; + tst->arch.vex.guest_R15 = mc->sc_regs[15]; + tst->arch.vex.guest_R16 = mc->sc_regs[16]; + tst->arch.vex.guest_R17 = mc->sc_regs[17]; + tst->arch.vex.guest_R18 = mc->sc_regs[18]; + tst->arch.vex.guest_R19 = mc->sc_regs[19]; + tst->arch.vex.guest_R20 = mc->sc_regs[20]; + tst->arch.vex.guest_R21 = mc->sc_regs[21]; + tst->arch.vex.guest_R22 = mc->sc_regs[22]; + tst->arch.vex.guest_R23 = mc->sc_regs[23]; + tst->arch.vex.guest_R24 = mc->sc_regs[24]; + tst->arch.vex.guest_R25 = mc->sc_regs[25]; + tst->arch.vex.guest_R26 = mc->sc_regs[26]; + tst->arch.vex.guest_R27 = mc->sc_regs[27]; + tst->arch.vex.guest_R28 = mc->sc_regs[28]; + tst->arch.vex.guest_R29 = mc->sc_regs[29]; + tst->arch.vex.guest_R30 = mc->sc_regs[30]; + tst->arch.vex.guest_R31 = mc->sc_regs[31]; + tst->arch.vex.guest_PC = mc->sc_pc; +} + +/* EXPORTED */ +void VG_(sigframe_destroy)( ThreadId tid, Bool isRT ) +{ + vg_assert(VG_(is_valid_tid)(tid)); + + ThreadState *tst = VG_(get_ThreadState)(tid); + Addr sp = tst->arch.vex.guest_R3; + struct rt_sigframe *frame = (struct rt_sigframe *)sp; + struct vki_ucontext *uc = &frame->rs_uctx; + + tst->sig_mask = uc->uc_sigmask; + tst->tmp_sig_mask = uc->uc_sigmask; + + struct vki_sigcontext *mc = &uc->uc_mcontext; + restore_regs(tst, mc); + + struct vg_sig_private *priv = &frame->priv; + vg_assert(priv->magicPI == 0x31415927); + tst->arch.vex_shadow1 = priv->vex_shadow1; + tst->arch.vex_shadow2 = priv->vex_shadow2; + + UInt frame_size = sizeof(*frame); + VG_TRACK(die_mem_stack_signal, sp, frame_size); + + if (VG_(clo_trace_signals)) + VG_(message)(Vg_DebugMsg, + "VG_(signal_return) (thread %u): isRT=%d valid magic; PC=%#llx\n", + tid, isRT, tst->arch.vex.guest_PC); + + Int sigNo = priv->sigNo_private; + VG_TRACK( post_deliver_signal, tid, sigNo ); +} + +#endif /* defined(VGP_loongarch64_linux) */ + +/*--------------------------------------------------------------------*/ +/*--- end sigframe-loongarch64-linux.c ---*/ +/*--------------------------------------------------------------------*/ diff --git a/coregrind/m_signals.c b/coregrind/m_signals.c index 720fb5f..119f775 100644 --- a/coregrind/m_signals.c +++ b/coregrind/m_signals.c @@ -588,6 +588,22 @@ typedef struct SigQueue { (srP)->misc.MIPS32.r28 = (uc)->uc_mcontext.sc_regs[28]; \ } +#elif defined(VGP_loongarch64_linux) +# define VG_UCONTEXT_INSTR_PTR(uc) (((uc)->uc_mcontext.sc_pc)) +# define VG_UCONTEXT_STACK_PTR(uc) ((uc)->uc_mcontext.sc_regs[3]) +# define VG_UCONTEXT_FRAME_PTR(uc) ((uc)->uc_mcontext.sc_regs[22]) +# define VG_UCONTEXT_SYSCALL_NUM(uc) ((uc)->uc_mcontext.sc_regs[11]) +# define VG_UCONTEXT_SYSCALL_SYSRES(uc) \ + /* Convert the value in uc_mcontext.regs[4] into a SysRes. */ \ + VG_(mk_SysRes_loongarch64_linux)((uc)->uc_mcontext.sc_regs[4]) + +# define VG_UCONTEXT_TO_UnwindStartRegs(srP, uc) \ + { (srP)->r_pc = (uc)->uc_mcontext.sc_pc; \ + (srP)->r_sp = (uc)->uc_mcontext.sc_regs[3]; \ + (srP)->misc.LOONGARCH64.r_fp = (uc)->uc_mcontext.sc_regs[22]; \ + (srP)->misc.LOONGARCH64.r_ra = (uc)->uc_mcontext.sc_regs[1]; \ + } + #elif defined(VGP_x86_solaris) # define VG_UCONTEXT_INSTR_PTR(uc) ((Addr)(uc)->uc_mcontext.gregs[VKI_EIP]) # define VG_UCONTEXT_STACK_PTR(uc) ((Addr)(uc)->uc_mcontext.gregs[VKI_UESP]) @@ -855,8 +871,10 @@ void calculate_SKSS_from_SCSS ( SKSS* dst ) /* always ask for SA_SIGINFO */ skss_flags |= VKI_SA_SIGINFO; +# if !defined(VGP_loongarch64_linux) /* use our own restorer */ skss_flags |= VKI_SA_RESTORER; +# endif /* Create SKSS entry for this signal. */ if (sig != VKI_SIGKILL && sig != VKI_SIGSTOP) @@ -1008,6 +1026,15 @@ extern void my_sigreturn(void); " li $t4, " #name "\n" \ " syscall[32]\n" \ ".previous\n" + +#elif defined(VGP_loongarch64_linux) +# define _MY_SIGRETURN(name) \ + ".text\n" \ + "my_sigreturn:\n" \ + " li.w $a7, " #name "\n" \ + " syscall 0\n" \ + ".previous\n" + #elif defined(VGP_x86_solaris) || defined(VGP_amd64_solaris) /* Not used on Solaris. */ # define _MY_SIGRETURN(name) \ @@ -1060,7 +1087,8 @@ static void handle_SCSS_change ( Bool force_update ) ksa.sa_flags = skss.skss_per_sig[sig].skss_flags; # if !defined(VGP_ppc32_linux) && \ !defined(VGP_x86_darwin) && !defined(VGP_amd64_darwin) && \ - !defined(VGP_mips32_linux) && !defined(VGO_solaris) + !defined(VGP_mips32_linux) && !defined(VGO_solaris) && \ + !defined(VGP_loongarch64_linux) ksa.sa_restorer = my_sigreturn; # endif /* Re above ifdef (also the assertion below), PaulM says: @@ -1107,7 +1135,8 @@ static void handle_SCSS_change ( Bool force_update ) # if !defined(VGP_ppc32_linux) && \ !defined(VGP_x86_darwin) && !defined(VGP_amd64_darwin) && \ !defined(VGP_mips32_linux) && !defined(VGP_mips64_linux) && \ - !defined(VGP_nanomips_linux) && !defined(VGO_solaris) + !defined(VGP_nanomips_linux) && !defined(VGO_solaris) && \ + !defined(VGP_loongarch64_linux) vg_assert(ksa_old.sa_restorer == my_sigreturn); # endif VG_(sigaddset)( &ksa_old.sa_mask, VKI_SIGKILL ); @@ -1228,7 +1257,7 @@ SysRes VG_(do_sys_sigaction) ( Int signo, old_act->sa_flags = scss.scss_per_sig[signo].scss_flags; old_act->sa_mask = scss.scss_per_sig[signo].scss_mask; # if !defined(VGP_x86_darwin) && !defined(VGP_amd64_darwin) && \ - !defined(VGO_solaris) + !defined(VGO_solaris) && !defined(VGP_loongarch64_linux) old_act->sa_restorer = scss.scss_per_sig[signo].scss_restorer; # endif } @@ -1241,7 +1270,7 @@ SysRes VG_(do_sys_sigaction) ( Int signo, scss.scss_per_sig[signo].scss_restorer = NULL; # if !defined(VGP_x86_darwin) && !defined(VGP_amd64_darwin) && \ - !defined(VGO_solaris) + !defined(VGO_solaris) && !defined(VGP_loongarch64_linux) scss.scss_per_sig[signo].scss_restorer = new_act->sa_restorer; # endif @@ -1598,7 +1627,7 @@ void VG_(kill_self)(Int sigNo) sa.ksa_handler = VKI_SIG_DFL; sa.sa_flags = 0; # if !defined(VGP_x86_darwin) && !defined(VGP_amd64_darwin) && \ - !defined(VGO_solaris) + !defined(VGO_solaris) && !defined(VGP_loongarch64_linux) sa.sa_restorer = 0; # endif VG_(sigemptyset)(&sa.sa_mask); @@ -2197,8 +2226,9 @@ void VG_(synth_sigtrap)(ThreadId tid) // Synthesise a SIGFPE. void VG_(synth_sigfpe)(ThreadId tid, UInt code) { -// Only tested on mips32, mips64, s390x and nanomips. -#if !defined(VGA_mips32) && !defined(VGA_mips64) && !defined(VGA_s390x) && !defined(VGA_nanomips) +// Only tested on mips32, mips64, s390x, nanomips and loongarch64. +#if !defined(VGA_mips32) && !defined(VGA_mips64) && !defined(VGA_s390x) \ + && !defined(VGA_nanomips) && !defined(VGA_loongarch64) vg_assert(0); #else vki_siginfo_t info; @@ -2220,6 +2250,30 @@ void VG_(synth_sigfpe)(ThreadId tid, UInt code) #endif } +// Synthesise a SIGSYS. +void VG_(synth_sigsys)(ThreadId tid) +{ +// Only tested on loongarch64-linux. +#if !defined(VGP_loongarch64_linux) + vg_assert(0); +#else + vki_siginfo_t info; + + vg_assert(VG_(threads)[tid].status == VgTs_Runnable); + + VG_(memset)(&info, 0, sizeof(info)); + info.si_signo = VKI_SIGSYS; + info.si_code = VKI_SI_KERNEL; + + if (VG_(gdbserver_report_signal) (&info, tid)) { + resume_scheduler(tid); + deliver_signal(tid, &info, NULL); + } + else + resume_scheduler(tid); +#endif +} + /* Make a signal pending for a thread, for later delivery. VG_(poll_signals) will arrange for it to be delivered at the right time. @@ -2944,7 +2998,7 @@ void pp_ksigaction ( vki_sigaction_toK_t* sa ) sa->ksa_handler, (UInt)sa->sa_flags, # if !defined(VGP_x86_darwin) && !defined(VGP_amd64_darwin) && \ - !defined(VGO_solaris) + !defined(VGO_solaris) && !defined(VGP_loongarch64_linux) sa->sa_restorer # else (void*)0 @@ -2967,7 +3021,7 @@ void VG_(set_default_handler)(Int signo) sa.ksa_handler = VKI_SIG_DFL; sa.sa_flags = 0; # if !defined(VGP_x86_darwin) && !defined(VGP_amd64_darwin) && \ - !defined(VGO_solaris) + !defined(VGO_solaris) && !defined(VGP_loongarch64_linux) sa.sa_restorer = 0; # endif VG_(sigemptyset)(&sa.sa_mask); @@ -3089,7 +3143,7 @@ void VG_(sigstartup_actions) ( void ) tsa.ksa_handler = (void *)sync_signalhandler; tsa.sa_flags = VKI_SA_SIGINFO; # if !defined(VGP_x86_darwin) && !defined(VGP_amd64_darwin) && \ - !defined(VGO_solaris) + !defined(VGO_solaris) && !defined(VGP_loongarch64_linux) tsa.sa_restorer = 0; # endif VG_(sigfillset)(&tsa.sa_mask); @@ -3117,7 +3171,7 @@ void VG_(sigstartup_actions) ( void ) scss.scss_per_sig[i].scss_restorer = NULL; # if !defined(VGP_x86_darwin) && !defined(VGP_amd64_darwin) && \ - !defined(VGO_solaris) + !defined(VGO_solaris) && !defined(VGP_loongarch64_linux) scss.scss_per_sig[i].scss_restorer = sa.sa_restorer; # endif diff --git a/coregrind/m_stacktrace.c b/coregrind/m_stacktrace.c index d26280c..e137e12 100644 --- a/coregrind/m_stacktrace.c +++ b/coregrind/m_stacktrace.c @@ -1479,6 +1479,100 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known, #endif +/* ---------------------- loongarch64 ----------------------- */ + +#if defined(VGP_loongarch64_linux) +UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known, + /*OUT*/Addr* ips, UInt max_n_ips, + /*OUT*/Addr* sps, /*OUT*/Addr* fps, + const UnwindStartRegs* startRegs, + Addr fp_max_orig ) +{ + Bool debug = False; + Int i; + Addr fp_max; + UInt n_found = 0; + const Int cmrf = VG_(clo_merge_recursive_frames); + + vg_assert(sizeof(Addr) == sizeof(UWord)); + vg_assert(sizeof(Addr) == sizeof(void*)); + + D3UnwindRegs uregs; + uregs.pc = startRegs->r_pc; + uregs.sp = startRegs->r_sp; + uregs.fp = startRegs->misc.LOONGARCH64.r_fp; + uregs.ra = startRegs->misc.LOONGARCH64.r_ra; + Addr fp_min = uregs.sp - VG_STACK_REDZONE_SZB; + + /* Snaffle IPs from the client's stack into ips[0 .. max_n_ips-1], + stopping when the trail goes cold, which we guess to be + when FP is not a reasonable stack location. */ + + fp_max = VG_PGROUNDUP(fp_max_orig); + if (fp_max >= sizeof(Addr)) + fp_max -= sizeof(Addr); + + if (debug) + VG_(printf)("\nmax_n_ips=%u fp_min=0x%lx fp_max_orig=0x%lx, " + "fp_max=0x%lx pc=0x%lx sp=0x%lx fp=0x%lx ra=0x%lx\n", + max_n_ips, fp_min, fp_max_orig, fp_max, + uregs.pc, uregs.sp, uregs.fp, uregs.ra); + + if (sps) sps[0] = uregs.sp; + if (fps) fps[0] = uregs.fp; + ips[0] = uregs.pc; + i = 1; + + /* Loop unwinding the stack, using CFI. */ + while (True) { + if (debug) + VG_(printf)("i: %d, pc: 0x%lx, sp: 0x%lx, fp: 0x%lx, ra: 0x%lx\n", + i, uregs.pc, uregs.sp, uregs.fp, uregs.ra); + if (i >= max_n_ips) + break; + + if (VG_(use_CF_info)( &uregs, fp_min, fp_max )) { + if (sps) sps[i] = uregs.sp; + if (fps) fps[i] = uregs.fp; + ips[i++] = uregs.pc - 1; + if (debug) + VG_(printf)( + "USING CFI: pc: 0x%lx, sp: 0x%lx, fp: 0x%lx, ra: 0x%lx\n", + uregs.pc, uregs.sp, uregs.fp, uregs.ra); + uregs.pc = uregs.pc - 1; + RECURSIVE_MERGE(cmrf,ips,i); + continue; + } + + /* A problem on the first frame? Lets assume it was a bad jump. + We will use the link register and the current stack and frame + pointers and see if we can use the CFI in the next round. */ + if (i == 1) { + uregs.pc = uregs.ra; + uregs.ra = 0; + + if (sps) sps[i] = uregs.sp; + if (fps) fps[i] = uregs.fp; + ips[i++] = uregs.pc - 1; + if (debug) + VG_(printf)( + "USING bad-jump: pc: 0x%lx, sp: 0x%lx, fp: 0x%lx, ra: 0x%lx\n", + uregs.pc, uregs.sp, uregs.fp, uregs.ra); + uregs.pc = uregs.pc - 1; + RECURSIVE_MERGE(cmrf,ips,i); + continue; + } + + /* No luck. We have to give up. */ + break; + } + + n_found = i; + return n_found; +} + +#endif + /*------------------------------------------------------------*/ /*--- ---*/ /*--- END platform-dependent unwinder worker functions ---*/ diff --git a/coregrind/m_syscall.c b/coregrind/m_syscall.c index 4053d40..364dcdc 100644 --- a/coregrind/m_syscall.c +++ b/coregrind/m_syscall.c @@ -186,6 +186,17 @@ SysRes VG_(mk_SysRes_arm64_linux) ( Long val ) { return res; } +SysRes VG_(mk_SysRes_loongarch64_linux) ( UWord val ) { + SysRes res; + res._isError = val >= -4095 && val <= -1; + if (res._isError) { + res._val = (UWord)(-val); + } else { + res._val = (UWord)val; + } + return res; +} + /* Generic constructors. */ SysRes VG_(mk_SysRes_Success) ( UWord res ) { SysRes r; @@ -864,6 +875,22 @@ asm ( ".previous \n\t" ); +#elif defined(VGP_loongarch64_linux) +extern UWord do_syscall_WRK (UWord a1, UWord a2, UWord a3, /* $a0, $a1, $a2 */ + UWord a4, UWord a5, UWord a6, /* $a3, $a4, $a5 */ + UWord syscall_no); /* $a6 */ +asm ( + ".text \n\t" + ".globl do_syscall_WRK \n\t" + ".type do_syscall_WRK, @function \n\t" + "do_syscall_WRK: \n\t" + " move $a7, $a6 \n\t" /* a7 = syscall_no */ + " syscall 0 \n\t" + " jr $ra \n\t" + ".size do_syscall_WRK, .-do_syscall_WRK \n\t" + ".previous \n\t" +); + #elif defined(VGP_x86_solaris) extern ULong @@ -1084,6 +1111,11 @@ SysRes VG_(do_syscall) ( UWord sysno, RegWord a1, RegWord a2, RegWord a3, do_syscall_WRK(a1, a2, a3, a4, a5, a6, sysno, ®_a0); return VG_(mk_SysRes_nanomips_linux)(reg_a0); +#elif defined(VGP_loongarch64_linux) + UWord val = 0; + val = do_syscall_WRK(a1, a2, a3, a4, a5, a6, sysno); + return VG_(mk_SysRes_loongarch64_linux)(val); + # elif defined(VGP_x86_solaris) UInt val, val2, err = False; Bool restart; diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h index 349a97e..9cb70f4 100644 --- a/coregrind/m_syswrap/priv_syswrap-linux.h +++ b/coregrind/m_syswrap/priv_syswrap-linux.h @@ -492,6 +492,13 @@ extern UInt do_syscall_clone_nanomips_linux ( Word (*fn) (void *), /* a0 - 4 */ Int* child_tid, /* a4 - 8 */ Int* parent_tid, /* a5 - 9 */ void* tls_ptr); /* a6 - 10 */ +extern UInt do_syscall_clone_loongarch64_linux ( Word (*fn) (void *), /* a0 */ + void* stack, /* a1 */ + Int flags, /* a2 */ + void* arg, /* a3 */ + Int* child_tid, /* a4 */ + Int* parent_tid, /* a5 */ + void* tls_ptr); /* a6 */ #endif // __PRIV_SYSWRAP_LINUX_H /*--------------------------------------------------------------------*/ diff --git a/coregrind/m_syswrap/priv_types_n_macros.h b/coregrind/m_syswrap/priv_types_n_macros.h index 014db76..bb578c2 100644 --- a/coregrind/m_syswrap/priv_types_n_macros.h +++ b/coregrind/m_syswrap/priv_types_n_macros.h @@ -92,7 +92,8 @@ typedef || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \ || defined(VGP_arm_linux) || defined(VGP_s390x_linux) \ || defined(VGP_arm64_linux) \ - || defined(VGP_nanomips_linux) + || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) Int o_arg1; Int o_arg2; Int o_arg3; diff --git a/coregrind/m_syswrap/syscall-loongarch64-linux.S b/coregrind/m_syswrap/syscall-loongarch64-linux.S new file mode 100644 index 0000000..5c18041 --- /dev/null +++ b/coregrind/m_syswrap/syscall-loongarch64-linux.S @@ -0,0 +1,143 @@ + +/*--------------------------------------------------------------------*/ +/*--- Support for doing system calls. syscall-loongarch64-linux.S ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2021-2022 Loongson Technology Corporation Limited + + This program 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 2 of the + License, or (at your option) any later version. + + This program 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 this program; if not, see . + + The GNU General Public License is contained in the file COPYING. +*/ + +#include "pub_core_basics_asm.h" + +#if defined(VGP_loongarch64_linux) + +#include "pub_core_vkiscnums_asm.h" +#include "libvex_guest_offsets.h" + +/*----------------------------------------------------------------*/ +/* + Perform a syscall for the client. This will run a syscall + with the client's specific per-thread signal mask. + + The structure of this function is such that, if the syscall is + interrupted by a signal, we can determine exactly what + execution state we were in with respect to the execution of + the syscall by examining the value of PC in the signal + handler. This means that we can always do the appropriate + thing to precisely emulate the kernel's signal/syscall + interactions. + + The syscall number is taken from the argument, even though it + should also be in guest_state->guest_R11. The syscall result + is written back to guest_state->guest_R4 on completion. + + VG_(fixup_guest_state_after_syscall_interrupted) does the + thread state fixup in the case where we were interrupted by a + signal. + + Prototype: + + UWord ML_(do_syscall_for_client_WRK)( + Int syscallno, // $r4 - a0 + void* guest_state, // $r5 - a1 + const vki_sigset_t *sysmask, // $r6 - a2 + const vki_sigset_t *postmask, // $r7 - a3 + Int nsigwords) // $r8 - a4 +*/ + +/* from vki-loongarch64-linux.h */ +#define VKI_SIG_SETMASK 2 + +.globl ML_(do_syscall_for_client_WRK) +ML_(do_syscall_for_client_WRK): + + /* Save regs on stack */ + addi.d $sp, $sp, -24 + st.d $a1, $sp, 0 /* guest_state */ + st.d $a3, $sp, 8 /* postmask */ + st.d $a4, $sp, 16 /* sigsetSzB */ + +1: li.w $a7, __NR_rt_sigprocmask + li.w $a0, VKI_SIG_SETMASK + move $a1, $a2 /* syscall_mask */ + move $a2, $a3 /* postmask */ + move $a3, $a4 /* sigsetSzB */ + syscall 0 + + bnez $a0, 5f + + /* Actually do the client syscall */ + ld.d $a6, $sp, 0 /* guest_state */ + + ld.d $a0, $a6, OFFSET_loongarch64_R4 /* a0 */ + ld.d $a1, $a6, OFFSET_loongarch64_R5 /* a1 */ + ld.d $a2, $a6, OFFSET_loongarch64_R6 /* a2 */ + ld.d $a3, $a6, OFFSET_loongarch64_R7 /* a3 */ + ld.d $a4, $a6, OFFSET_loongarch64_R8 /* a4 */ + ld.d $a5, $a6, OFFSET_loongarch64_R9 /* a5 */ + + ld.d $a7, $a6, OFFSET_loongarch64_R11 /* syscallno */ + +2: syscall 0 + + /* Saving return values into guest state */ +3: st.d $a0, $a6, OFFSET_loongarch64_R4 /* a0 */ + +4: li.w $a7, __NR_rt_sigprocmask + li.w $a0, VKI_SIG_SETMASK + ld.d $a1, $sp, 8 /* postmask */ + move $a2, $zero /* 0 (zero) */ + ld.d $a3, $sp, 16 /* sigsetSzB */ + syscall 0 + + beqz $a0, 6f + +5: /* error */ + li.w $a0, 0x8000 + +6: /* Restore sp and return */ + addi.d $sp, $sp, 24 + jr $ra + +.section .rodata +/* export the ranges so that + VG_(fixup_guest_state_after_syscall_interrupted) can do the + right thing */ + +.globl ML_(blksys_setup) +.globl ML_(blksys_restart) +.globl ML_(blksys_complete) +.globl ML_(blksys_committed) +.globl ML_(blksys_finished) +ML_(blksys_setup): .quad 1b +ML_(blksys_restart): .quad 2b +ML_(blksys_complete): .quad 3b +ML_(blksys_committed): .quad 4b +ML_(blksys_finished): .quad 5b + +#endif // defined(VGP_loongarch64_linux) + +/* Let the linker know we don't need an executable stack */ +MARK_STACK_NO_EXEC + +/*--------------------------------------------------------------------*/ +/*--- end syscall-loongarch64-linux.S ---*/ +/*--------------------------------------------------------------------*/ diff --git a/coregrind/m_syswrap/syswrap-generic.c b/coregrind/m_syswrap/syswrap-generic.c index 280c48f..1c17927 100644 --- a/coregrind/m_syswrap/syswrap-generic.c +++ b/coregrind/m_syswrap/syswrap-generic.c @@ -3317,7 +3317,7 @@ POST(sys_newfstat) #endif #if !defined(VGO_solaris) && !defined(VGP_arm64_linux) && \ - !defined(VGP_nanomips_linux) + !defined(VGP_nanomips_linux) && !defined(VGP_loongarch64_linux) static vki_sigset_t fork_saved_mask; // In Linux, the sys_fork() function varies across architectures, but we diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index b32bd21..c4ab70b 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -309,6 +309,16 @@ static void run_a_thread_NORETURN ( Word tidW ) : "r" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode) : "memory" , "$t4", "$a0" ); +#elif defined(VGP_loongarch64_linux) + asm volatile ( + "st.w %1, %0 \n\t" /* set tst->status = VgTs_Empty */ + "li.w $a7, %2 \n\t" /* set a7 = __NR_exit */ + "ld.w $a0, %3 \n\t" /* set a0 = tst->os_state.exitcode */ + "syscall 0 \n\t" /* exit(tst->os_state.exitcode) */ + : "=m" (tst->status) + : "r" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode) + : "memory", "a0", "a7" + ); #else # error Unknown platform #endif @@ -533,6 +543,13 @@ static SysRes clone_new_thread ( Word (*fn)(void *), (ML_(start_thread_NORETURN), stack, flags, ctst, child_tidptr, parent_tidptr, NULL); res = VG_ (mk_SysRes_nanomips_linux) (ret); +#elif defined(VGP_loongarch64_linux) + UInt ret = 0; + ctst->arch.vex.guest_R4 = 0; + ret = do_syscall_clone_loongarch64_linux + (ML_(start_thread_NORETURN), stack, flags, ctst, + child_tidptr, parent_tidptr, NULL); + res = VG_(mk_SysRes_loongarch64_linux)(ret); #else # error Unknown platform #endif @@ -595,6 +612,8 @@ static SysRes setup_child_tls (ThreadId ctid, Addr tlsaddr) #elif defined(VGP_mips32_linux) || defined(VGP_nanomips_linux) ctst->arch.vex.guest_ULR = tlsaddr; ctst->arch.vex.guest_r27 = tlsaddr; +#elif defined(VGP_loongarch64_linux) + ctst->arch.vex.guest_R2 = tlsaddr; #else # error Unknown platform #endif @@ -753,7 +772,7 @@ static SysRes ML_(do_fork_clone) ( ThreadId tid, UInt flags, || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \ || defined(VGP_arm_linux) || defined(VGP_mips32_linux) \ || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \ - || defined(VGP_nanomips_linux) + || defined(VGP_nanomips_linux) || defined(VGP_loongarch64_linux) res = VG_(do_syscall5)( __NR_clone, flags, (UWord)NULL, (UWord)parent_tidptr, (UWord)NULL, (UWord)child_tidptr ); @@ -826,7 +845,8 @@ PRE(sys_clone) #define PRA_CHILD_TIDPTR PRA5 #define ARG_TLS ARG4 #define PRA_TLS PRA4 -#elif defined(VGP_amd64_linux) || defined(VGP_s390x_linux) +#elif defined(VGP_amd64_linux) || defined(VGP_s390x_linux) \ + || defined(VGP_loongarch64_linux) #define ARG_CHILD_TIDPTR ARG4 #define PRA_CHILD_TIDPTR PRA4 #define ARG_TLS ARG5 @@ -4240,9 +4260,11 @@ PRE(sys_sigaction) PRE_MEM_READ( "sigaction(act->sa_handler)", (Addr)&sa->ksa_handler, sizeof(sa->ksa_handler)); PRE_MEM_READ( "sigaction(act->sa_mask)", (Addr)&sa->sa_mask, sizeof(sa->sa_mask)); PRE_MEM_READ( "sigaction(act->sa_flags)", (Addr)&sa->sa_flags, sizeof(sa->sa_flags)); +#if !defined(VGP_loongarch64_linux) if (ML_(safe_to_deref)(sa,sizeof(struct vki_old_sigaction)) && (sa->sa_flags & VKI_SA_RESTORER)) PRE_MEM_READ( "sigaction(act->sa_restorer)", (Addr)&sa->sa_restorer, sizeof(sa->sa_restorer)); +#endif } if (ARG3 != 0) { @@ -4272,7 +4294,9 @@ PRE(sys_sigaction) new.ksa_handler = oldnew->ksa_handler; new.sa_flags = oldnew->sa_flags; +#if !defined(VGP_loongarch64_linux) new.sa_restorer = oldnew->sa_restorer; +#endif convert_sigset_to_rt(&oldnew->sa_mask, &new.sa_mask); newp = &new; } @@ -4285,7 +4309,9 @@ PRE(sys_sigaction) oldold->ksa_handler = oldp->ksa_handler; oldold->sa_flags = oldp->sa_flags; +#if !defined(VGP_loongarch64_linux) oldold->sa_restorer = oldp->sa_restorer; +#endif oldold->sa_mask = oldp->sa_mask.sig[0]; } } @@ -4358,10 +4384,13 @@ PRE(sys_rt_sigaction) PRE_MEM_READ( "rt_sigaction(act->sa_handler)", (Addr)&sa->ksa_handler, sizeof(sa->ksa_handler)); PRE_MEM_READ( "rt_sigaction(act->sa_mask)", (Addr)&sa->sa_mask, sizeof(sa->sa_mask)); PRE_MEM_READ( "rt_sigaction(act->sa_flags)", (Addr)&sa->sa_flags, sizeof(sa->sa_flags)); +#if !defined(VGP_loongarch64_linux) if (ML_(safe_to_deref)(sa,sizeof(vki_sigaction_toK_t)) && (sa->sa_flags & VKI_SA_RESTORER)) PRE_MEM_READ( "rt_sigaction(act->sa_restorer)", (Addr)&sa->sa_restorer, sizeof(sa->sa_restorer)); +#endif } + if (ARG3 != 0) PRE_MEM_WRITE( "rt_sigaction(oldact)", ARG3, sizeof(vki_sigaction_fromK_t)); @@ -6672,7 +6701,8 @@ POST(sys_lookup_dcookie) #endif #if defined(VGP_amd64_linux) || defined(VGP_s390x_linux) \ - || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) + || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) PRE(sys_lookup_dcookie) { *flags |= SfMayBlock; diff --git a/coregrind/m_syswrap/syswrap-loongarch64-linux.c b/coregrind/m_syswrap/syswrap-loongarch64-linux.c new file mode 100644 index 0000000..c684112 --- /dev/null +++ b/coregrind/m_syswrap/syswrap-loongarch64-linux.c @@ -0,0 +1,644 @@ + +/*---------------------------------------------------------------------*/ +/*--- Platform-specific syscalls stuff. syswrap-loongarch64-linux.c ---*/ +/*---------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2021-2022 Loongson Technology Corporation Limited + + This program 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 2 of the + License, or (at your option) any later version. + + This program 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 this program; if not, see . + + The GNU General Public License is contained in the file COPYING. +*/ + +#if defined(VGP_loongarch64_linux) + +#include "pub_core_basics.h" +#include "pub_core_vki.h" +#include "pub_core_vkiscnums.h" +#include "pub_core_threadstate.h" +#include "pub_core_aspacemgr.h" +#include "pub_core_libcbase.h" +#include "pub_core_libcassert.h" +#include "pub_core_libcprint.h" +#include "pub_core_libcsignal.h" +#include "pub_core_options.h" +#include "pub_core_scheduler.h" +#include "pub_core_sigframe.h" // For VG_(sigframe_destroy)() +#include "pub_core_syscall.h" +#include "pub_core_syswrap.h" +#include "pub_core_tooliface.h" + +#include "priv_types_n_macros.h" +#include "priv_syswrap-generic.h" /* for decls of generic wrappers */ +#include "priv_syswrap-linux.h" /* for decls of linux-ish wrappers */ +#include "priv_syswrap-main.h" + + +/* --------------------------------------------------------------------- + clone() handling + ------------------------------------------------------------------ */ + +/* Call f(arg1), but first switch stacks, using 'stack' as the new + stack, and use 'retaddr' as f's return-to address. Also, clear all + the integer registers before entering f. */ +__attribute__((noreturn)) +void ML_(call_on_new_stack_0_1) ( Addr stack, + Addr retaddr, + void (*f) (Word), + Word arg1 ); +asm ( +".text\n" +".globl vgModuleLocal_call_on_new_stack_0_1 \n\t" +"vgModuleLocal_call_on_new_stack_0_1: \n\t" +" move $sp, $a0 \n\t" /* sp = stack */ +" move $ra, $a1 \n\t" /* ra = retaddr */ +" move $t0, $a2 \n\t" /* t0 = f */ +" move $a0, $a3 \n\t" /* a0 = arg1 */ +" move $a1, $zero \n\t" /* zero all GP regs */ +" move $a2, $zero \n\t" +" move $a3, $zero \n\t" +" move $a4, $zero \n\t" +" move $a5, $zero \n\t" +" move $a6, $zero \n\t" +" move $a7, $zero \n\t" +/* don't zero out t0 */ +" move $t1, $zero \n\t" +" move $t2, $zero \n\t" +" move $t3, $zero \n\t" +" move $t4, $zero \n\t" +" move $t5, $zero \n\t" +" move $t6, $zero \n\t" +" move $t7, $zero \n\t" +" move $t8, $zero \n\t" +" jr $t0 \n\t" /* jump to f */ +".previous \n\t" +); + +/* + Perform a clone system call. clone is strange because it has + fork()-like return-twice semantics, so it needs special + handling here. + + Upon entry, we have: + + Word (*fn)(void*) in a0 + void* child_stack in a1 + int flags in a2 + void* arg in a3 + pid_t* child_tid in a4 + pid_t* parent_tid in a5 + void* tls_ptr in a6 + + System call requires: + + unsigned long clone_flags in a0 + unsigned long newsp in a1 + int* parent_tidptr in a2 + int* child_tidptr in a3 + unsigned long tls in a4 + int __NR_clone in a7 +*/ + +#define __NR_CLONE VG_STRINGIFY(__NR_clone) +#define __NR_EXIT VG_STRINGIFY(__NR_exit) + +// See priv_syswrap-linux.h for arg profile. +asm( +".text \n\t" +".globl do_syscall_clone_loongarch64_linux \n\t" +"do_syscall_clone_loongarch64_linux: \n\t" +/* Save ra */ +" addi.d $sp, $sp, -16 \n\t" +" st.d $ra, $sp, 0 \n\t" + +/* Save fn and arg */ +" addi.d $a1, $a1, -16 \n\t" +" st.d $a0, $a1, 0 \n\t" /* fn */ +" st.d $a3, $a1, 8 \n\t" /* arg */ + +/* Call sys_clone */ +" move $a0, $a2 \n\t" /* flags */ +" move $a2, $a5 \n\t" /* parent */ +" move $a3, $a4 \n\t" /* child */ +" move $a4, $a6 \n\t" /* tls */ +" li.w $a7, " __NR_CLONE " \n\t" +" syscall 0 \n\t" + +/* If we are a child? */ +" bnez $a0, 1f \n\t" + +/* Restore fn and arg */ +" ld.d $a1, $sp, 0 \n\t" /* fn */ +" ld.d $a0, $sp, 8 \n\t" /* arg */ + +/* Call fn(arg) */ +" jr $a1 \n\t" + +/* Call exit(a0) */ +" li.w $a7, " __NR_EXIT" \n\t" +" syscall 0 \n\t" + +/* If we are parent or error, just return to caller */ +"1: \n\t" +" ld.d $ra, $sp, 0 \n\t" +" addi.d $sp, $sp, 16 \n\t" +" jr $ra \n\t" +".previous \n\t" +); + +#undef __NR_CLONE +#undef __NR_EXIT + +/* --------------------------------------------------------------------- + More thread stuff + ------------------------------------------------------------------ */ + +// loongarch64 doesn't have any architecture specific thread stuff that +// needs to be cleaned up +void VG_(cleanup_thread) ( ThreadArchState* arch ) +{ +} + +/* --------------------------------------------------------------------- + PRE/POST wrappers for loongarch64/Linux-specific syscalls + ------------------------------------------------------------------ */ + +#define PRE(name) DEFN_PRE_TEMPLATE(loongarch64_linux, name) +#define POST(name) DEFN_POST_TEMPLATE(loongarch64_linux, name) + +/* Add prototypes for the wrappers declared here, so that gcc doesn't + harass us for not having prototypes. Really this is a kludge -- + the right thing to do is to make these wrappers 'static' since they + aren't visible outside this file, but that requires even more macro + magic. */ +DECL_TEMPLATE(loongarch64_linux, sys_ptrace); +DECL_TEMPLATE(loongarch64_linux, sys_mmap); +DECL_TEMPLATE(loongarch64_linux, sys_rt_sigreturn); + +PRE(sys_ptrace) +{ + PRINT("sys_ptrace ( %ld, %ld, %lx, %lx )", + SARG1, SARG2, ARG3, ARG4); + PRE_REG_READ4(int, "ptrace", + long, request, + long, pid, + unsigned long, addr, + unsigned long, data); + switch (ARG1) { + case VKI_PTRACE_PEEKTEXT: + case VKI_PTRACE_PEEKDATA: + case VKI_PTRACE_PEEKUSR: + PRE_MEM_WRITE("ptrace(peek)", ARG4, sizeof(long)); + break; + case VKI_PTRACE_GETEVENTMSG: + PRE_MEM_WRITE("ptrace(geteventmsg)", ARG4, sizeof(unsigned long)); + break; + case VKI_PTRACE_GETSIGINFO: + PRE_MEM_WRITE("ptrace(getsiginfo)", ARG4, sizeof(vki_siginfo_t)); + break; + case VKI_PTRACE_SETSIGINFO: + PRE_MEM_READ("ptrace(setsiginfo)", ARG4, sizeof(vki_siginfo_t)); + break; + case VKI_PTRACE_GETREGSET: + ML_(linux_PRE_getregset)(tid, ARG3, ARG4); + break; + default: + break; + } +} + +POST(sys_ptrace) +{ + switch (ARG1) { + case VKI_PTRACE_TRACEME: + ML_(linux_POST_traceme)(tid); + break; + case VKI_PTRACE_PEEKTEXT: + case VKI_PTRACE_PEEKDATA: + case VKI_PTRACE_PEEKUSR: + POST_MEM_WRITE (ARG4, sizeof(long)); + break; + case VKI_PTRACE_GETEVENTMSG: + POST_MEM_WRITE (ARG4, sizeof(unsigned long)); + break; + case VKI_PTRACE_GETSIGINFO: + POST_MEM_WRITE (ARG4, sizeof(vki_siginfo_t)); + break; + case VKI_PTRACE_GETREGSET: + ML_(linux_POST_getregset)(tid, ARG3, ARG4); + break; + default: + break; + } +} + +PRE(sys_mmap) +{ + SysRes r; + + PRINT("sys_mmap ( %#lx, %lu, %lu, %#lx, %lu, %lu )", + ARG1, ARG2, ARG3, ARG4, ARG5, ARG6 ); + PRE_REG_READ6(long, "mmap", + unsigned long, addr, unsigned long, len, + unsigned long, prot, unsigned long, flags, + unsigned long, fd, vki_off_t, offset); + + r = ML_(generic_PRE_sys_mmap)( tid, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6 ); + SET_STATUS_from_SysRes(r); +} + +PRE(sys_rt_sigreturn) +{ + /* See comments on PRE(sys_rt_sigreturn) in syswrap-loongarch64-linux.c for + an explanation of what follows. */ + ThreadState* tst; + PRINT("rt_sigreturn ( )"); + + vg_assert(VG_(is_valid_tid)(tid)); + vg_assert(tid >= 1 && tid < VG_N_THREADS); + vg_assert(VG_(is_running_thread)(tid)); + + tst = VG_(get_ThreadState)(tid); + + /* This is only so that the PC is (might be) useful to report if + something goes wrong in the sigreturn */ + ML_(fixup_guest_state_to_restart_syscall)(&tst->arch); + + /* Restore register state from frame and remove it */ + VG_(sigframe_destroy)(tid, True); + + /* Tell the driver not to update the guest state with the "result", + and set a bogus result to keep it happy. */ + *flags |= SfNoWriteResult; + SET_STATUS_Success(0); + + /* Check to see if any signals arose as a result of this. */ + *flags |= SfPollAfter; +} + +#undef PRE +#undef POST + +/* --------------------------------------------------------------------- + The loongarch64/Linux syscall table + ------------------------------------------------------------------ */ + +#define PLAX_(sysno, name) WRAPPER_ENTRY_X_(loongarch64_linux, sysno, name) +#define PLAXY(sysno, name) WRAPPER_ENTRY_XY(loongarch64_linux, sysno, name) + +// This table maps from __NR_xxx syscall numbers (from +// linux/include/uapi/asm-generic/unistd.h) to the appropriate PRE/POST +// sys_foo() wrappers on loongarch64 (as per sys_call_table in +// linux/arch/loongarch/kernel/syscall.c). +// +// For those syscalls not handled by Valgrind, the annotation indicate its +// arch/OS combination, eg. */* (generic), */Linux (Linux only), ?/? +// (unknown). + +static SyscallTableEntry syscall_main_table[] = { + LINXY(__NR_io_setup, sys_io_setup), // 0 + LINX_(__NR_io_destroy, sys_io_destroy), // 1 + LINX_(__NR_io_submit, sys_io_submit), // 2 + LINXY(__NR_io_cancel, sys_io_cancel), // 3 + LINXY(__NR_io_getevents, sys_io_getevents), // 4 + LINX_(__NR_setxattr, sys_setxattr), // 5 + LINX_(__NR_lsetxattr, sys_lsetxattr), // 6 + LINX_(__NR_fsetxattr, sys_fsetxattr), // 7 + LINXY(__NR_getxattr, sys_getxattr), // 8 + LINXY(__NR_lgetxattr, sys_lgetxattr), // 9 + LINXY(__NR_fgetxattr, sys_fgetxattr), // 10 + LINXY(__NR_listxattr, sys_listxattr), // 11 + LINXY(__NR_llistxattr, sys_llistxattr), // 12 + LINXY(__NR_flistxattr, sys_flistxattr), // 13 + LINX_(__NR_removexattr, sys_removexattr), // 14 + LINX_(__NR_lremovexattr, sys_lremovexattr), // 15 + LINX_(__NR_fremovexattr, sys_fremovexattr), // 16 + GENXY(__NR_getcwd, sys_getcwd), // 17 + LINXY(__NR_lookup_dcookie, sys_lookup_dcookie), // 18 + LINXY(__NR_eventfd2, sys_eventfd2), // 19 + LINXY(__NR_epoll_create1, sys_epoll_create1), // 20 + LINX_(__NR_epoll_ctl, sys_epoll_ctl), // 21 + LINXY(__NR_epoll_pwait, sys_epoll_pwait), // 22 + GENXY(__NR_dup, sys_dup), // 23 + LINXY(__NR_dup3, sys_dup3), // 24 + LINXY(__NR3264_fcntl, sys_fcntl), // 25 + LINXY(__NR_inotify_init1, sys_inotify_init1), // 26 + LINX_(__NR_inotify_add_watch, sys_inotify_add_watch), // 27 + LINX_(__NR_inotify_rm_watch, sys_inotify_rm_watch), // 28 + LINXY(__NR_ioctl, sys_ioctl), // 29 + LINX_(__NR_ioprio_set, sys_ioprio_set), // 30 + LINX_(__NR_ioprio_get, sys_ioprio_get), // 31 + GENX_(__NR_flock, sys_flock), // 32 + LINX_(__NR_mknodat, sys_mknodat), // 33 + LINX_(__NR_mkdirat, sys_mkdirat), // 34 + LINX_(__NR_unlinkat, sys_unlinkat), // 35 + LINX_(__NR_symlinkat, sys_symlinkat), // 36 + LINX_(__NR_linkat, sys_linkat), // 37 + // (__NR_renameat, sys_renameat), // 38 + LINX_(__NR_umount2, sys_umount), // 39 + LINX_(__NR_mount, sys_mount), // 40 + LINX_(__NR_pivot_root, sys_pivot_root), // 41 + // (__NR_nfsservctl, sys_ni_syscall), // 42 + GENXY(__NR3264_statfs, sys_statfs), // 43 + GENXY(__NR3264_fstatfs, sys_fstatfs), // 44 + GENX_(__NR3264_truncate, sys_truncate), // 45 + GENX_(__NR3264_ftruncate, sys_ftruncate), // 46 + LINX_(__NR_fallocate, sys_fallocate), // 47 + LINX_(__NR_faccessat, sys_faccessat), // 48 + GENX_(__NR_chdir, sys_chdir), // 49 + GENX_(__NR_fchdir, sys_fchdir), // 50 + GENX_(__NR_chroot, sys_chroot), // 51 + GENX_(__NR_fchmod, sys_fchmod), // 52 + LINX_(__NR_fchmodat, sys_fchmodat), // 53 + LINX_(__NR_fchownat, sys_fchownat), // 54 + GENX_(__NR_fchown, sys_fchown), // 55 + LINXY(__NR_openat, sys_openat), // 56 + GENXY(__NR_close, sys_close), // 57 + LINX_(__NR_vhangup, sys_vhangup), // 58 + LINXY(__NR_pipe2, sys_pipe2), // 59 + LINX_(__NR_quotactl, sys_quotactl), // 60 + GENXY(__NR_getdents64, sys_getdents64), // 61 + LINX_(__NR3264_lseek, sys_lseek), // 62 + GENXY(__NR_read, sys_read), // 63 + GENX_(__NR_write, sys_write), // 64 + GENXY(__NR_readv, sys_readv), // 65 + GENX_(__NR_writev, sys_writev), // 66 + GENXY(__NR_pread64, sys_pread64), // 67 + GENX_(__NR_pwrite64, sys_pwrite64), // 68 + LINXY(__NR_preadv, sys_preadv), // 69 + LINX_(__NR_pwritev, sys_pwritev), // 70 + LINXY(__NR3264_sendfile, sys_sendfile), // 71 + LINXY(__NR_pselect6, sys_pselect6), // 72 + LINXY(__NR_ppoll, sys_ppoll), // 73 + LINXY(__NR_signalfd4, sys_signalfd4), // 74 + LINX_(__NR_vmsplice, sys_vmsplice), // 75 + LINX_(__NR_splice, sys_splice), // 76 + LINX_(__NR_tee, sys_tee), // 77 + LINX_(__NR_readlinkat, sys_readlinkat), // 78 + LINXY(__NR3264_fstatat, sys_newfstatat), // 79 + GENXY(__NR3264_fstat, sys_newfstat), // 80 + GENX_(__NR_sync, sys_sync), // 81 + GENX_(__NR_fsync, sys_fsync), // 82 + GENX_(__NR_fdatasync, sys_fdatasync), // 83 + LINX_(__NR_sync_file_range, sys_sync_file_range), // 84 + LINXY(__NR_timerfd_create, sys_timerfd_create), // 85 + LINXY(__NR_timerfd_settime, sys_timerfd_settime), // 86 + LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 87 + LINX_(__NR_utimensat, sys_utimensat), // 88 + GENX_(__NR_acct, sys_acct), // 89 + LINXY(__NR_capget, sys_capget), // 90 + LINX_(__NR_capset, sys_capset), // 91 + LINX_(__NR_personality, sys_personality), // 92 + GENX_(__NR_exit, sys_exit), // 93 + LINX_(__NR_exit_group, sys_exit_group), // 94 + LINXY(__NR_waitid, sys_waitid), // 95 + LINX_(__NR_set_tid_address, sys_set_tid_address), // 96 + LINX_(__NR_unshare, sys_unshare), // 97 + LINXY(__NR_futex, sys_futex), // 98 + LINX_(__NR_set_robust_list, sys_set_robust_list), // 99 + LINXY(__NR_get_robust_list, sys_get_robust_list), // 100 + GENXY(__NR_nanosleep, sys_nanosleep), // 101 + GENXY(__NR_getitimer, sys_getitimer), // 102 + GENXY(__NR_setitimer, sys_setitimer), // 103 + // (__NR_kexec_load, sys_kexec_load), // 104 + LINX_(__NR_init_module, sys_init_module), // 105 + LINX_(__NR_delete_module, sys_delete_module), // 106 + LINXY(__NR_timer_create, sys_timer_create), // 107 + LINXY(__NR_timer_gettime, sys_timer_gettime), // 108 + LINX_(__NR_timer_getoverrun, sys_timer_getoverrun), // 109 + LINXY(__NR_timer_settime, sys_timer_settime), // 110 + LINX_(__NR_timer_delete, sys_timer_delete), // 111 + LINX_(__NR_clock_settime, sys_clock_settime), // 112 + LINXY(__NR_clock_gettime, sys_clock_gettime), // 113 + LINXY(__NR_clock_getres, sys_clock_getres), // 114 + LINXY(__NR_clock_nanosleep, sys_clock_nanosleep), // 115 + LINXY(__NR_syslog, sys_syslog), // 116 + PLAXY(__NR_ptrace, sys_ptrace), // 117 + LINXY(__NR_sched_setparam, sys_sched_setparam), // 118 + LINX_(__NR_sched_setscheduler, sys_sched_setscheduler), // 119 + LINX_(__NR_sched_getscheduler, sys_sched_getscheduler), // 120 + LINXY(__NR_sched_getparam, sys_sched_getparam), // 121 + LINX_(__NR_sched_setaffinity, sys_sched_setaffinity), // 122 + LINXY(__NR_sched_getaffinity, sys_sched_getaffinity), // 123 + LINX_(__NR_sched_yield, sys_sched_yield), // 124 + LINX_(__NR_sched_get_priority_max, sys_sched_get_priority_max), // 125 + LINX_(__NR_sched_get_priority_min, sys_sched_get_priority_min), // 126 + LINXY(__NR_sched_rr_get_interval, sys_sched_rr_get_interval), // 127 + // (__NR_restart_syscall, sys_restart_syscall), // 128 + GENX_(__NR_kill, sys_kill), // 129 + LINXY(__NR_tkill, sys_tkill), // 130 + LINX_(__NR_tgkill, sys_tgkill), // 131 + GENXY(__NR_sigaltstack, sys_sigaltstack), // 132 + LINX_(__NR_rt_sigsuspend, sys_rt_sigsuspend), // 133 + LINXY(__NR_rt_sigaction, sys_rt_sigaction), // 134 + LINXY(__NR_rt_sigprocmask, sys_rt_sigprocmask), // 135 + LINXY(__NR_rt_sigpending, sys_rt_sigpending), // 136 + LINXY(__NR_rt_sigtimedwait, sys_rt_sigtimedwait), // 137 + LINXY(__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo), // 138 + PLAX_(__NR_rt_sigreturn, sys_rt_sigreturn), // 139 + GENX_(__NR_setpriority, sys_setpriority), // 140 + GENX_(__NR_getpriority, sys_getpriority), // 141 + // (__NR_reboot, sys_reboot), // 142 + GENX_(__NR_setregid, sys_setregid), // 143 + GENX_(__NR_setgid, sys_setgid), // 144 + GENX_(__NR_setreuid, sys_setreuid), // 145 + GENX_(__NR_setuid, sys_setuid), // 146 + LINX_(__NR_setresuid, sys_setresuid), // 147 + LINXY(__NR_getresuid, sys_getresuid), // 148 + LINX_(__NR_setresgid, sys_setresgid), // 149 + LINXY(__NR_getresgid, sys_getresgid), // 150 + LINX_(__NR_setfsuid, sys_setfsuid), // 151 + LINX_(__NR_setfsgid, sys_setfsgid), // 152 + GENXY(__NR_times, sys_times), // 153 + GENX_(__NR_setpgid, sys_setpgid), // 154 + GENX_(__NR_getpgid, sys_getpgid), // 155 + GENX_(__NR_getsid, sys_getsid), // 156 + GENX_(__NR_setsid, sys_setsid), // 157 + GENXY(__NR_getgroups, sys_getgroups), // 158 + GENX_(__NR_setgroups, sys_setgroups), // 159 + GENXY(__NR_uname, sys_newuname), // 160 + GENX_(__NR_sethostname, sys_sethostname), // 161 + // (__NR_setdomainname, sys_setdomainname), // 162 + // (__NR_getrlimit, sys_old_getrlimit), // 163 + // (__NR_setrlimit, sys_setrlimit), // 164 + GENXY(__NR_getrusage, sys_getrusage), // 165 + GENX_(__NR_umask, sys_umask), // 166 + LINXY(__NR_prctl, sys_prctl), // 167 + LINXY(__NR_getcpu, sys_getcpu), // 168 + GENXY(__NR_gettimeofday, sys_gettimeofday), // 169 + GENX_(__NR_settimeofday, sys_settimeofday), // 170 + LINXY(__NR_adjtimex, sys_adjtimex), // 171 + GENX_(__NR_getpid, sys_getpid), // 172 + GENX_(__NR_getppid, sys_getppid), // 173 + GENX_(__NR_getuid, sys_getuid), // 174 + GENX_(__NR_geteuid, sys_geteuid), // 175 + GENX_(__NR_getgid, sys_getgid), // 176 + GENX_(__NR_getegid, sys_getegid), // 177 + LINX_(__NR_gettid, sys_gettid), // 178 + LINXY(__NR_sysinfo, sys_sysinfo), // 179 + LINXY(__NR_mq_open, sys_mq_open), // 180 + LINX_(__NR_mq_unlink, sys_mq_unlink), // 181 + LINX_(__NR_mq_timedsend, sys_mq_timedsend), // 182 + LINXY(__NR_mq_timedreceive, sys_mq_timedreceive), // 183 + LINX_(__NR_mq_notify, sys_mq_notify), // 184 + LINXY(__NR_mq_getsetattr, sys_mq_getsetattr), // 185 + LINX_(__NR_msgget, sys_msgget), // 186 + LINXY(__NR_msgctl, sys_msgctl), // 187 + LINXY(__NR_msgrcv, sys_msgrcv), // 188 + LINX_(__NR_msgsnd, sys_msgsnd), // 189 + LINX_(__NR_semget, sys_semget), // 190 + LINXY(__NR_semctl, sys_semctl), // 191 + LINX_(__NR_semtimedop, sys_semtimedop), // 192 + LINX_(__NR_semop, sys_semop), // 193 + LINX_(__NR_shmget, sys_shmget), // 194 + LINXY(__NR_shmctl, sys_shmctl), // 195 + LINXY(__NR_shmat, sys_shmat), // 196 + LINXY(__NR_shmdt, sys_shmdt), // 197 + LINXY(__NR_socket, sys_socket), // 198 + LINXY(__NR_socketpair, sys_socketpair), // 199 + LINX_(__NR_bind, sys_bind), // 200 + LINX_(__NR_listen, sys_listen), // 201 + LINXY(__NR_accept, sys_accept), // 202 + LINX_(__NR_connect, sys_connect), // 203 + LINXY(__NR_getsockname, sys_getsockname), // 204 + LINXY(__NR_getpeername, sys_getpeername), // 205 + LINX_(__NR_sendto, sys_sendto), // 206 + LINXY(__NR_recvfrom, sys_recvfrom), // 207 + LINX_(__NR_setsockopt, sys_setsockopt), // 208 + LINXY(__NR_getsockopt, sys_getsockopt), // 209 + LINX_(__NR_shutdown, sys_shutdown), // 210 + LINX_(__NR_sendmsg, sys_sendmsg), // 211 + LINXY(__NR_recvmsg, sys_recvmsg), // 212 + LINX_(__NR_readahead, sys_readahead), // 213 + GENX_(__NR_brk, sys_brk), // 214 + GENXY(__NR_munmap, sys_munmap), // 215 + GENX_(__NR_mremap, sys_mremap), // 216 + LINX_(__NR_add_key, sys_add_key), // 217 + LINX_(__NR_request_key, sys_request_key), // 218 + LINXY(__NR_keyctl, sys_keyctl), // 219 + LINX_(__NR_clone, sys_clone), // 220 + GENX_(__NR_execve, sys_execve), // 221 + PLAX_(__NR3264_mmap, sys_mmap), // 222 + LINX_(__NR3264_fadvise64, sys_fadvise64), // 223 + // (__NR_swapon, sys_swapon), // 224 + // (__NR_swapoff, sys_swapoff), // 225 + GENXY(__NR_mprotect, sys_mprotect), // 226 + GENX_(__NR_msync, sys_msync), // 227 + GENX_(__NR_mlock, sys_mlock), // 228 + GENX_(__NR_munlock, sys_munlock), // 229 + GENX_(__NR_mlockall, sys_mlockall), // 230 + LINX_(__NR_munlockall, sys_munlockall), // 231 + GENXY(__NR_mincore, sys_mincore), // 232 + GENX_(__NR_madvise, sys_madvise), // 233 + // (__NR_remap_file_pages, sys_remap_file_pages), // 234 + LINX_(__NR_mbind, sys_mbind), // 235 + LINXY(__NR_get_mempolicy, sys_get_mempolicy), // 236 + LINX_(__NR_set_mempolicy, sys_set_mempolicy), // 237 + // (__NR_migrate_pages, sys_migrate_pages), // 238 + LINXY(__NR_move_pages, sys_move_pages), // 239 + LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo), // 240 + LINXY(__NR_perf_event_open, sys_perf_event_open), // 241 + LINXY(__NR_accept4, sys_accept4), // 242 + LINXY(__NR_recvmmsg, sys_recvmmsg), // 243 + + GENXY(__NR_wait4, sys_wait4), // 260 + LINXY(__NR_prlimit64, sys_prlimit64), // 261 + LINXY(__NR_fanotify_init, sys_fanotify_init), // 262 + LINX_(__NR_fanotify_mark, sys_fanotify_mark), // 263 + LINXY(__NR_name_to_handle_at, sys_name_to_handle_at), // 264 + LINXY(__NR_open_by_handle_at, sys_open_by_handle_at), // 265 + LINXY(__NR_clock_adjtime, sys_clock_adjtime), // 266 + LINX_(__NR_syncfs, sys_syncfs), // 267 + LINX_(__NR_setns, sys_setns), // 268 + LINXY(__NR_sendmmsg, sys_sendmmsg), // 269 + LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 270 + LINX_(__NR_process_vm_writev, sys_process_vm_writev), // 271 + LINX_(__NR_kcmp, sys_kcmp), // 272 + LINX_(__NR_finit_module, sys_finit_module), // 273 + // (__NR_sched_setattr, sys_sched_setattr), // 274 + // (__NR_sched_getattr, sys_sched_getattr), // 275 + LINX_(__NR_renameat2, sys_renameat2), // 276 + // (__NR_seccomp, sys_seccomp), // 277 + LINXY(__NR_getrandom, sys_getrandom), // 278 + LINXY(__NR_memfd_create, sys_memfd_create), // 279 + LINXY(__NR_bpf, sys_bpf), // 280 + // (__NR_execveat, sys_execveat), // 281 + // (__NR_userfaultfd, sys_userfaultfd), // 282 + LINX_(__NR_membarrier, sys_membarrier), // 283 + // (__NR_mlock2, sys_mlock2), // 284 + LINX_(__NR_copy_file_range, sys_copy_file_range), // 285 + LINXY(__NR_preadv2, sys_preadv2), // 286 + LINX_(__NR_pwritev2, sys_pwritev2), // 287 + // (__NR_pkey_mprotect, sys_pkey_mprotect), // 288 + // (__NR_pkey_alloc, sys_pkey_alloc), // 289 + // (__NR_pkey_free, sys_pkey_free), // 290 + LINXY(__NR_statx, sys_statx), // 291 + // (__NR_io_pgetevents, sys_io_pgetevents), // 292 + // (__NR_rseq, sys_rseq), // 293 + // (__NR_kexec_file_load, sys_kexec_file_load), // 294 + + // (__NR_pidfd_send_signal, sys_pidfd_send_signal), // 424 + LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425 + LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 + LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 + // (__NR_open_tree, sys_open_tree), // 428 + // (__NR_move_mount, sys_move_mount), // 429 + // (__NR_fsopen, sys_fsopen), // 430 + // (__NR_fsconfig, sys_fsconfig), // 431 + // (__NR_fsmount, sys_fsmount), // 432 + // (__NR_fspick, sys_fspick), // 433 + // (__NR_pidfd_open, sys_pidfd_open), // 434 + GENX_(__NR_clone3, sys_ni_syscall), // 435 + // (__NR_close_range, sys_close_range), // 436 + // (__NR_openat2, sys_openat2), // 437 + // (__NR_pidfd_getfd, sys_pidfd_getfd), // 438 + // (__NR_faccessat2, sys_faccessat2), // 439 + // (__NR_process_madvise, sys_process_madvise), // 440 + // (__NR_epoll_pwait2, sys_epoll_pwait2), // 441 + // (__NR_mount_setattr, sys_mount_setattr), // 442 + // (__NR_quotactl_fd, sys_quotactl_fd), // 443 + // (__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444 + // (__NR_landlock_add_rule, sys_landlock_add_rule), // 445 + // (__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446 + // (__NR_memfd_secret, sys_memfd_secret), // 447 + // (__NR_process_mrelease, sys_process_mrelease), // 448 +}; + +SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) +{ + const UInt syscall_main_table_size + = sizeof(syscall_main_table) / sizeof(syscall_main_table[0]); + + /* Is it in the contiguous initial section of the table? */ + if (sysno < syscall_main_table_size) { + SyscallTableEntry* sys = &syscall_main_table[sysno]; + if (sys->before == NULL) + return NULL; /* no entry */ + else + return sys; + } + + /* Can't find a wrapper */ + return NULL; +} + +#endif /* defined(VGP_loongarch64_linux) */ + +/*--------------------------------------------------------------------*/ +/*--- end syswrap-loongarch64-linux.c ---*/ +/*--------------------------------------------------------------------*/ diff --git a/coregrind/m_syswrap/syswrap-main.c b/coregrind/m_syswrap/syswrap-main.c index cdb2663..995d6d6 100644 --- a/coregrind/m_syswrap/syswrap-main.c +++ b/coregrind/m_syswrap/syswrap-main.c @@ -62,14 +62,15 @@ NUM ARG1 ARG2 ARG3 ARG4 ARG5 ARG6 ARG7 ARG8 RESULT LINUX: - x86 eax ebx ecx edx esi edi ebp n/a n/a eax (== NUM) - amd64 rax rdi rsi rdx r10 r8 r9 n/a n/a rax (== NUM) - ppc32 r0 r3 r4 r5 r6 r7 r8 n/a n/a r3+CR0.SO (== ARG1) - ppc64 r0 r3 r4 r5 r6 r7 r8 n/a n/a r3+CR0.SO (== ARG1) - arm r7 r0 r1 r2 r3 r4 r5 n/a n/a r0 (== ARG1) - mips32 v0 a0 a1 a2 a3 stack stack n/a n/a v0 (== NUM) - mips64 v0 a0 a1 a2 a3 a4 a5 a6 a7 v0 (== NUM) - arm64 x8 x0 x1 x2 x3 x4 x5 n/a n/a x0 ?? (== ARG1??) + x86 eax ebx ecx edx esi edi ebp n/a n/a eax (== NUM) + amd64 rax rdi rsi rdx r10 r8 r9 n/a n/a rax (== NUM) + ppc32 r0 r3 r4 r5 r6 r7 r8 n/a n/a r3+CR0.SO (== ARG1) + ppc64 r0 r3 r4 r5 r6 r7 r8 n/a n/a r3+CR0.SO (== ARG1) + arm r7 r0 r1 r2 r3 r4 r5 n/a n/a r0 (== ARG1) + mips32 v0 a0 a1 a2 a3 stack stack n/a n/a v0 (== NUM) + mips64 v0 a0 a1 a2 a3 a4 a5 a6 a7 v0 (== NUM) + arm64 x8 x0 x1 x2 x3 x4 x5 n/a n/a x0 ?? (== ARG1??) + loongarch64 r11 r4 r5 r6 r7 r8 r9 n/a n/a r4 (== ARG1) On s390x the svc instruction is used for system calls. The system call number is encoded in the instruction (8 bit immediate field). Since Linux @@ -587,6 +588,17 @@ void getSyscallArgsFromGuestState ( /*OUT*/SyscallArgs* canonical, canonical->arg6 = gst->guest_r9; // a5 canonical->arg7 = gst->guest_r10; // a6 canonical->arg8 = gst->guest_r11; // a7 + +#elif defined(VGP_loongarch64_linux) + VexGuestLOONGARCH64State* gst = (VexGuestLOONGARCH64State*)gst_vanilla; + canonical->sysno = gst->guest_R11; // a7 + canonical->arg1 = gst->guest_R4; // a0 + canonical->arg2 = gst->guest_R5; // a1 + canonical->arg3 = gst->guest_R6; // a2 + canonical->arg4 = gst->guest_R7; // a3 + canonical->arg5 = gst->guest_R8; // a4 + canonical->arg6 = gst->guest_R9; // a5 + #elif defined(VGP_x86_darwin) VexGuestX86State* gst = (VexGuestX86State*)gst_vanilla; UWord *stack = (UWord *)gst->guest_ESP; @@ -941,6 +953,16 @@ void putSyscallArgsIntoGuestState ( /*IN*/ SyscallArgs* canonical, gst->guest_r10 = canonical->arg7; gst->guest_r11 = canonical->arg8; +#elif defined(VGP_loongarch64_linux) + VexGuestLOONGARCH64State* gst = (VexGuestLOONGARCH64State*)gst_vanilla; + gst->guest_R11 = canonical->sysno; + gst->guest_R4 = canonical->arg1; + gst->guest_R5 = canonical->arg2; + gst->guest_R6 = canonical->arg3; + gst->guest_R7 = canonical->arg4; + gst->guest_R8 = canonical->arg5; + gst->guest_R9 = canonical->arg6; + #elif defined(VGP_x86_solaris) VexGuestX86State* gst = (VexGuestX86State*)gst_vanilla; UWord *stack = (UWord *)gst->guest_ESP; @@ -1042,6 +1064,12 @@ void getSyscallStatusFromGuestState ( /*OUT*/SyscallStatus* canonical, canonical->sres = VG_(mk_SysRes_nanomips_linux)(a0); canonical->what = SsComplete; +# elif defined(VGP_loongarch64_linux) + VexGuestLOONGARCH64State* gst = (VexGuestLOONGARCH64State*)gst_vanilla; + ULong a0 = gst->guest_R4; // a0 + canonical->sres = VG_(mk_SysRes_loongarch64_linux)(a0); + canonical->what = SsComplete; + # elif defined(VGP_x86_darwin) /* duplicates logic in m_signals.VG_UCONTEXT_SYSCALL_SYSRES */ VexGuestX86State* gst = (VexGuestX86State*)gst_vanilla; @@ -1349,6 +1377,20 @@ void putSyscallStatusIntoGuestState ( /*IN*/ ThreadId tid, VG_TRACK( post_reg_write, Vg_CoreSysCall, tid, OFFSET_mips32_r4, sizeof(UWord) ); +# elif defined(VGP_loongarch64_linux) + VexGuestLOONGARCH64State* gst = (VexGuestLOONGARCH64State*)gst_vanilla; + vg_assert(canonical->what == SsComplete); + if (sr_isError(canonical->sres)) { + /* This isn't exactly right, in that really a Failure with res + not in the range 1 .. 4095 is unrepresentable in the + Linux-loongarch64 scheme. Oh well. */ + gst->guest_R4 = - (Long)sr_Err(canonical->sres); + } else { + gst->guest_R4 = sr_Res(canonical->sres); + } + VG_TRACK( post_reg_write, Vg_CoreSysCall, tid, + OFFSET_loongarch64_R4, sizeof(UWord) ); + # elif defined(VGP_x86_solaris) VexGuestX86State* gst = (VexGuestX86State*)gst_vanilla; SysRes sres = canonical->sres; @@ -1574,6 +1616,15 @@ void getSyscallArgLayout ( /*OUT*/SyscallArgLayout* layout ) layout->s_arg7 = sizeof(UWord) * 1; layout->s_arg8 = sizeof(UWord) * 2; +#elif defined(VGP_loongarch64_linux) + layout->o_sysno = OFFSET_loongarch64_R11; + layout->o_arg1 = OFFSET_loongarch64_R4; + layout->o_arg2 = OFFSET_loongarch64_R5; + layout->o_arg3 = OFFSET_loongarch64_R6; + layout->o_arg4 = OFFSET_loongarch64_R7; + layout->o_arg5 = OFFSET_loongarch64_R8; + layout->o_arg6 = OFFSET_loongarch64_R9; + #else # error "getSyscallLayout: unknown arch" #endif @@ -2529,6 +2580,25 @@ void ML_(fixup_guest_state_to_restart_syscall) ( ThreadArchState* arch ) arch->vex.guest_PC -= 2; } } + +#elif defined(VGP_loongarch64_linux) + arch->vex.guest_PC -= 4; // sizeof(loongarch instr) + + /* Make sure our caller is actually sane, and we're really backing + back over a syscall. + + syscall 0 == 00 2B 00 00 + */ + { + UChar *p = (UChar *)(Addr)(arch->vex.guest_PC); + if (p[0] != 0x00 || p[1] != 0x00 || p[2] != 0x2B || p[3] != 0x00) + VG_(message)(Vg_DebugMsg, + "?! restarting over syscall at %#llx %02x %02x %02x %02x\n", + (ULong)arch->vex.guest_PC, p[0], p[1], p[2], p[3]); + + vg_assert(p[0] == 0x00 && p[1] == 0x00 && p[2] == 0x2B && p[3] == 0x00); + } + #elif defined(VGP_x86_solaris) arch->vex.guest_EIP -= 2; // sizeof(int $0x91) or sizeof(syscall) diff --git a/coregrind/m_trampoline.S b/coregrind/m_trampoline.S index c2d6429..4a9bc84 100644 --- a/coregrind/m_trampoline.S +++ b/coregrind/m_trampoline.S @@ -1432,6 +1432,53 @@ VG_(trampoline_stuff_end): # undef UD2_1024 # undef UD2_PAGE +/*------------------- loongarch64-linux -------------------*/ +#else +#if defined(VGP_loongarch64_linux) + +.global VG_(trampoline_stuff_start) +VG_(trampoline_stuff_start): + +.global VG_(loongarch64_linux_SUBST_FOR_rt_sigreturn) +VG_(loongarch64_linux_SUBST_FOR_rt_sigreturn): + li.w $a7, __NR_rt_sigreturn + syscall 0 + .long 0 /*illegal insn*/ + +/* There's no particular reason that this needs to be handwritten + assembly, but since that's what this file contains, here's a + simple index() and strlen() implementations. +*/ + +.global VG_(loongarch64_linux_REDIR_FOR_index) +.type VG_(loongarch64_linux_REDIR_FOR_index), @function +VG_(loongarch64_linux_REDIR_FOR_index): + index_loop: + ld.bu $t0, $a0, 0 + beq $t0, $a1, index_end + addi.d $a0, $a0, 1 + bne $t0, $zero, index_loop + move $a0, $zero + index_end: + jr $ra +.size VG_(loongarch64_linux_REDIR_FOR_index), .-VG_(loongarch64_linux_REDIR_FOR_index) + +.global VG_(loongarch64_linux_REDIR_FOR_strlen) +.type VG_(loongarch64_linux_REDIR_FOR_strlen), @function +VG_(loongarch64_linux_REDIR_FOR_strlen): + move $t0, $a0 + strlen_loop: + ld.bu $t1, $a0, 0 + addi.d $a0, $a0, 1 + bne $t1, $zero, strlen_loop + sub.d $a0, $a0, $t0 + addi.d $a0, $a0, -1 + jr $ra +.size VG_(loongarch64_linux_REDIR_FOR_strlen), .-VG_(loongarch64_linux_REDIR_FOR_strlen) + +.global VG_(trampoline_stuff_end) +VG_(trampoline_stuff_end): + /*---------------- x86-solaris ----------------*/ #else #if defined(VGP_x86_solaris) @@ -1629,6 +1676,7 @@ VG_(trampoline_stuff_end): #endif #endif #endif +#endif /* Let the linker know we don't need an executable stack */ MARK_STACK_NO_EXEC diff --git a/coregrind/m_translate.c b/coregrind/m_translate.c index 332202a..7c6d495 100644 --- a/coregrind/m_translate.c +++ b/coregrind/m_translate.c @@ -1747,6 +1747,11 @@ Bool VG_(translate) ( ThreadId tid, vex_archinfo.arm64_requires_fallback_LLSC; # endif +# if defined(VGP_loongarch64_linux) + /* For now, we only use fallback LLSC */ + vex_abiinfo.guest__use_fallback_LLSC = True; +# endif + /* Set up closure args. */ closure.tid = tid; closure.nraddr = nraddr; diff --git a/coregrind/m_vki.c b/coregrind/m_vki.c index 278b12f..8e1866c 100644 --- a/coregrind/m_vki.c +++ b/coregrind/m_vki.c @@ -37,13 +37,13 @@ describing the kernel interface, so this file is nearly empty. */ -/* ppc32/64, arm64 and mips32/64 (linux) determine page size at startup, - hence m_vki is the logical place to store that info. */ +/* ppc32/64, arm64, mips32/64 and loongarch64 (linux) determine page size + at startup, hence m_vki is the logical place to store that info. */ #if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \ || defined(VGP_ppc64le_linux) || defined(VGP_arm64_linux) \ || defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \ - || defined(VGP_nanomips_linux) + || defined(VGP_nanomips_linux) || defined(VGP_loongarch64_linux) unsigned long VKI_PAGE_SHIFT = 12; unsigned long VKI_PAGE_SIZE = 1UL << 12; #endif diff --git a/coregrind/pub_core_aspacemgr.h b/coregrind/pub_core_aspacemgr.h index 0f34782..f22c781 100644 --- a/coregrind/pub_core_aspacemgr.h +++ b/coregrind/pub_core_aspacemgr.h @@ -335,7 +335,8 @@ extern Bool VG_(am_relocate_nooverlap_client)( /*OUT*/Bool* need_discard, #if defined(VGP_ppc32_linux) \ || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \ || defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \ - || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) + || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ + || defined(VGP_loongarch64_linux) # define VG_STACK_GUARD_SZB 65536 // 1 or 16 pages #else # define VG_STACK_GUARD_SZB 8192 // 2 pages diff --git a/coregrind/pub_core_basics.h b/coregrind/pub_core_basics.h index abc5a06..1325451 100644 --- a/coregrind/pub_core_basics.h +++ b/coregrind/pub_core_basics.h @@ -55,8 +55,8 @@ typedef struct { - ULong r_pc; /* x86:EIP, amd64:RIP, ppc:CIA, arm:R15, mips:pc */ - ULong r_sp; /* x86:ESP, amd64:RSP, ppc:R1, arm:R13, mips:sp */ + ULong r_pc; /* x86:EIP, amd64:RIP, ppc:CIA, arm:R15, mips:pc, loongarch64:pc */ + ULong r_sp; /* x86:ESP, amd64:RSP, ppc:R1, arm:R13, mips:sp, loongarch64:sp */ union { struct { UInt r_ebp; @@ -102,6 +102,10 @@ typedef ULong r31; /* Return address of the last subroutine call */ ULong r28; } MIPS64; + struct { + ULong r_fp; /* Stack frame pointer or static variable */ + ULong r_ra; /* Return address of the last subroutine call */ + } LOONGARCH64; } misc; } UnwindStartRegs; diff --git a/coregrind/pub_core_debuginfo.h b/coregrind/pub_core_debuginfo.h index 8f05208..3aad0b8 100644 --- a/coregrind/pub_core_debuginfo.h +++ b/coregrind/pub_core_debuginfo.h @@ -131,6 +131,10 @@ typedef typedef struct { Addr pc; Addr sp; Addr fp; Addr ra; } D3UnwindRegs; +#elif defined(VGA_loongarch64) +typedef + struct { Addr pc; Addr ra; Addr sp; Addr fp; } + D3UnwindRegs; #else # error "Unsupported arch" #endif diff --git a/coregrind/pub_core_machine.h b/coregrind/pub_core_machine.h index aa1f13d..e2b280f 100644 --- a/coregrind/pub_core_machine.h +++ b/coregrind/pub_core_machine.h @@ -126,6 +126,11 @@ # define VG_ELF_MACHINE EM_NANOMIPS # define VG_ELF_CLASS ELFCLASS32 # undef VG_PLAT_USES_PPCTOC +#elif defined(VGP_loongarch64_linux) +# define VG_ELF_DATA2XXX ELFDATA2LSB +# define VG_ELF_MACHINE EM_LOONGARCH +# define VG_ELF_CLASS ELFCLASS64 +# undef VG_PLAT_USES_PPCTOC #else # error Unknown platform #endif @@ -163,6 +168,10 @@ # define VG_INSTR_PTR guest_PC # define VG_STACK_PTR guest_r29 # define VG_FRAME_PTR guest_r30 +#elif defined(VGA_loongarch64) +# define VG_INSTR_PTR guest_PC +# define VG_STACK_PTR guest_R3 +# define VG_FRAME_PTR guest_R22 #else # error Unknown arch #endif @@ -233,6 +242,10 @@ void VG_(get_UnwindStartRegs) ( /*OUT*/UnwindStartRegs* regs, s390x: initially: call VG_(machine_get_hwcaps) then safe to use VG_(machine_get_VexArchInfo) + ------------- + loongarch64: initially: call VG_(machine_get_hwcaps) + + then safe to use VG_(machine_get_VexArchInfo) VG_(machine_get_hwcaps) may use signals (although it attempts to leave signal state unchanged) and therefore should only be diff --git a/coregrind/pub_core_mallocfree.h b/coregrind/pub_core_mallocfree.h index 3fd22cd..72dc25e 100644 --- a/coregrind/pub_core_mallocfree.h +++ b/coregrind/pub_core_mallocfree.h @@ -78,6 +78,7 @@ typedef Int ArenaId; defined(VGP_ppc64le_linux) || \ defined(VGP_s390x_linux) || \ (defined(VGP_mips64_linux) && !defined(VGABI_N32)) || \ + defined(VGP_loongarch64_linux) || \ defined(VGP_x86_darwin) || \ defined(VGP_amd64_darwin) || \ defined(VGP_arm64_linux) || \ diff --git a/coregrind/pub_core_signals.h b/coregrind/pub_core_signals.h index ae8555b..c53323f 100644 --- a/coregrind/pub_core_signals.h +++ b/coregrind/pub_core_signals.h @@ -77,6 +77,7 @@ extern void VG_(synth_sigill) (ThreadId tid, Addr addr); extern void VG_(synth_sigtrap) (ThreadId tid); extern void VG_(synth_sigbus) (ThreadId tid); extern void VG_(synth_sigfpe) (ThreadId tid, UInt code); +extern void VG_(synth_sigsys) (ThreadId tid); /* Extend the stack to cover addr, if possible */ extern Bool VG_(extend_stack)(ThreadId tid, Addr addr); diff --git a/coregrind/pub_core_syscall.h b/coregrind/pub_core_syscall.h index 49b8586..a68455e 100644 --- a/coregrind/pub_core_syscall.h +++ b/coregrind/pub_core_syscall.h @@ -85,6 +85,7 @@ extern SysRes VG_(mk_SysRes_mips32_linux)( UWord v0, UWord v1, extern SysRes VG_(mk_SysRes_mips64_linux)( ULong v0, ULong v1, ULong a3 ); extern SysRes VG_(mk_SysRes_nanomips_linux)( UWord a0); +extern SysRes VG_(mk_SysRes_loongarch64_linux)( UWord a0 ); extern SysRes VG_(mk_SysRes_x86_solaris) ( Bool isErr, UInt val, UInt val2 ); extern SysRes VG_(mk_SysRes_amd64_solaris) ( Bool isErr, ULong val, ULong val2 ); extern SysRes VG_(mk_SysRes_Error) ( UWord val ); diff --git a/coregrind/pub_core_trampoline.h b/coregrind/pub_core_trampoline.h index 931a4bc..2f0bd4e 100644 --- a/coregrind/pub_core_trampoline.h +++ b/coregrind/pub_core_trampoline.h @@ -163,6 +163,12 @@ extern Char* VG_(nanomips_linux_REDIR_FOR_index)( const Char*, Int ); extern UInt VG_(nanomips_linux_REDIR_FOR_strlen)( void* ); #endif +#if defined(VGP_loongarch64_linux) +extern Addr VG_(loongarch64_linux_SUBST_FOR_rt_sigreturn); +extern Char* VG_(loongarch64_linux_REDIR_FOR_index)( const Char*, Int ); +extern UInt VG_(loongarch64_linux_REDIR_FOR_strlen)( void* ); +#endif + #if defined(VGP_x86_solaris) extern SizeT VG_(x86_solaris_REDIR_FOR_strcmp)(const HChar *, const HChar *); extern SizeT VG_(x86_solaris_REDIR_FOR_strlen)(const HChar *); diff --git a/coregrind/pub_core_transtab.h b/coregrind/pub_core_transtab.h index 1470b7a..8a9ea24 100644 --- a/coregrind/pub_core_transtab.h +++ b/coregrind/pub_core_transtab.h @@ -81,7 +81,8 @@ static inline UWord VG_TT_FAST_HASH ( Addr guest ) { } #elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le) \ - || defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_arm64) + || defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_arm64) \ + || defined(VGA_loongarch64) static inline UWord VG_TT_FAST_HASH ( Addr guest ) { // Instructions are 4-byte aligned. UWord merged = ((UWord)guest) >> 2; diff --git a/coregrind/pub_core_transtab_asm.h b/coregrind/pub_core_transtab_asm.h index 8b585f1..e73c89a 100644 --- a/coregrind/pub_core_transtab_asm.h +++ b/coregrind/pub_core_transtab_asm.h @@ -83,7 +83,7 @@ #if defined(VGA_amd64) || defined(VGA_arm64) \ || defined(VGA_ppc64be) || defined(VGA_ppc64le) \ || (defined(VGA_mips64) && defined(VGABI_64)) \ - || defined(VGA_s390x) + || defined(VGA_s390x) || defined(VGA_loongarch64) // And all other 64-bit hosts # define VG_FAST_CACHE_SET_BITS 6 // These FCS_{g,h}{0,1,2,3} are the values of diff --git a/coregrind/vgdb-invoker-ptrace.c b/coregrind/vgdb-invoker-ptrace.c index cb37677..7865c53 100644 --- a/coregrind/vgdb-invoker-ptrace.c +++ b/coregrind/vgdb-invoker-ptrace.c @@ -50,9 +50,10 @@ // Rather we use PTRACE_GETREGS or PTRACE_PEEKUSER. // The only platform on which we must use PTRACE_GETREGSET is arm64. +// We use PTRACE_GETREGSET on loongarch64 as well. // The resulting vgdb cannot work in a bi-arch setup. // -1 means we will check that PTRACE_GETREGSET works. -# if defined(VGA_arm64) +# if defined(VGA_arm64) || defined(VGA_loongarch64) #define USE_PTRACE_GETREGSET # endif #endif @@ -524,6 +525,9 @@ static struct user_regs_struct user_save; # else static struct user_pt_regs user_save; # endif +# elif defined(VGA_loongarch64) +/* loongarch64 is extra special, glibc only defined user_regs_struct. */ +static struct user_regs_struct user_save; # else static struct user user_save; # endif @@ -755,7 +759,11 @@ void restore_and_detach (pid_t pid) } DEBUG(1, "setregs restore registers pid %d\n", pid_of_save_regs); +#if defined(VGP_loongarch64_linux) + if (!setregs(pid_of_save_regs, &user_save.gpr, sizeof(user_save.gpr))) { +#else if (!setregs(pid_of_save_regs, &user_save.regs, sizeof(user_save.regs))) { +#endif ERROR(errno, "setregs restore registers pid %d after cont\n", pid_of_save_regs); } @@ -800,6 +808,9 @@ Bool invoker_invoke_gdbserver (pid_t pid) # else struct user_pt_regs user_mod; # endif +# elif defined(VGA_loongarch64) +/* loongarch64 is extra special, glibc only defined user_regs_struct. */ + struct user_regs_struct user_mod; # else struct user user_mod; # endif @@ -834,7 +845,11 @@ Bool invoker_invoke_gdbserver (pid_t pid) return False; } +#if defined(VGP_loongarch64_linux) + if (!getregs(pid, &user_mod.gpr, sizeof(user_mod.gpr))) { +#else if (!getregs(pid, &user_mod.regs, sizeof(user_mod.regs))) { +#endif detach_from_all_threads(pid); return False; } @@ -869,6 +884,8 @@ Bool invoker_invoke_gdbserver (pid_t pid) sp = p[29]; #elif defined(VGA_mips64) sp = user_mod.regs[29]; +#elif defined(VGA_loongarch64) + sp = user_mod.gpr[3]; #else I_die_here : (sp) architecture missing in vgdb-invoker-ptrace.c #endif @@ -956,6 +973,8 @@ Bool invoker_invoke_gdbserver (pid_t pid) #elif defined(VGA_mips64) assert(0); // cannot vgdb a 32 bits executable with a 64 bits exe +#elif defined(VGA_loongarch64) + assert(0); // cannot vgdb a 32 bits executable with a 64 bits exe #else I_die_here : architecture missing in vgdb-invoker-ptrace.c #endif @@ -1063,6 +1082,12 @@ Bool invoker_invoke_gdbserver (pid_t pid) user_mod.regs[31] = bad_return; user_mod.regs[34] = shared64->invoke_gdbserver; user_mod.regs[25] = shared64->invoke_gdbserver; +#elif defined(VGA_loongarch64) + /* put check arg in register a0 */ + user_mod.gpr[4] = check; + /* put NULL return address in ra */ + user_mod.gpr[1] = bad_return; + user_mod.pc = shared64->invoke_gdbserver; #else I_die_here: architecture missing in vgdb-invoker-ptrace.c #endif @@ -1071,7 +1096,11 @@ Bool invoker_invoke_gdbserver (pid_t pid) assert(0); } +#if defined(VGP_loongarch64_linux) + if (!setregs(pid, &user_mod.gpr, sizeof(user_mod.gpr))) { +#else if (!setregs(pid, &user_mod.regs, sizeof(user_mod.regs))) { +#endif detach_from_all_threads(pid); return False; } diff --git a/depcomp b/depcomp index 65cbf70..715e343 100755 --- a/depcomp +++ b/depcomp @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/dhat/Makefile.in b/dhat/Makefile.in index eae1c0a..6cfbc64 100644 --- a/dhat/Makefile.in +++ b/dhat/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -268,8 +268,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool.am $(top_srcdir)/depcomp @@ -318,6 +316,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -331,6 +331,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -476,6 +477,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -616,6 +618,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -661,6 +669,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ @@ -744,6 +753,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ @FLAG_M64@ +TOOL_LDFLAGS_LOONGARCH64_LINUX = \ + -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ + @FLAG_M64@ + TOOL_LDFLAGS_X86_SOLARIS = \ $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ @@ -798,6 +811,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ LIBREPLACEMALLOC_MIPS64_LINUX = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a +LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a + LIBREPLACEMALLOC_X86_SOLARIS = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a @@ -860,6 +876,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ $(LIBREPLACEMALLOC_MIPS64_LINUX) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ + -Wl,--no-whole-archive + LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_SOLARIS) \ @@ -1195,7 +1216,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/dhat/tests/Makefile.in b/dhat/tests/Makefile.in index 318771a..18ff88f 100644 --- a/dhat/tests/Makefile.in +++ b/dhat/tests/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -210,8 +210,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -234,6 +232,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -247,6 +247,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -392,6 +393,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -531,6 +533,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -576,6 +584,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -755,7 +764,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/docs/Makefile.in b/docs/Makefile.in index dabb60d..72923c8 100644 --- a/docs/Makefile.in +++ b/docs/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -138,6 +138,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -151,6 +153,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -296,6 +299,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -463,7 +467,6 @@ ctags CTAGS: cscope cscopelist: - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/docs/callgrind_annotate.1 b/docs/callgrind_annotate.1 index 2ce6f72..1518bbd 100644 --- a/docs/callgrind_annotate.1 +++ b/docs/callgrind_annotate.1 @@ -2,12 +2,12 @@ .\" Title: Callgrind Annotate .\" Author: [see the "Author" section] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/27/2020 +.\" Date: 12/15/2022 .\" Manual: callgrind_annotate .\" Source: Release 3.16.0 .\" Language: English .\" -.TH "CALLGRIND ANNOTATE" "1" "05/27/2020" "Release 3\&.16\&.0" "callgrind_annotate" +.TH "CALLGRIND ANNOTATE" "1" "12/15/2022" "Release 3\&.16\&.0" "callgrind_annotate" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/callgrind_control.1 b/docs/callgrind_control.1 index 57c3991..4aaf4f3 100644 --- a/docs/callgrind_control.1 +++ b/docs/callgrind_control.1 @@ -2,12 +2,12 @@ .\" Title: Callgrind Control .\" Author: [see the "Author" section] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/27/2020 +.\" Date: 12/15/2022 .\" Manual: callgrind_control .\" Source: Release 3.16.0 .\" Language: English .\" -.TH "CALLGRIND CONTROL" "1" "05/27/2020" "Release 3\&.16\&.0" "callgrind_control" +.TH "CALLGRIND CONTROL" "1" "12/15/2022" "Release 3\&.16\&.0" "callgrind_control" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/cg_annotate.1 b/docs/cg_annotate.1 index f603d91..dfd05c2 100644 --- a/docs/cg_annotate.1 +++ b/docs/cg_annotate.1 @@ -2,12 +2,12 @@ .\" Title: cg_annotate .\" Author: [see the "Author" section] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/27/2020 +.\" Date: 12/15/2022 .\" Manual: cg_annotate .\" Source: Release 3.16.0 .\" Language: English .\" -.TH "CG_ANNOTATE" "1" "05/27/2020" "Release 3\&.16\&.0" "cg_annotate" +.TH "CG_ANNOTATE" "1" "12/15/2022" "Release 3\&.16\&.0" "cg_annotate" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/cg_diff.1 b/docs/cg_diff.1 index 46572c5..6301f9a 100644 --- a/docs/cg_diff.1 +++ b/docs/cg_diff.1 @@ -2,12 +2,12 @@ .\" Title: cg_diff .\" Author: [see the "Author" section] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/27/2020 +.\" Date: 12/15/2022 .\" Manual: cg_diff .\" Source: Release 3.16.0 .\" Language: English .\" -.TH "CG_DIFF" "1" "05/27/2020" "Release 3\&.16\&.0" "cg_diff" +.TH "CG_DIFF" "1" "12/15/2022" "Release 3\&.16\&.0" "cg_diff" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/cg_merge.1 b/docs/cg_merge.1 index 0ddd3f2..7a47a62 100644 --- a/docs/cg_merge.1 +++ b/docs/cg_merge.1 @@ -2,12 +2,12 @@ .\" Title: cg_merge .\" Author: [see the "Author" section] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/27/2020 +.\" Date: 12/15/2022 .\" Manual: cg_merge .\" Source: Release 3.16.0 .\" Language: English .\" -.TH "CG_MERGE" "1" "05/27/2020" "Release 3\&.16\&.0" "cg_merge" +.TH "CG_MERGE" "1" "12/15/2022" "Release 3\&.16\&.0" "cg_merge" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/html/FAQ.html b/docs/html/FAQ.html index 3336e12..b33bb60 100644 --- a/docs/html/FAQ.html +++ b/docs/html/FAQ.html @@ -25,7 +25,7 @@

Release 3.16.0 27 May 2020


diff --git a/docs/html/QuickStart.html b/docs/html/QuickStart.html index d7613fb..720e546 100644 --- a/docs/html/QuickStart.html +++ b/docs/html/QuickStart.html @@ -25,7 +25,7 @@

Release 3.16.0 27 May 2020


diff --git a/docs/html/dh-manual.html b/docs/html/dh-manual.html index 10914ec..a0cf070 100644 --- a/docs/html/dh-manual.html +++ b/docs/html/dh-manual.html @@ -31,10 +31,10 @@
10.3. DHAT's Viewer
-
10.3.1. The Output Header
-
10.3.2. The AP Tree
-
10.3.3. The Output Footer
-
10.3.4. Sort Metrics
+
10.3.1. The Output Header
+
10.3.2. The AP Tree
+
10.3.3. The Output Footer
+
10.3.4. Sort Metrics
10.4. Treatment of realloc
10.5. DHAT Command-line Options
@@ -147,7 +147,7 @@ smaller --num-callers value to reduce the stack dept because this can significantly reduce the size of DHAT's output files.

-10.3.1. The Output Header

+10.3.1. The Output Header

The first part of the output shows the program command and process ID. For example:

@@ -168,12 +168,12 @@ Times {
 
 

-10.3.2. The AP Tree

+10.3.2. The AP Tree

The third part of the output is the largest and most interesting part, showing the allocation point (AP) tree.

-10.3.2.1. Structure

+10.3.2.1. Structure

The following image shows a screenshot of part of an AP tree. The font is very small because this screenshot is intended to demonstrate the high-level structure of the tree rather than the @@ -202,7 +202,7 @@ email, bug report, etc.

-10.3.2.2. The Root Node

+10.3.2.2. The Root Node

The root node looks like this:

 AP 1/1 (25 children) {
@@ -223,7 +223,7 @@ next example will explain these in more detail.

-10.3.2.3. Interior Nodes

+10.3.2.3. Interior Nodes

AP nodes further down the tree show information about a subset of allocations. For example:

@@ -293,7 +293,7 @@ vectors and hash tables, and isn't always fixable. 

-10.3.2.4. Leaf Nodes

+10.3.2.4. Leaf Nodes

This is a leaf node:

 AP 1.1.1.1/2 {
@@ -337,7 +337,7 @@ This also means that each node makes complete sense on its own.

-10.3.2.5. Access Counts

+10.3.2.5. Access Counts

If all blocks covered by an AP node have the same size, an additional Accesses field will be present. It indicates how the reads and writes within these blocks were distributed. For @@ -370,7 +370,7 @@ layout inefficiencies.

-10.3.2.6. Aggregate Nodes

+10.3.2.6. Aggregate Nodes

The AP tree is very large and many nodes represent tiny numbers of blocks and bytes. Therefore, DHAT's viewer aggregates insignificant nodes like this:

@@ -389,7 +389,7 @@ case).

-10.3.3. The Output Footer

+10.3.3. The Output Footer

Below the AP tree is a line like this:

 AP significance threshold: total >= 59,434.17 blocks (1%)
@@ -403,7 +403,7 @@ terms, abbreviations and symbols used in the output.

-10.3.4. Sort Metrics

+10.3.4. Sort Metrics

The order in which sub-trees are sorted can be changed via the "Sort metric" drop-down menu at the top of DHAT's viewer. Different sort metrics can be useful for finding different things. Some sort metrics also incorporate some diff --git a/docs/html/dist.html b/docs/html/dist.html index 393b815..e8892ff 100644 --- a/docs/html/dist.html +++ b/docs/html/dist.html @@ -25,7 +25,7 @@

Release 3.16.0 27 May 2020


diff --git a/docs/html/dist.readme.html b/docs/html/dist.readme.html index 69e9410..4d0dc5f 100644 --- a/docs/html/dist.readme.html +++ b/docs/html/dist.readme.html @@ -67,6 +67,7 @@ platforms: - MIPS32/Linux
- MIPS64/Linux
- nanoMIPS/Linux
+- LOONGARCH64/Linux
- X86/Solaris
- AMD64/Solaris

diff --git a/docs/html/faq.html b/docs/html/faq.html index c499505..50c3d74 100644 --- a/docs/html/faq.html +++ b/docs/html/faq.html @@ -191,7 +191,7 @@   -2.2. +2.2. When building Valgrind, 'make' fails with this:
@@ -742,7 +742,7 @@ int main(void)
  
 
 
-6.1.
+6.1.
 
 Where can I get more help?
 
diff --git a/docs/html/index.html b/docs/html/index.html
index 6c34a38..25cf4ce 100644
--- a/docs/html/index.html
+++ b/docs/html/index.html
@@ -19,7 +19,7 @@
         AUTHORS
       

-

Permission is granted to copy, distribute and/or modify +

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no diff --git a/docs/html/manual.html b/docs/html/manual.html index 93fe867..b02ce89 100644 --- a/docs/html/manual.html +++ b/docs/html/manual.html @@ -25,7 +25,7 @@

Release 3.16.0 27 May 2020


@@ -278,10 +278,10 @@ function
10.3. DHAT's Viewer
-
10.3.1. The Output Header
-
10.3.2. The AP Tree
-
10.3.3. The Output Footer
-
10.3.4. Sort Metrics
+
10.3.1. The Output Header
+
10.3.2. The AP Tree
+
10.3.3. The Output Footer
+
10.3.4. Sort Metrics
10.4. Treatment of realloc
10.5. DHAT Command-line Options
diff --git a/docs/html/tech-docs.html b/docs/html/tech-docs.html index 5a218a1..f28729e 100644 --- a/docs/html/tech-docs.html +++ b/docs/html/tech-docs.html @@ -25,7 +25,7 @@

Release 3.16.0 27 May 2020


diff --git a/docs/ms_print.1 b/docs/ms_print.1 index b29022f..ad99668 100644 --- a/docs/ms_print.1 +++ b/docs/ms_print.1 @@ -2,12 +2,12 @@ .\" Title: ms_print .\" Author: [see the "Author" section] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/27/2020 +.\" Date: 12/15/2022 .\" Manual: ms_print .\" Source: Release 3.16.0 .\" Language: English .\" -.TH "MS_PRINT" "1" "05/27/2020" "Release 3\&.16\&.0" "ms_print" +.TH "MS_PRINT" "1" "12/15/2022" "Release 3\&.16\&.0" "ms_print" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/valgrind-di-server.1 b/docs/valgrind-di-server.1 index 97497fd..8fd8325 100644 --- a/docs/valgrind-di-server.1 +++ b/docs/valgrind-di-server.1 @@ -2,12 +2,12 @@ .\" Title: valgrind-di-server .\" Author: [see the "Author" section] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/27/2020 +.\" Date: 12/15/2022 .\" Manual: valgrind-di-server .\" Source: Release 3.16.0 .\" Language: English .\" -.TH "VALGRIND\-DI\-SERVER" "1" "05/27/2020" "Release 3\&.16\&.0" "valgrind-di-server" +.TH "VALGRIND\-DI\-SERVER" "1" "12/15/2022" "Release 3\&.16\&.0" "valgrind-di-server" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/valgrind-listener.1 b/docs/valgrind-listener.1 index 471ba7a..9ad8fe9 100644 --- a/docs/valgrind-listener.1 +++ b/docs/valgrind-listener.1 @@ -2,12 +2,12 @@ .\" Title: valgrind-listener .\" Author: [see the "Author" section] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/27/2020 +.\" Date: 12/15/2022 .\" Manual: valgrind-listener .\" Source: Release 3.16.0 .\" Language: English .\" -.TH "VALGRIND\-LISTENER" "1" "05/27/2020" "Release 3\&.16\&.0" "valgrind-listener" +.TH "VALGRIND\-LISTENER" "1" "12/15/2022" "Release 3\&.16\&.0" "valgrind-listener" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/valgrind.1 b/docs/valgrind.1 index 84eff4b..e5059ee 100644 --- a/docs/valgrind.1 +++ b/docs/valgrind.1 @@ -2,12 +2,12 @@ .\" Title: VALGRIND .\" Author: [see the "Author" section] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/27/2020 +.\" Date: 12/15/2022 .\" Manual: valgrind .\" Source: Release 3.16.0 .\" Language: English .\" -.TH "VALGRIND" "1" "05/27/2020" "Release 3\&.16\&.0" "valgrind" +.TH "VALGRIND" "1" "12/15/2022" "Release 3\&.16\&.0" "valgrind" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/vgdb.1 b/docs/vgdb.1 index 41d04f3..ab75519 100644 --- a/docs/vgdb.1 +++ b/docs/vgdb.1 @@ -2,12 +2,12 @@ .\" Title: vgdb .\" Author: [see the "Author" section] .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 05/27/2020 +.\" Date: 12/15/2022 .\" Manual: vgdb .\" Source: Release 3.16.0 .\" Language: English .\" -.TH "VGDB" "1" "05/27/2020" "Release 3\&.16\&.0" "vgdb" +.TH "VGDB" "1" "12/15/2022" "Release 3\&.16\&.0" "vgdb" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/drd/Makefile.in b/drd/Makefile.in index a7dd4e5..d617770 100644 --- a/drd/Makefile.in +++ b/drd/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -360,8 +360,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool.am $(top_srcdir)/depcomp @@ -410,6 +408,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -423,6 +423,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -568,6 +569,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -708,6 +710,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -753,6 +761,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ @@ -836,6 +845,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ @FLAG_M64@ +TOOL_LDFLAGS_LOONGARCH64_LINUX = \ + -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ + @FLAG_M64@ + TOOL_LDFLAGS_X86_SOLARIS = \ $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ @@ -890,6 +903,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ LIBREPLACEMALLOC_MIPS64_LINUX = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a +LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a + LIBREPLACEMALLOC_X86_SOLARIS = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a @@ -952,6 +968,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ $(LIBREPLACEMALLOC_MIPS64_LINUX) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ + -Wl,--no-whole-archive + LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_SOLARIS) \ @@ -1876,7 +1897,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/drd/drd_bitmap.h b/drd/drd_bitmap.h index b288bee..73fe622 100644 --- a/drd/drd_bitmap.h +++ b/drd/drd_bitmap.h @@ -140,7 +140,7 @@ Addr make_address(const UWord a1, const UWord a0) #define BITS_PER_BITS_PER_UWORD 5 #elif defined(VGA_amd64) || defined(VGA_ppc64be) || defined(VGA_ppc64le) \ || defined(VGA_s390x) || (defined(VGA_mips64) && !defined(VGABI_N32)) \ - || defined(VGA_arm64) || defined(VGA_tilegx) + || defined(VGA_arm64) || defined(VGA_tilegx) || defined(VGA_loongarch64) #define BITS_PER_BITS_PER_UWORD 6 #else #error Unknown platform. diff --git a/drd/drd_load_store.c b/drd/drd_load_store.c index c5b1306..c143c03 100644 --- a/drd/drd_load_store.c +++ b/drd/drd_load_store.c @@ -53,6 +53,8 @@ #define STACK_POINTER_OFFSET OFFSET_mips32_r29 #elif defined(VGA_mips64) #define STACK_POINTER_OFFSET OFFSET_mips64_r29 +#elif defined(VGA_loongarch64) +#define STACK_POINTER_OFFSET OFFSET_loongarch64_R3 #else #error Unknown architecture. #endif @@ -634,6 +636,8 @@ IRSB* DRD_(instrument)(VgCallbackClosure* const closure, break; /* not interesting to DRD */ case Imbe_CancelReservation: break; /* not interesting to DRD */ + case Imbe_InsnFence: + break; /* not interesting to DRD */ default: tl_assert(0); } diff --git a/drd/tests/Makefile.in b/drd/tests/Makefile.in index ef260c2..7032024 100644 --- a/drd/tests/Makefile.in +++ b/drd/tests/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -740,8 +740,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -764,6 +762,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -777,6 +777,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -922,6 +923,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -1061,6 +1063,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -1106,6 +1114,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -2355,7 +2364,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/drd/tests/pth_barrier_thr_cr.supp b/drd/tests/pth_barrier_thr_cr.supp index 653b2d2..34482cc 100644 --- a/drd/tests/pth_barrier_thr_cr.supp +++ b/drd/tests/pth_barrier_thr_cr.supp @@ -9,3 +9,14 @@ fun:pthread_barrier_wait_intercept fun:pthread_barrier_wait } +{ + number-of-concurrent-pthead_barrier_wait()-calls-exceeds-barrier-count + drd:BarrierErr + fun:pthread_barrier_wait@* +} +{ + number-of-concurrent-pthead_barrier_wait()-calls-exceeds-barrier-count + drd:BarrierErr + fun:pthread_barrier_wait_intercept + fun:pthread_barrier_wait@* +} diff --git a/exp-bbv/Makefile.in b/exp-bbv/Makefile.in index fdb2a69..bf5955e 100644 --- a/exp-bbv/Makefile.in +++ b/exp-bbv/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -214,8 +214,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool.am $(top_srcdir)/depcomp @@ -264,6 +262,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -277,6 +277,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -422,6 +423,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -562,6 +564,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -607,6 +615,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ @@ -690,6 +699,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ @FLAG_M64@ +TOOL_LDFLAGS_LOONGARCH64_LINUX = \ + -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ + @FLAG_M64@ + TOOL_LDFLAGS_X86_SOLARIS = \ $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ @@ -744,6 +757,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ LIBREPLACEMALLOC_MIPS64_LINUX = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a +LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a + LIBREPLACEMALLOC_X86_SOLARIS = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a @@ -806,6 +822,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ $(LIBREPLACEMALLOC_MIPS64_LINUX) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ + -Wl,--no-whole-archive + LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_SOLARIS) \ @@ -1071,7 +1092,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/exp-bbv/tests/Makefile.in b/exp-bbv/tests/Makefile.in index 790767b..28aa11b 100644 --- a/exp-bbv/tests/Makefile.in +++ b/exp-bbv/tests/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -195,8 +195,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -244,6 +242,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -257,6 +257,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -402,6 +403,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -541,6 +543,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -586,6 +594,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -753,7 +762,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/exp-bbv/tests/amd64-linux/Makefile.in b/exp-bbv/tests/amd64-linux/Makefile.in index a0f94ad..e3798d1 100644 --- a/exp-bbv/tests/amd64-linux/Makefile.in +++ b/exp-bbv/tests/amd64-linux/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -241,8 +241,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -265,6 +263,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -278,6 +278,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -423,6 +424,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -562,6 +564,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -607,6 +615,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -807,7 +816,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/exp-bbv/tests/arm-linux/Makefile.in b/exp-bbv/tests/arm-linux/Makefile.in index 9437d45..c1aecb1 100644 --- a/exp-bbv/tests/arm-linux/Makefile.in +++ b/exp-bbv/tests/arm-linux/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -201,8 +201,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -225,6 +223,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -238,6 +238,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -383,6 +384,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -522,6 +524,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -567,6 +575,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -729,7 +738,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/exp-bbv/tests/ppc32-linux/Makefile.in b/exp-bbv/tests/ppc32-linux/Makefile.in index 93f23ef..3258775 100644 --- a/exp-bbv/tests/ppc32-linux/Makefile.in +++ b/exp-bbv/tests/ppc32-linux/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -201,8 +201,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -225,6 +223,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -238,6 +238,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -383,6 +384,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -522,6 +524,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -567,6 +575,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -729,7 +738,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/exp-bbv/tests/x86-linux/Makefile.in b/exp-bbv/tests/x86-linux/Makefile.in index b6ee1a2..ddce951 100644 --- a/exp-bbv/tests/x86-linux/Makefile.in +++ b/exp-bbv/tests/x86-linux/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -201,8 +201,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -225,6 +223,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -238,6 +238,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -383,6 +384,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -522,6 +524,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -567,6 +575,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -729,7 +738,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/exp-bbv/tests/x86/Makefile.in b/exp-bbv/tests/x86/Makefile.in index 6eda27e..71cda40 100644 --- a/exp-bbv/tests/x86/Makefile.in +++ b/exp-bbv/tests/x86/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -212,8 +212,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -236,6 +234,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -249,6 +249,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -394,6 +395,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -533,6 +535,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -578,6 +586,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -753,7 +762,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/gdbserver_tests/Makefile.am b/gdbserver_tests/Makefile.am index 1a5c513..08f910b 100644 --- a/gdbserver_tests/Makefile.am +++ b/gdbserver_tests/Makefile.am @@ -15,6 +15,7 @@ dist_noinst_SCRIPTS = \ filter_gdb filter_make_empty \ filter_memcheck_monitor filter_stderr filter_vgdb \ filter_helgrind_monitor filter_helgrind_monitor_solaris \ + filter_helgrind_monitor_loongarch64 \ filter_passsigalrm \ send_signal diff --git a/gdbserver_tests/Makefile.in b/gdbserver_tests/Makefile.in index 9c527d3..743ba7d 100644 --- a/gdbserver_tests/Makefile.in +++ b/gdbserver_tests/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -259,8 +259,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -308,6 +306,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -321,6 +321,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -466,6 +467,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -605,6 +607,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -650,6 +658,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -679,6 +688,7 @@ dist_noinst_SCRIPTS = \ filter_gdb filter_make_empty \ filter_memcheck_monitor filter_stderr filter_vgdb \ filter_helgrind_monitor filter_helgrind_monitor_solaris \ + filter_helgrind_monitor_loongarch64 \ filter_passsigalrm \ send_signal @@ -1042,7 +1052,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/gdbserver_tests/filter_helgrind_monitor b/gdbserver_tests/filter_helgrind_monitor index dc86480..58f9aff 100755 --- a/gdbserver_tests/filter_helgrind_monitor +++ b/gdbserver_tests/filter_helgrind_monitor @@ -12,6 +12,8 @@ $dir/filter_vgdb | # Perform Solaris-specific filtering. if $dir/../tests/os_test solaris; then $dir/filter_helgrind_monitor_solaris +elif $dir/../tests/arch_test loongarch64; then + $dir/filter_helgrind_monitor_loongarch64 else cat fi | diff --git a/gdbserver_tests/filter_helgrind_monitor_loongarch64 b/gdbserver_tests/filter_helgrind_monitor_loongarch64 new file mode 100755 index 0000000..cda73e4 --- /dev/null +++ b/gdbserver_tests/filter_helgrind_monitor_loongarch64 @@ -0,0 +1,43 @@ +#!/usr/bin/env perl +# From gdbserver_tests/filter_helgrind_monitor_solaris + +# +# Filter out all helgrind information about locks except the one named "mx". +# One lock record looks like: +# Lock ga 0x........ { +# Address 0x........ is 2648 bytes inside data symbol "_rtld_local" +# kind mbRec +# } + +use strict; +use warnings; + +my $lock_start_line = undef; +my $skip_to_closing_line = 0; +while () { + my $line = $_; + chomp($line); + if ($line =~ /^Lock ga 0x[\.]+\s+{$/) { + $lock_start_line = $line; + $skip_to_closing_line = 1; + } elsif (($lock_start_line) && + ($line =~ /\s*Address 0x[\.]+ is \d+ bytes inside data symbol "(\S+)"/)) { + if ($1 eq "mx") { + print "$lock_start_line\n"; + print "$line\n"; + $skip_to_closing_line = 0; + } + } elsif ($line =~ /^}$/) { + if ($skip_to_closing_line == 0) { + print "$line\n"; + } + undef($lock_start_line); + $skip_to_closing_line = 0; + } else { + if ($skip_to_closing_line == 0) { + print "$line\n"; + } + } +} + +exit 0; diff --git a/gdbserver_tests/solaris/Makefile.in b/gdbserver_tests/solaris/Makefile.in index 73c2ff4..49abd82 100644 --- a/gdbserver_tests/solaris/Makefile.in +++ b/gdbserver_tests/solaris/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -177,6 +177,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -190,6 +192,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -335,6 +338,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -474,6 +478,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -519,6 +529,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -588,7 +599,6 @@ ctags CTAGS: cscope cscopelist: - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/helgrind/Makefile.in b/helgrind/Makefile.in index 1d069d3..0fc1d39 100644 --- a/helgrind/Makefile.in +++ b/helgrind/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -302,8 +302,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool.am $(top_srcdir)/depcomp @@ -352,6 +350,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -365,6 +365,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -510,6 +511,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -650,6 +652,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -695,6 +703,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ @@ -778,6 +787,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ @FLAG_M64@ +TOOL_LDFLAGS_LOONGARCH64_LINUX = \ + -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ + @FLAG_M64@ + TOOL_LDFLAGS_X86_SOLARIS = \ $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ @@ -832,6 +845,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ LIBREPLACEMALLOC_MIPS64_LINUX = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a +LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a + LIBREPLACEMALLOC_X86_SOLARIS = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a @@ -894,6 +910,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ $(LIBREPLACEMALLOC_MIPS64_LINUX) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ + -Wl,--no-whole-archive + LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_SOLARIS) \ @@ -1457,7 +1478,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/helgrind/hg_main.c b/helgrind/hg_main.c index 8b8dd05..f8d310f 100644 --- a/helgrind/hg_main.c +++ b/helgrind/hg_main.c @@ -4831,6 +4831,7 @@ IRSB* hg_instrument ( VgCallbackClosure* closure, switch (st->Ist.MBE.event) { case Imbe_Fence: case Imbe_CancelReservation: + case Imbe_InsnFence: break; /* not interesting */ default: goto unhandled; diff --git a/helgrind/tests/Makefile.am b/helgrind/tests/Makefile.am index ad1af19..3c7d5bc 100644 --- a/helgrind/tests/Makefile.am +++ b/helgrind/tests/Makefile.am @@ -4,7 +4,8 @@ include $(top_srcdir)/Makefile.tool-tests.am dist_noinst_SCRIPTS = filter_stderr \ filter_stderr_solaris \ filter_helgrind \ - filter_xml + filter_xml \ + supported_pthread_tunable EXTRA_DIST = \ annotate_hbefore.vgtest annotate_hbefore.stdout.exp \ @@ -118,7 +119,9 @@ EXTRA_DIST = \ tc24_nonzero_sem.vgtest tc24_nonzero_sem.stdout.exp \ tc24_nonzero_sem.stderr.exp \ tls_threads.vgtest tls_threads.stdout.exp \ - tls_threads.stderr.exp + tls_threads.stderr.exp \ + tls_threads_tunable.vgtest tls_threads_tunable.stdout.exp \ + tls_threads_tunable.stderr.exp # Wrapper headers used by some check programs. noinst_HEADERS = safe-pthread.h safe-semaphore.h diff --git a/helgrind/tests/Makefile.in b/helgrind/tests/Makefile.in index c378998..594cf25 100644 --- a/helgrind/tests/Makefile.in +++ b/helgrind/tests/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -512,8 +512,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -536,6 +534,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -549,6 +549,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -694,6 +695,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -833,6 +835,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -878,6 +886,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -903,7 +912,8 @@ AM_CCASFLAGS = $(AM_CPPFLAGS) dist_noinst_SCRIPTS = filter_stderr \ filter_stderr_solaris \ filter_helgrind \ - filter_xml + filter_xml \ + supported_pthread_tunable EXTRA_DIST = \ annotate_hbefore.vgtest annotate_hbefore.stdout.exp \ @@ -1017,7 +1027,9 @@ EXTRA_DIST = \ tc24_nonzero_sem.vgtest tc24_nonzero_sem.stdout.exp \ tc24_nonzero_sem.stderr.exp \ tls_threads.vgtest tls_threads.stdout.exp \ - tls_threads.stderr.exp + tls_threads.stderr.exp \ + tls_threads_tunable.vgtest tls_threads_tunable.stdout.exp \ + tls_threads_tunable.stderr.exp # Wrapper headers used by some check programs. @@ -1443,7 +1455,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/helgrind/tests/annotate_hbefore.c b/helgrind/tests/annotate_hbefore.c index 259d3b6..3200c6c 100644 --- a/helgrind/tests/annotate_hbefore.c +++ b/helgrind/tests/annotate_hbefore.c @@ -314,6 +314,36 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) return success; } +#elif defined(VGA_loongarch64) + +// loongarch64 +/* return 1 if success, 0 if failure */ +UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) +{ + UWord success; + UWord block[3] = { (UWord)addr, nyu, expected }; + + __asm__ __volatile__( + " ld.d $t0, %1, 0 \n\t" + " ld.d $t2, %1, 16 \n\t" + " ld.d $t3, %1, 8 \n\t" + " ll.d $t1, $t0, 0 \n\t" + " bne $t1, $t2, 1f \n\t" + " sc.d $t3, $t0, 0 \n\t" + " move %0, $t3 \n\t" + " b 2f \n\t" + "1: \n\t" + " move %0, $zero \n\t" + "2: \n\t" + : /*out*/ "=r" (success) + : /*in*/ "r" (&block[0]) + : /*trash*/ "t0", "t1", "t2", "t3", "memory" + ); + + assert(success == 0 || success == 1); + return success; +} + #endif void atomic_incW ( UWord* w ) diff --git a/helgrind/tests/supported_pthread_tunable b/helgrind/tests/supported_pthread_tunable new file mode 100755 index 0000000..466df21 --- /dev/null +++ b/helgrind/tests/supported_pthread_tunable @@ -0,0 +1,17 @@ +#!/bin/sh + +# Exit with status 0 if a tunable named "glibc.pthread.stack_cache_size" is +# found, otherwise exit with status 1. + +if [ "$(uname)" = "Linux" ]; then + if [ ! -x /usr/bin/ld.so ]; then + echo "Error: could not find the program /usr/bin/ld.so." + exit 1 + fi + /usr/bin/ld.so --list-tunables 2>&1 | grep -q 'glibc.pthread.stack_cache_size' + exit $? +fi + +# Another OS than Linux, which does not provide "glibc.pthread.stack_cache_size" +exit 1 + diff --git a/helgrind/tests/tc07_hbl1.c b/helgrind/tests/tc07_hbl1.c index 3972b51..243d143 100644 --- a/helgrind/tests/tc07_hbl1.c +++ b/helgrind/tests/tc07_hbl1.c @@ -16,6 +16,7 @@ #undef PLAT_arm64_linux #undef PLAT_s390x_linux #undef PLAT_mips32_linux +#undef PLAT_loongarch64_linux #undef PLAT_x86_solaris #undef PLAT_amd64_solaris @@ -41,6 +42,8 @@ # define PLAT_mips32_linux 1 #elif defined(__linux__) && defined(__nanomips__) # define PLAT_nanomips_linux 1 +#elif defined(__linux__) && defined(__loongarch__) && (__loongarch_grlen == 64) +# define PLAT_loongarch64_linux 1 #elif defined(__sun__) && defined(__i386__) # define PLAT_x86_solaris 1 #elif defined(__sun__) && defined(__x86_64__) @@ -124,6 +127,20 @@ : /*out*/ : /*in*/ "r"(&(_lval)) \ : /*trash*/ "$t0", "$t1", "memory" \ ) +#elif defined(PLAT_loongarch64_linux) +# define INC(_lval,_lqual) \ + __asm__ __volatile__ ( \ + "1: \n" \ + " move $t0, %0 \n" \ + " ll.w $t1, $t0, 0 \n" \ + " addi.w $t1, $t1, 1 \n" \ + " sc.w $t1, $t0, 0 \n" \ + " li.w $t2, 1 \n" \ + " bne $t1, $t2, 1b \n" \ + : /*out*/ \ + : /*in*/ "r" (&(_lval)) \ + : /*trash*/ "$t0", "$t1", "$t2", "memory" \ + ) #else # error "Fix Me for this platform" #endif diff --git a/helgrind/tests/tc08_hbl2.c b/helgrind/tests/tc08_hbl2.c index e84ecec..f35a365 100644 --- a/helgrind/tests/tc08_hbl2.c +++ b/helgrind/tests/tc08_hbl2.c @@ -33,6 +33,7 @@ #undef PLAT_s390x_linux #undef PLAT_mips32_linux #undef PLAT_mips64_linux +#undef PLAT_loongarch64_linux #undef PLAT_x86_solaris #undef PLAT_amd64_solaris @@ -62,6 +63,8 @@ #endif #elif defined(__linux__) && defined(__nanomips__) # define PLAT_nanomips_linux 1 +#elif defined(__linux__) && defined(__loongarch__) && (__loongarch_grlen == 64) +# define PLAT_loongarch64_linux 1 #elif defined(__sun__) && defined(__i386__) # define PLAT_x86_solaris 1 #elif defined(__sun__) && defined(__x86_64__) @@ -144,6 +147,20 @@ : /*out*/ : /*in*/ "r"(&(_lval)) \ : /*trash*/ "$t0", "$t1", "memory" \ ) +#elif defined(PLAT_loongarch64_linux) +# define INC(_lval,_lqual) \ + __asm__ __volatile__ ( \ + "1: \n" \ + " move $t0, %0 \n" \ + " ll.w $t1, $t0, 0 \n" \ + " addi.w $t1, $t1, 1 \n" \ + " sc.w $t1, $t0, 0 \n" \ + " li.w $t2, 1 \n" \ + " bne $t1, $t2, 1b \n" \ + : /*out*/ \ + : /*in*/ "r" (&(_lval)) \ + : /*trash*/ "$t0", "$t1", "$t2", "memory" \ + ) #else # error "Fix Me for this platform" #endif diff --git a/helgrind/tests/tc11_XCHG.c b/helgrind/tests/tc11_XCHG.c index 15167e8..bba20fc 100644 --- a/helgrind/tests/tc11_XCHG.c +++ b/helgrind/tests/tc11_XCHG.c @@ -18,6 +18,7 @@ #undef PLAT_arm_linux #undef PLAT_s390x_linux #undef PLAT_mips32_linux +#undef PLAT_loongarch64_linux #undef PLAT_x86_solaris #undef PLAT_amd64_solaris @@ -43,6 +44,8 @@ # define PLAT_mips32_linux 1 #elif defined(__linux__) && defined(__nanomips__) # define PLAT_nanomips_linux 1 +#elif defined(__linux__) && defined(__loongarch__) && (__loongarch_grlen == 64) +# define PLAT_loongarch64_linux 1 #elif defined(__sun__) && defined(__i386__) # define PLAT_x86_solaris 1 #elif defined(__sun__) && defined(__x86_64__) @@ -139,6 +142,21 @@ # define XCHG_M_R_with_redundant_LOCK(_addr,_lval) \ XCHG_M_R(_addr,_lval) +#elif defined(PLAT_loongarch64_linux) +# define XCHG_M_R(_addr,_lval) \ + __asm__ __volatile__( \ + "move $t0, %2 \n\t" \ + "ll.w $t1, %1 \n\t" \ + "sc.w $t0, %1 \n\t" \ + "move %0, $t1 \n\t" \ + : /*out*/ "=r"(_lval), "+ZC"(_addr) \ + : /*in*/ "r"(_lval) \ + : "$t0", "$t1", "memory" \ + ) + +# define XCHG_M_R_with_redundant_LOCK(_addr,_lval) \ + XCHG_M_R(_addr,_lval) + #else # error "Unsupported architecture" diff --git a/helgrind/tests/tls_threads.vgtest b/helgrind/tests/tls_threads.vgtest index 5fb4587..2543004 100644 --- a/helgrind/tests/tls_threads.vgtest +++ b/helgrind/tests/tls_threads.vgtest @@ -1,2 +1,3 @@ +prereq: ! ./supported_pthread_tunable prog: tls_threads vgopts: -q --sim-hints=no-nptl-pthread-stackcache diff --git a/helgrind/tests/tls_threads_tunable.stderr.exp b/helgrind/tests/tls_threads_tunable.stderr.exp new file mode 100644 index 0000000..be3b890 --- /dev/null +++ b/helgrind/tests/tls_threads_tunable.stderr.exp @@ -0,0 +1,2 @@ +starting join in main +finished join in main diff --git a/helgrind/tests/tls_threads_tunable.stdout.exp b/helgrind/tests/tls_threads_tunable.stdout.exp new file mode 100644 index 0000000..e69de29 diff --git a/helgrind/tests/tls_threads_tunable.vgtest b/helgrind/tests/tls_threads_tunable.vgtest new file mode 100644 index 0000000..fa36940 --- /dev/null +++ b/helgrind/tests/tls_threads_tunable.vgtest @@ -0,0 +1,4 @@ +prereq: ./supported_pthread_tunable +prog: tls_threads +vgopts: -q +env: GLIBC_TUNABLES=glibc.pthread.stack_cache_size=0 diff --git a/include/Makefile.am b/include/Makefile.am index 05cec97..ff63745 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -60,6 +60,7 @@ nobase_pkginclude_HEADERS = \ vki/vki-posixtypes-mips32-linux.h \ vki/vki-posixtypes-mips64-linux.h \ vki/vki-posixtypes-nanomips-linux.h \ + vki/vki-posixtypes-loongarch64-linux.h \ vki/vki-amd64-linux.h \ vki/vki-arm64-linux.h \ vki/vki-ppc32-linux.h \ @@ -70,6 +71,7 @@ nobase_pkginclude_HEADERS = \ vki/vki-mips32-linux.h \ vki/vki-mips64-linux.h \ vki/vki-nanomips-linux.h \ + vki/vki-loongarch64-linux.h \ vki/vki-scnums-amd64-linux.h \ vki/vki-scnums-arm64-linux.h \ vki/vki-scnums-ppc32-linux.h \ @@ -80,6 +82,7 @@ nobase_pkginclude_HEADERS = \ vki/vki-scnums-mips32-linux.h \ vki/vki-scnums-mips64-linux.h \ vki/vki-scnums-nanomips-linux.h \ + vki/vki-scnums-loongarch64-linux.h \ vki/vki-scnums-darwin.h \ vki/vki-scnums-solaris.h \ vki/vki-scnums-shared-linux.h \ diff --git a/include/Makefile.in b/include/Makefile.in index 28921b9..52ceda3 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -164,8 +164,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ @@ -187,6 +185,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -200,6 +200,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -345,6 +346,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -415,6 +417,7 @@ nobase_pkginclude_HEADERS = \ vki/vki-posixtypes-mips32-linux.h \ vki/vki-posixtypes-mips64-linux.h \ vki/vki-posixtypes-nanomips-linux.h \ + vki/vki-posixtypes-loongarch64-linux.h \ vki/vki-amd64-linux.h \ vki/vki-arm64-linux.h \ vki/vki-ppc32-linux.h \ @@ -425,6 +428,7 @@ nobase_pkginclude_HEADERS = \ vki/vki-mips32-linux.h \ vki/vki-mips64-linux.h \ vki/vki-nanomips-linux.h \ + vki/vki-loongarch64-linux.h \ vki/vki-scnums-amd64-linux.h \ vki/vki-scnums-arm64-linux.h \ vki/vki-scnums-ppc32-linux.h \ @@ -435,6 +439,7 @@ nobase_pkginclude_HEADERS = \ vki/vki-scnums-mips32-linux.h \ vki/vki-scnums-mips64-linux.h \ vki/vki-scnums-nanomips-linux.h \ + vki/vki-scnums-loongarch64-linux.h \ vki/vki-scnums-darwin.h \ vki/vki-scnums-solaris.h \ vki/vki-scnums-shared-linux.h \ @@ -564,7 +569,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/include/pub_tool_basics.h b/include/pub_tool_basics.h index d1119e1..6b2e7f0 100644 --- a/include/pub_tool_basics.h +++ b/include/pub_tool_basics.h @@ -406,7 +406,8 @@ static inline Bool sr_EQ ( UInt sysno, SysRes sr1, SysRes sr2 ) { #if defined(VGA_x86) || defined(VGA_amd64) || defined (VGA_arm) \ || ((defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_nanomips)) \ - && defined (_MIPSEL)) || defined(VGA_arm64) || defined(VGA_ppc64le) + && defined (_MIPSEL)) || defined(VGA_arm64) || defined(VGA_ppc64le) \ + || defined (VGA_loongarch64) # define VG_LITTLEENDIAN 1 #elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_s390x) \ || ((defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_nanomips)) \ @@ -454,7 +455,8 @@ static inline Bool sr_EQ ( UInt sysno, SysRes sr1, SysRes sr2 ) { || defined(VGA_ppc64be) || defined(VGA_ppc64le) \ || defined(VGA_arm) || defined(VGA_s390x) \ || defined(VGA_mips32) || defined(VGA_mips64) \ - || defined(VGA_arm64) || defined(VGA_nanomips) + || defined(VGA_arm64) || defined(VGA_nanomips) \ + || defined(VGA_loongarch64) # define VG_REGPARM(n) /* */ #else # error Unknown arch diff --git a/include/pub_tool_guest.h b/include/pub_tool_guest.h index 08a72ef..87e8cc2 100644 --- a/include/pub_tool_guest.h +++ b/include/pub_tool_guest.h @@ -62,6 +62,9 @@ #elif defined(VGA_mips64) # include "libvex_guest_mips64.h" typedef VexGuestMIPS64State VexGuestArchState; +#elif defined(VGA_loongarch64) +# include "libvex_guest_loongarch64.h" + typedef VexGuestLOONGARCH64State VexGuestArchState; #else # error Unknown arch #endif diff --git a/include/pub_tool_libcsetjmp.h b/include/pub_tool_libcsetjmp.h index 03da232..f9f9e60 100644 --- a/include/pub_tool_libcsetjmp.h +++ b/include/pub_tool_libcsetjmp.h @@ -126,6 +126,14 @@ UWord VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); __attribute__((noreturn)) void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); +#elif defined(VGP_loongarch64_linux) + +#define VG_MINIMAL_JMP_BUF(_name) ULong _name [13+8+1] +__attribute__((returns_twice)) +UWord VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); +__attribute__((noreturn)) +void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); + #else /* The default implementation. */ diff --git a/include/pub_tool_machine.h b/include/pub_tool_machine.h index 25e1256..34b531c 100644 --- a/include/pub_tool_machine.h +++ b/include/pub_tool_machine.h @@ -108,6 +108,12 @@ # define VG_CLREQ_SZB 20 # define VG_STACK_REDZONE_SZB 0 +#elif defined(VGP_loongarch64_linux) +# define VG_MIN_INSTR_SZB 4 +# define VG_MAX_INSTR_SZB 8 +# define VG_CLREQ_SZB 20 +# define VG_STACK_REDZONE_SZB 0 + #else # error Unknown platform #endif diff --git a/include/pub_tool_redir.h b/include/pub_tool_redir.h index bd65a44..3cda669 100644 --- a/include/pub_tool_redir.h +++ b/include/pub_tool_redir.h @@ -318,6 +318,8 @@ #define VG_U_LD_LINUX_MIPSN8_S0_1 "ld-linux-mipsn8.so.1" +#define VG_U_LD_LINUX_LOONGARCH_LP64D_SO_1 "ld-linux-loongarch-lp64d.so.1" + #endif /* --- Executable name for Darwin Mach-O linker. --- */ diff --git a/include/pub_tool_vkiscnums_asm.h b/include/pub_tool_vkiscnums_asm.h index 6ede6f9..79c0b4b 100644 --- a/include/pub_tool_vkiscnums_asm.h +++ b/include/pub_tool_vkiscnums_asm.h @@ -74,6 +74,10 @@ # include "vki/vki-scnums-shared-linux.h" # include "vki/vki-scnums-mips64-linux.h" +#elif defined(VGP_loongarch64_linux) +# include "vki/vki-scnums-shared-linux.h" +# include "vki/vki-scnums-loongarch64-linux.h" + #elif defined(VGP_x86_darwin) || defined(VGP_amd64_darwin) # include "vki/vki-scnums-darwin.h" diff --git a/include/valgrind.h b/include/valgrind.h index 00e985d..af17a9a 100644 --- a/include/valgrind.h +++ b/include/valgrind.h @@ -123,6 +123,7 @@ #undef PLAT_mips32_linux #undef PLAT_mips64_linux #undef PLAT_nanomips_linux +#undef PLAT_loongarch64_linux #undef PLAT_x86_solaris #undef PLAT_amd64_solaris @@ -163,6 +164,8 @@ # define PLAT_mips32_linux 1 #elif defined(__linux__) && defined(__nanomips__) # define PLAT_nanomips_linux 1 +#elif defined(__linux__) && defined(__loongarch__) && (__loongarch_grlen == 64) +# define PLAT_loongarch64_linux 1 #elif defined(__sun) && defined(__i386__) # define PLAT_x86_solaris 1 #elif defined(__sun) && defined(__x86_64__) @@ -1117,7 +1120,75 @@ typedef ); \ } while (0) -#endif +#endif /* PLAT_nanomips_linux */ + +/* --------------------- loongarch64-linux --------------------- */ +#if defined(PLAT_loongarch64_linux) + +typedef + struct { + unsigned long nraddr; /* where's the code? */ + } + OrigFn; + +#define __SPECIAL_INSTRUCTION_PREAMBLE \ + "srli.d $zero, $zero, 3 \n\t" \ + "srli.d $zero, $zero, 13 \n\t" \ + "srli.d $zero, $zero, 29 \n\t" \ + "srli.d $zero, $zero, 19 \n\t" + +#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \ + _zzq_default, _zzq_request, \ + _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ + __extension__ \ + ({ \ + volatile unsigned long int _zzq_args[6]; \ + volatile unsigned long int _zzq_result; \ + _zzq_args[0] = (unsigned long int)(_zzq_request); \ + _zzq_args[1] = (unsigned long int)(_zzq_arg1); \ + _zzq_args[2] = (unsigned long int)(_zzq_arg2); \ + _zzq_args[3] = (unsigned long int)(_zzq_arg3); \ + _zzq_args[4] = (unsigned long int)(_zzq_arg4); \ + _zzq_args[5] = (unsigned long int)(_zzq_arg5); \ + __asm__ volatile("move $a7, %1 \n\t" /*default*/ \ + "move $t0, %2 \n\t" /*ptr*/ \ + __SPECIAL_INSTRUCTION_PREAMBLE \ + /* $a7 = client_request ( $t0 ) */ \ + "or $t1, $t1, $t1 \n\t" \ + "move %0, $a7 \n\t" /*result*/ \ + : "=r" (_zzq_result) \ + : "r" (_zzq_default), "r" (&_zzq_args[0]) \ + : "$a7", "$t0", "memory"); \ + _zzq_result; \ + }) + +#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ + { \ + volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ + volatile unsigned long int __addr; \ + __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ + /* $a7 = guest_NRADDR */ \ + "or $t2, $t2, $t2 \n\t" \ + "move %0, $a7 \n\t" /*result*/ \ + : "=r" (__addr) \ + : \ + : "$a7"); \ + _zzq_orig->nraddr = __addr; \ + } + +#define VALGRIND_CALL_NOREDIR_T8 \ + __SPECIAL_INSTRUCTION_PREAMBLE \ + /* call-noredir $t8 */ \ + "or $t3, $t3, $t3 \n\t" + +#define VALGRIND_VEX_INJECT_IR() \ + do { \ + __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ + "or $t4, $t4, $t4 \n\t" \ + ); \ + } while (0) + +#endif /* PLAT_loongarch64_linux */ /* Insert assembly code for other platforms here... */ #endif /* NVALGRIND */ @@ -6595,6 +6666,458 @@ typedef #endif /* PLAT_mips64_linux */ +/* --------------------- loongarch64-linux --------------------- */ + +#if defined(PLAT_loongarch64_linux) + +/* These regs are trashed by the hidden call. */ +#define __CALLER_SAVED_REGS \ + "$ra", "$a0", "$a1", "$a2", "$a3", "$a4", "$a5", "$a6", "$a7", \ + "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8", \ + "$f0", "$f1", "$f2", "$f3", "$f4", "$f5", "$f6", "$f7", \ + "$f8", "$f9", "$f10", "$f11", "$f12", "$f13", "$f14", "$f15", \ + "$f16", "$f17", "$f18", "$f19", "$f20", "$f21", "$f22", "$f23" + +/* $s0 is callee-saved, so we can use it to save and restore SP around + the hidden call. */ +#define VALGRIND_ALIGN_STACK \ + "move $s0, $sp \n\t" \ + "bstrins.d $sp, $zero, 3, 0 \n\t" + +#define VALGRIND_RESTORE_STACK \ + "move $sp, $s0 \n\t" + +/* These CALL_FN_ macros assume that on loongarch64-linux, + sizeof(unsigned long) == 8. */ + +#define CALL_FN_W_v(lval, orig) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[1]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ + VALGRIND_CALL_NOREDIR_T8 \ + VALGRIND_RESTORE_STACK \ + "move %0, $a0 \n\t" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "r" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_W(lval, orig, arg1) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[2]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ + "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ + VALGRIND_CALL_NOREDIR_T8 \ + VALGRIND_RESTORE_STACK \ + "move %0, $a0 \n\t" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "r" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_WW(lval, orig, arg1, arg2) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[3]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ + "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ + "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ + VALGRIND_CALL_NOREDIR_T8 \ + VALGRIND_RESTORE_STACK \ + "move %0, $a0 \n\t" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "r" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_WWW(lval, orig, arg1, arg2, arg3) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[4]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ + "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ + "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ + "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ + VALGRIND_CALL_NOREDIR_T8 \ + VALGRIND_RESTORE_STACK \ + "move %0, $a0 \n\t" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "r" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_WWWW(lval, orig, arg1, arg2, arg3, arg4) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[5]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ + "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ + "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ + "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ + "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ + VALGRIND_CALL_NOREDIR_T8 \ + VALGRIND_RESTORE_STACK \ + "move %0, $a0 \n\t" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "r" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_5W(lval, orig, arg1, arg2, arg3, arg4, arg5) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[6]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + _argvec[5] = (unsigned long)(arg5); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ + "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ + "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ + "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ + "ld.d $a4, %1, 40 \n\t" /* arg5 */ \ + "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ + VALGRIND_CALL_NOREDIR_T8 \ + VALGRIND_RESTORE_STACK \ + "move %0, $a0 \n\t" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "r" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_6W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ + arg6) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[7]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + _argvec[5] = (unsigned long)(arg5); \ + _argvec[6] = (unsigned long)(arg6); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ + "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ + "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ + "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ + "ld.d $a4, %1, 40 \n\t" /* arg5 */ \ + "ld.d $a5, %1, 48 \n\t" /* arg6 */ \ + "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ + VALGRIND_CALL_NOREDIR_T8 \ + VALGRIND_RESTORE_STACK \ + "move %0, $a0 \n\t" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "r" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_7W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ + arg6, arg7) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[8]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + _argvec[5] = (unsigned long)(arg5); \ + _argvec[6] = (unsigned long)(arg6); \ + _argvec[7] = (unsigned long)(arg7); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ + "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ + "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ + "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ + "ld.d $a4, %1, 40 \n\t" /* arg5 */ \ + "ld.d $a5, %1, 48 \n\t" /* arg6 */ \ + "ld.d $a6, %1, 56 \n\t" /* arg7 */ \ + "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ + VALGRIND_CALL_NOREDIR_T8 \ + VALGRIND_RESTORE_STACK \ + "move %0, $a0 \n\t" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "r" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_8W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ + arg6, arg7, arg8) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[9]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + _argvec[5] = (unsigned long)(arg5); \ + _argvec[6] = (unsigned long)(arg6); \ + _argvec[7] = (unsigned long)(arg7); \ + _argvec[8] = (unsigned long)(arg8); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ + "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ + "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ + "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ + "ld.d $a4, %1, 40 \n\t" /* arg5 */ \ + "ld.d $a5, %1, 48 \n\t" /* arg6 */ \ + "ld.d $a6, %1, 56 \n\t" /* arg7 */ \ + "ld.d $a7, %1, 64 \n\t" /* arg8 */ \ + "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ + VALGRIND_CALL_NOREDIR_T8 \ + VALGRIND_RESTORE_STACK \ + "move %0, $a0 \n\t" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "r" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_9W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ + arg6, arg7, arg8, arg9) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[10]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + _argvec[5] = (unsigned long)(arg5); \ + _argvec[6] = (unsigned long)(arg6); \ + _argvec[7] = (unsigned long)(arg7); \ + _argvec[8] = (unsigned long)(arg8); \ + _argvec[9] = (unsigned long)(arg9); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "addi.d $sp, $sp, -8 \n\t" \ + "ld.d $a0, %1, 72 \n\t" \ + "st.d $a0, $sp, 0 \n\t" /* arg9 */ \ + "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ + "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ + "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ + "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ + "ld.d $a4, %1, 40 \n\t" /* arg5 */ \ + "ld.d $a5, %1, 48 \n\t" /* arg6 */ \ + "ld.d $a6, %1, 56 \n\t" /* arg7 */ \ + "ld.d $a7, %1, 64 \n\t" /* arg8 */ \ + "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ + VALGRIND_CALL_NOREDIR_T8 \ + VALGRIND_RESTORE_STACK \ + "move %0, $a0 \n\t" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "r" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_10W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ + arg6, arg7, arg8, arg9, arg10) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[11]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + _argvec[5] = (unsigned long)(arg5); \ + _argvec[6] = (unsigned long)(arg6); \ + _argvec[7] = (unsigned long)(arg7); \ + _argvec[8] = (unsigned long)(arg8); \ + _argvec[9] = (unsigned long)(arg9); \ + _argvec[10] = (unsigned long)(arg10); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "addi.d $sp, $sp, -16 \n\t" \ + "ld.d $a0, %1, 72 \n\t" \ + "st.d $a0, $sp, 0 \n\t" /* arg9 */ \ + "ld.d $a0, %1, 80 \n\t" \ + "st.d $a0, $sp, 8 \n\t" /* arg10 */ \ + "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ + "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ + "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ + "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ + "ld.d $a4, %1, 40 \n\t" /* arg5 */ \ + "ld.d $a5, %1, 48 \n\t" /* arg6 */ \ + "ld.d $a6, %1, 56 \n\t" /* arg7 */ \ + "ld.d $a7, %1, 64 \n\t" /* arg8 */ \ + "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ + VALGRIND_CALL_NOREDIR_T8 \ + VALGRIND_RESTORE_STACK \ + "move %0, $a0 \n\t" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "r" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_11W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ + arg6, arg7, arg8, arg9, arg10, \ + arg11) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[12]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + _argvec[5] = (unsigned long)(arg5); \ + _argvec[6] = (unsigned long)(arg6); \ + _argvec[7] = (unsigned long)(arg7); \ + _argvec[8] = (unsigned long)(arg8); \ + _argvec[9] = (unsigned long)(arg9); \ + _argvec[10] = (unsigned long)(arg10); \ + _argvec[11] = (unsigned long)(arg11); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "addi.d $sp, $sp, -24 \n\t" \ + "ld.d $a0, %1, 72 \n\t" \ + "st.d $a0, $sp, 0 \n\t" /* arg9 */ \ + "ld.d $a0, %1, 80 \n\t" \ + "st.d $a0, $sp, 8 \n\t" /* arg10 */ \ + "ld.d $a0, %1, 88 \n\t" \ + "st.d $a0, $sp, 16 \n\t" /* arg11 */ \ + "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ + "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ + "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ + "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ + "ld.d $a4, %1, 40 \n\t" /* arg5 */ \ + "ld.d $a5, %1, 48 \n\t" /* arg6 */ \ + "ld.d $a6, %1, 56 \n\t" /* arg7 */ \ + "ld.d $a7, %1, 64 \n\t" /* arg8 */ \ + "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ + VALGRIND_CALL_NOREDIR_T8 \ + VALGRIND_RESTORE_STACK \ + "move %0, $a0 \n\t" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "r" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#define CALL_FN_W_12W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ + arg6, arg7, arg8, arg9, arg10, \ + arg11, arg12) \ + do { \ + volatile OrigFn _orig = (orig); \ + volatile unsigned long _argvec[13]; \ + volatile unsigned long _res; \ + _argvec[0] = (unsigned long)_orig.nraddr; \ + _argvec[1] = (unsigned long)(arg1); \ + _argvec[2] = (unsigned long)(arg2); \ + _argvec[3] = (unsigned long)(arg3); \ + _argvec[4] = (unsigned long)(arg4); \ + _argvec[5] = (unsigned long)(arg5); \ + _argvec[6] = (unsigned long)(arg6); \ + _argvec[7] = (unsigned long)(arg7); \ + _argvec[8] = (unsigned long)(arg8); \ + _argvec[9] = (unsigned long)(arg9); \ + _argvec[10] = (unsigned long)(arg10); \ + _argvec[11] = (unsigned long)(arg11); \ + _argvec[12] = (unsigned long)(arg12); \ + __asm__ volatile( \ + VALGRIND_ALIGN_STACK \ + "addi.d $sp, $sp, -32 \n\t" \ + "ld.d $a0, %1, 72 \n\t" \ + "st.d $a0, $sp, 0 \n\t" /* arg9 */ \ + "ld.d $a0, %1, 80 \n\t" \ + "st.d $a0, $sp, 8 \n\t" /* arg10 */ \ + "ld.d $a0, %1, 88 \n\t" \ + "st.d $a0, $sp, 16 \n\t" /* arg11 */ \ + "ld.d $a0, %1, 96 \n\t" \ + "st.d $a0, $sp, 24 \n\t" /* arg12 */ \ + "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ + "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ + "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ + "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ + "ld.d $a4, %1, 40 \n\t" /* arg5 */ \ + "ld.d $a5, %1, 48 \n\t" /* arg6 */ \ + "ld.d $a6, %1, 56 \n\t" /* arg7 */ \ + "ld.d $a7, %1, 64 \n\t" /* arg8 */ \ + "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ + VALGRIND_CALL_NOREDIR_T8 \ + VALGRIND_RESTORE_STACK \ + "move %0, $a0 \n\t" \ + : /*out*/ "=r" (_res) \ + : /*in*/ "r" (&_argvec[0]) \ + : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ + ); \ + lval = (__typeof__(lval)) _res; \ + } while (0) + +#endif /* PLAT_loongarch64_linux */ + /* ------------------------------------------------------------------ */ /* ARCHITECTURE INDEPENDENT MACROS for CLIENT REQUESTS. */ /* */ @@ -7151,6 +7674,7 @@ VALGRIND_PRINTF_BACKTRACE(const char *format, ...) #undef PLAT_mips32_linux #undef PLAT_mips64_linux #undef PLAT_nanomips_linux +#undef PLAT_loongarch64_linux #undef PLAT_x86_solaris #undef PLAT_amd64_solaris diff --git a/include/vgversion_dist.h b/include/vgversion_dist.h index 8b859d9..9da8397 100644 --- a/include/vgversion_dist.h +++ b/include/vgversion_dist.h @@ -7,4 +7,4 @@ YYYYMMDD is the commit date Trailing X is present if there are any (non untracked) modified files. */ -#define VGGIT "bf5e647edb-20200519X" +#define VGGIT "9e8e858533-20221214" diff --git a/include/vki/vki-linux.h b/include/vki/vki-linux.h index ffda18f..f92a727 100644 --- a/include/vki/vki-linux.h +++ b/include/vki/vki-linux.h @@ -97,6 +97,8 @@ # include "vki-posixtypes-mips64-linux.h" #elif defined(VGA_nanomips) # include "vki-posixtypes-nanomips-linux.h" +#elif defined(VGA_loongarch64) +# include "vki-posixtypes-loongarch64-linux.h" #else # error Unknown platform #endif @@ -225,6 +227,8 @@ typedef unsigned int vki_uint; # include "vki-mips64-linux.h" #elif defined(VGA_nanomips) # include "vki-nanomips-linux.h" +#elif defined(VGA_loongarch64) +# include "vki-loongarch64-linux.h" #else # error Unknown platform #endif @@ -514,6 +518,7 @@ typedef struct vki_siginfo { * Digital reserves positive values for kernel-generated signals. */ #define VKI_SI_USER 0 /* sent by kill, sigsend, raise */ +#define VKI_SI_KERNEL 0x80 /* sent by the kernel from somewhere */ #define VKI_SI_TKILL -6 /* sent by tkill system call */ /* diff --git a/include/vki/vki-loongarch64-linux.h b/include/vki/vki-loongarch64-linux.h new file mode 100644 index 0000000..d1323bd --- /dev/null +++ b/include/vki/vki-loongarch64-linux.h @@ -0,0 +1,827 @@ + +/*--------------------------------------------------------------------*/ +/*--- loongarch/Linux-specific kernel interface. ---*/ +/*--- vki-loongarch64-linux.h ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2021-2022 Loongson Technology Corporation Limited + + This program 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 2 of the + License, or (at your option) any later version. + + This program 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 this program; if not, see . +*/ + +#ifndef __VKI_LOONGARCH64_LINUX_H +#define __VKI_LOONGARCH64_LINUX_H + +// loongarch64 is little-endian. +#define VKI_LITTLE_ENDIAN 1 + +//---------------------------------------------------------------------- +// From linux-5.15.2/include/uapi/asm-generic/int-ll64.h +//---------------------------------------------------------------------- + +typedef __signed__ char __vki_s8; +typedef unsigned char __vki_u8; + +typedef __signed__ short __vki_s16; +typedef unsigned short __vki_u16; + +typedef __signed__ int __vki_s32; +typedef unsigned int __vki_u32; + +typedef __signed__ long long __vki_s64; +typedef unsigned long long __vki_u64; + +//---------------------------------------------------------------------- +// From linux-5.15.2/include/asm-generic/int-ll64.h +//---------------------------------------------------------------------- + +typedef __vki_s8 vki_s8; +typedef __vki_u8 vki_u8; +typedef __vki_s16 vki_s16; +typedef __vki_u16 vki_u16; +typedef __vki_s32 vki_s32; +typedef __vki_u32 vki_u32; +typedef __vki_s64 vki_s64; +typedef __vki_u64 vki_u64; + +//---------------------------------------------------------------------- +// From linux-5.15.2/include/linux/types.h +//---------------------------------------------------------------------- + +typedef vki_u8 vki_u_int8_t; +typedef vki_s8 vki_int8_t; +typedef vki_u16 vki_u_int16_t; +typedef vki_s16 vki_int16_t; +typedef vki_u32 vki_u_int32_t; +typedef vki_s32 vki_int32_t; + +typedef vki_u8 vki_uint8_t; +typedef vki_u16 vki_uint16_t; +typedef vki_u32 vki_uint32_t; + +typedef vki_u64 vki_uint64_t; +typedef vki_u64 vki_u_int64_t; +typedef vki_s64 vki_int64_t; + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/arch/loongarch/include/asm/page.h +//---------------------------------------------------------------------- + +/* loongarch64 uses runtime pagesize detection */ +extern UWord VKI_PAGE_SHIFT; +extern UWord VKI_PAGE_SIZE; +#define VKI_PAGE_MASK (~(PAGE_SIZE - 1)) +#define VKI_MAX_PAGE_SHIFT 16 +#define VKI_MAX_PAGE_SIZE (1UL << VKI_MAX_PAGE_SHIFT) + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/arch/loongarch/include/asm/shmparam.h +//---------------------------------------------------------------------- + +#define VKI_SHMLBA 0x00010000 // SZ_64K + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/arch/loongarch/include/uapi/asm/signal.h +//---------------------------------------------------------------------- + +#define VKI_MINSIGSTKSZ 4096 +#define VKI_SIGSTKSZ 16384 + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/signal-defs.h +//---------------------------------------------------------------------- + +#define VKI_SA_NOCLDSTOP 0x00000001 +#define VKI_SA_NOCLDWAIT 0x00000002 +#define VKI_SA_SIGINFO 0x00000004 +/* 0x00000008 used on alpha, mips, parisc */ +/* 0x00000010 used on alpha, parisc */ +/* 0x00000020 used on alpha, parisc, sparc */ +/* 0x00000040 used on alpha, parisc */ +/* 0x00000080 used on parisc */ +/* 0x00000100 used on sparc */ +/* 0x00000200 used on sparc */ +#define VKI_SA_UNSUPPORTED 0x00000400 +#define VKI_SA_EXPOSE_TAGBITS 0x00000800 +/* 0x00010000 used on mips */ +/* 0x00800000 used for internal SA_IMMUTABLE */ +/* 0x01000000 used on x86 */ +/* 0x02000000 used on x86 */ +/* + * New architectures should not define the obsolete + * VKI_SA_RESTORER 0x04000000 + */ +#define VKI_SA_ONSTACK 0x08000000 +#define VKI_SA_RESTART 0x10000000 +#define VKI_SA_NODEFER 0x40000000 +#define VKI_SA_RESETHAND 0x80000000 + +#define VKI_SA_NOMASK VKI_SA_NODEFER +#define VKI_SA_ONESHOT VKI_SA_RESETHAND + +#define VKI_SIG_BLOCK 0 /* for blocking signals */ +#define VKI_SIG_UNBLOCK 1 /* for unblocking signals */ +#define VKI_SIG_SETMASK 2 /* for setting the signal mask */ + +typedef void __vki_signalfn_t(int); +typedef __vki_signalfn_t __user *__vki_sighandler_t; + +typedef void __vki_restorefn_t(void); +typedef __vki_restorefn_t __user *__vki_igrestore_t; + +#define VKI_SIG_DFL ((__vki_sighandler_t)0) /* default signal handling */ +#define VKI_SIG_IGN ((__vki_sighandler_t)1) /* ignore signal */ +#define VKI_SIG_ERR ((__vki_sighandler_t)-1) /* error return from signal */ + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/signal.h +//---------------------------------------------------------------------- + +#define _VKI_NSIG 64 +#define _VKI_NSIG_BPW 64 // __BITS_PER_LONG == 64 +#define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW) + +#define VKI_SIGHUP 1 +#define VKI_SIGINT 2 +#define VKI_SIGQUIT 3 +#define VKI_SIGILL 4 +#define VKI_SIGTRAP 5 +#define VKI_SIGABRT 6 +#define VKI_SIGIOT 6 +#define VKI_SIGBUS 7 +#define VKI_SIGFPE 8 +#define VKI_SIGKILL 9 +#define VKI_SIGUSR1 10 +#define VKI_SIGSEGV 11 +#define VKI_SIGUSR2 12 +#define VKI_SIGPIPE 13 +#define VKI_SIGALRM 14 +#define VKI_SIGTERM 15 +#define VKI_SIGSTKFLT 16 +#define VKI_SIGCHLD 17 +#define VKI_SIGCONT 18 +#define VKI_SIGSTOP 19 +#define VKI_SIGTSTP 20 +#define VKI_SIGTTIN 21 +#define VKI_SIGTTOU 22 +#define VKI_SIGURG 23 +#define VKI_SIGXCPU 24 +#define VKI_SIGXFSZ 25 +#define VKI_SIGVTALRM 26 +#define VKI_SIGPROF 27 +#define VKI_SIGWINCH 28 +#define VKI_SIGIO 29 +#define VKI_SIGPOLL VKI_SIGIO +/* +#define VKI_SIGLOST 29 +*/ +#define VKI_SIGPWR 30 +#define VKI_SIGSYS 31 +#define VKI_SIGUNUSED 31 + +#define VKI_SIGRTMIN 32 +#define VKI_SIGRTMAX _VKI_NSIG + +typedef struct { + unsigned long sig[_VKI_NSIG_WORDS]; +} vki_sigset_t; + +typedef unsigned long vki_old_sigset_t; + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/linux/signal.h +//---------------------------------------------------------------------- + +#define VKI_SS_ONSTACK 1 +#define VKI_SS_DISABLE 2 + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/linux/signal_types.h +//---------------------------------------------------------------------- + +struct vki_sigaction { + __vki_sighandler_t sa_handler; + unsigned long sa_flags; + vki_sigset_t sa_mask; /* mask last for extensibility */ +}; + +struct vki_sigaction_base { + // [[Nb: a 'k' prefix is added to "sa_handler" because + // bits/sigaction.h (which gets dragged in somehow via signal.h) + // #defines it as something else. Since that is done for glibc's + // purposes, which we don't care about here, we use our own name.]] + __vki_sighandler_t ksa_handler; + unsigned long sa_flags; + vki_sigset_t sa_mask; /* mask last for extensibility */ +}; + +/* On Linux we use the same type for passing sigactions to + and from the kernel. Hence: */ +typedef struct vki_sigaction_base vki_sigaction_toK_t; +typedef struct vki_sigaction_base vki_sigaction_fromK_t; + +typedef struct vki_sigaltstack { + void __user *ss_sp; + int ss_flags; + __vki_kernel_size_t ss_size; +} vki_stack_t; + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/arch/loongarch/include/uapi/asm/sigcontext.h +//---------------------------------------------------------------------- + +struct vki_sigcontext { + __vki_u64 sc_pc; + __vki_u64 sc_regs[32]; + __vki_u32 sc_flags; + __vki_u64 sc_extcontext[0] __attribute__((__aligned__(16))); +}; + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/linux/mman.h +//---------------------------------------------------------------------- + +#define VKI_MAP_SHARED 0x01 /* Share changes */ +#define VKI_MAP_PRIVATE 0x02 /* Changes are private */ +#define VKI_MAP_SHARED_VALIDATE 0x03 /* share + validate extension flags */ + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/mman-common.h +//---------------------------------------------------------------------- + +#define VKI_PROT_READ 0x1 /* page can be read */ +#define VKI_PROT_WRITE 0x2 /* page can be written */ +#define VKI_PROT_EXEC 0x4 /* page can be executed */ +#define VKI_PROT_SEM 0x8 /* page may be used for atomic ops */ +/* 0x10 reserved for arch-specific use */ +/* 0x20 reserved for arch-specific use */ +#define VKI_PROT_NONE 0x0 /* page can not be accessed */ +#define VKI_PROT_GROWSDOWN 0x01000000 /* mprotect flag: extend change to start of growsdown vma */ +#define VKI_PROT_GROWSUP 0x02000000 /* mprotect flag: extend change to end of growsup vma */ + +/* 0x01 - 0x03 are defined in linux/mman.h */ +#define VKI_MAP_TYPE 0x0f /* Mask for type of mapping */ +#define VKI_MAP_FIXED 0x10 /* Interpret addr exactly */ +#define VKI_MAP_ANONYMOUS 0x20 /* don't use a file */ + +/* 0x0100 - 0x4000 flags are defined in asm-generic/mman.h */ +#define VKI_MAP_POPULATE 0x008000 /* populate (prefault) pagetables */ +#define VKI_MAP_NONBLOCK 0x010000 /* do not block on IO */ +#define VKI_MAP_STACK 0x020000 /* give out an address that is best suited for process/thread stacks */ +#define VKI_MAP_HUGETLB 0x040000 /* create a huge page mapping */ +#define VKI_MAP_SYNC 0x080000 /* perform synchronous page faults for the mapping */ +#define VKI_MAP_FIXED_NOREPLACE 0x100000 /* MAP_FIXED which doesn't unmap underlying mapping */ + +#define VKI_MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could be uninitialized */ + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/fcntl.h +//---------------------------------------------------------------------- + +#define VKI_O_ACCMODE 00000003 +#define VKI_O_RDONLY 00000000 +#define VKI_O_WRONLY 00000001 +#define VKI_O_RDWR 00000002 +#define VKI_O_CREAT 00000100 /* not fcntl */ +#define VKI_O_EXCL 00000200 /* not fcntl */ +#define VKI_O_NOCTTY 00000400 /* not fcntl */ +#define VKI_O_TRUNC 00001000 /* not fcntl */ +#define VKI_O_APPEND 00002000 +#define VKI_O_NONBLOCK 00004000 +#define VKI_O_DSYNC 00010000 /* used to be O_SYNC, see below */ +#define VKI_FASYNC 00020000 /* fcntl, for BSD compatibility */ +#define VKI_O_DIRECT 00040000 /* direct disk access hint */ +#define VKI_O_LARGEFILE 00100000 +#define VKI_O_DIRECTORY 00200000 /* must be a directory */ +#define VKI_O_NOFOLLOW 00400000 /* don't follow links */ +#define VKI_O_NOATIME 01000000 +#define VKI_O_CLOEXEC 02000000 /* set close_on_exec */ + +#define __VKI_O_SYNC 04000000 +#define VKI_O_SYNC (__VKI_O_SYNC|VKI_O_DSYNC) + +#define VKI_O_PATH 010000000 + +#define __VKI_O_TMPFILE 020000000 + +#define VKI_O_TMPFILE (__VKI_O_TMPFILE | VKI_O_DIRECTORY) +#define VKI_O_TMPFILE_MASK (__VKI_O_TMPFILE | VKI_O_DIRECTORY | VKI_O_CREAT) + +#define VKI_O_NDELAY VKI_O_NONBLOCK + +#define VKI_F_DUPFD 0 /* dup */ +#define VKI_F_GETFD 1 /* get close_on_exec */ +#define VKI_F_SETFD 2 /* set/clear close_on_exec */ +#define VKI_F_GETFL 3 /* get file->f_flags */ +#define VKI_F_SETFL 4 /* set file->f_flags */ +#define VKI_F_GETLK 5 +#define VKI_F_SETLK 6 +#define VKI_F_SETLKW 7 +#define VKI_F_SETOWN 8 /* for sockets. */ +#define VKI_F_GETOWN 9 /* for sockets. */ +#define VKI_F_SETSIG 10 /* for sockets. */ +#define VKI_F_GETSIG 11 /* for sockets. */ + +#define VKI_F_SETOWN_EX 15 +#define VKI_F_GETOWN_EX 16 + +#define VKI_F_GETOWNER_UIDS 17 + +#define VKI_F_OFD_GETLK 36 +#define VKI_F_OFD_SETLK 37 +#define VKI_F_OFD_SETLKW 38 + +#define VKI_F_OWNER_TID 0 +#define VKI_F_OWNER_PID 1 +#define VKI_F_OWNER_PGRP 2 + +struct vki_f_owner_ex { + int type; + __vki_kernel_pid_t pid; +}; + +#define VKI_FD_CLOEXEC 1 /* actually anything with low bit set goes */ + +#define VKI_F_RDLCK 0 +#define VKI_F_WRLCK 1 +#define VKI_F_UNLCK 2 + +#define VKI_F_EXLCK 4 /* or 3 */ +#define VKI_F_SHLCK 8 /* or 4 */ + +#define VKI_LOCK_SH 1 /* shared lock */ +#define VKI_LOCK_EX 2 /* exclusive lock */ +#define VKI_LOCK_NB 4 /* or'd with one of the above to prevent blocking */ +#define VKI_LOCK_UN 8 /* remove lock */ + +#define VKI_LOCK_MAND 32 /* This is a mandatory flock ... */ +#define VKI_LOCK_READ 64 /* which allows concurrent read operations */ +#define VKI_LOCK_WRITE 128 /* which allows concurrent write operations */ +#define VKI_LOCK_RW 192 /* which allows concurrent read & write ops */ + +#define VKI_F_LINUX_SPECIFIC_BASE 1024 + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/linux/fcntl.h +//---------------------------------------------------------------------- + +#define VKI_AT_FDCWD -100 /* Special value used to indicate + openat should use the current + working directory. */ + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/resource.h +//---------------------------------------------------------------------- + +#define VKI_RLIMIT_DATA 2 /* max data size */ +#define VKI_RLIMIT_STACK 3 /* max stack size */ +#define VKI_RLIMIT_CORE 4 /* max core file size */ +#define VKI_RLIMIT_NOFILE 7 /* max number of open files */ + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/socket.h +//---------------------------------------------------------------------- + +#define VKI_SOL_SOCKET 1 +#define VKI_SO_TYPE 3 + +#define VKI_SO_ATTACH_FILTER 26 + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/sockios.h +//---------------------------------------------------------------------- + +#define VKI_FIOSETOWN 0x8901 +#define VKI_SIOCSPGRP 0x8902 +#define VKI_FIOGETOWN 0x8903 +#define VKI_SIOCGPGRP 0x8904 +#define VKI_SIOCATMARK 0x8905 +#define VKI_SIOCGSTAMP_OLD 0x8906 /* Get stamp (timeval) */ +#define VKI_SIOCGSTAMPNS_OLD 0x8907 /* Get stamp (timespec) */ + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/linux/sockios.h +//---------------------------------------------------------------------- + +#define VKI_SIOCGSTAMP VKI_SIOCGSTAMP_OLD +#define VKI_SIOCGSTAMPNS VKI_SIOCGSTAMPNS_OLD + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/stat.h +//---------------------------------------------------------------------- + +struct vki_stat { + unsigned long st_dev; /* Device. */ + unsigned long st_ino; /* File serial number. */ + unsigned int st_mode; /* File mode. */ + unsigned int st_nlink; /* Link count. */ + unsigned int st_uid; /* User ID of the file's owner. */ + unsigned int st_gid; /* Group ID of the file's group. */ + unsigned long st_rdev; /* Device number, if device. */ + unsigned long __pad1; + long st_size; /* Size of file, in bytes. */ + int st_blksize; /* Optimal block size for I/O. */ + int __pad2; + long st_blocks; /* Number 512-byte blocks allocated. */ + long st_atime; /* Time of last access. */ + unsigned long st_atime_nsec; + long st_mtime; /* Time of last modification. */ + unsigned long st_mtime_nsec; + long st_ctime; /* Time of last status change. */ + unsigned long st_ctime_nsec; + unsigned int __unused4; + unsigned int __unused5; +}; + +struct vki_stat64 { + unsigned long long st_dev; /* Device. */ + unsigned long long st_ino; /* File serial number. */ + unsigned int st_mode; /* File mode. */ + unsigned int st_nlink; /* Link count. */ + unsigned int st_uid; /* User ID of the file's owner. */ + unsigned int st_gid; /* Group ID of the file's group. */ + unsigned long long st_rdev; /* Device number, if device. */ + unsigned long long __pad1; + long long st_size; /* Size of file, in bytes. */ + int st_blksize; /* Optimal block size for I/O. */ + int __pad2; + long long st_blocks; /* Number 512-byte blocks allocated. */ + int st_atime; /* Time of last access. */ + unsigned int st_atime_nsec; + int st_mtime; /* Time of last modification. */ + unsigned int st_mtime_nsec; + int st_ctime; /* Time of last status change. */ + unsigned int st_ctime_nsec; + unsigned int __unused4; + unsigned int __unused5; +}; + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/statfs.h +//---------------------------------------------------------------------- + +#define __vki_statfs_word __vki_kernel_long_t + +struct vki_statfs { + __vki_statfs_word f_type; + __vki_statfs_word f_bsize; + __vki_statfs_word f_blocks; + __vki_statfs_word f_bfree; + __vki_statfs_word f_bavail; + __vki_statfs_word f_files; + __vki_statfs_word f_ffree; + __vki_kernel_fsid_t f_fsid; + __vki_statfs_word f_namelen; + __vki_statfs_word f_frsize; + __vki_statfs_word f_flags; + __vki_statfs_word f_spare[4]; +}; + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/termios.h +//---------------------------------------------------------------------- + +struct vki_winsize { + unsigned short ws_row; + unsigned short ws_col; + unsigned short ws_xpixel; + unsigned short ws_ypixel; +}; + +#define VKI_NCC 8 +struct vki_termio { + unsigned short c_iflag; /* input mode flags */ + unsigned short c_oflag; /* output mode flags */ + unsigned short c_cflag; /* control mode flags */ + unsigned short c_lflag; /* local mode flags */ + unsigned char c_line; /* line discipline */ + unsigned char c_cc[VKI_NCC]; /* control characters */ +}; + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/termbits.h +//---------------------------------------------------------------------- + +typedef unsigned char vki_cc_t; +typedef unsigned int vki_speed_t; +typedef unsigned int vki_tcflag_t; + +#define VKI_NCCS 19 +struct vki_termios { + vki_tcflag_t c_iflag; /* input mode flags */ + vki_tcflag_t c_oflag; /* output mode flags */ + vki_tcflag_t c_cflag; /* control mode flags */ + vki_tcflag_t c_lflag; /* local mode flags */ + vki_cc_t c_line; /* line discipline */ + vki_cc_t c_cc[VKI_NCCS]; /* control characters */ +}; + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/ioctl.h +//---------------------------------------------------------------------- + +#define _VKI_IOC_NRBITS 8 +#define _VKI_IOC_TYPEBITS 8 +#define _VKI_IOC_SIZEBITS 14 +#define _VKI_IOC_DIRBITS 2 + +#define _VKI_IOC_NRMASK ((1 << _VKI_IOC_NRBITS)-1) +#define _VKI_IOC_TYPEMASK ((1 << _VKI_IOC_TYPEBITS)-1) +#define _VKI_IOC_SIZEMASK ((1 << _VKI_IOC_SIZEBITS)-1) +#define _VKI_IOC_DIRMASK ((1 << _VKI_IOC_DIRBITS)-1) + +#define _VKI_IOC_NRSHIFT 0 +#define _VKI_IOC_TYPESHIFT (_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS) +#define _VKI_IOC_SIZESHIFT (_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS) +#define _VKI_IOC_DIRSHIFT (_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS) + +#define _VKI_IOC_NONE 0U +#define _VKI_IOC_WRITE 1U +#define _VKI_IOC_READ 2U + +#define _VKI_IOC(dir,type,nr,size) \ + (((dir) << _VKI_IOC_DIRSHIFT) | \ + ((type) << _VKI_IOC_TYPESHIFT) | \ + ((nr) << _VKI_IOC_NRSHIFT) | \ + ((size) << _VKI_IOC_SIZESHIFT)) + +#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0) +#define _VKI_IOR(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr),(_VKI_IOC_TYPECHECK(size))) +#define _VKI_IOW(type,nr,size) _VKI_IOC(_VKI_IOC_WRITE,(type),(nr),(_VKI_IOC_TYPECHECK(size))) +#define _VKI_IOWR(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),(_VKI_IOC_TYPECHECK(size))) +#define _VKI_IOR_BAD(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr),sizeof(size)) +#define _VKI_IOW_BAD(type,nr,size) _VKI_IOC(_VKI_IOC_WRITE,(type),(nr),sizeof(size)) +#define _VKI_IOWR_BAD(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),sizeof(size)) + +#define _VKI_IOC_DIR(nr) (((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK) +#define _VKI_IOC_TYPE(nr) (((nr) >> _VKI_IOC_TYPESHIFT) & _VKI_IOC_TYPEMASK) +#define _VKI_IOC_NR(nr) (((nr) >> _VKI_IOC_NRSHIFT) & _VKI_IOC_NRMASK) +#define _VKI_IOC_SIZE(nr) (((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK) + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/ioctls.h +//---------------------------------------------------------------------- + +#define VKI_TCGETS 0x5401 +#define VKI_TCSETS 0x5402 +#define VKI_TCSETSW 0x5403 +#define VKI_TCSETSF 0x5404 +#define VKI_TCGETA 0x5405 +#define VKI_TCSETA 0x5406 +#define VKI_TCSETAW 0x5407 +#define VKI_TCSETAF 0x5408 +#define VKI_TCSBRK 0x5409 +#define VKI_TCXONC 0x540A +#define VKI_TCFLSH 0x540B +#define VKI_TIOCEXCL 0x540C +#define VKI_TIOCNXCL 0x540D +#define VKI_TIOCSCTTY 0x540E +#define VKI_TIOCGPGRP 0x540F +#define VKI_TIOCSPGRP 0x5410 +#define VKI_TIOCOUTQ 0x5411 +#define VKI_TIOCSTI 0x5412 +#define VKI_TIOCGWINSZ 0x5413 +#define VKI_TIOCSWINSZ 0x5414 +#define VKI_TIOCMGET 0x5415 +#define VKI_TIOCMBIS 0x5416 +#define VKI_TIOCMBIC 0x5417 +#define VKI_TIOCMSET 0x5418 +#define VKI_TIOCGSOFTCAR 0x5419 +#define VKI_TIOCSSOFTCAR 0x541A +#define VKI_FIONREAD 0x541B +#define VKI_TIOCINQ VKI_FIONREAD +#define VKI_TIOCLINUX 0x541C +#define VKI_TIOCCONS 0x541D +#define VKI_TIOCGSERIAL 0x541E +#define VKI_TIOCSSERIAL 0x541F +#define VKI_TIOCPKT 0x5420 +#define VKI_FIONBIO 0x5421 +#define VKI_TIOCNOTTY 0x5422 +#define VKI_TIOCSETD 0x5423 +#define VKI_TIOCGETD 0x5424 +#define VKI_TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */ +#define VKI_TIOCSBRK 0x5427 /* BSD compatibility */ +#define VKI_TIOCCBRK 0x5428 /* BSD compatibility */ +#define VKI_TIOCGSID 0x5429 /* Return the session ID of FD */ +#define VKI_TCGETS2 _VKI_IOR('T', 0x2A, struct termios2) +#define VKI_TCSETS2 _VKI_IOW('T', 0x2B, struct termios2) +#define VKI_TCSETSW2 _VKI_IOW('T', 0x2C, struct termios2) +#define VKI_TCSETSF2 _VKI_IOW('T', 0x2D, struct termios2) +#define VKI_TIOCGRS485 0x542E +#define VKI_TIOCSRS485 0x542F +#define VKI_TIOCGPTN _VKI_IOR('T', 0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ +#define VKI_TIOCSPTLCK _VKI_IOW('T', 0x31, int) /* Lock/unlock Pty */ +#define VKI_TIOCGDEV _VKI_IOR('T', 0x32, unsigned int) /* Get primary device node of /dev/console */ +#define VKI_TCGETX 0x5432 /* SYS5 TCGETX compatibility */ +#define VKI_TCSETX 0x5433 +#define VKI_TCSETXF 0x5434 +#define VKI_TCSETXW 0x5435 +#define VKI_TIOCSIG _VKI_IOW('T', 0x36, int) /* pty: generate signal */ +#define VKI_TIOCVHANGUP 0x5437 +#define VKI_TIOCGPKT _VKI_IOR('T', 0x38, int) /* Get packet mode state */ +#define VKI_TIOCGPTLCK _VKI_IOR('T', 0x39, int) /* Get Pty lock state */ +#define VKI_TIOCGEXCL _VKI_IOR('T', 0x40, int) /* Get exclusive mode state */ +#define VKI_TIOCGPTPEER _VKI_IO('T', 0x41) /* Safely open the slave */ +#define VKI_TIOCGISO7816 _VKI_IOR('T', 0x42, struct serial_iso7816) +#define VKI_TIOCSISO7816 _VKI_IOWR('T', 0x43, struct serial_iso7816) + +#define VKI_FIONCLEX 0x5450 +#define VKI_FIOCLEX 0x5451 +#define VKI_FIOASYNC 0x5452 +#define VKI_TIOCSERCONFIG 0x5453 +#define VKI_TIOCSERGWILD 0x5454 +#define VKI_TIOCSERSWILD 0x5455 +#define VKI_TIOCGLCKTRMIOS 0x5456 +#define VKI_TIOCSLCKTRMIOS 0x5457 +#define VKI_TIOCSERGSTRUCT 0x5458 /* For debugging only */ +#define VKI_TIOCSERGETLSR 0x5459 /* Get line status register */ +#define VKI_TIOCSERGETMULTI 0x545A /* Get multiport config */ +#define VKI_TIOCSERSETMULTI 0x545B /* Set multiport config */ + +#define VKI_TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */ +#define VKI_TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ + +#define VKI_FIOQSIZE 0x5460 + +#define VKI_TIOCPKT_DATA 0 +#define VKI_TIOCPKT_FLUSHREAD 1 +#define VKI_TIOCPKT_FLUSHWRITE 2 +#define VKI_TIOCPKT_STOP 4 +#define VKI_TIOCPKT_START 8 +#define VKI_TIOCPKT_NOSTOP 16 +#define VKI_TIOCPKT_DOSTOP 32 +#define VKI_TIOCPKT_IOCTL 64 + +#define VKI_TIOCSER_TEMT 0x01 /* Transmitter physically empty */ + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/poll.h +//---------------------------------------------------------------------- + +#define VKI_POLLIN 0x0001 + +struct vki_pollfd { + int fd; + short events; + short revents; +}; + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/arch/loongarch/include/asm/elf.h +//---------------------------------------------------------------------- + +#define VKI_ELF_NGREG 45 +#define VKI_ELF_NFPREG 34 + +typedef unsigned long vki_elf_greg_t; +typedef vki_elf_greg_t vki_elf_gregset_t[VKI_ELF_NGREG]; + +typedef double vki_elf_fpreg_t; +typedef vki_elf_fpreg_t vki_elf_fpregset_t[VKI_ELF_NFPREG]; + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/arch/loongarch/include/uapi/asm/ucontext.h +//---------------------------------------------------------------------- + +struct vki_ucontext { + unsigned long uc_flags; + struct vki_ucontext *uc_link; + vki_stack_t uc_stack; + vki_sigset_t uc_sigmask; + __vki_u8 __unused[1024 / 8 - sizeof(vki_sigset_t)]; + struct vki_sigcontext uc_mcontext; +}; + +typedef char vki_modify_ldt_t; + + + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/ipcbuf.h +//---------------------------------------------------------------------- + +struct vki_ipc64_perm { + __vki_kernel_key_t key; + __vki_kernel_uid32_t uid; + __vki_kernel_gid32_t gid; + __vki_kernel_uid32_t cuid; + __vki_kernel_gid32_t cgid; + __vki_kernel_mode_t mode; + unsigned char __pad1[4 - sizeof(__vki_kernel_mode_t)]; /* pad if mode_t is u16: */ + unsigned short seq; + unsigned short __pad2; + __vki_kernel_ulong_t __unused1; + __vki_kernel_ulong_t __unused2; +}; + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/sembuf.h +//---------------------------------------------------------------------- +struct vki_semid64_ds { + struct vki_ipc64_perm sem_perm; /* permissions .. see ipc.h */ + long sem_otime; /* last semop time */ + long sem_ctime; /* last change time */ + unsigned long sem_nsems; /* no. of semaphores in array */ + unsigned long __unused3; + unsigned long __unused4; +}; + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/msgbuf.h +//---------------------------------------------------------------------- + +struct vki_msqid64_ds { + struct vki_ipc64_perm msg_perm; + long msg_stime; /* last msgsnd time */ + long msg_rtime; /* last msgrcv time */ + long msg_ctime; /* last change time */ + unsigned long msg_cbytes; /* current number of bytes on queue */ + unsigned long msg_qnum; /* number of messages in queue */ + unsigned long msg_qbytes; /* max number of bytes on queue */ + __vki_kernel_pid_t msg_lspid; /* pid of last msgsnd */ + __vki_kernel_pid_t msg_lrpid; /* last receive pid */ + unsigned long __unused4; + unsigned long __unused5; +}; + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/shmbuf.h +//---------------------------------------------------------------------- + +struct vki_shmid64_ds { + struct vki_ipc64_perm shm_perm; /* operation perms */ + vki_size_t shm_segsz; /* size of segment (bytes) */ + long shm_atime; /* last attach time */ + long shm_dtime; /* last detach time */ + long shm_ctime; /* last change time */ + __vki_kernel_pid_t shm_cpid; /* pid of creator */ + __vki_kernel_pid_t shm_lpid; /* pid of last operator */ + unsigned long shm_nattch; /* no. of current attaches */ + unsigned long __unused4; + unsigned long __unused5; +}; + +struct vki_shminfo64 { + unsigned long shmmax; + unsigned long shmmin; + unsigned long shmmni; + unsigned long shmseg; + unsigned long shmall; + unsigned long __unused1; + unsigned long __unused2; + unsigned long __unused3; + unsigned long __unused4; +}; + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/arch/loongarch/include/uapi/asm/ptrace.h +//---------------------------------------------------------------------- + +struct vki_user_pt_regs { + /* Saved main processor registers. */ + unsigned long regs[32]; + + /* Original syscall arg0. */ + unsigned long orig_a0; + + /* Saved special registers. */ + unsigned long csr_era; + unsigned long csr_badv; + unsigned long reserved[10]; +} __attribute__((aligned(8))); + +#define vki_user_regs_struct vki_user_pt_regs + +struct vki_user_fp_state { + vki_uint64_t fpr[32]; + vki_uint64_t fcc; + vki_uint32_t fcsr; +}; + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/errno.h +//---------------------------------------------------------------------- + +#define VKI_ENOSYS 38 /* Invalid system call number */ +#define VKI_EOVERFLOW 75 /* Value too large for defined data type */ + +#endif // __VKI_LOONGARCH64_LINUX_H + +/*--------------------------------------------------------------------*/ +/*--- end vki-loongarch64-linux.h ---*/ +/*--------------------------------------------------------------------*/ diff --git a/include/vki/vki-posixtypes-loongarch64-linux.h b/include/vki/vki-posixtypes-loongarch64-linux.h new file mode 100644 index 0000000..0282a2a --- /dev/null +++ b/include/vki/vki-posixtypes-loongarch64-linux.h @@ -0,0 +1,76 @@ + +/*--------------------------------------------------------------------*/ +/*--- loongarch/Linux-specific kernel interface: posix types. ---*/ +/*--- vki-posixtypes-loongarch64-linux.h ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2021-2022 Loongson Technology Corporation Limited + + This program 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 2 of the + License, or (at your option) any later version. + + This program 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 this program; if not, see . + + The GNU General Public License is contained in the file COPYING. +*/ + +#ifndef __VKI_POSIXTYPES_LOONGARCH64_LINUX_H +#define __VKI_POSIXTYPES_LOONGARCH64_LINUX_H + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/posix_types.h +//---------------------------------------------------------------------- + +typedef long __vki_kernel_long_t; +typedef unsigned long __vki_kernel_ulong_t; +typedef __vki_kernel_ulong_t __vki_kernel_ino_t; +typedef unsigned int __vki_kernel_mode_t; +typedef int __vki_kernel_pid_t; +typedef int __vki_kernel_ipc_pid_t; +typedef unsigned int __vki_kernel_uid_t; +typedef unsigned int __vki_kernel_gid_t; +typedef __vki_kernel_long_t __vki_kernel_suseconds_t; +typedef int __vki_kernel_daddr_t; +typedef unsigned int __vki_kernel_uid32_t; +typedef unsigned int __vki_kernel_gid32_t; +typedef __vki_kernel_uid_t __vki_kernel_old_uid_t; +typedef __vki_kernel_gid_t __vki_kernel_old_gid_t; +typedef unsigned int __vki_kernel_old_dev_t; + +typedef __vki_kernel_ulong_t __vki_kernel_size_t; +typedef __vki_kernel_long_t __vki_kernel_ssize_t; +typedef __vki_kernel_long_t __vki_kernel_ptrdiff_t; + +typedef struct { + int val[2]; +} __vki_kernel_fsid_t; + +typedef __vki_kernel_long_t __vki_kernel_off_t; +typedef long long __vki_kernel_loff_t; +typedef __vki_kernel_long_t __vki_kernel_old_time_t; +typedef __vki_kernel_long_t __vki_kernel_time_t; +typedef long long __vki_kernel_time64_t; +typedef __vki_kernel_long_t __vki_kernel_clock_t; +typedef int __vki_kernel_timer_t; +typedef int __vki_kernel_clockid_t; +typedef char * __vki_kernel_caddr_t; +typedef unsigned short __vki_kernel_uid16_t; +typedef unsigned short __vki_kernel_gid16_t; + +#endif // __VKI_POSIXTYPES_LOONGARCH64_LINUX_H + +/*--------------------------------------------------------------------*/ +/*--- end vki-posixtypes-loongarch64-linux.h ---*/ +/*--------------------------------------------------------------------*/ diff --git a/include/vki/vki-scnums-loongarch64-linux.h b/include/vki/vki-scnums-loongarch64-linux.h new file mode 100644 index 0000000..b7ac621 --- /dev/null +++ b/include/vki/vki-scnums-loongarch64-linux.h @@ -0,0 +1,356 @@ +/*--------------------------------------------------------------------*/ +/*--- System call numbers for loongarch-linux. ---*/ +/*--- vki-scnums-loongarch64-linux.h ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2021-2022 Loongson Technology Corporation Limited + + This program 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 2 of the + License, or (at your option) any later version. + + This program 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 this program; if not, see . + + The GNU General Public License is contained in the file COPYING. +*/ + +#ifndef __VKI_SCNUMS_LOONGARCH64_LINUX_H +#define __VKI_SCNUMS_LOONGARCH64_LINUX_H + +//---------------------------------------------------------------------- +// From linux-5.19-rc1/include/uapi/asm-generic/unistd.h +//---------------------------------------------------------------------- + +#define __NR_io_setup 0 +#define __NR_io_destroy 1 +#define __NR_io_submit 2 +#define __NR_io_cancel 3 +#define __NR_io_getevents 4 +#define __NR_setxattr 5 +#define __NR_lsetxattr 6 +#define __NR_fsetxattr 7 +#define __NR_getxattr 8 +#define __NR_lgetxattr 9 +#define __NR_fgetxattr 10 +#define __NR_listxattr 11 +#define __NR_llistxattr 12 +#define __NR_flistxattr 13 +#define __NR_removexattr 14 +#define __NR_lremovexattr 15 +#define __NR_fremovexattr 16 +#define __NR_getcwd 17 +#define __NR_lookup_dcookie 18 +#define __NR_eventfd2 19 +#define __NR_epoll_create1 20 +#define __NR_epoll_ctl 21 +#define __NR_epoll_pwait 22 +#define __NR_dup 23 +#define __NR_dup3 24 +#define __NR3264_fcntl 25 +#define __NR_inotify_init1 26 +#define __NR_inotify_add_watch 27 +#define __NR_inotify_rm_watch 28 +#define __NR_ioctl 29 +#define __NR_ioprio_set 30 +#define __NR_ioprio_get 31 +#define __NR_flock 32 +#define __NR_mknodat 33 +#define __NR_mkdirat 34 +#define __NR_unlinkat 35 +#define __NR_symlinkat 36 +#define __NR_linkat 37 +// #define __NR_renameat 38 +#define __NR_umount2 39 +#define __NR_mount 40 +#define __NR_pivot_root 41 +#define __NR_nfsservctl 42 +#define __NR3264_statfs 43 +#define __NR3264_fstatfs 44 +#define __NR3264_truncate 45 +#define __NR3264_ftruncate 46 +#define __NR_fallocate 47 +#define __NR_faccessat 48 +#define __NR_chdir 49 +#define __NR_fchdir 50 +#define __NR_chroot 51 +#define __NR_fchmod 52 +#define __NR_fchmodat 53 +#define __NR_fchownat 54 +#define __NR_fchown 55 +#define __NR_openat 56 +#define __NR_close 57 +#define __NR_vhangup 58 +#define __NR_pipe2 59 +#define __NR_quotactl 60 +#define __NR_getdents64 61 +#define __NR3264_lseek 62 +#define __NR_read 63 +#define __NR_write 64 +#define __NR_readv 65 +#define __NR_writev 66 +#define __NR_pread64 67 +#define __NR_pwrite64 68 +#define __NR_preadv 69 +#define __NR_pwritev 70 +#define __NR3264_sendfile 71 +#define __NR_pselect6 72 +#define __NR_ppoll 73 +#define __NR_signalfd4 74 +#define __NR_vmsplice 75 +#define __NR_splice 76 +#define __NR_tee 77 +#define __NR_readlinkat 78 +#define __NR3264_fstatat 79 +#define __NR3264_fstat 80 +#define __NR_sync 81 +#define __NR_fsync 82 +#define __NR_fdatasync 83 +#define __NR_sync_file_range 84 +#define __NR_timerfd_create 85 +#define __NR_timerfd_settime 86 +#define __NR_timerfd_gettime 87 +#define __NR_utimensat 88 +#define __NR_acct 89 +#define __NR_capget 90 +#define __NR_capset 91 +#define __NR_personality 92 +#define __NR_exit 93 +#define __NR_exit_group 94 +#define __NR_waitid 95 +#define __NR_set_tid_address 96 +#define __NR_unshare 97 +#define __NR_futex 98 +#define __NR_set_robust_list 99 +#define __NR_get_robust_list 100 +#define __NR_nanosleep 101 +#define __NR_getitimer 102 +#define __NR_setitimer 103 +#define __NR_kexec_load 104 +#define __NR_init_module 105 +#define __NR_delete_module 106 +#define __NR_timer_create 107 +#define __NR_timer_gettime 108 +#define __NR_timer_getoverrun 109 +#define __NR_timer_settime 110 +#define __NR_timer_delete 111 +#define __NR_clock_settime 112 +#define __NR_clock_gettime 113 +#define __NR_clock_getres 114 +#define __NR_clock_nanosleep 115 +#define __NR_syslog 116 +#define __NR_ptrace 117 +#define __NR_sched_setparam 118 +#define __NR_sched_setscheduler 119 +#define __NR_sched_getscheduler 120 +#define __NR_sched_getparam 121 +#define __NR_sched_setaffinity 122 +#define __NR_sched_getaffinity 123 +#define __NR_sched_yield 124 +#define __NR_sched_get_priority_max 125 +#define __NR_sched_get_priority_min 126 +#define __NR_sched_rr_get_interval 127 +#define __NR_restart_syscall 128 +#define __NR_kill 129 +#define __NR_tkill 130 +#define __NR_tgkill 131 +#define __NR_sigaltstack 132 +#define __NR_rt_sigsuspend 133 +#define __NR_rt_sigaction 134 +#define __NR_rt_sigprocmask 135 +#define __NR_rt_sigpending 136 +#define __NR_rt_sigtimedwait 137 +#define __NR_rt_sigqueueinfo 138 +#define __NR_rt_sigreturn 139 +#define __NR_setpriority 140 +#define __NR_getpriority 141 +#define __NR_reboot 142 +#define __NR_setregid 143 +#define __NR_setgid 144 +#define __NR_setreuid 145 +#define __NR_setuid 146 +#define __NR_setresuid 147 +#define __NR_getresuid 148 +#define __NR_setresgid 149 +#define __NR_getresgid 150 +#define __NR_setfsuid 151 +#define __NR_setfsgid 152 +#define __NR_times 153 +#define __NR_setpgid 154 +#define __NR_getpgid 155 +#define __NR_getsid 156 +#define __NR_setsid 157 +#define __NR_getgroups 158 +#define __NR_setgroups 159 +#define __NR_uname 160 +#define __NR_sethostname 161 +#define __NR_setdomainname 162 +// #define __NR_getrlimit 163 +// #define __NR_setrlimit 164 +#define __NR_getrusage 165 +#define __NR_umask 166 +#define __NR_prctl 167 +#define __NR_getcpu 168 +#define __NR_gettimeofday 169 +#define __NR_settimeofday 170 +#define __NR_adjtimex 171 +#define __NR_getpid 172 +#define __NR_getppid 173 +#define __NR_getuid 174 +#define __NR_geteuid 175 +#define __NR_getgid 176 +#define __NR_getegid 177 +#define __NR_gettid 178 +#define __NR_sysinfo 179 +#define __NR_mq_open 180 +#define __NR_mq_unlink 181 +#define __NR_mq_timedsend 182 +#define __NR_mq_timedreceive 183 +#define __NR_mq_notify 184 +#define __NR_mq_getsetattr 185 +#define __NR_msgget 186 +#define __NR_msgctl 187 +#define __NR_msgrcv 188 +#define __NR_msgsnd 189 +#define __NR_semget 190 +#define __NR_semctl 191 +#define __NR_semtimedop 192 +#define __NR_semop 193 +#define __NR_shmget 194 +#define __NR_shmctl 195 +#define __NR_shmat 196 +#define __NR_shmdt 197 +#define __NR_socket 198 +#define __NR_socketpair 199 +#define __NR_bind 200 +#define __NR_listen 201 +#define __NR_accept 202 +#define __NR_connect 203 +#define __NR_getsockname 204 +#define __NR_getpeername 205 +#define __NR_sendto 206 +#define __NR_recvfrom 207 +#define __NR_setsockopt 208 +#define __NR_getsockopt 209 +#define __NR_shutdown 210 +#define __NR_sendmsg 211 +#define __NR_recvmsg 212 +#define __NR_readahead 213 +#define __NR_brk 214 +#define __NR_munmap 215 +#define __NR_mremap 216 +#define __NR_add_key 217 +#define __NR_request_key 218 +#define __NR_keyctl 219 +#define __NR_clone 220 +#define __NR_execve 221 +#define __NR3264_mmap 222 +#define __NR3264_fadvise64 223 +#define __NR_swapon 224 +#define __NR_swapoff 225 +#define __NR_mprotect 226 +#define __NR_msync 227 +#define __NR_mlock 228 +#define __NR_munlock 229 +#define __NR_mlockall 230 +#define __NR_munlockall 231 +#define __NR_mincore 232 +#define __NR_madvise 233 +#define __NR_remap_file_pages 234 +#define __NR_mbind 235 +#define __NR_get_mempolicy 236 +#define __NR_set_mempolicy 237 +#define __NR_migrate_pages 238 +#define __NR_move_pages 239 +#define __NR_rt_tgsigqueueinfo 240 +#define __NR_perf_event_open 241 +#define __NR_accept4 242 +#define __NR_recvmmsg 243 + +#define __NR_wait4 260 +#define __NR_prlimit64 261 +#define __NR_fanotify_init 262 +#define __NR_fanotify_mark 263 +#define __NR_name_to_handle_at 264 +#define __NR_open_by_handle_at 265 +#define __NR_clock_adjtime 266 +#define __NR_syncfs 267 +#define __NR_setns 268 +#define __NR_sendmmsg 269 +#define __NR_process_vm_readv 270 +#define __NR_process_vm_writev 271 +#define __NR_kcmp 272 +#define __NR_finit_module 273 +#define __NR_sched_setattr 274 +#define __NR_sched_getattr 275 +#define __NR_renameat2 276 +#define __NR_seccomp 277 +#define __NR_getrandom 278 +#define __NR_memfd_create 279 +#define __NR_bpf 280 +#define __NR_execveat 281 +#define __NR_userfaultfd 282 +#define __NR_membarrier 283 +#define __NR_mlock2 284 +#define __NR_copy_file_range 285 +#define __NR_preadv2 286 +#define __NR_pwritev2 287 +#define __NR_pkey_mprotect 288 +#define __NR_pkey_alloc 289 +#define __NR_pkey_free 290 +#define __NR_statx 291 +#define __NR_io_pgetevents 292 +#define __NR_rseq 293 +#define __NR_kexec_file_load 294 + +#define __NR_pidfd_send_signal 424 +#define __NR_io_uring_setup 425 +#define __NR_io_uring_enter 426 +#define __NR_io_uring_register 427 +#define __NR_open_tree 428 +#define __NR_move_mount 429 +#define __NR_fsopen 430 +#define __NR_fsconfig 431 +#define __NR_fsmount 432 +#define __NR_fspick 433 +#define __NR_pidfd_open 434 +#define __NR_clone3 435 +#define __NR_close_range 436 +#define __NR_openat2 437 +#define __NR_pidfd_getfd 438 +#define __NR_faccessat2 439 +#define __NR_process_madvise 440 +#define __NR_epoll_pwait2 441 +#define __NR_mount_setattr 442 +#define __NR_quotactl_fd 443 +#define __NR_landlock_create_ruleset 444 +#define __NR_landlock_add_rule 445 +#define __NR_landlock_restrict_self 446 +// #define __NR_memfd_secret 447 +#define __NR_process_mrelease 448 + +#define __NR_fcntl __NR3264_fcntl +#define __NR_statfs __NR3264_statfs +#define __NR_fstatfs __NR3264_fstatfs +#define __NR_truncate __NR3264_truncate +#define __NR_ftruncate __NR3264_ftruncate +#define __NR_lseek __NR3264_lseek +#define __NR_sendfile __NR3264_sendfile +#define __NR_mmap __NR3264_mmap +#define __NR_fadvise64 __NR3264_fadvise64 + +#endif /* __VKI_SCNUMS_LOONGARCH64_LINUX_H */ + +/*--------------------------------------------------------------------*/ +/*--- end vki-scnums-loongarch64-linux.h ---*/ +/*--------------------------------------------------------------------*/ diff --git a/install-sh b/install-sh index 8175c64..ec298b5 100755 --- a/install-sh +++ b/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2018-03-11.20; # UTC +scriptversion=2020-11-14.01; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -69,6 +69,11 @@ posix_mkdir= # Desired mode of installed file. mode=0755 +# Create dirs (including intermediate dirs) using mode 755. +# This is like GNU 'install' as of coreutils 8.32 (2020). +mkdir_umask=22 + +backupsuffix= chgrpcmd= chmodcmd=$chmodprog chowncmd= @@ -99,18 +104,28 @@ Options: --version display version info and exit. -c (ignored) - -C install only if different (preserve the last data modification time) + -C install only if different (preserve data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. + -p pass -p to $cpprog. -s $stripprog installed files. + -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG + +By default, rm is invoked with -f; when overridden with RMPROG, +it's up to you to specify -f if you want it. + +If -S is not specified, no backups are attempted. + +Email bug reports to bug-automake@gnu.org. +Automake home page: https://www.gnu.org/software/automake/ " while test $# -ne 0; do @@ -137,8 +152,13 @@ while test $# -ne 0; do -o) chowncmd="$chownprog $2" shift;; + -p) cpprog="$cpprog -p";; + -s) stripcmd=$stripprog;; + -S) backupsuffix="$2" + shift;; + -t) is_target_a_directory=always dst_arg=$2 @@ -255,6 +275,10 @@ do dstdir=$dst test -d "$dstdir" dstdir_status=$? + # Don't chown directories that already exist. + if test $dstdir_status = 0; then + chowncmd="" + fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command @@ -301,22 +325,6 @@ do if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then @@ -326,52 +334,49 @@ do fi posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - # Note that $RANDOM variable is not portable (e.g. dash); Use it - # here however when possible just to lower collision chance. - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - - trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 - - # Because "mkdir -p" follows existing symlinks and we likely work - # directly in world-writeable /tmp, make sure that the '$tmpdir' - # directory is successfully created first before we actually test - # 'mkdir -p' feature. - if (umask $mkdir_umask && - $mkdirprog $mkdir_mode "$tmpdir" && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - test_tmpdir="$tmpdir/a" - ls_ld_tmpdir=`ls -ld "$test_tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null - fi - trap '' 0;; - esac;; + # The $RANDOM variable is not portable (e.g., dash). Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap ' + ret=$? + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null + exit $ret + ' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p'. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; esac if @@ -382,7 +387,7 @@ do then : else - # The umask is ridiculous, or mkdir does not conform to POSIX, + # mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. @@ -411,7 +416,7 @@ do prefixes= else if $posix_mkdir; then - (umask=$mkdir_umask && + (umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 @@ -451,7 +456,18 @@ do trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # @@ -477,6 +493,13 @@ do then rm -f "$dsttmp" else + # If $backupsuffix is set, and the file being installed + # already exists, attempt a backup. Don't worry if it fails, + # e.g., if mv doesn't support -f. + if test -n "$backupsuffix" && test -f "$dst"; then + $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null + fi + # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || @@ -491,9 +514,9 @@ do # file should still install successfully. { test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || + $doit $rmcmd "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 diff --git a/lackey/Makefile.in b/lackey/Makefile.in index a6c4d99..611ab37 100644 --- a/lackey/Makefile.in +++ b/lackey/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -214,8 +214,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool.am $(top_srcdir)/depcomp @@ -264,6 +262,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -277,6 +277,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -422,6 +423,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -562,6 +564,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -607,6 +615,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ @@ -690,6 +699,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ @FLAG_M64@ +TOOL_LDFLAGS_LOONGARCH64_LINUX = \ + -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ + @FLAG_M64@ + TOOL_LDFLAGS_X86_SOLARIS = \ $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ @@ -744,6 +757,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ LIBREPLACEMALLOC_MIPS64_LINUX = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a +LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a + LIBREPLACEMALLOC_X86_SOLARIS = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a @@ -806,6 +822,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ $(LIBREPLACEMALLOC_MIPS64_LINUX) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ + -Wl,--no-whole-archive + LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_SOLARIS) \ @@ -1071,7 +1092,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/lackey/tests/Makefile.in b/lackey/tests/Makefile.in index fdeabed..28b8668 100644 --- a/lackey/tests/Makefile.in +++ b/lackey/tests/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -141,6 +141,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -154,6 +156,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -299,6 +302,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -347,7 +351,6 @@ ctags CTAGS: cscope cscopelist: - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/massif/Makefile.in b/massif/Makefile.in index e4d9888..2330182 100644 --- a/massif/Makefile.in +++ b/massif/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -268,8 +268,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/ms_print.in \ $(top_srcdir)/Makefile.all.am $(top_srcdir)/Makefile.tool.am \ @@ -319,6 +317,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -332,6 +332,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -477,6 +478,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -617,6 +619,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -662,6 +670,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ @@ -745,6 +754,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ @FLAG_M64@ +TOOL_LDFLAGS_LOONGARCH64_LINUX = \ + -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ + @FLAG_M64@ + TOOL_LDFLAGS_X86_SOLARIS = \ $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ @@ -799,6 +812,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ LIBREPLACEMALLOC_MIPS64_LINUX = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a +LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a + LIBREPLACEMALLOC_X86_SOLARIS = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a @@ -861,6 +877,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ $(LIBREPLACEMALLOC_MIPS64_LINUX) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ + -Wl,--no-whole-archive + LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_SOLARIS) \ @@ -1208,7 +1229,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/massif/tests/Makefile.am b/massif/tests/Makefile.am index 98c1252..be9bd3f 100644 --- a/massif/tests/Makefile.am +++ b/massif/tests/Makefile.am @@ -10,6 +10,7 @@ EXTRA_DIST = \ basic2.post.exp basic2.stderr.exp basic2.vgtest \ big-alloc.post.exp big-alloc.post.exp-64bit big-alloc.post.exp-ppc64 \ big-alloc.stderr.exp big-alloc.vgtest \ + big-alloc.post.exp-loongarch64 \ deep-A.post.exp deep-A.stderr.exp deep-A.vgtest \ deep-B.post.exp deep-B.stderr.exp deep-B.vgtest \ deep-C.post.exp deep-C.stderr.exp deep-C.vgtest \ diff --git a/massif/tests/Makefile.in b/massif/tests/Makefile.in index 3845f2d..152e85f 100644 --- a/massif/tests/Makefile.in +++ b/massif/tests/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -307,8 +307,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -331,6 +329,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -344,6 +344,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -489,6 +490,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -628,6 +630,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -673,6 +681,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -703,6 +712,7 @@ EXTRA_DIST = \ basic2.post.exp basic2.stderr.exp basic2.vgtest \ big-alloc.post.exp big-alloc.post.exp-64bit big-alloc.post.exp-ppc64 \ big-alloc.stderr.exp big-alloc.vgtest \ + big-alloc.post.exp-loongarch64 \ deep-A.post.exp deep-A.stderr.exp deep-A.vgtest \ deep-B.post.exp deep-B.stderr.exp deep-B.vgtest \ deep-C.post.exp deep-C.stderr.exp deep-C.vgtest \ @@ -1018,7 +1028,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/massif/tests/big-alloc.post.exp-loongarch64 b/massif/tests/big-alloc.post.exp-loongarch64 new file mode 100644 index 0000000..0dd5671 --- /dev/null +++ b/massif/tests/big-alloc.post.exp-loongarch64 @@ -0,0 +1,54 @@ +-------------------------------------------------------------------------------- +Command: ./big-alloc +Massif arguments: --stacks=no --time-unit=B --massif-out-file=massif.out --ignore-fn=__part_load_locale --ignore-fn=__time_load_locale --ignore-fn=dwarf2_unwind_dyld_add_image_hook --ignore-fn=get_or_create_key_element +ms_print arguments: massif.out +-------------------------------------------------------------------------------- + + + MB +100.2^ : + | : + | @@@@@@@: + | @ : + | :::::::@ : + | : @ : + | :::::::: @ : + | : : @ : + | :::::::: : @ : + | : : : @ : + | :::::::: : : @ : + | : : : : @ : + | ::::::::: : : : @ : + | : : : : : @ : + | :::::::: : : : : @ : + | : : : : : : @ : + | :::::::: : : : : : @ : + | : : : : : : : @ : + | :::::::: : : : : : : @ : + | : : : : : : : : @ : + 0 +----------------------------------------------------------------------->MB + 0 100.2 + +Number of snapshots: 11 + Detailed snapshots: [9] + +-------------------------------------------------------------------------------- + n time(B) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 0 0 0 0 0 0 + 1 10,502,088 10,502,088 10,485,760 16,328 0 + 2 21,004,176 21,004,176 20,971,520 32,656 0 + 3 31,506,264 31,506,264 31,457,280 48,984 0 + 4 42,008,352 42,008,352 41,943,040 65,312 0 + 5 52,510,440 52,510,440 52,428,800 81,640 0 + 6 63,012,528 63,012,528 62,914,560 97,968 0 + 7 73,514,616 73,514,616 73,400,320 114,296 0 + 8 84,016,704 84,016,704 83,886,080 130,624 0 + 9 94,518,792 94,518,792 94,371,840 146,952 0 +99.84% (94,371,840B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->99.84% (94,371,840B) 0x........: main (big-alloc.c:12) + +-------------------------------------------------------------------------------- + n time(B) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 10 105,020,880 105,020,880 104,857,600 163,280 0 diff --git a/memcheck/Makefile.in b/memcheck/Makefile.in index 49713da..fcf6580 100644 --- a/memcheck/Makefile.in +++ b/memcheck/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -302,8 +302,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool.am $(top_srcdir)/depcomp @@ -352,6 +350,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -365,6 +365,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -510,6 +511,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -650,6 +652,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -695,6 +703,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ @@ -778,6 +787,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ @FLAG_M64@ +TOOL_LDFLAGS_LOONGARCH64_LINUX = \ + -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ + @FLAG_M64@ + TOOL_LDFLAGS_X86_SOLARIS = \ $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ @@ -832,6 +845,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ LIBREPLACEMALLOC_MIPS64_LINUX = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a +LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a + LIBREPLACEMALLOC_X86_SOLARIS = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a @@ -894,6 +910,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ $(LIBREPLACEMALLOC_MIPS64_LINUX) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ + -Wl,--no-whole-archive + LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_SOLARIS) \ @@ -1452,7 +1473,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/mc_machine.c b/memcheck/mc_machine.c index 7a87143..d963157 100644 --- a/memcheck/mc_machine.c +++ b/memcheck/mc_machine.c @@ -1324,6 +1324,118 @@ static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB ) offset,szB); tl_assert(0); # undef GOF +# undef SZB + + /* ----------------- loongarch64 ----------------- */ + +# elif defined(VGA_loongarch64) + +# define GOF(_fieldname) \ + (offsetof(VexGuestLOONGARCH64State,guest_##_fieldname)) +# define SZB(_fieldname) \ + (sizeof(((VexGuestLOONGARCH64State*)0)->guest_##_fieldname)) + + Int o = offset; + Int sz = szB; + Bool is48 = sz == 8 || sz == 4; + Bool is1248 = sz == 8 || sz == 4 || sz == 2 || sz == 1; + + tl_assert(sz > 0); + tl_assert(host_is_little_endian()); + + if (o == GOF(R0) && is1248) return o; + if (o == GOF(R1) && is1248) return o; + if (o == GOF(R2) && is1248) return o; + if (o == GOF(R3) && is1248) return o; + if (o == GOF(R4) && is1248) return o; + if (o == GOF(R5) && is1248) return o; + if (o == GOF(R6) && is1248) return o; + if (o == GOF(R7) && is1248) return o; + if (o == GOF(R8) && is1248) return o; + if (o == GOF(R9) && is1248) return o; + if (o == GOF(R10) && is1248) return o; + if (o == GOF(R11) && is1248) return o; + if (o == GOF(R12) && is1248) return o; + if (o == GOF(R13) && is1248) return o; + if (o == GOF(R14) && is1248) return o; + if (o == GOF(R15) && is1248) return o; + if (o == GOF(R16) && is1248) return o; + if (o == GOF(R17) && is1248) return o; + if (o == GOF(R18) && is1248) return o; + if (o == GOF(R19) && is1248) return o; + if (o == GOF(R20) && is1248) return o; + if (o == GOF(R21) && is1248) return o; + if (o == GOF(R22) && is1248) return o; + if (o == GOF(R23) && is1248) return o; + if (o == GOF(R24) && is1248) return o; + if (o == GOF(R25) && is1248) return o; + if (o == GOF(R26) && is1248) return o; + if (o == GOF(R27) && is1248) return o; + if (o == GOF(R28) && is1248) return o; + if (o == GOF(R29) && is1248) return o; + if (o == GOF(R30) && is1248) return o; + if (o == GOF(R31) && is1248) return o; + + if (o == GOF(PC) && sz == 8) return -1; /* slot unused */ + + if (o >= GOF(F0) && o + sz <= GOF(F0) + SZB(F0)) return GOF(F0); + if (o >= GOF(F1) && o + sz <= GOF(F1) + SZB(F1)) return GOF(F1); + if (o >= GOF(F2) && o + sz <= GOF(F2) + SZB(F2)) return GOF(F2); + if (o >= GOF(F3) && o + sz <= GOF(F3) + SZB(F3)) return GOF(F3); + if (o >= GOF(F4) && o + sz <= GOF(F4) + SZB(F4)) return GOF(F4); + if (o >= GOF(F5) && o + sz <= GOF(F5) + SZB(F5)) return GOF(F5); + if (o >= GOF(F6) && o + sz <= GOF(F6) + SZB(F6)) return GOF(F6); + if (o >= GOF(F7) && o + sz <= GOF(F7) + SZB(F7)) return GOF(F7); + if (o >= GOF(F8) && o + sz <= GOF(F8) + SZB(F8)) return GOF(F8); + if (o >= GOF(F9) && o + sz <= GOF(F9) + SZB(F9)) return GOF(F9); + if (o >= GOF(F10) && o + sz <= GOF(F10) + SZB(F10)) return GOF(F10); + if (o >= GOF(F11) && o + sz <= GOF(F11) + SZB(F11)) return GOF(F11); + if (o >= GOF(F12) && o + sz <= GOF(F12) + SZB(F12)) return GOF(F12); + if (o >= GOF(F13) && o + sz <= GOF(F13) + SZB(F13)) return GOF(F13); + if (o >= GOF(F14) && o + sz <= GOF(F14) + SZB(F14)) return GOF(F14); + if (o >= GOF(F15) && o + sz <= GOF(F15) + SZB(F15)) return GOF(F15); + if (o >= GOF(F16) && o + sz <= GOF(F16) + SZB(F16)) return GOF(F16); + if (o >= GOF(F17) && o + sz <= GOF(F17) + SZB(F17)) return GOF(F17); + if (o >= GOF(F18) && o + sz <= GOF(F18) + SZB(F18)) return GOF(F18); + if (o >= GOF(F19) && o + sz <= GOF(F19) + SZB(F19)) return GOF(F19); + if (o >= GOF(F20) && o + sz <= GOF(F20) + SZB(F20)) return GOF(F20); + if (o >= GOF(F21) && o + sz <= GOF(F21) + SZB(F21)) return GOF(F21); + if (o >= GOF(F22) && o + sz <= GOF(F22) + SZB(F22)) return GOF(F22); + if (o >= GOF(F23) && o + sz <= GOF(F23) + SZB(F23)) return GOF(F23); + if (o >= GOF(F24) && o + sz <= GOF(F24) + SZB(F24)) return GOF(F24); + if (o >= GOF(F25) && o + sz <= GOF(F25) + SZB(F25)) return GOF(F25); + if (o >= GOF(F26) && o + sz <= GOF(F26) + SZB(F26)) return GOF(F26); + if (o >= GOF(F27) && o + sz <= GOF(F27) + SZB(F27)) return GOF(F27); + if (o >= GOF(F28) && o + sz <= GOF(F28) + SZB(F28)) return GOF(F28); + if (o >= GOF(F29) && o + sz <= GOF(F29) + SZB(F29)) return GOF(F29); + if (o >= GOF(F30) && o + sz <= GOF(F30) + SZB(F30)) return GOF(F30); + if (o >= GOF(F31) && o + sz <= GOF(F31) + SZB(F31)) return GOF(F31); + + if (o == GOF(FCC0) && sz == 1) return -1; /* slot unused */ + if (o == GOF(FCC1) && sz == 1) return -1; /* slot unused */ + if (o == GOF(FCC2) && sz == 1) return -1; /* slot unused */ + if (o == GOF(FCC3) && sz == 1) return -1; /* slot unused */ + if (o == GOF(FCC4) && sz == 1) return -1; /* slot unused */ + if (o == GOF(FCC5) && sz == 1) return -1; /* slot unused */ + if (o == GOF(FCC6) && sz == 1) return -1; /* slot unused */ + if (o == GOF(FCC7) && sz == 1) return -1; /* slot unused */ + if (o == GOF(FCSR) && sz == 4) return -1; /* slot unused */ + + if (o == GOF(EMNOTE) && sz == 4) return -1; /* slot unused */ + + if (o == GOF(CMSTART) && sz == 8) return -1; /* slot unused */ + if (o == GOF(CMLEN) && sz == 8) return -1; /* slot unused */ + + if (o == GOF(NRADDR) && sz == 8) return -1; /* slot unused */ + + if (o == GOF(LLSC_SIZE) && sz == 8) return -1; /* slot unused */ + if (o == GOF(LLSC_ADDR) && sz == 8) return -1; /* slot unused */ + if (o == GOF(LLSC_DATA) && is48) return -1; /* slot unused */ + + VG_(printf)("MC_(get_otrack_shadow_offset)(loongarch64)(off=%d,sz=%d)\n", + offset,szB); + tl_assert(0); +# undef GOF # undef SZB # else @@ -1447,6 +1559,13 @@ IRType MC_(get_otrack_reg_array_equiv_int_type) ( IRRegArray* arr ) VG_(printf)("\n"); tl_assert(0); + /* ----------------- loongarch64 ----------------- */ +# elif defined(VGA_loongarch64) + VG_(printf)("get_reg_array_equiv_int_type(loongarch64): unhandled: "); + ppIRRegArray(arr); + VG_(printf)("\n"); + tl_assert(0); + # else # error "FIXME: not implemented for this architecture" # endif diff --git a/memcheck/mc_translate.c b/memcheck/mc_translate.c index 87b8ac6..2db476b 100644 --- a/memcheck/mc_translate.c +++ b/memcheck/mc_translate.c @@ -3315,6 +3315,7 @@ IRAtom* expr2vbits_Triop ( MCEnv* mce, case Iop_MulD64: case Iop_MulF64r32: case Iop_DivF64: + case Iop_ScaleBF64: case Iop_DivD64: case Iop_DivF64r32: case Iop_ScaleF64: @@ -3334,6 +3335,7 @@ IRAtom* expr2vbits_Triop ( MCEnv* mce, case Iop_SubF32: case Iop_MulF32: case Iop_DivF32: + case Iop_ScaleBF32: /* I32(rm) x F32 x F32 -> I32 */ return mkLazy3(mce, Ity_I32, vatom1, vatom2, vatom3); case Iop_SignificanceRoundD64: @@ -4308,6 +4310,8 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, case Iop_TanF64: case Iop_2xm1F64: case Iop_SqrtF64: + case Iop_RSqrtF64: + case Iop_LogBF64: case Iop_RecpExpF64: /* I32(rm) x I64/F64 -> I64/F64 */ return mkLazy2(mce, Ity_I64, vatom1, vatom2); @@ -4364,6 +4368,8 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, case Iop_RoundF32toInt: case Iop_SqrtF32: + case Iop_RSqrtF32: + case Iop_LogBF32: case Iop_RecpExpF32: /* I32(rm) x I32/F32 -> I32/F32 */ return mkLazy2(mce, Ity_I32, vatom1, vatom2); @@ -4444,11 +4450,15 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, case Iop_MaxNumF32: case Iop_MinNumF32: + case Iop_MaxNumAbsF32: + case Iop_MinNumAbsF32: /* F32 x F32 -> F32 */ return mkLazy2(mce, Ity_I32, vatom1, vatom2); case Iop_MaxNumF64: case Iop_MinNumF64: + case Iop_MaxNumAbsF64: + case Iop_MinNumAbsF64: /* F64 x F64 -> F64 */ return mkLazy2(mce, Ity_I64, vatom1, vatom2); @@ -8484,6 +8494,9 @@ IRSB* MC_(instrument) ( VgCallbackClosure* closure, # elif defined(VGA_ppc64le) // Needed by (at least) set_AV_CR6() in the front end. mce.dlbo.dl_CmpEQ64_CmpNE64 = DLexpensive; +# elif defined(VGA_loongarch64) + mce.dlbo.dl_CmpEQ32_CmpNE32 = DLexpensive; + mce.dlbo.dl_CmpEQ64_CmpNE64 = DLexpensive; # endif /* preInstrumentationAnalysis() will allocate &mce.tmpHowUsed and then diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am index 84b2a81..a74b1f6 100644 --- a/memcheck/tests/Makefile.am +++ b/memcheck/tests/Makefile.am @@ -47,6 +47,9 @@ endif if VGCONF_PLATFORMS_INCLUDE_ARM64_LINUX SUBDIRS += arm64-linux endif +if VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX +SUBDIRS += loongarch64-linux +endif if VGCONF_PLATFORMS_INCLUDE_X86_SOLARIS SUBDIRS += x86-solaris endif @@ -57,6 +60,7 @@ endif DIST_SUBDIRS = x86 amd64 ppc32 ppc64 s390x linux \ darwin solaris x86-linux amd64-linux arm64-linux \ x86-solaris amd64-solaris mips32 mips64 \ + loongarch64-linux x86-solaris amd64-solaris mips32 mips64 \ common . dist_noinst_SCRIPTS = \ diff --git a/memcheck/tests/Makefile.in b/memcheck/tests/Makefile.in index 9b7db82..852b0f8 100644 --- a/memcheck/tests/Makefile.in +++ b/memcheck/tests/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -143,8 +143,9 @@ host_triplet = @host@ @VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE@am__append_21 = x86-linux @VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_TRUE@am__append_22 = amd64-linux @VGCONF_PLATFORMS_INCLUDE_ARM64_LINUX_TRUE@am__append_23 = arm64-linux -@VGCONF_PLATFORMS_INCLUDE_X86_SOLARIS_TRUE@am__append_24 = x86-solaris -@VGCONF_PLATFORMS_INCLUDE_AMD64_SOLARIS_TRUE@am__append_25 = amd64-solaris +@VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_TRUE@am__append_24 = loongarch64-linux +@VGCONF_PLATFORMS_INCLUDE_X86_SOLARIS_TRUE@am__append_25 = x86-solaris +@VGCONF_PLATFORMS_INCLUDE_AMD64_SOLARIS_TRUE@am__append_26 = amd64-solaris check_PROGRAMS = accounting$(EXEEXT) addressable$(EXEEXT) \ atomic_incs$(EXEEXT) badaddrvalue$(EXEEXT) badfree$(EXEEXT) \ badjump$(EXEEXT) badjump2$(EXEEXT) badloop$(EXEEXT) \ @@ -204,16 +205,16 @@ check_PROGRAMS = accounting$(EXEEXT) addressable$(EXEEXT) \ $(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) # Sun Studio assembler fails on "IDENT too long" -@SOLARIS_SUN_STUDIO_AS_FALSE@am__append_26 = long_namespace_xml -@DWARF4_TRUE@am__append_27 = dw4 -@GZ_ZLIB_TRUE@am__append_28 = cdebug_zlib -@GZ_ZLIB_GNU_TRUE@am__append_29 = cdebug_zlib_gnu -@HAVE_GNU_STPNCPY_TRUE@am__append_30 = stpncpy -@HAVE_PTHREAD_SETNAME_NP_TRUE@am__append_31 = threadname -@HAVE_PTHREAD_BARRIER_TRUE@am__append_32 = reach_thread_register -@VGCONF_OS_IS_SOLARIS_TRUE@am__append_33 = -D_XOPEN_SOURCE=600 -@VGCONF_OS_IS_SOLARIS_TRUE@am__append_34 = -D__EXTENSIONS__ -@VGCONF_OS_IS_SOLARIS_TRUE@am__append_35 = -D_XOPEN_SOURCE=600 +@SOLARIS_SUN_STUDIO_AS_FALSE@am__append_27 = long_namespace_xml +@DWARF4_TRUE@am__append_28 = dw4 +@GZ_ZLIB_TRUE@am__append_29 = cdebug_zlib +@GZ_ZLIB_GNU_TRUE@am__append_30 = cdebug_zlib_gnu +@HAVE_GNU_STPNCPY_TRUE@am__append_31 = stpncpy +@HAVE_PTHREAD_SETNAME_NP_TRUE@am__append_32 = threadname +@HAVE_PTHREAD_BARRIER_TRUE@am__append_33 = reach_thread_register +@VGCONF_OS_IS_SOLARIS_TRUE@am__append_34 = -D_XOPEN_SOURCE=600 +@VGCONF_OS_IS_SOLARIS_TRUE@am__append_35 = -D__EXTENSIONS__ +@VGCONF_OS_IS_SOLARIS_TRUE@am__append_36 = -D_XOPEN_SOURCE=600 subdir = memcheck/tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac @@ -1054,8 +1055,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -1103,6 +1102,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -1116,6 +1117,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -1261,6 +1263,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -1400,6 +1403,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -1445,6 +1454,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -1471,10 +1481,12 @@ SUBDIRS = . $(am__append_11) $(am__append_12) $(am__append_13) \ $(am__append_14) $(am__append_15) $(am__append_16) \ $(am__append_17) $(am__append_18) $(am__append_19) \ $(am__append_20) $(am__append_21) $(am__append_22) \ - $(am__append_23) $(am__append_24) $(am__append_25) + $(am__append_23) $(am__append_24) $(am__append_25) \ + $(am__append_26) DIST_SUBDIRS = x86 amd64 ppc32 ppc64 s390x linux \ darwin solaris x86-linux amd64-linux arm64-linux \ x86-solaris amd64-solaris mips32 mips64 \ + loongarch64-linux x86-solaris amd64-solaris mips32 mips64 \ common . dist_noinst_SCRIPTS = \ @@ -1767,7 +1779,7 @@ dw4_CFLAGS = $(AM_CFLAGS) -gdwarf-4 -fdebug-types-section descr_belowsp_LDADD = -lpthread err_disable3_LDADD = -lpthread err_disable4_LDADD = -lpthread -err_disable4_CFLAGS = $(AM_CFLAGS) $(am__append_33) +err_disable4_CFLAGS = $(AM_CFLAGS) $(am__append_34) reach_thread_register_CFLAGS = $(AM_CFLAGS) -O2 reach_thread_register_LDADD = -lpthread thread_alloca_LDADD = -lpthread @@ -1782,7 +1794,7 @@ inltemplate_SOURCES = inltemplate.cpp inltemplate_CXXFLAGS = $(AM_CXXFLAGS) @FLAG_W_NO_UNINITIALIZED@ long_namespace_xml_SOURCES = long_namespace_xml.cpp manuel1_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@ -memalign2_CFLAGS = $(AM_CFLAGS) $(am__append_34) +memalign2_CFLAGS = $(AM_CFLAGS) $(am__append_35) memcmptest_CFLAGS = $(AM_CFLAGS) -fno-builtin-memcmp mismatches_SOURCES = mismatches.cpp mismatches_CXXFLAGS = $(AM_CXXFLAGS) @FLAG_W_NO_MISMATCHED_NEW_DELETE@ @@ -1804,7 +1816,7 @@ origin6_fp_CFLAGS = $(AM_CFLAGS) -O # because then we can't intercept it overlap_CFLAGS = $(AM_CFLAGS) -fno-builtin-memcpy -fno-builtin-strcpy resvn_stack_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@ -sendmsg_CFLAGS = $(AM_CFLAGS) $(am__append_35) +sendmsg_CFLAGS = $(AM_CFLAGS) $(am__append_36) @VGCONF_OS_IS_SOLARIS_TRUE@sendmsg_LDADD = -lsocket -lnsl str_tester_CFLAGS = $(AM_CFLAGS) -Wno-shadow \ @FLAG_W_NO_MEMSET_TRANSPOSED_ARGS@ @@ -3486,7 +3498,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/tests/amd64-linux/Makefile.in b/memcheck/tests/amd64-linux/Makefile.in index 65322eb..113033f 100644 --- a/memcheck/tests/amd64-linux/Makefile.in +++ b/memcheck/tests/amd64-linux/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -208,8 +208,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -232,6 +230,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -245,6 +245,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -390,6 +391,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -529,6 +531,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -574,6 +582,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -757,7 +766,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/tests/amd64-solaris/Makefile.in b/memcheck/tests/amd64-solaris/Makefile.in index e7d2c28..5708e66 100644 --- a/memcheck/tests/amd64-solaris/Makefile.in +++ b/memcheck/tests/amd64-solaris/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -223,8 +223,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -247,6 +245,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -260,6 +260,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -405,6 +406,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -544,6 +546,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -589,6 +597,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -788,7 +797,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/tests/amd64/Makefile.in b/memcheck/tests/amd64/Makefile.in index d9e8f7e..ec3b2bd 100644 --- a/memcheck/tests/amd64/Makefile.in +++ b/memcheck/tests/amd64/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -273,8 +273,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -297,6 +295,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -310,6 +310,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -455,6 +456,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -594,6 +596,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -639,6 +647,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -944,7 +953,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/tests/arm64-linux/Makefile.in b/memcheck/tests/arm64-linux/Makefile.in index c9756a5..91523a5 100644 --- a/memcheck/tests/arm64-linux/Makefile.in +++ b/memcheck/tests/arm64-linux/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -194,8 +194,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -218,6 +216,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -231,6 +231,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -376,6 +377,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -515,6 +517,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -560,6 +568,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -711,7 +720,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/tests/atomic_incs.c b/memcheck/tests/atomic_incs.c index f931750..17cc296 100644 --- a/memcheck/tests/atomic_incs.c +++ b/memcheck/tests/atomic_incs.c @@ -234,6 +234,29 @@ __attribute__((noinline)) void atomic_add_8bit ( char* p, int n ) ); } while (block[2] != 1); #endif +#elif defined(VGA_loongarch64) + unsigned long long int block[3] + = { (unsigned long long int)(Addr)p, (unsigned long long int)n, 0x0ULL }; + do { + __asm__ __volatile__( + "move $t0, %0 \n\t" + "ld.d $t1, $t0, 0 \n\t" // p + "ld.d $t2, $t0, 8 \n\t" // n + "andi $t2, $t2, 0xff \n\t" // n = n & 0xff + "li.d $s0, 0xff \n\t" + "nor $s0, $s0, $zero \n\t" // $s0 = 0xffffff00 + "ll.d $t3, $t1, 0 \n\t" // $t3 = old value + "and $s0, $s0, $t3 \n\t" // $s0 = $t3 & 0xffffff00 + "add.d $t3, $t3, $t2 \n\t" // $t3 = $t3 + n + "andi $t3, $t3, 0xff \n\t" // $t3 = $t3 & 0xff + "or $t3, $t3, $s0 \n\t" // $t3 = $t3 | $s0 + "sc.d $t3, $t1, 0 \n\t" + "st.d $t3, $t0, 16 \n\t" // save result + : /*out*/ + : /*in*/ "r" (&block[0]) + : /*trash*/ "t0", "t1", "t2", "t3", "s0", "memory" + ); + } while (block[2] != 1); #else # error "Unsupported arch" #endif @@ -450,6 +473,30 @@ __attribute__((noinline)) void atomic_add_16bit ( short* p, int n ) ); } while (block[2] != 1); #endif +#elif defined(VGA_loongarch64) + unsigned long long int block[3] + = { (unsigned long long int)(Addr)p, (unsigned long long int)n, 0x0ULL }; + do { + __asm__ __volatile__( + "move $t0, %0 \n\t" + "ld.d $t1, $t0, 0 \n\t" // p + "ld.d $t2, $t0, 8 \n\t" // n + "li.d $s0, 0xffff \n\t" + "and $t2, $t2, $s0 \n\t" // n = n & 0xffff + "nor $s0, $s0, $zero \n\t" // $s0= 0xffff0000 + "ll.d $t3, $t1, 0 \n\t" // $t3 = old value + "and $s0, $s0, $t3 \n\t" // $s0 = $t3 & 0xffff0000 + "add.d $t3, $t3, $t2 \n\t" // $t3 = $t3 + n + "li.d $t2, 0xffff \n\t" + "and $t3, $t3, $t2 \n\t" // $t3 = $t3 & 0xffff + "or $t3, $t3, $s0 \n\t" // $t3 = $t3 | $s0 + "sc.d $t3, $t1, 0 \n\t" + "st.d $t3, $t0, 16 \n\t" // save result + : /*out*/ + : /*in*/ "r" (&block[0]) + : /*trash*/ "t0", "t1", "t2", "t3", "s0", "memory" + ); + } while (block[2] != 1); #else # error "Unsupported arch" #endif @@ -605,6 +652,23 @@ __attribute__((noinline)) void atomic_add_32bit ( int* p, int n ) : /*trash*/ "memory", "t0", "t1", "t2", "t3" ); } while (block[2] != 1); +#elif defined(VGA_loongarch64) + unsigned long long int block[3] + = { (unsigned long long int)(Addr)p, (unsigned long long int)n, 0x0ULL }; + do { + __asm__ __volatile__( + "move $t0, %0 \n\t" + "ld.d $t1, $t0, 0 \n\t" // p + "ld.d $t2, $t0, 8 \n\t" // n + "ll.d $t3, $t1, 0 \n\t" + "add.d $t3, $t3, $t2 \n\t" + "sc.d $t3, $t1, 0 \n\t" + "st.d $t3, $t0, 16 \n\t" + : /*out*/ + : /*in*/ "r" (&block[0]) + : /*trash*/ "t0", "t1", "t2", "t3", "memory" + ); + } while (block[2] != 1); #else # error "Unsupported arch" #endif @@ -613,7 +677,8 @@ __attribute__((noinline)) void atomic_add_32bit ( int* p, int n ) __attribute__((noinline)) void atomic_add_64bit ( long long int* p, int n ) { #if defined(VGA_x86) || defined(VGA_ppc32) || defined(VGA_mips32) \ - || defined (VGA_nanomips) + || defined (VGA_nanomips) \ + || defined(VGA_loongarch64) /* do nothing; is not supported */ #elif defined(VGA_amd64) // this is a bit subtle. It relies on the fact that, on a 64-bit platform, @@ -707,6 +772,23 @@ __attribute__((noinline)) void atomic_add_64bit ( long long int* p, int n ) : /*trash*/ "memory", "t0", "t1", "t2", "t3" ); } while (block[2] != 1); +#elif defined(VGA_loongarch64) + unsigned long long int block[3] + = { (unsigned long long int)(Addr)p, (unsigned long long int)n, 0x0ULL }; + do { + __asm__ __volatile__( + "move $t0, %0 \n\t" + "ld.d $t1, $t0, 0 \n\t" // p + "ld.d $t2, $t0, 8 \n\t" // n + "ll.d $t3, $t1, 0 \n\t" + "add.d $t3, $t3, $t2 \n\t" + "sc.d $t3, $t1, 0 \n\t" + "st.d $t3, $t0, 16 \n\t" + : /*out*/ + : /*in*/ "r" (&block[0]) + : /*trash*/ "t0", "t1", "t2", "t3", "memory" + ); + } while (block[2] != 1); #else # error "Unsupported arch" #endif diff --git a/memcheck/tests/common/Makefile.in b/memcheck/tests/common/Makefile.in index 1289102..e9dfa69 100644 --- a/memcheck/tests/common/Makefile.in +++ b/memcheck/tests/common/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -174,6 +174,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -187,6 +189,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -332,6 +335,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -471,6 +475,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -516,6 +526,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -582,7 +593,6 @@ ctags CTAGS: cscope cscopelist: - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/tests/darwin/Makefile.in b/memcheck/tests/darwin/Makefile.in index 9d18076..04e9e09 100644 --- a/memcheck/tests/darwin/Makefile.in +++ b/memcheck/tests/darwin/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -237,8 +237,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -261,6 +259,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -274,6 +274,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -419,6 +420,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -558,6 +560,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -603,6 +611,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -813,7 +822,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/tests/leak-segv-jmp.c b/memcheck/tests/leak-segv-jmp.c index 58c5559..49f8381 100644 --- a/memcheck/tests/leak-segv-jmp.c +++ b/memcheck/tests/leak-segv-jmp.c @@ -182,6 +182,19 @@ extern UWord do_syscall_WRK ( return out; } +#elif defined(VGP_loongarch64_linux) +extern UWord do_syscall_WRK (UWord a1, UWord a2, UWord a3, /* $a0, $a1, $a2 */ + UWord a4, UWord a5, UWord a6, /* $a3, $a4, $a5 */ + UWord syscall_no); /* $a6 */ +asm ( + ".text \n\t" + ".globl do_syscall_WRK \n\t" + "do_syscall_WRK: \n\t" + " move $a7, $a6 \n\t" /* a7 = syscall_no */ + " syscall 0 \n\t" + " jr $ra \n\t" +); + #elif defined(VGP_x86_solaris) extern ULong do_syscall_WRK(UWord a1, UWord a2, UWord a3, @@ -256,7 +269,7 @@ static void non_simd_mprotect (long tid, void* addr, long len) &err); if (err) mprotect_result = -1; -#elif defined(VGP_arm64_linux) +#elif defined(VGP_arm64_linux) || defined (VGP_loongarch64_linux) mprotect_result = do_syscall_WRK((UWord) addr, len, PROT_NONE, 0, 0, 0, __NR_mprotect); diff --git a/memcheck/tests/leak-segv-jmp.stderr.exp b/memcheck/tests/leak-segv-jmp.stderr.exp index bc3d11d..b94bd08 100644 --- a/memcheck/tests/leak-segv-jmp.stderr.exp +++ b/memcheck/tests/leak-segv-jmp.stderr.exp @@ -14,8 +14,8 @@ To see them, rerun with: --leak-check=full --show-leak-kinds=all expecting a leak 1,000 bytes in 1 blocks are definitely lost in loss record ... of ... at 0x........: malloc (vg_replace_malloc.c:...) - by 0x........: f (leak-segv-jmp.c:293) - by 0x........: main (leak-segv-jmp.c:368) + by 0x........: f (leak-segv-jmp.c:306) + by 0x........: main (leak-segv-jmp.c:381) LEAK SUMMARY: definitely lost: 1,000 bytes in 1 blocks @@ -30,8 +30,8 @@ mprotect result 0 expecting a leak again 1,000 bytes in 1 blocks are definitely lost in loss record ... of ... at 0x........: malloc (vg_replace_malloc.c:...) - by 0x........: f (leak-segv-jmp.c:293) - by 0x........: main (leak-segv-jmp.c:368) + by 0x........: f (leak-segv-jmp.c:306) + by 0x........: main (leak-segv-jmp.c:381) LEAK SUMMARY: definitely lost: 1,000 bytes in 1 blocks @@ -46,8 +46,8 @@ full mprotect result 0 expecting a leak again after full mprotect 1,000 bytes in 1 blocks are definitely lost in loss record ... of ... at 0x........: malloc (vg_replace_malloc.c:...) - by 0x........: f (leak-segv-jmp.c:293) - by 0x........: main (leak-segv-jmp.c:368) + by 0x........: f (leak-segv-jmp.c:306) + by 0x........: main (leak-segv-jmp.c:381) LEAK SUMMARY: definitely lost: 1,000 bytes in 1 blocks @@ -62,13 +62,13 @@ mprotect result 0 expecting heuristic not to crash after full mprotect 1,000 bytes in 1 blocks are definitely lost in loss record ... of ... at 0x........: malloc (vg_replace_malloc.c:...) - by 0x........: f (leak-segv-jmp.c:293) - by 0x........: main (leak-segv-jmp.c:368) + by 0x........: f (leak-segv-jmp.c:306) + by 0x........: main (leak-segv-jmp.c:381) 200,000 bytes in 1 blocks are possibly lost in loss record ... of ... at 0x........: calloc (vg_replace_malloc.c:...) - by 0x........: f (leak-segv-jmp.c:340) - by 0x........: main (leak-segv-jmp.c:368) + by 0x........: f (leak-segv-jmp.c:353) + by 0x........: main (leak-segv-jmp.c:381) LEAK SUMMARY: definitely lost: 1,000 bytes in 1 blocks diff --git a/memcheck/tests/leak.h b/memcheck/tests/leak.h index 9056cf0..cfcb521 100644 --- a/memcheck/tests/leak.h +++ b/memcheck/tests/leak.h @@ -143,6 +143,27 @@ "$8", "$9", "$10", "$11", "$12", "$13", \ "$14", "$15", "$24", "$25", "$31"); \ } while (0) +#elif defined (VGA_loongarch64) +#define CLEAR_CALLER_SAVED_REGS \ + do { \ + __asm__ __volatile__ ("move $a0, $zero \n\t" \ + "move $a1, $zero \n\t" \ + "move $a2, $zero \n\t" \ + "move $a3, $zero \n\t" \ + "move $a4, $zero \n\t" \ + "move $a5, $zero \n\t" \ + "move $a6, $zero \n\t" \ + "move $a7, $zero \n\t" \ + "move $t0, $zero \n\t" \ + "move $t1, $zero \n\t" \ + "move $t2, $zero \n\t" \ + "move $t3, $zero \n\t" \ + "move $t4, $zero \n\t" \ + "move $t5, $zero \n\t" \ + "move $t6, $zero \n\t" \ + "move $t7, $zero \n\t" \ + "move $t8, $zero \n\t"); \ + } while (0) #else #define CLEAR_CALLER_SAVED_REGS /*nothing*/ #endif diff --git a/memcheck/tests/linux/Makefile.in b/memcheck/tests/linux/Makefile.in index 1fef7f2..41cfa7a 100644 --- a/memcheck/tests/linux/Makefile.in +++ b/memcheck/tests/linux/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -305,8 +305,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -329,6 +327,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -342,6 +342,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -487,6 +488,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -626,6 +628,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -671,6 +679,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -981,7 +990,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/tests/loongarch64-linux/Makefile.am b/memcheck/tests/loongarch64-linux/Makefile.am new file mode 100644 index 0000000..5afcaa4 --- /dev/null +++ b/memcheck/tests/loongarch64-linux/Makefile.am @@ -0,0 +1,17 @@ + +include $(top_srcdir)/Makefile.tool-tests.am + +dist_noinst_SCRIPTS = \ + filter_stderr + +noinst_HEADERS = scalar.h + +EXTRA_DIST = \ + scalar.stderr.exp scalar.vgtest + +check_PROGRAMS = \ + scalar + +AM_CFLAGS += @FLAG_M64@ +AM_CXXFLAGS += @FLAG_M64@ +AM_CCASFLAGS += @FLAG_M64@ diff --git a/memcheck/tests/loongarch64-linux/Makefile.in b/memcheck/tests/loongarch64-linux/Makefile.in new file mode 100644 index 0000000..a113196 --- /dev/null +++ b/memcheck/tests/loongarch64-linux/Makefile.in @@ -0,0 +1,965 @@ +# Makefile.in generated by automake 1.16.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2021 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# This file is used for tool tests, and also in perf/Makefile.am. + +# This file should be included (directly or indirectly) by every +# Makefile.am that builds programs. And also the top-level Makefile.am. + +#---------------------------------------------------------------------------- +# Global stuff +#---------------------------------------------------------------------------- + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@COMPILER_IS_CLANG_TRUE@am__append_1 = -Wno-cast-align -Wno-self-assign \ +@COMPILER_IS_CLANG_TRUE@ -Wno-tautological-compare + +@VGCONF_HAVE_ABI_TRUE@am__append_2 = -DVGABI_@VGCONF_ABI@ +@VGCONF_HAVE_ABI_TRUE@@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__append_3 = -DVGABI_@VGCONF_ABI@ +@SOLARIS_XPG_SYMBOLS_PRESENT_TRUE@am__append_4 = -Wl,-M,$(top_srcdir)/solaris/vgpreload-solaris.mapfile + +# The Android toolchain includes all kinds of stdlib helpers present in +# bionic which is bad because we are not linking with it and the Android +# linker will panic. +@VGCONF_PLATVARIANT_IS_ANDROID_TRUE@am__append_5 = -nostdlib +@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__append_6 = -DVGA_SEC_@VGCONF_ARCH_SEC@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGP_SEC_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 + +@VGCONF_HAVE_ABI_TRUE@am__append_7 = -DVGABI_@VGCONF_ABI@ + +# Make sure that all test programs have threaded errno. +# Disable largefile support as there are test cases explicitly enabling it. +@VGCONF_OS_IS_SOLARIS_TRUE@am__append_8 = -D_REENTRANT @SOLARIS_UNDEF_LARGESOURCE@ +@COMPILER_IS_CLANG_TRUE@am__append_9 = -Wno-format-extra-args \ +@COMPILER_IS_CLANG_TRUE@ -Wno-literal-range \ +@COMPILER_IS_CLANG_TRUE@ -Wno-tautological-constant-out-of-range-compare \ +@COMPILER_IS_CLANG_TRUE@ -Wno-self-assign -Wno-string-plus-int \ +@COMPILER_IS_CLANG_TRUE@ -Wno-uninitialized -Wno-unused-value # \ +@COMPILER_IS_CLANG_TRUE@ clang 3.0.0 +@COMPILER_IS_CLANG_TRUE@am__append_10 = -Wno-unused-private-field # drd/tests/tsan_unittest.cpp +check_PROGRAMS = scalar$(EXEEXT) +subdir = memcheck/tests/loongarch64-linux +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_noinst_SCRIPTS) \ + $(noinst_HEADERS) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +scalar_SOURCES = scalar.c +scalar_OBJECTS = scalar.$(OBJEXT) +scalar_LDADD = $(LDADD) +SCRIPTS = $(dist_noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/scalar.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = scalar.c +DIST_SOURCES = scalar.c +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ + $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BOOST_CFLAGS = @BOOST_CFLAGS@ +BOOST_LIBS = @BOOST_LIBS@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAGS_MPI = @CFLAGS_MPI@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_SUPP = @DEFAULT_SUPP@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +DIS_PATH = @DIS_PATH@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ +FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ +FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ +FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ +FLAG_FSANITIZE = @FLAG_FSANITIZE@ +FLAG_M32 = @FLAG_M32@ +FLAG_M64 = @FLAG_M64@ +FLAG_MLONG_DOUBLE_128 = @FLAG_MLONG_DOUBLE_128@ +FLAG_MMMX = @FLAG_MMMX@ +FLAG_MSA = @FLAG_MSA@ +FLAG_MSSE = @FLAG_MSSE@ +FLAG_NO_BUILD_ID = @FLAG_NO_BUILD_ID@ +FLAG_NO_PIE = @FLAG_NO_PIE@ +FLAG_OCTEON = @FLAG_OCTEON@ +FLAG_OCTEON2 = @FLAG_OCTEON2@ +FLAG_PIE = @FLAG_PIE@ +FLAG_T_TEXT = @FLAG_T_TEXT@ +FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ +FLAG_W_CAST_ALIGN = @FLAG_W_CAST_ALIGN@ +FLAG_W_CAST_QUAL = @FLAG_W_CAST_QUAL@ +FLAG_W_EMPTY_BODY = @FLAG_W_EMPTY_BODY@ +FLAG_W_ENUM_CONVERSION = @FLAG_W_ENUM_CONVERSION@ +FLAG_W_EXTRA = @FLAG_W_EXTRA@ +FLAG_W_FORMAT = @FLAG_W_FORMAT@ +FLAG_W_FORMAT_SECURITY = @FLAG_W_FORMAT_SECURITY@ +FLAG_W_FORMAT_SIGNEDNESS = @FLAG_W_FORMAT_SIGNEDNESS@ +FLAG_W_IGNORED_QUALIFIERS = @FLAG_W_IGNORED_QUALIFIERS@ +FLAG_W_IMPLICIT_FALLTHROUGH = @FLAG_W_IMPLICIT_FALLTHROUGH@ +FLAG_W_LOGICAL_OP = @FLAG_W_LOGICAL_OP@ +FLAG_W_MISSING_PARAMETER_TYPE = @FLAG_W_MISSING_PARAMETER_TYPE@ +FLAG_W_NO_INFINITE_RECURSION = @FLAG_W_NO_INFINITE_RECURSION@ +FLAG_W_NO_MEMSET_TRANSPOSED_ARGS = @FLAG_W_NO_MEMSET_TRANSPOSED_ARGS@ +FLAG_W_NO_MISMATCHED_NEW_DELETE = @FLAG_W_NO_MISMATCHED_NEW_DELETE@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ +FLAG_W_NO_POINTER_SIGN = @FLAG_W_NO_POINTER_SIGN@ +FLAG_W_NO_STATIC_LOCAL_IN_INLINE = @FLAG_W_NO_STATIC_LOCAL_IN_INLINE@ +FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ +FLAG_W_NO_UNUSED_FUNCTION = @FLAG_W_NO_UNUSED_FUNCTION@ +FLAG_W_OLD_STYLE_DECLARATION = @FLAG_W_OLD_STYLE_DECLARATION@ +FLAG_W_WRITE_STRINGS = @FLAG_W_WRITE_STRINGS@ +GDB = @GDB@ +GLIBC_VERSION = @GLIBC_VERSION@ +GREP = @GREP@ +HWCAP_HAS_ALTIVEC = @HWCAP_HAS_ALTIVEC@ +HWCAP_HAS_DFP = @HWCAP_HAS_DFP@ +HWCAP_HAS_HTM = @HWCAP_HAS_HTM@ +HWCAP_HAS_ISA_2_05 = @HWCAP_HAS_ISA_2_05@ +HWCAP_HAS_ISA_2_06 = @HWCAP_HAS_ISA_2_06@ +HWCAP_HAS_ISA_2_07 = @HWCAP_HAS_ISA_2_07@ +HWCAP_HAS_ISA_3_00 = @HWCAP_HAS_ISA_3_00@ +HWCAP_HAS_VSX = @HWCAP_HAS_VSX@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LDFLAGS_MPI = @LDFLAGS_MPI@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIB_UBSAN = @LIB_UBSAN@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTO_AR = @LTO_AR@ +LTO_CFLAGS = @LTO_CFLAGS@ +LTO_RANLIB = @LTO_RANLIB@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MPI_CC = @MPI_CC@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PREFERRED_STACK_BOUNDARY_2 = @PREFERRED_STACK_BOUNDARY_2@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS_UNDEF_LARGESOURCE = @SOLARIS_UNDEF_LARGESOURCE@ +STRIP = @STRIP@ +VALT_LOAD_ADDRESS_PRI = @VALT_LOAD_ADDRESS_PRI@ +VALT_LOAD_ADDRESS_SEC = @VALT_LOAD_ADDRESS_SEC@ +VERSION = @VERSION@ +VGCONF_ABI = @VGCONF_ABI@ +VGCONF_ARCH_PRI = @VGCONF_ARCH_PRI@ +VGCONF_ARCH_SEC = @VGCONF_ARCH_SEC@ +VGCONF_OS = @VGCONF_OS@ +VGCONF_PLATFORM_PRI_CAPS = @VGCONF_PLATFORM_PRI_CAPS@ +VGCONF_PLATFORM_SEC_CAPS = @VGCONF_PLATFORM_SEC_CAPS@ +VGCONF_PLATVARIANT = @VGCONF_PLATVARIANT@ +VG_TMPDIR = @VG_TMPDIR@ +XCODE_DIR = @XCODE_DIR@ +XCRUN = @XCRUN@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +inplacedir = $(top_builddir)/.in_place + +#---------------------------------------------------------------------------- +# Flags +#---------------------------------------------------------------------------- + +# Baseline flags for all compilations. Aim here is to maximise +# performance and get whatever useful warnings we can out of gcc. +# -fno-builtin is important for defeating LLVM's idiom recognition +# that somehow causes VG_(memset) to get into infinite recursion. +AM_CFLAGS_BASE = -O2 -g -Wall -Wmissing-prototypes -Wshadow \ + -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations \ + @FLAG_W_CAST_ALIGN@ @FLAG_W_CAST_QUAL@ @FLAG_W_WRITE_STRINGS@ \ + @FLAG_W_EMPTY_BODY@ @FLAG_W_FORMAT@ @FLAG_W_FORMAT_SIGNEDNESS@ \ + @FLAG_W_FORMAT_SECURITY@ @FLAG_W_IGNORED_QUALIFIERS@ \ + @FLAG_W_MISSING_PARAMETER_TYPE@ @FLAG_W_LOGICAL_OP@ \ + @FLAG_W_ENUM_CONVERSION@ @FLAG_W_IMPLICIT_FALLTHROUGH@ \ + @FLAG_W_OLD_STYLE_DECLARATION@ @FLAG_FINLINE_FUNCTIONS@ \ + @FLAG_FNO_STACK_PROTECTOR@ @FLAG_FSANITIZE@ \ + -fno-strict-aliasing -fno-builtin $(am__append_1) +@VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + +# These flags are used for building the preload shared objects (PSOs). +# The aim is to give reasonable performance but also to have good +# stack traces, since users often see stack traces extending +# into (and through) the preloads. Also, we must use any +# -mpreferred-stack-boundary flag to build the preload shared +# objects, since that risks misaligning the client's stack and +# results in segfaults like (eg) #324050. +@VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ +@VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + +# Flags for specific targets. +# +# Nb: the AM_CPPFLAGS_* values are suitable for building tools and auxprogs. +# For building the core, coregrind/Makefile.am files add some extra things. +AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = -I$(top_srcdir) \ + -I$(top_srcdir)/include -I$(top_builddir)/include \ + -I$(top_srcdir)/VEX/pub -I$(top_builddir)/VEX/pub \ + -DVGA_@VGCONF_ARCH_PRI@=1 -DVGO_@VGCONF_OS@=1 \ + -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 \ + -DVGPV_@VGCONF_ARCH_PRI@_@VGCONF_OS@_@VGCONF_PLATVARIANT@=1 \ + $(am__append_2) +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@ = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir) \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/include \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_builddir)/include \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGA_@VGCONF_ARCH_SEC@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGP_@VGCONF_ARCH_SEC@_@VGCONF_OS@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGPV_@VGCONF_ARCH_SEC@_@VGCONF_OS@_@VGCONF_PLATVARIANT@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(am__append_3) +AM_FLAG_M3264_X86_LINUX = @FLAG_M32@ +AM_CFLAGS_X86_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ + $(AM_CFLAGS_BASE) -fomit-frame-pointer + +AM_CFLAGS_PSO_X86_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_X86_LINUX = @FLAG_M32@ -g +AM_FLAG_M3264_AMD64_LINUX = @FLAG_M64@ +AM_CFLAGS_AMD64_LINUX = @FLAG_M64@ \ + $(AM_CFLAGS_BASE) -fomit-frame-pointer + +AM_CFLAGS_PSO_AMD64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_AMD64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_PPC32_LINUX = @FLAG_M32@ +AM_CFLAGS_PPC32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_PPC32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_PPC32_LINUX = @FLAG_M32@ -g +AM_FLAG_M3264_PPC64BE_LINUX = @FLAG_M64@ +AM_CFLAGS_PPC64BE_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_PPC64BE_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_PPC64BE_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_PPC64LE_LINUX = @FLAG_M64@ +AM_CFLAGS_PPC64LE_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_PPC64LE_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_PPC64LE_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ +AM_CFLAGS_ARM_LINUX = @FLAG_M32@ \ + $(AM_CFLAGS_BASE) -marm -mcpu=cortex-a8 + +AM_CFLAGS_PSO_ARM_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) \ + -marm -mcpu=cortex-a8 $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_ARM_LINUX = @FLAG_M32@ \ + -marm -mcpu=cortex-a8 -g + +AM_FLAG_M3264_ARM64_LINUX = @FLAG_M64@ +AM_CFLAGS_ARM64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_ARM64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_ARM64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_X86_DARWIN = -arch i386 +AM_CFLAGS_X86_DARWIN = $(WERROR) -arch i386 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.6 \ + -fno-pic -fno-PIC + +AM_CFLAGS_PSO_X86_DARWIN = $(AM_CFLAGS_X86_DARWIN) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_X86_DARWIN = -arch i386 -g +AM_FLAG_M3264_AMD64_DARWIN = -arch x86_64 +AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch x86_64 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.6 + +AM_CFLAGS_PSO_AMD64_DARWIN = $(AM_CFLAGS_AMD64_DARWIN) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_AMD64_DARWIN = -arch x86_64 -g +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -fomit-frame-pointer +AM_CFLAGS_PSO_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_S390X_LINUX = @FLAG_M64@ -g -mzarch -march=z900 +AM_FLAG_M3264_MIPS32_LINUX = @FLAG_M32@ +AM_CFLAGS_MIPS32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_MIPS32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_MIPS32_LINUX = @FLAG_M32@ -g +AM_FLAG_M3264_NANOMIPS_LINUX = @FLAG_M32@ +AM_CFLAGS_NANOMIPS_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) -mno-jump-table-opt +AM_CFLAGS_PSO_NANOMIPS_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_NANOMIPS_LINUX = @FLAG_M32@ -g +AM_FLAG_M3264_MIPS64_LINUX = @FLAG_M64@ +AM_CFLAGS_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ +AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ + $(AM_CFLAGS_BASE) -fomit-frame-pointer \ + @SOLARIS_UNDEF_LARGESOURCE@ + +AM_CFLAGS_PSO_X86_SOLARIS = @FLAG_M32@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_X86_SOLARIS = @FLAG_M32@ -g -D_ASM +AM_FLAG_M3264_AMD64_SOLARIS = @FLAG_M64@ +AM_CFLAGS_AMD64_SOLARIS = @FLAG_M64@ \ + $(AM_CFLAGS_BASE) -fomit-frame-pointer + +AM_CFLAGS_PSO_AMD64_SOLARIS = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_AMD64_SOLARIS = @FLAG_M64@ -g -D_ASM + +# Flags for the primary target. These must be used to build the +# regtests and performance tests. In fact, these must be used to +# build anything which is built only once on a dual-arch build. +# +AM_FLAG_M3264_PRI = $(AM_FLAG_M3264_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CPPFLAGS_PRI = $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CFLAGS_PRI = $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CCASFLAGS_PRI = $(AM_CCASFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +@VGCONF_HAVE_PLATFORM_SEC_FALSE@AM_FLAG_M3264_SEC = +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_FLAG_M3264_SEC = $(AM_FLAG_M3264_@VGCONF_PLATFORM_SEC_CAPS@) + +# Baseline link flags for making vgpreload shared objects. +# +PRELOAD_LDFLAGS_COMMON_LINUX = -nodefaultlibs -shared \ + -Wl,-z,interpose,-z,initfirst $(am__append_5) +PRELOAD_LDFLAGS_COMMON_DARWIN = -dynamic -dynamiclib -all_load +PRELOAD_LDFLAGS_COMMON_SOLARIS = -nodefaultlibs -shared \ + -Wl,-z,interpose,-z,initfirst $(am__append_4) +PRELOAD_LDFLAGS_X86_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_AMD64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_PPC32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_PPC64BE_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_PPC64LE_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_ARM_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_ARM64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 +PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ +PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ + -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ + -I$(top_srcdir)/VEX/pub -I$(top_builddir)/VEX/pub \ + -DVGA_@VGCONF_ARCH_PRI@=1 -DVGO_@VGCONF_OS@=1 \ + -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 \ + -DVGPV_@VGCONF_ARCH_PRI@_@VGCONF_OS@_@VGCONF_PLATVARIANT@=1 \ + $(am__append_6) $(am__append_7) + +# Nb: Tools need to augment these flags with an arch-selection option, such +# as $(AM_FLAG_M3264_PRI). +AM_CFLAGS = -Winline -Wall -Wshadow -Wno-long-long -g \ + @FLAG_FNO_STACK_PROTECTOR@ $(am__append_8) $(am__append_9) \ + @FLAG_M64@ $(am__empty) +AM_CXXFLAGS = -Winline -Wall -Wshadow -Wno-long-long -g \ + @FLAG_FNO_STACK_PROTECTOR@ $(am__append_10) @FLAG_M64@ +# Include AM_CPPFLAGS in AM_CCASFLAGS to allow for older versions of +# automake; see comments in Makefile.all.am for more detail. +AM_CCASFLAGS = $(AM_CPPFLAGS) @FLAG_M64@ +@VGCONF_OS_IS_DARWIN_TRUE@noinst_DSYMS = $(check_PROGRAMS) +dist_noinst_SCRIPTS = \ + filter_stderr + +noinst_HEADERS = scalar.h +EXTRA_DIST = \ + scalar.stderr.exp scalar.vgtest + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/Makefile.all.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign memcheck/tests/loongarch64-linux/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign memcheck/tests/loongarch64-linux/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; +$(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/Makefile.all.am $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) + +scalar$(EXEEXT): $(scalar_OBJECTS) $(scalar_DEPENDENCIES) $(EXTRA_scalar_DEPENDENCIES) + @rm -f scalar$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(scalar_OBJECTS) $(scalar_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalar.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-local +check: check-am +all-am: Makefile $(SCRIPTS) $(HEADERS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + 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: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-local mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/scalar.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/scalar.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am \ + check-local clean clean-checkPROGRAMS clean-generic \ + clean-local cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am + +.PRECIOUS: Makefile + + +# This used to be required when Vex had a handwritten Makefile. It +# shouldn't be needed any more, though. + +#---------------------------------------------------------------------------- +# noinst_PROGRAMS and noinst_DSYMS targets +#---------------------------------------------------------------------------- + +# On Darwin, for a program 'p', the DWARF debug info is stored in the +# directory 'p.dSYM'. This must be generated after the executable is +# created, with 'dsymutil p'. We could redefine LINK with a script that +# executes 'dsymutil' after linking, but that's a pain. Instead we use this +# hook so that every time "make check" is run, we subsequently invoke +# 'dsymutil' on all the executables that lack a .dSYM directory, or that are +# newer than their corresponding .dSYM directory. +build-noinst_DSYMS: $(noinst_DSYMS) + for f in $(noinst_DSYMS); do \ + if [ ! -e $$f.dSYM -o $$f -nt $$f.dSYM ] ; then \ + echo "dsymutil $$f"; \ + dsymutil $$f; \ + fi; \ + done + +# This is used by coregrind/Makefile.am and Makefile.tool.am for doing +# "in-place" installs. It copies $(noinst_PROGRAMS) into $inplacedir. +# It needs to be depended on by an 'all-local' rule. +inplace-noinst_PROGRAMS: $(noinst_PROGRAMS) + mkdir -p $(inplacedir); \ + for f in $(noinst_PROGRAMS) ; do \ + rm -f $(inplacedir)/$$f; \ + ln -f -s ../$(subdir)/$$f $(inplacedir); \ + done + +# Similar to inplace-noinst_PROGRAMS +inplace-noinst_DSYMS: build-noinst_DSYMS + mkdir -p $(inplacedir); \ + for f in $(noinst_DSYMS); do \ + rm -f $(inplacedir)/$$f.dSYM; \ + ln -f -s ../$(subdir)/$$f.dSYM $(inplacedir); \ + done + +# This is used by coregrind/Makefile.am and by /Makefile.am for doing +# "make install". It copies $(noinst_PROGRAMS) into $prefix/lib/valgrind/. +# It needs to be depended on by an 'install-exec-local' rule. +install-noinst_PROGRAMS: $(noinst_PROGRAMS) + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_PROGRAMS); do \ + $(INSTALL_PROGRAM) $$f $(DESTDIR)$(pkglibdir); \ + done + +# This is used by coregrind/Makefile.am and by /Makefile.am for doing +# "make uninstall". It removes $(noinst_PROGRAMS) from $prefix/lib/valgrind/. +# It needs to be depended on by an 'uninstall-local' rule. +uninstall-noinst_PROGRAMS: + for f in $(noinst_PROGRAMS); do \ + rm -f $(DESTDIR)$(pkglibdir)/$$f; \ + done + +# Similar to install-noinst_PROGRAMS. +# Nb: we don't use $(INSTALL_PROGRAM) here because it doesn't work with +# directories. XXX: not sure whether the resulting permissions will be +# correct when using 'cp -R'... +install-noinst_DSYMS: build-noinst_DSYMS + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_DSYMS); do \ + cp -R $$f.dSYM $(DESTDIR)$(pkglibdir); \ + done + +# Similar to uninstall-noinst_PROGRAMS. +uninstall-noinst_DSYMS: + for f in $(noinst_DSYMS); do \ + rm -f $(DESTDIR)$(pkglibdir)/$$f.dSYM; \ + done + +# This needs to be depended on by a 'clean-local' rule. +clean-noinst_DSYMS: + for f in $(noinst_DSYMS); do \ + rm -rf $$f.dSYM; \ + done + +check-local: build-noinst_DSYMS + +clean-local: clean-noinst_DSYMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/memcheck/tests/loongarch64-linux/filter_stderr b/memcheck/tests/loongarch64-linux/filter_stderr new file mode 100755 index 0000000..a778e97 --- /dev/null +++ b/memcheck/tests/loongarch64-linux/filter_stderr @@ -0,0 +1,3 @@ +#! /bin/sh + +../filter_stderr "$@" diff --git a/memcheck/tests/loongarch64-linux/scalar.c b/memcheck/tests/loongarch64-linux/scalar.c new file mode 100644 index 0000000..e390692 --- /dev/null +++ b/memcheck/tests/loongarch64-linux/scalar.c @@ -0,0 +1,1296 @@ +/* This is the loongarch64 variant of memcheck/tests/x86-linux/scalar.c. + Syscalls are in x86 number order to make exp comparison easier. */ +#define _GNU_SOURCE +#include "../../memcheck.h" +#include "scalar.h" +#include +#include +#include +#include // MREMAP_FIXED + +// Here we are trying to trigger every syscall error (scalar errors and +// memory errors) for every syscall. We do this by passing a lot of bogus +// arguments, mostly 0 and 1 (often it's 1 because NULL ptr args often aren't +// checked for memory errors, or in order to have a non-zero length used +// with some buffer). So most of the syscalls don't actually succeed and do +// anything. +// +// Occasionally we have to be careful not to cause Valgrind to seg fault in +// its pre-syscall wrappers; it does so because it can't know in general +// when memory is unaddressable, and so tries to dereference it when doing +// PRE_MEM_READ/PRE_MEM_WRITE calls. (Note that Memcheck will +// always issue an error message immediately before these seg faults occur). +// +// The output has numbers like "3s 2m" for each syscall. "s" is short for +// "scalar", ie. the argument itself is undefined. "m" is short for "memory", +// ie. the argument points to memory which is unaddressable. +int main(void) +{ + // uninitialised, but we know px[0] is 0x0 + long* px = malloc(sizeof(long)); + long x0 = px[0]; + long res; + + // All __NR_xxx numbers are taken from x86 + + // __NR_restart_syscall 0 // XXX: not yet handled, perhaps should be... + GO(__NR_restart_syscall, "n/a"); + //SY(__NR_restart_syscall); // (Not yet handled by Valgrind) FAIL; + + // __NR_exit 1 + GO(__NR_exit, "below"); + // (see below) + + // __NR_fork 2 + //GO(__NR_fork, "other"); + // (sse scalar_fork.c) + + // __NR_read 3 + // Nb: here we are also getting an error from the syscall arg itself. + GO(__NR_read, "1+3s 1m"); + SY(__NR_read+x0, x0, x0, x0+1); FAILx(EFAULT); + + // __NR_write 4 + GO(__NR_write, "3s 1m"); + SY(__NR_write, x0, x0, x0+1); FAIL; + + // __NR_open 5 + //GO(__NR_open, "(2-args) 2s 1m"); + //SY(__NR_open, x0, x0); FAIL; + + // Only 1s 0m errors -- the other 2s 1m have been checked in the previous + // open test, and if we test them they may be commoned up but they also + // may not. + //GO(__NR_open, "(3-args) 1s 0m"); + //SY(__NR_open, "scalar.c", O_CREAT|O_EXCL, x0); FAIL; + + // __NR_close 6 + GO(__NR_close, "1s 0m"); + SY(__NR_close, x0-1); FAIL; + + // __NR_waitpid 7 + //GO(__NR_waitpid, "3s 1m"); + //SY(__NR_waitpid, x0, x0+1, x0); FAIL; + + // __NR_creat 8 + //GO(__NR_creat, "2s 1m"); + //SY(__NR_creat, x0, x0); FAIL; + + // __NR_link 9 + //GO(__NR_link, "2s 2m"); + //SY(__NR_link, x0, x0); FAIL; + + // __NR_unlink 10 + //GO(__NR_unlink, "1s 1m"); + //SY(__NR_unlink, x0); FAIL; + + // __NR_execve 11 + GO(__NR_execve, "3s 1m"); + SY(__NR_execve, x0 + 1, x0 + 1, x0); FAIL; + + GO(__NR_execve, "3s 1m"); + SY(__NR_execve, x0 + 1, x0, x0 + 1); FAIL; + + char *argv_envp[] = {(char *) (x0 + 1), NULL}; + GO(__NR_execve, "4s 2m"); + SY(__NR_execve, x0 + 1, x0 + argv_envp, x0); FAIL; + char *argv_ok[] = {"frob", NULL}; + GO(__NR_execve, "4s 2m"); + SY(__NR_execve, x0 + 1, x0 + argv_ok, x0 + argv_envp); FAIL; + + // __NR_chdir 12 + GO(__NR_chdir, "1s 1m"); + SY(__NR_chdir, x0); FAIL; + + // __NR_time 13 + //GO(__NR_time, "1s 1m"); + //SY(__NR_time, x0+1); FAIL; + + // __NR_mknod 14 + //O(__NR_mknod, "3s 1m"); + //Y(__NR_mknod, x0, x0, x0); FAIL; + + // __NR_chmod 15 + //GO(__NR_chmod, "2s 1m"); + //SY(__NR_chmod, x0, x0); FAIL; + + // __NR_lchown 16 + //GO(__NR_lchown, "n/a"); + //SY(__NR_lchown); // (Not yet handled by Valgrind) FAIL; + + // __NR_break 17 + //GO(__NR_break, "ni"); + //SY(__NR_break); FAIL; + + // __NR_oldstat 18 + //GO(__NR_oldstat, "n/a"); + // (obsolete, not handled by Valgrind) + + // __NR_lseek 19 + GO(__NR_lseek, "3s 0m"); + SY(__NR_lseek, x0-1, x0, x0); FAILx(EBADF); + + // __NR_getpid 20 + GO(__NR_getpid, "0s 0m"); + SY(__NR_getpid); SUCC; + + // __NR_mount 21 + GO(__NR_mount, "5s 3m"); + SY(__NR_mount, x0, x0, x0, x0, x0); FAIL; + + // __NR_umount 22 + //GO(__NR_umount, "1s 1m"); + //SY(__NR_umount, x0); FAIL; + + // __NR_setuid 23 + GO(__NR_setuid, "1s 0m"); + SY(__NR_setuid, x0-1); FAIL; + + // __NR_getuid 24 + GO(__NR_getuid, "0s 0m"); + SY(__NR_getuid); SUCC; + + // __NR_stime 25 + //GO(__NR_stime, "n/a"); + //SY(__NR_stime); // (Not yet handled by Valgrind) FAIL; + + // __NR_ptrace 26 + // XXX: memory pointed to be arg3 goes unchecked... otherwise would be 2m + //GO(__NR_ptrace, "4s 1m"); + //SY(__NR_ptrace, x0+PTRACE_GETREGS, x0, x0, x0); FAIL; + + // __NR_alarm 27 + //GO(__NR_alarm, "1s 0m"); + //SY(__NR_alarm, x0); SUCC; + + // __NR_oldfstat 28 + //GO(__NR_oldfstat, "n/a"); + // (obsolete, not handled by Valgrind) + + // __NR_pause 29 + //GO(__NR_pause, "ignore"); + // (hard to test, and no args so not much to be gained -- don't bother) + + // __NR_utime 30 + //GO(__NR_utime, "2s 2m"); + //SY(__NR_utime, x0, x0+1); FAIL; + + // __NR_stty 31 + //GO(__NR_stty, "ni"); + //SY(__NR_stty); FAIL; + + // __NR_gtty 32 + //GO(__NR_gtty, "ni"); + //SY(__NR_gtty); FAIL; + + // __NR_access 33 + //GO(__NR_access, "2s 1m"); + //SY(__NR_access, x0, x0); FAIL; + + // __NR_nice 34 + //GO(__NR_nice, "1s 0m"); + //SY(__NR_nice, x0); SUCC; + + // __NR_ftime 35 + //GO(__NR_ftime, "ni"); + //SY(__NR_ftime); FAIL; + + // __NR_sync 36 + GO(__NR_sync, "0s 0m"); + SY(__NR_sync); SUCC; + + // __NR_kill 37 + GO(__NR_kill, "2s 0m"); + SY(__NR_kill, x0, x0); SUCC; + + // __NR_rename 38 + //GO(__NR_rename, "2s 2m"); + //SY(__NR_rename, x0, x0); FAIL; + + // __NR_mkdir 39 + //GO(__NR_mkdir, "2s 1m"); + //SY(__NR_mkdir, x0, x0); FAIL; + + // __NR_rmdir 40 + //GO(__NR_rmdir, "1s 1m"); + //SY(__NR_rmdir, x0); FAIL; + + // __NR_dup 41 + GO(__NR_dup, "1s 0m"); + SY(__NR_dup, x0-1); FAIL; + + // __NR_pipe 42 + //GO(__NR_pipe, "1s 1m"); + //SY(__NR_pipe, x0); FAIL; + + // __NR_times 43 + GO(__NR_times, "1s 1m"); + SY(__NR_times, x0+1); FAIL; + + // __NR_prof 44 + //GO(__NR_prof, "ni"); + //SY(__NR_prof); FAIL; + + // __NR_brk 45 + GO(__NR_brk, "1s 0m"); + SY(__NR_brk, x0); SUCC; + + // __NR_setgid 46 + GO(__NR_setgid, "1s 0m"); + SY(__NR_setgid, x0-1); FAIL; + + // __NR_getgid 47 + GO(__NR_getgid, "0s 0m"); + SY(__NR_getgid); SUCC; + + // __NR_signal 48 + //GO(__NR_signal, "n/a"); + //SY(__NR_signal); // (Not yet handled by Valgrind) FAIL; + + // __NR_geteuid 49 + GO(__NR_geteuid, "0s 0m"); + SY(__NR_geteuid); SUCC; + + // __NR_getegid 50 + GO(__NR_getegid, "0s 0m"); + SY(__NR_getegid); SUCC; + + // __NR_acct 51 + GO(__NR_acct, "1s 1m"); + SY(__NR_acct, x0-1); FAIL; + + // __NR_umount2 52 + GO(__NR_umount2, "2s 1m"); + SY(__NR_umount2, x0, x0); FAIL; + + // __NR_lock 53 + //GO(__NR_lock, "ni"); + //SY(__NR_lock); FAIL; + + // __NR_ioctl 54 +#include + GO(__NR_ioctl, "3s 1m"); + SY(__NR_ioctl, x0, x0+TCSETS, x0); FAIL; + + // __NR_fcntl 55 + // As with sys_open(), the 'fd' error is suppressed for the later ones. + // For F_GETFD the 3rd arg is ignored + GO(__NR_fcntl, "(GETFD) 2s 0m"); + SY(__NR_fcntl, x0-1, x0+F_GETFD, x0); FAILx(EBADF); + + // For F_DUPFD the 3rd arg is 'arg'. We don't check the 1st two args + // because any errors may or may not be commoned up with the ones from + // the previous fcntl call. + GO(__NR_fcntl, "(DUPFD) 1s 0m"); + SY(__NR_fcntl, -1, F_DUPFD, x0); FAILx(EBADF); + + // For F_GETLK the 3rd arg is 'lock'. On x86, this fails w/EBADF. But + // on amd64 in 32-bit mode it fails w/EFAULT. We don't check the 1st two + // args for the reason given above. + GO(__NR_fcntl, "(GETLK) 1s 5m"); + SY(__NR_fcntl, -1, F_GETLK, x0); FAIL; //FAILx(EBADF); + + // __NR_mpx 56 + //GO(__NR_mpx, "ni"); + //SY(__NR_mpx); FAIL; + + // __NR_setpgid 57 + GO(__NR_setpgid, "2s 0m"); + SY(__NR_setpgid, x0, x0-1); FAIL; + + // __NR_ulimit 58 + //GO(__NR_ulimit, "ni"); + //SY(__NR_ulimit); FAIL; + + // __NR_oldolduname 59 + //GO(__NR_oldolduname, "n/a"); + // (obsolete, not handled by Valgrind) + + // __NR_umask 60 + GO(__NR_umask, "1s 0m"); + SY(__NR_umask, x0+022); SUCC; + + // __NR_chroot 61 + GO(__NR_chroot, "1s 1m"); + SY(__NR_chroot, x0); FAIL; + + // __NR_ustat 62 + //GO(__NR_ustat, "n/a"); + // (deprecated, not handled by Valgrind) + + // __NR_dup2 63 + //GO(__NR_dup2, "2s 0m"); + //SY(__NR_dup2, x0-1, x0); FAIL; + + // __NR_getppid 64 + GO(__NR_getppid, "0s 0m"); + SY(__NR_getppid); SUCC; + + // __NR_getpgrp 65 + //GO(__NR_getpgrp, "0s 0m"); + //SY(__NR_getpgrp); SUCC; + + // __NR_setsid 66 + GO(__NR_setsid, "0s 0m"); + SY(__NR_setsid); SUCC_OR_FAIL; + + // __NR_sigaction 67 + //GO(__NR_sigaction, "3s 4m"); + //SY(__NR_sigaction, x0, x0+&px[1], x0+&px[1]); FAIL; + + // __NR_sgetmask 68 sys_sgetmask() + //GO(__NR_sgetmask, "n/a"); + //SY(__NR_sgetmask); // (Not yet handled by Valgrind) FAIL; + + // __NR_ssetmask 69 + //GO(__NR_ssetmask, "n/a"); + //SY(__NR_ssetmask); // (Not yet handled by Valgrind) FAIL; + + // __NR_setreuid 70 + GO(__NR_setreuid, "2s 0m"); + SY(__NR_setreuid, x0-1, x0-1); SUCC; + + // __NR_setregid 71 + GO(__NR_setregid, "2s 0m"); + SY(__NR_setregid, x0-1, x0-1); SUCC; + + // __NR_sigsuspend 72 + // XXX: how do you use this function? + //GO(__NR_sigsuspend, "ignore"); + // (I don't know how to test this...) + + // __NR_sigpending 73 + //GO(__NR_sigpending, "1s 1m"); + //SY(__NR_sigpending, x0); FAIL; + + // __NR_sethostname 74 + GO(__NR_sethostname, "n/a"); + //SY(__NR_sethostname); // (Not yet handled by Valgrind) FAIL; + + // __NR_setrlimit 75 + //GO(__NR_setrlimit, "2s 1m"); + //SY(__NR_setrlimit, x0, x0); FAIL; + + // __NR_getrlimit 76 + //GO(__NR_getrlimit, "2s 1m"); + //SY(__NR_getrlimit, x0, x0); FAIL; + + // __NR_getrusage 77 + GO(__NR_getrusage, "2s 1m"); + SY(__NR_getrusage, x0, x0); FAIL; + + // __NR_gettimeofday 78 + GO(__NR_gettimeofday, "2s 2m"); + SY(__NR_gettimeofday, x0+1, x0+1); FAIL; + + // __NR_settimeofday 79 + GO(__NR_settimeofday, "2s 2m"); + SY(__NR_settimeofday, x0+1, x0+1); FAIL; + + // __NR_getgroups 80 + GO(__NR_getgroups, "2s 1m"); + SY(__NR_getgroups, x0+1, x0+1); FAIL; + + // __NR_setgroups 81 + GO(__NR_setgroups, "2s 1m"); + SY(__NR_setgroups, x0+1, x0+1); FAIL; + + // __NR_select 82 + //{ + // long args[5] = { x0+8, x0+0xffffffee, x0+1, x0+1, x0+1 }; + // GO(__NR_select, "1s 5m"); + // SY(__NR_select, args+x0); FAIL; + //} + + // __NR_symlink 83 + //GO(__NR_symlink, "2s 2m"); + //SY(__NR_symlink, x0, x0); FAIL; + + // __NR_oldlstat 84 + //GO(__NR_oldlstat, "n/a"); + // (obsolete, not handled by Valgrind) + + // __NR_readlink 85 + //GO(__NR_readlink, "3s 2m"); + //SY(__NR_readlink, x0+1, x0+1, x0+1); FAIL; + + // __NR_uselib 86 + //GO(__NR_uselib, "n/a"); + //SY(__NR_uselib); // (Not yet handled by Valgrind) FAIL; + + // __NR_swapon 87 + GO(__NR_swapon, "n/a"); + //SY(__NR_swapon); // (Not yet handled by Valgrind) FAIL; + + // __NR_reboot 88 + GO(__NR_reboot, "n/a"); + //SY(__NR_reboot); // (Not yet handled by Valgrind) FAIL; + + // __NR_readdir 89 + //GO(__NR_readdir, "n/a"); + // (superseded, not handled by Valgrind) + + // __NR_mmap 90 + { + long args[6] = { x0, x0, x0, x0, x0-1, x0 }; + GO(__NR_mmap, "1s 1m"); + SY(__NR_mmap, args+x0); FAIL; + } + + // __NR_munmap 91 + GO(__NR_munmap, "2s 0m"); + SY(__NR_munmap, x0, x0); FAIL; + + // __NR_truncate 92 + GO(__NR_truncate, "2s 1m"); + SY(__NR_truncate, x0, x0); FAIL; + + // __NR_ftruncate 93 + GO(__NR_ftruncate, "2s 0m"); + SY(__NR_ftruncate, x0, x0); FAIL; + + // __NR_fchmod 94 + GO(__NR_fchmod, "2s 0m"); + SY(__NR_fchmod, x0-1, x0); FAIL; + + // __NR_fchown 95 + GO(__NR_fchown, "3s 0m"); + SY(__NR_fchown, x0-1, x0, x0); FAIL; + + // __NR_getpriority 96 + GO(__NR_getpriority, "2s 0m"); + SY(__NR_getpriority, x0-1, x0); FAIL; + + // __NR_setpriority 97 + GO(__NR_setpriority, "3s 0m"); + SY(__NR_setpriority, x0-1, x0, x0); FAIL; + + // __NR_profil 98 + //GO(__NR_profil, "ni"); + //SY(__NR_profil); FAIL; + + // __NR_statfs 99 + GO(__NR_statfs, "2s 2m"); + SY(__NR_statfs, x0, x0); FAIL; + + // __NR_fstatfs 100 + GO(__NR_fstatfs, "2s 1m"); + SY(__NR_fstatfs, x0, x0); FAIL; + + // __NR_ioperm 101 + //GO(__NR_ioperm, "3s 0m"); + //SY(__NR_ioperm, x0, x0, x0); FAIL; + + // __NR_socketcall 102 + //GO(__NR_socketcall, "XXX"); + // (XXX: need to do all sub-cases properly) + + // __NR_syslog 103 + GO(__NR_syslog, "3s 1m"); + SY(__NR_syslog, x0+2, x0, x0+1); FAIL; + + // __NR_setitimer 104 + GO(__NR_setitimer, "3s 2m"); + SY(__NR_setitimer, x0, x0+1, x0+1); FAIL; + + // __NR_getitimer 105 + GO(__NR_getitimer, "2s 1m"); + SY(__NR_getitimer, x0, x0, x0); FAIL; + + // __NR_stat 106 + //GO(__NR_stat, "2s 2m"); + //SY(__NR_stat, x0, x0); FAIL; + + // __NR_lstat 107 + //GO(__NR_lstat, "2s 2m"); + //SY(__NR_lstat, x0, x0); FAIL; + + // __NR_fstat 108 + //GO(__NR_fstat, "2s 1m"); + //SY(__NR_fstat, x0, x0); FAIL; + + // __NR_olduname 109 + //GO(__NR_olduname, "n/a"); + // (obsolete, not handled by Valgrind) + + // __NR_iopl 110 + //GO(__NR_iopl, "1s 0m"); + //SY(__NR_iopl, x0+100); FAIL; + + // __NR_vhangup 111 + GO(__NR_vhangup, "0s 0m"); + SY(__NR_vhangup); SUCC_OR_FAIL; // Will succeed for superuser + + // __NR_idle 112 + //GO(__NR_idle, "ni"); + //SY(__NR_idle); FAIL; + + // __NR_vm86old 113 + //GO(__NR_vm86old, "n/a"); + // (will probably never be handled by Valgrind) + + // __NR_wait4 114 + GO(__NR_wait4, "4s 2m"); + SY(__NR_wait4, x0, x0+1, x0, x0+1); FAIL; + + // __NR_swapoff 115 + GO(__NR_swapoff, "n/a"); + //SY(__NR_swapoff); // (Not yet handled by Valgrind) FAIL; + + // __NR_sysinfo 116 + GO(__NR_sysinfo, "1s 1m"); + SY(__NR_sysinfo, x0); FAIL; + + // __NR_ipc 117 + // XXX: This is simplistic -- need to do all the sub-cases properly. + // XXX: Also, should be 6 scalar errors, except glibc's syscall() doesn't + // use the 6th one! + //GO(__NR_ipc, "5s 0m"); + //SY(__NR_ipc, x0+4, x0, x0, x0, x0, x0); FAIL; + + // __NR_fsync 118 + GO(__NR_fsync, "1s 0m"); + SY(__NR_fsync, x0-1); FAIL; + + // __NR_sigreturn 119 + //GO(__NR_sigreturn, "n/a"); + //SY(__NR_sigreturn); // (Not yet handled by Valgrind) FAIL; + + // __NR_clone 120 +#ifndef CLONE_PARENT_SETTID +#define CLONE_PARENT_SETTID 0x00100000 +#endif + GO(__NR_clone, "5s 3m"); + SY(__NR_clone, x0|CLONE_PARENT_SETTID|CLONE_SETTLS|CLONE_CHILD_SETTID|SIGCHLD, x0, x0, x0, x0); FAIL; + if (0 == res) { + SY(__NR_exit, 0); FAIL; + } + + // __NR_setdomainname 121 + GO(__NR_setdomainname, "n/a"); + //SY(__NR_setdomainname); // (Not yet handled by Valgrind) FAIL; + + // __NR_uname 122 + GO(__NR_uname, "1s 1m"); + SY(__NR_uname, x0); FAIL; + + // __NR_modify_ldt 123 + //GO(__NR_modify_ldt, "3s 1m"); + //SY(__NR_modify_ldt, x0+1, x0, x0+1); FAILx(EINVAL); + + // __NR_adjtimex 124 + // XXX: need to do properly, but deref'ing NULL causing Valgrind to crash... + GO(__NR_adjtimex, "XXX"); + //SY(__NR_adjtimex, x0); FAIL; + + // __NR_mprotect 125 + GO(__NR_mprotect, "3s 0m"); + SY(__NR_mprotect, x0+1, x0, x0); FAILx(EINVAL); + + // __NR_sigprocmask 126 + //GO(__NR_sigprocmask, "3s 2m"); + //SY(__NR_sigprocmask, x0, x0+&px[1], x0+&px[1]); SUCC; + + // __NR_create_module 127 + //GO(__NR_create_module, "ni"); + //SY(__NR_create_module); FAIL; + + // __NR_init_module 128 + GO(__NR_init_module, "3s 2m"); + SY(__NR_init_module, x0, x0+1, x0); FAIL; + + // __NR_delete_module 129 + GO(__NR_delete_module, "n/a"); + //SY(__NR_delete_module); // (Not yet handled by Valgrind) FAIL; + + // __NR_get_kernel_syms 130 + //GO(__NR_get_kernel_syms, "ni"); + //SY(__NR_get_kernel_syms); FAIL; + + // __NR_quotactl 131 + GO(__NR_quotactl, "4s 1m"); + SY(__NR_quotactl, x0, x0, x0, x0); FAIL; + + // __NR_getpgid 132 + GO(__NR_getpgid, "1s 0m"); + SY(__NR_getpgid, x0-1); FAIL; + + // __NR_fchdir 133 + GO(__NR_fchdir, "1s 0m"); + SY(__NR_fchdir, x0-1); FAIL; + + // __NR_bdflush 134 + //GO(__NR_bdflush, "n/a"); + //SY(__NR_bdflush); // (Not yet handled by Valgrind) FAIL; + + // __NR_sysfs 135 + //GO(__NR_sysfs, "n/a"); + //SY(__NR_sysfs); // (Not yet handled by Valgrind) FAIL; + + // __NR_personality 136 + GO(__NR_personality, "1s 0m"); + SY(__NR_personality, x0+0xffffffff); SUCC; + + // __NR_afs_syscall 137 + //GO(__NR_afs_syscall, "ni"); + //SY(__NR_afs_syscall); FAIL; + + // __NR_setfsuid 138 + GO(__NR_setfsuid, "1s 0m"); + SY(__NR_setfsuid, x0); SUCC; // This syscall has a stupid return value + + // __NR_setfsgid 139 + GO(__NR_setfsgid, "1s 0m"); + SY(__NR_setfsgid, x0); SUCC; // This syscall has a stupid return value + + // __NR__llseek 140 + //GO(__NR__llseek, "5s 1m"); + //SY(__NR__llseek, x0, x0, x0, x0, x0); FAIL; + + // __NR_getdents 141 + //GO(__NR_getdents, "3s 1m"); + //SY(__NR_getdents, x0, x0, x0+1); FAIL; + + // __NR__newselect 142 + //GO(__NR__newselect, "5s 4m"); + //SY(__NR__newselect, x0+8, x0+0xffffffff, x0+1, x0+1, x0+1); FAIL; + + // __NR_flock 143 + GO(__NR_flock, "2s 0m"); + SY(__NR_flock, x0, x0); FAIL; + + // __NR_msync 144 + GO(__NR_msync, "3s 1m"); + SY(__NR_msync, x0, x0+1, x0); FAIL; + + // __NR_readv 145 + GO(__NR_readv, "3s 1m"); + SY(__NR_readv, x0, x0, x0+1); FAIL; + + // __NR_writev 146 + GO(__NR_writev, "3s 1m"); + SY(__NR_writev, x0, x0, x0+1); FAIL; + + // __NR_getsid 147 + GO(__NR_getsid, "1s 0m"); + SY(__NR_getsid, x0-1); FAIL; + + // __NR_fdatasync 148 + GO(__NR_fdatasync, "1s 0m"); + SY(__NR_fdatasync, x0-1); FAIL; + + // __NR__sysctl 149 + //GO(__NR__sysctl, "1s 1m"); + //SY(__NR__sysctl, x0); FAIL; + + // __NR_mlock 150 + GO(__NR_mlock, "2s 0m"); + SY(__NR_mlock, x0, x0+1); FAIL; + + // __NR_munlock 151 + GO(__NR_munlock, "2s 0m"); + SY(__NR_munlock, x0, x0+1); FAIL; + + // __NR_mlockall 152 + GO(__NR_mlockall, "1s 0m"); + SY(__NR_mlockall, x0-1); FAIL; + + // __NR_munlockall 153 + GO(__NR_munlockall, "0s 0m"); + SY(__NR_munlockall); SUCC_OR_FAILx(EPERM); + + // __NR_sched_setparam 154 + GO(__NR_sched_setparam, "2s 1m"); + SY(__NR_sched_setparam, x0, x0); FAIL; + + // __NR_sched_getparam 155 + GO(__NR_sched_getparam, "2s 1m"); + SY(__NR_sched_getparam, x0, x0); FAIL; + + // __NR_sched_setscheduler 156 + GO(__NR_sched_setscheduler, "3s 1m"); + SY(__NR_sched_setscheduler, x0-1, x0, x0+1); FAIL; + + // __NR_sched_getscheduler 157 + GO(__NR_sched_getscheduler, "1s 0m"); + SY(__NR_sched_getscheduler, x0-1); FAIL; + + // __NR_sched_yield 158 + GO(__NR_sched_yield, "0s 0m"); + SY(__NR_sched_yield); SUCC; + + // __NR_sched_get_priority_max 159 + GO(__NR_sched_get_priority_max, "1s 0m"); + SY(__NR_sched_get_priority_max, x0-1); FAIL; + + // __NR_sched_get_priority_min 160 + GO(__NR_sched_get_priority_min, "1s 0m"); + SY(__NR_sched_get_priority_min, x0-1); FAIL; + + // __NR_sched_rr_get_interval 161 + GO(__NR_sched_rr_get_interval, "n/a"); + //SY(__NR_sched_rr_get_interval); // (Not yet handled by Valgrind) FAIL; + + // __NR_nanosleep 162 + GO(__NR_nanosleep, "2s 2m"); + SY(__NR_nanosleep, x0, x0+1); FAIL; + + // __NR_mremap 163 + GO(__NR_mremap, "5s 0m"); + SY(__NR_mremap, x0+1, x0, x0, x0+MREMAP_FIXED, x0); FAILx(EINVAL); + + // __NR_setresuid 164 + GO(__NR_setresuid, "3s 0m"); + SY(__NR_setresuid, x0-1, x0-1, x0-1); SUCC; + + // __NR_getresuid 165 + GO(__NR_getresuid, "3s 3m"); + SY(__NR_getresuid, x0, x0, x0); FAIL; + + // __NR_vm86 166 + //GO(__NR_vm86, "n/a"); + // (will probably never be handled by Valgrind) + + // __NR_query_module 167 + //GO(__NR_query_module, "ni"); + //SY(__NR_query_module); FAIL; + + // __NR_poll 168 + //GO(__NR_poll, "3s 1m"); + //SY(__NR_poll, x0, x0+1, x0); FAIL; + + // __NR_nfsservctl 169 + GO(__NR_nfsservctl, "n/a"); + //SY(__NR_nfsservctl); // (Not yet handled by Valgrind) FAIL; + + // __NR_setresgid 170 + GO(__NR_setresgid, "3s 0m"); + SY(__NR_setresgid, x0-1, x0-1, x0-1); SUCC; + + // __NR_getresgid 171 + GO(__NR_getresgid, "3s 3m"); + SY(__NR_getresgid, x0, x0, x0); FAIL; + + // __NR_prctl 172 +#include + GO(__NR_prctl, "5s 0m"); + SY(__NR_prctl, x0, x0, x0, x0, x0); FAIL; + + char buf16[16] = "123456789012345."; + buf16[15] = x0; // this will cause 'using unitialised value' + GO(__NR_prctl, "2s 0m"); + SY(__NR_prctl, x0 + PR_SET_NAME, buf16); SUCC; + + char buf17[17] = "1234567890123456."; + buf17[16] = x0; // this must not cause 'using unitialised value' + GO(__NR_prctl, "1s 0m"); + SY(__NR_prctl, x0 + PR_SET_NAME, buf17); SUCC; + + // __NR_rt_sigreturn 173 + GO(__NR_rt_sigreturn, "n/a"); + //SY(__NR_rt_sigreturn); // (Not yet handled by Valgrind) FAIL; + + // __NR_rt_sigaction 174 + GO(__NR_rt_sigaction, "4s 4m"); + SY(__NR_rt_sigaction, x0, x0+&px[2], x0+&px[2], x0); FAIL; + + // __NR_rt_sigprocmask 175 + GO(__NR_rt_sigprocmask, "4s 2m"); + SY(__NR_rt_sigprocmask, x0, x0+1, x0+1, x0); FAIL; + + // __NR_rt_sigpending 176 + GO(__NR_rt_sigpending, "2s 1m"); + SY(__NR_rt_sigpending, x0, x0+1); FAIL; + + // __NR_rt_sigtimedwait 177 + GO(__NR_rt_sigtimedwait, "4s 3m"); + SY(__NR_rt_sigtimedwait, x0+1, x0+1, x0+1, x0); FAIL; + + // __NR_rt_sigqueueinfo 178 + GO(__NR_rt_sigqueueinfo, "3s 1m"); + SY(__NR_rt_sigqueueinfo, x0, x0+1, x0); FAIL; + + // __NR_rt_sigsuspend 179 + GO(__NR_rt_sigsuspend, "2s 1m"); + SY(__NR_rt_sigsuspend, x0 + 1, x0 + sizeof(sigset_t)); FAILx(EFAULT); + + // __NR_pread64 180 + GO(__NR_pread64, "5s 1m"); + SY(__NR_pread64, x0, x0, x0+1, x0, x0); FAIL; + + // __NR_pwrite64 181 + GO(__NR_pwrite64, "5s 1m"); + SY(__NR_pwrite64, x0, x0, x0+1, x0, x0); FAIL; + + // __NR_chown 182 + //GO(__NR_chown, "3s 1m"); + //SY(__NR_chown, x0, x0, x0); FAIL; + + // __NR_getcwd 183 + GO(__NR_getcwd, "2s 1m"); + SY(__NR_getcwd, x0, x0+1); FAIL; + + // __NR_capget 184 + GO(__NR_capget, "2s 2m"); + SY(__NR_capget, x0, x0+1); FAIL; + + // __NR_capset 185 + GO(__NR_capset, "2s 2m"); + SY(__NR_capset, x0, x0); FAIL; + + // __NR_sigaltstack 186 + { + struct our_sigaltstack { + void *ss_sp; + int ss_flags; + size_t ss_size; + } ss; + ss.ss_sp = NULL; + ss.ss_flags = 0; + ss.ss_size = 0; + VALGRIND_MAKE_MEM_NOACCESS(& ss, sizeof(struct our_sigaltstack)); + GO(__NR_sigaltstack, "2s 2m"); + SY(__NR_sigaltstack, x0+&ss, x0+&ss); SUCC; + } + + // __NR_sendfile 187 + GO(__NR_sendfile, "4s 1m"); + SY(__NR_sendfile, x0, x0, x0+1, x0); FAIL; + + // __NR_getpmsg 188 + // Could do 5s 4m with more effort, but I can't be bothered for this + // crappy non-standard syscall. + //GO(__NR_getpmsg, "5s 0m"); + //SY(__NR_getpmsg, x0, x0, x0, x0); FAIL; + + // __NR_putpmsg 189 + // Could do 5s 2m with more effort, but I can't be bothered for this + // crappy non-standard syscall. + //GO(__NR_putpmsg, "5s 0m"); + //SY(__NR_putpmsg, x0, x0, x0, x0, x0); FAIL; + + // __NR_vfork 190 + //GO(__NR_vfork, "other"); + // (sse scalar_vfork.c) + + // __NR_ugetrlimit 191 + //GO(__NR_ugetrlimit, "2s 1m"); + //SY(__NR_ugetrlimit, x0, x0); FAIL; + + // __NR_mmap2 192 + //GO(__NR_mmap2, "6s 0m"); + //SY(__NR_mmap2, x0, x0, x0, x0, x0-1, x0); FAIL; + + // __NR_truncate64 193 + //GO(__NR_truncate64, "3s 1m"); + //SY(__NR_truncate64, x0, x0, x0); FAIL; + + // __NR_ftruncate64 194 + //GO(__NR_ftruncate64, "3s 0m"); + //SY(__NR_ftruncate64, x0, x0, x0); FAIL; + + // __NR_stat64 195 + //GO(__NR_stat64, "2s 2m"); + //SY(__NR_stat64, x0, x0); FAIL; + + // __NR_lstat64 196 + //GO(__NR_lstat64, "2s 2m"); + //SY(__NR_lstat64, x0, x0); FAIL; + + // __NR_fstat64 197 + //GO(__NR_fstat64, "2s 1m"); + //SY(__NR_fstat64, x0, x0); FAIL; + + // __NR_lchown32 198 + //GO(__NR_lchown32, "3s 1m"); + //SY(__NR_lchown32, x0, x0, x0); FAIL; + + // __NR_getuid32 199 + //GO(__NR_getuid32, "0s 0m"); + //SY(__NR_getuid32); SUCC; + + // __NR_getgid32 200 + //GO(__NR_getgid32, "0s 0m"); + //SY(__NR_getgid32); SUCC; + + // __NR_geteuid32 201 + //GO(__NR_geteuid32, "0s 0m"); + //SY(__NR_geteuid32); SUCC; + + // __NR_getegid32 202 + //GO(__NR_getegid32, "0s 0m"); + //SY(__NR_getegid32); SUCC; + + // __NR_setreuid32 203 + //GO(__NR_setreuid32, "2s 0m"); + //SY(__NR_setreuid32, x0-1, x0-1); SUCC; + + // __NR_setregid32 204 + //GO(__NR_setregid32, "2s 0m"); + //SY(__NR_setregid32, x0-1, x0-1); SUCC; + + // __NR_getgroups32 205 + //GO(__NR_getgroups32, "2s 1m"); + //SY(__NR_getgroups32, x0+1, x0+1); FAIL; + + // __NR_setgroups32 206 + //GO(__NR_setgroups32, "2s 1m"); + //SY(__NR_setgroups32, x0+1, x0+1); FAIL; + + // __NR_fchown32 207 + //GO(__NR_fchown32, "3s 0m"); + //SY(__NR_fchown32, x0-1, x0, x0); FAIL; + + // __NR_setresuid32 208 + //GO(__NR_setresuid32, "3s 0m"); + //SY(__NR_setresuid32, x0-1, x0-1, x0-1); SUCC; + + // __NR_getresuid32 209 + //GO(__NR_getresuid32, "3s 3m"); + //SY(__NR_getresuid32, x0, x0, x0); FAIL; + + // __NR_setresgid32 210 + //GO(__NR_setresgid32, "3s 0m"); + //SY(__NR_setresgid32, x0-1, x0-1, x0-1); SUCC; + + // __NR_getresgid32 211 + //GO(__NR_getresgid32, "3s 3m"); + //SY(__NR_getresgid32, x0, x0, x0); FAIL; + + // __NR_chown32 212 + //GO(__NR_chown32, "3s 1m"); + //SY(__NR_chown32, x0, x0, x0); FAIL; + + // __NR_setuid32 213 + //GO(__NR_setuid32, "1s 0m"); + //SY(__NR_setuid32, x0-1); FAIL; + + // __NR_setgid32 214 + //GO(__NR_setgid32, "1s 0m"); + //SY(__NR_setgid32, x0-1); FAIL; + + // __NR_setfsuid32 215 + //GO(__NR_setfsuid32, "1s 0m"); + //SY(__NR_setfsuid32, x0); SUCC; // This syscall has a stupid return value + + // __NR_setfsgid32 216 + //GO(__NR_setfsgid32, "1s 0m"); + //SY(__NR_setfsgid32, x0); SUCC; // This syscall has a stupid return value + + // __NR_pivot_root 217 + GO(__NR_pivot_root, "n/a"); + //SY(__NR_pivot_root); // (Not yet handled by Valgrind) FAIL; + + // __NR_mincore 218 + GO(__NR_mincore, "3s 1m"); + SY(__NR_mincore, x0, x0+40960, x0); FAIL; + + // __NR_madvise 219 + GO(__NR_madvise, "3s 0m"); + SY(__NR_madvise, x0, x0+1, x0); FAILx(ENOMEM); + + // __NR_getdents64 220 + GO(__NR_getdents64, "3s 1m"); + SY(__NR_getdents64, x0, x0, x0+1); FAIL; + + // __NR_fcntl64 221 + // As with sys_open(), we don't trigger errors for the 1st two args for + // the later ones. + // For F_GETFD the 3rd arg is ignored. + //GO(__NR_fcntl64, "(GETFD) 2s 0m"); + //SY(__NR_fcntl64, x0-1, x0+F_GETFD, x0); FAILx(EBADF); + + // For F_DUPFD the 3rd arg is 'arg' + //GO(__NR_fcntl64, "(DUPFD) 1s 0m"); + //SY(__NR_fcntl64, -1, F_DUPFD, x0); FAILx(EBADF); + + // For F_GETLK the 3rd arg is 'lock'. + // On x86, this fails w/EBADF. But on amd64 in 32-bit mode it fails + // w/EFAULT. + //GO(__NR_fcntl64, "(GETLK) 1s 0m"); + //SY(__NR_fcntl64, -1, +F_GETLK, x0); FAIL; //FAILx(EBADF); + + // 222 + GO(222, "ni"); + SY(222); FAIL; + + // 223 + GO(223, "ni"); + SY(223); FAIL; + + // __NR_gettid 224 + GO(__NR_gettid, "n/a"); + //SY(__NR_gettid); // (Not yet handled by Valgrind) FAIL; + + // __NR_readahead 225 + GO(__NR_readahead, "n/a"); + //SY(__NR_readahead); // (Not yet handled by Valgrind) FAIL; + + // __NR_setxattr 226 + GO(__NR_setxattr, "5s 3m"); + SY(__NR_setxattr, x0, x0, x0, x0+1, x0); FAIL; + + // __NR_lsetxattr 227 + GO(__NR_lsetxattr, "5s 3m"); + SY(__NR_lsetxattr, x0, x0, x0, x0+1, x0); FAIL; + + // __NR_fsetxattr 228 + GO(__NR_fsetxattr, "5s 2m"); + SY(__NR_fsetxattr, x0, x0, x0, x0+1, x0); FAIL; + + // __NR_getxattr 229 + GO(__NR_getxattr, "4s 3m"); + SY(__NR_getxattr, x0, x0, x0, x0+1); FAIL; + + // __NR_lgetxattr 230 + GO(__NR_lgetxattr, "4s 3m"); + SY(__NR_lgetxattr, x0, x0, x0, x0+1); FAIL; + + // __NR_fgetxattr 231 + GO(__NR_fgetxattr, "4s 2m"); + SY(__NR_fgetxattr, x0, x0, x0, x0+1); FAIL; + + // __NR_listxattr 232 + GO(__NR_listxattr, "3s 2m"); + SY(__NR_listxattr, x0, x0, x0+1); FAIL; + + // __NR_llistxattr 233 + GO(__NR_llistxattr, "3s 2m"); + SY(__NR_llistxattr, x0, x0, x0+1); FAIL; + + // __NR_flistxattr 234 + GO(__NR_flistxattr, "3s 1m"); + SY(__NR_flistxattr, x0-1, x0, x0+1); FAIL; /* kernel returns EBADF, but both seem correct */ + + // __NR_removexattr 235 + GO(__NR_removexattr, "2s 2m"); + SY(__NR_removexattr, x0, x0); FAIL; + + // __NR_lremovexattr 236 + GO(__NR_lremovexattr, "2s 2m"); + SY(__NR_lremovexattr, x0, x0); FAIL; + + // __NR_fremovexattr 237 + GO(__NR_fremovexattr, "2s 1m"); + SY(__NR_fremovexattr, x0, x0); FAIL; + + // __NR_tkill 238 + GO(__NR_tkill, "n/a"); + //SY(__NR_tkill); // (Not yet handled by Valgrind) FAIL; + + // __NR_sendfile64 239 + //GO(__NR_sendfile64, "4s 1m"); + //SY(__NR_sendfile64, x0, x0, x0+1, x0); FAIL; + + // __NR_futex 240 +#ifndef FUTEX_WAIT +#define FUTEX_WAIT 0 +#endif + // XXX: again, glibc not doing 6th arg means we have only 5s errors + GO(__NR_futex, "4s 2m"); + SY(__NR_futex, x0+FUTEX_WAIT, x0, x0, x0+1); FAIL; + + // __NR_sched_setaffinity 241 + GO(__NR_sched_setaffinity, "3s 1m"); + SY(__NR_sched_setaffinity, x0, x0+1, x0); FAIL; + + // __NR_sched_getaffinity 242 + GO(__NR_sched_getaffinity, "3s 1m"); + SY(__NR_sched_getaffinity, x0, x0+1, x0); FAIL; + + // __NR_set_thread_area 243 + //GO(__NR_set_thread_area, "1s 1m"); + //SY(__NR_set_thread_area, x0); FAILx(EFAULT); + + // __NR_get_thread_area 244 + //GO(__NR_get_thread_area, "1s 1m"); + //SY(__NR_get_thread_area, x0); FAILx(EFAULT); + + // __NR_io_setup 245 + GO(__NR_io_setup, "2s 1m"); + SY(__NR_io_setup, x0, x0); FAIL; + + // __NR_io_destroy 246 + { + // jump through hoops to prevent the PRE(io_destroy) wrapper crashing. + struct fake_aio_ring { + unsigned id; /* kernel internal index number */ + unsigned nr; /* number of io_events */ + // There are more fields in the real aio_ring, but the 'nr' field is + // the only one used by the PRE() wrapper. + } ring = { 0, 0 }; + struct fake_aio_ring* ringptr = ˚ + GO(__NR_io_destroy, "1s 0m"); + SY(__NR_io_destroy, x0+&ringptr); FAIL; + } + + // __NR_io_getevents 247 + GO(__NR_io_getevents, "5s 2m"); + SY(__NR_io_getevents, x0, x0, x0+1, x0, x0+1); FAIL; + + // __NR_io_submit 248 + GO(__NR_io_submit, "3s 1m"); + SY(__NR_io_submit, x0, x0+1, x0); FAIL; + + // __NR_io_cancel 249 + GO(__NR_io_cancel, "3s 2m"); + SY(__NR_io_cancel, x0, x0, x0); FAIL; + + // __NR_fadvise64 250 + GO(__NR_fadvise64, "n/a"); + //SY(__NR_fadvise64); // (Not yet handled by Valgrind) FAIL; + + // 251 + GO(251, "ni"); + SY(251); FAIL; + + // __NR_exit_group 252 + GO(__NR_exit_group, "other"); + // (see scalar_exit_group.c) + + // __NR_lookup_dcookie 253 + GO(__NR_lookup_dcookie, "4s 1m"); + SY(__NR_lookup_dcookie, x0, x0, x0, x0+1); FAIL; + + // __NR_epoll_create 254 + //GO(__NR_epoll_create, "1s 0m"); + //SY(__NR_epoll_create, x0); SUCC_OR_FAIL; + + // __NR_epoll_ctl 255 + GO(__NR_epoll_ctl, "4s 1m"); + SY(__NR_epoll_ctl, x0, x0, x0, x0); FAIL; + + // __NR_epoll_wait 256 + //GO(__NR_epoll_wait, "4s 1m"); + //SY(__NR_epoll_wait, x0, x0, x0+1, x0); FAIL; + + // __NR_remap_file_pages 257 + GO(__NR_remap_file_pages, "n/a"); + //SY(__NR_remap_file_pages); // (Not yet handled by Valgrind) FAIL; + + // __NR_set_tid_address 258 + GO(__NR_set_tid_address, "1s 0m"); + SY(__NR_set_tid_address, x0); SUCC_OR_FAILx(ENOSYS); + + // __NR_timer_create 259 + GO(__NR_timer_create, "3s 2m"); + SY(__NR_timer_create, x0, x0+1, x0); FAIL; + + // __NR_timer_settime (__NR_timer_create+1) + GO(__NR_timer_settime, "4s 2m"); + SY(__NR_timer_settime, x0, x0, x0, x0+1); FAIL; + + // __NR_timer_gettime (__NR_timer_create+2) + GO(__NR_timer_gettime, "2s 1m"); + SY(__NR_timer_gettime, x0, x0); FAIL; + + // __NR_timer_getoverrun (__NR_timer_create+3) + GO(__NR_timer_getoverrun, "1s 0m"); + SY(__NR_timer_getoverrun, x0); FAIL; + + // __NR_timer_delete (__NR_timer_create+4) + GO(__NR_timer_delete, "1s 0m"); + SY(__NR_timer_delete, x0); FAIL; + + // __NR_clock_settime (__NR_timer_create+5) + GO(__NR_clock_settime, "2s 1m"); + SY(__NR_clock_settime, x0, x0); FAIL; FAIL; + + // __NR_clock_gettime (__NR_timer_create+6) + GO(__NR_clock_gettime, "2s 1m"); + SY(__NR_clock_gettime, x0, x0); FAIL; + + // __NR_clock_getres (__NR_timer_create+7) + GO(__NR_clock_getres, "2s 1m"); + SY(__NR_clock_getres, x0+1, x0+1); FAIL; FAIL; + + // __NR_clock_nanosleep (__NR_timer_create+8) + GO(__NR_clock_nanosleep, "n/a"); + //SY(__NR_clock_nanosleep); // (Not yet handled by Valgrind) FAIL; + + // __NR_statfs64 268 + //GO(__NR_statfs64, "3s 2m"); + //SY(__NR_statfs64, x0, x0+1, x0); FAIL; + + // __NR_fstatfs64 269 + //GO(__NR_fstatfs64, "3s 1m"); + //SY(__NR_fstatfs64, x0, x0+1, x0); FAIL; + + // __NR_tgkill 270 + GO(__NR_tgkill, "n/a"); + //SY(__NR_tgkill); // (Not yet handled by Valgrind) FAIL; + + // __NR_utimes 271 + //GO(__NR_utimes, "2s 2m"); + //SY(__NR_utimes, x0, x0+1); FAIL; + + // __NR_fadvise64_64 272 + //GO(__NR_fadvise64_64, "n/a"); + //SY(__NR_fadvise64_64); // (Not yet handled by Valgrind) FAIL; + + // __NR_vserver 273 + //GO(__NR_vserver, "ni"); + //SY(__NR_vserver); FAIL; + + // __NR_mbind 274 + GO(__NR_mbind, "n/a"); + //SY(__NR_mbind); // (Not yet handled by Valgrind) FAIL; + + // __NR_get_mempolicy 275 + GO(__NR_get_mempolicy, "n/a"); + //SY(__NR_get_mempolicy); // (Not yet handled by Valgrind) FAIL; + + // __NR_set_mempolicy 276 + GO(__NR_set_mempolicy, "n/a"); + //SY(__NR_set_mempolicy); // (Not yet handled by Valgrind) FAIL; + + // __NR_mq_open 277 + GO(__NR_mq_open, "4s 3m"); + SY(__NR_mq_open, x0, x0+O_CREAT, x0, x0+1); FAIL; + + // __NR_mq_unlink (__NR_mq_open+1) + GO(__NR_mq_unlink, "1s 1m"); + SY(__NR_mq_unlink, x0); FAIL; + + // __NR_mq_timedsend (__NR_mq_open+2) + GO(__NR_mq_timedsend, "5s 2m"); + SY(__NR_mq_timedsend, x0, x0, x0+1, x0, x0+1); FAIL; + + // __NR_mq_timedreceive (__NR_mq_open+3) + GO(__NR_mq_timedreceive, "5s 3m"); + SY(__NR_mq_timedreceive, x0, x0, x0+1, x0+1, x0+1); FAIL; + + // __NR_mq_notify (__NR_mq_open+4) + GO(__NR_mq_notify, "2s 1m"); + SY(__NR_mq_notify, x0, x0+1); FAIL; + + // __NR_mq_getsetattr (__NR_mq_open+5) + GO(__NR_mq_getsetattr, "3s 2m"); + SY(__NR_mq_getsetattr, x0, x0+1, x0+1); FAIL; + + // __NR_sys_kexec_load 283 + //GO(__NR_sys_kexec_load, "ni"); + //SY(__NR_sys_kexec_load); FAIL; + + // __NR_epoll_create1 329 + GO(__NR_epoll_create1, "1s 0m"); + SY(__NR_epoll_create1, x0); SUCC_OR_FAIL; + + // __NR_process_vm_readv 347 + GO(__NR_process_vm_readv, "6s 2m"); + SY(__NR_process_vm_readv, x0, x0, x0+1, x0, x0+1, x0); FAIL; + + // __NR_process_vm_writev 348 + GO(__NR_process_vm_writev, "6s 2m"); + SY(__NR_process_vm_writev, x0, x0, x0+1, x0, x0+1, x0); FAIL; + + // no such syscall... + GO(9999, "1e"); + SY(9999); FAIL; + + // __NR_exit 1 + GO(__NR_exit, "1s 0m"); + SY(__NR_exit, x0); FAIL; + + assert(0); +} diff --git a/memcheck/tests/loongarch64-linux/scalar.h b/memcheck/tests/loongarch64-linux/scalar.h new file mode 100644 index 0000000..4d86d2c --- /dev/null +++ b/memcheck/tests/loongarch64-linux/scalar.h @@ -0,0 +1,62 @@ +/* This is the loongarch64 variant of memcheck/tests/x86-linux/scalar.h */ +#include "../../../include/vki/vki-scnums-loongarch64-linux.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Since we use vki_unistd.h, we can't include . So we have to +// declare this ourselves. +extern long int syscall (long int __sysno, ...) __THROW; + +// Thorough syscall scalar arg checking. Also serves as thorough checking +// for (very) basic syscall use. Generally not trying to do anything +// meaningful with the syscalls. + +#define GO(__NR_xxx, s) \ + fprintf(stderr, "-----------------------------------------------------\n" \ + "%3d:%20s %s\n" \ + "-----------------------------------------------------\n", \ + __NR_xxx, #__NR_xxx, s); + +#define SY res = syscall + +#define FAIL assert(-1 == res); +#define SUCC assert(-1 != res); +#define SUCC_OR_FAIL /* no test */ + +#define FAILx(E) \ + do { \ + int myerrno = errno; \ + if (-1 == res) { \ + if (E == myerrno) { \ + /* as expected */ \ + } else { \ + fprintf(stderr, "Expected error %s (%d), got %d\n", #E, E, myerrno); \ + exit(1); \ + } \ + } else { \ + fprintf(stderr, "Expected error %s (%d), got success\n", #E, E); \ + exit(1); \ + } \ + } while (0); + +#define SUCC_OR_FAILx(E) \ + do { \ + int myerrno = errno; \ + if (-1 == res) { \ + if (E == myerrno) { \ + /* as expected */ \ + } else { \ + fprintf(stderr, "Expected error %s (%d), got %d\n", #E, E, myerrno); \ + exit(1); \ + } \ + } \ + } while (0); diff --git a/memcheck/tests/loongarch64-linux/scalar.stderr.exp b/memcheck/tests/loongarch64-linux/scalar.stderr.exp new file mode 100644 index 0000000..a90b90a --- /dev/null +++ b/memcheck/tests/loongarch64-linux/scalar.stderr.exp @@ -0,0 +1,2716 @@ +----------------------------------------------------- +128:__NR_restart_syscall n/a +----------------------------------------------------- +----------------------------------------------------- + 93: __NR_exit below +----------------------------------------------------- +----------------------------------------------------- + 63: __NR_read 1+3s 1m +----------------------------------------------------- +Syscall param (syscallno) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:51) + +Syscall param read(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:51) + +Syscall param read(buf) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:51) + +Syscall param read(count) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:51) + +Syscall param read(buf) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:51) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 64: __NR_write 3s 1m +----------------------------------------------------- +Syscall param write(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:55) + +Syscall param write(buf) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:55) + +Syscall param write(count) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:55) + +Syscall param write(buf) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:55) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 57: __NR_close 1s 0m +----------------------------------------------------- +Syscall param close(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:69) + +----------------------------------------------------- +221: __NR_execve 3s 1m +----------------------------------------------------- +Syscall param execve(filename) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:89) + +Syscall param execve(argv) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:89) + +Syscall param execve(envp) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:89) + +Syscall param execve(filename) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:89) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param execve(argv) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:89) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +221: __NR_execve 3s 1m +----------------------------------------------------- +Syscall param execve(filename) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:92) + +Syscall param execve(argv) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:92) + +Syscall param execve(envp) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:92) + +Syscall param execve(filename) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:92) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param execve(argv) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:92) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +221: __NR_execve 4s 2m +----------------------------------------------------- +Syscall param execve(filename) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:96) + +Syscall param execve(argv) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:96) + +Syscall param execve(envp) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:96) + +Syscall param execve(filename) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:96) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param execve(argv) points to uninitialised byte(s) + ... + by 0x........: main (scalar.c:96) + Address 0x........ is on thread 1's stack + in frame #1, created by main (scalar.c:28) + +Syscall param execve(argv[0]) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:96) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +221: __NR_execve 4s 2m +----------------------------------------------------- +Syscall param execve(filename) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:99) + +Syscall param execve(argv) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:99) + +Syscall param execve(envp) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:99) + +Syscall param execve(filename) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:99) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param execve(envp) points to uninitialised byte(s) + ... + by 0x........: main (scalar.c:99) + Address 0x........ is on thread 1's stack + in frame #1, created by main (scalar.c:28) + +Syscall param execve(envp[i]) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:99) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 49: __NR_chdir 1s 1m +----------------------------------------------------- +Syscall param chdir(path) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:103) + +Syscall param chdir(path) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:103) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 62: __NR_lseek 3s 0m +----------------------------------------------------- +Syscall param lseek(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:131) + +Syscall param lseek(offset) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:131) + +Syscall param lseek(whence) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:131) + +----------------------------------------------------- +172: __NR_getpid 0s 0m +----------------------------------------------------- +----------------------------------------------------- + 40: __NR_mount 5s 3m +----------------------------------------------------- +Syscall param mount(source) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:139) + +Syscall param mount(target) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:139) + +Syscall param mount(type) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:139) + +Syscall param mount(flags) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:139) + +Syscall param mount(data) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:139) + +Syscall param mount(target) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:139) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param mount(type) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:139) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +146: __NR_setuid 1s 0m +----------------------------------------------------- +Syscall param setuid(uid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:147) + +----------------------------------------------------- +174: __NR_getuid 0s 0m +----------------------------------------------------- +----------------------------------------------------- + 81: __NR_sync 0s 0m +----------------------------------------------------- +----------------------------------------------------- +129: __NR_kill 2s 0m +----------------------------------------------------- +Syscall param kill(pid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:204) + +Syscall param kill(signal) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:204) + +----------------------------------------------------- + 23: __NR_dup 1s 0m +----------------------------------------------------- +Syscall param dup(oldfd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:220) + +----------------------------------------------------- +153: __NR_times 1s 1m +----------------------------------------------------- +Syscall param times(buf) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:228) + +Syscall param times(buf) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:228) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +214: __NR_brk 1s 0m +----------------------------------------------------- +Syscall param brk(end_data_segment) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:236) + +----------------------------------------------------- +144: __NR_setgid 1s 0m +----------------------------------------------------- +Syscall param setgid(gid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:240) + +----------------------------------------------------- +176: __NR_getgid 0s 0m +----------------------------------------------------- +----------------------------------------------------- +175: __NR_geteuid 0s 0m +----------------------------------------------------- +----------------------------------------------------- +177: __NR_getegid 0s 0m +----------------------------------------------------- +----------------------------------------------------- + 89: __NR_acct 1s 1m +----------------------------------------------------- +Syscall param acct(filename) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:260) + +Syscall param acct(filename) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:260) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 39: __NR_umount2 2s 1m +----------------------------------------------------- +Syscall param umount2(path) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:264) + +Syscall param umount2(flags) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:264) + +Syscall param umount2(path) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:264) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 29: __NR_ioctl 3s 1m +----------------------------------------------------- +Syscall param ioctl(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:273) + +Syscall param ioctl(request) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:273) + +Syscall param ioctl(arg) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:273) + +Syscall param ioctl(TCSET{S,SW,SF}) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:273) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 25: __NR_fcntl (GETFD) 2s 0m +----------------------------------------------------- +Syscall param fcntl(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:279) + +Syscall param fcntl(cmd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:279) + +----------------------------------------------------- + 25: __NR_fcntl (DUPFD) 1s 0m +----------------------------------------------------- +Syscall param fcntl(arg) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:285) + +----------------------------------------------------- + 25: __NR_fcntl (GETLK) 1s 5m +----------------------------------------------------- +Syscall param fcntl(lock) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:291) + +Syscall param fcntl(lock->l_type) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:291) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param fcntl(lock->l_whence) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:291) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param fcntl(lock->l_start) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:291) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param fcntl(lock->l_len) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:291) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param fcntl(lock->l_pid) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:291) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +154: __NR_setpgid 2s 0m +----------------------------------------------------- +Syscall param setpgid(pid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:299) + +Syscall param setpgid(pgid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:299) + +----------------------------------------------------- +166: __NR_umask 1s 0m +----------------------------------------------------- +Syscall param umask(mask) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:311) + +----------------------------------------------------- + 51: __NR_chroot 1s 1m +----------------------------------------------------- +Syscall param chroot(path) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:315) + +Syscall param chroot(path) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:315) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +173: __NR_getppid 0s 0m +----------------------------------------------------- +----------------------------------------------------- +157: __NR_setsid 0s 0m +----------------------------------------------------- +----------------------------------------------------- +145: __NR_setreuid 2s 0m +----------------------------------------------------- +Syscall param setreuid(ruid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:351) + +Syscall param setreuid(euid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:351) + +----------------------------------------------------- +143: __NR_setregid 2s 0m +----------------------------------------------------- +Syscall param setregid(rgid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:355) + +Syscall param setregid(egid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:355) + +----------------------------------------------------- +161: __NR_sethostname n/a +----------------------------------------------------- +----------------------------------------------------- +165: __NR_getrusage 2s 1m +----------------------------------------------------- +Syscall param getrusage(who) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:380) + +Syscall param getrusage(usage) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:380) + +Syscall param getrusage(usage) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:380) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +169: __NR_gettimeofday 2s 2m +----------------------------------------------------- +Syscall param gettimeofday(tv) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:384) + +Syscall param gettimeofday(tz) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:384) + +Syscall param gettimeofday(tv) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:384) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param gettimeofday(tz) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:384) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +170: __NR_settimeofday 2s 2m +----------------------------------------------------- +Syscall param settimeofday(tv) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:388) + +Syscall param settimeofday(tz) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:388) + +Syscall param settimeofday(tv) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:388) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param settimeofday(tz) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:388) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +158: __NR_getgroups 2s 1m +----------------------------------------------------- +Syscall param getgroups(size) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:392) + +Syscall param getgroups(list) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:392) + +Syscall param getgroups(list) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:392) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +159: __NR_setgroups 2s 1m +----------------------------------------------------- +Syscall param setgroups(size) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:396) + +Syscall param setgroups(list) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:396) + +Syscall param setgroups(list) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:396) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +224: __NR_swapon n/a +----------------------------------------------------- +----------------------------------------------------- +142: __NR_reboot n/a +----------------------------------------------------- +----------------------------------------------------- +222: __NR_mmap 1s 1m +----------------------------------------------------- +Syscall param mmap(addr) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:437) + +----------------------------------------------------- +215: __NR_munmap 2s 0m +----------------------------------------------------- +Syscall param munmap(start) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:442) + +Syscall param munmap(length) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:442) + +----------------------------------------------------- + 45: __NR_truncate 2s 1m +----------------------------------------------------- +Syscall param truncate(path) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:446) + + +More than 100 errors detected. Subsequent errors +will still be recorded, but in less detail than before. +Syscall param truncate(length) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:446) + +Syscall param truncate(path) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:446) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 46: __NR_ftruncate 2s 0m +----------------------------------------------------- +Syscall param ftruncate(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:450) + +Syscall param ftruncate(length) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:450) + +----------------------------------------------------- + 52: __NR_fchmod 2s 0m +----------------------------------------------------- +Syscall param fchmod(fildes) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:454) + +Syscall param fchmod(mode) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:454) + +----------------------------------------------------- + 55: __NR_fchown 3s 0m +----------------------------------------------------- +Syscall param fchown(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:458) + +Syscall param fchown(owner) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:458) + +Syscall param fchown(group) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:458) + +----------------------------------------------------- +141: __NR_getpriority 2s 0m +----------------------------------------------------- +Syscall param getpriority(which) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:462) + +Syscall param getpriority(who) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:462) + +----------------------------------------------------- +140: __NR_setpriority 3s 0m +----------------------------------------------------- +Syscall param setpriority(which) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:466) + +Syscall param setpriority(who) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:466) + +Syscall param setpriority(prio) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:466) + +----------------------------------------------------- + 43: __NR_statfs 2s 2m +----------------------------------------------------- +Syscall param statfs(path) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:474) + +Syscall param statfs(buf) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:474) + +Syscall param statfs(path) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:474) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param statfs(buf) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:474) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 44: __NR_fstatfs 2s 1m +----------------------------------------------------- +Syscall param fstatfs(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:478) + +Syscall param fstatfs(buf) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:478) + +Syscall param fstatfs(buf) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:478) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +116: __NR_syslog 3s 1m +----------------------------------------------------- +Syscall param syslog(type) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:490) + +Syscall param syslog(bufp) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:490) + +Syscall param syslog(len) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:490) + +Syscall param syslog(bufp) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:490) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +103: __NR_setitimer 3s 2m +----------------------------------------------------- +Syscall param setitimer(which) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:494) + +Syscall param setitimer(value) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:494) + +Syscall param setitimer(ovalue) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:494) + +Syscall param setitimer(&value->it_interval) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:494) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param setitimer(&value->it_value) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:494) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param setitimer(&ovalue->it_interval) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:494) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param setitimer(&ovalue->it_value) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:494) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +102: __NR_getitimer 2s 1m +----------------------------------------------------- +Syscall param getitimer(which) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:498) + +Syscall param getitimer(value) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:498) + +Syscall param getitimer(&value->it_interval) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:498) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param getitimer(&value->it_value) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:498) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 58: __NR_vhangup 0s 0m +----------------------------------------------------- +----------------------------------------------------- +260: __NR_wait4 4s 2m +----------------------------------------------------- +Syscall param wait4(pid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:534) + +Syscall param wait4(status) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:534) + +Syscall param wait4(options) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:534) + +Syscall param wait4(rusage) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:534) + +Syscall param wait4(status) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:534) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param wait4(rusage) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:534) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +225: __NR_swapoff n/a +----------------------------------------------------- +----------------------------------------------------- +179: __NR_sysinfo 1s 1m +----------------------------------------------------- +Syscall param sysinfo(info) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:542) + +Syscall param sysinfo(info) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:542) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 82: __NR_fsync 1s 0m +----------------------------------------------------- +Syscall param fsync(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:553) + +----------------------------------------------------- +220: __NR_clone 5s 3m +----------------------------------------------------- +Syscall param clone(flags) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:564) + +Syscall param clone(child_stack) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:564) + +Syscall param clone(parent_tidptr) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:564) + +Syscall param clone(parent_tidptr) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:564) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param clone(tlsinfo) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:564) + +Syscall param clone(child_tidptr) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:564) + +Syscall param clone(child_tidptr) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:564) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +162: __NR_setdomainname n/a +----------------------------------------------------- +----------------------------------------------------- +160: __NR_uname 1s 1m +----------------------------------------------------- +Syscall param uname(buf) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:575) + +Syscall param uname(buf) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:575) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +171: __NR_adjtimex XXX +----------------------------------------------------- +----------------------------------------------------- +226: __NR_mprotect 3s 0m +----------------------------------------------------- +Syscall param mprotect(addr) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:588) + +Syscall param mprotect(len) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:588) + +Syscall param mprotect(prot) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:588) + +----------------------------------------------------- +105: __NR_init_module 3s 2m +----------------------------------------------------- +Syscall param init_module(umod) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:600) + +Syscall param init_module(len) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:600) + +Syscall param init_module(uargs) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:600) + +Syscall param init_module(umod) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:600) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param init_module(uargs) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:600) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +106: __NR_delete_module n/a +----------------------------------------------------- +----------------------------------------------------- + 60: __NR_quotactl 4s 1m +----------------------------------------------------- +Syscall param quotactl(cmd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:612) + +Syscall param quotactl(special) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:612) + +Syscall param quotactl(id) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:612) + +Syscall param quotactl(addr) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:612) + +Syscall param quotactl(special) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:612) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +155: __NR_getpgid 1s 0m +----------------------------------------------------- +Syscall param getpgid(pid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:616) + +----------------------------------------------------- + 50: __NR_fchdir 1s 0m +----------------------------------------------------- +Syscall param fchdir(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:620) + +----------------------------------------------------- + 92: __NR_personality 1s 0m +----------------------------------------------------- +Syscall param personality(persona) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:632) + +----------------------------------------------------- +151: __NR_setfsuid 1s 0m +----------------------------------------------------- +Syscall param setfsuid(uid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:640) + +----------------------------------------------------- +152: __NR_setfsgid 1s 0m +----------------------------------------------------- +Syscall param setfsgid(gid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:644) + +----------------------------------------------------- + 32: __NR_flock 2s 0m +----------------------------------------------------- +Syscall param flock(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:660) + +Syscall param flock(operation) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:660) + +----------------------------------------------------- +227: __NR_msync 3s 1m +----------------------------------------------------- +Syscall param msync(start) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:664) + +Syscall param msync(length) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:664) + +Syscall param msync(flags) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:664) + +Syscall param msync(start) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:664) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 65: __NR_readv 3s 1m +----------------------------------------------------- +Syscall param readv(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:668) + +Syscall param readv(vector) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:668) + +Syscall param readv(count) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:668) + +Syscall param readv(vector) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:668) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 66: __NR_writev 3s 1m +----------------------------------------------------- +Syscall param writev(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:672) + +Syscall param writev(vector) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:672) + +Syscall param writev(count) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:672) + +Syscall param writev(vector) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:672) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +156: __NR_getsid 1s 0m +----------------------------------------------------- +Syscall param getsid(pid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:676) + +----------------------------------------------------- + 83: __NR_fdatasync 1s 0m +----------------------------------------------------- +Syscall param fdatasync(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:680) + +----------------------------------------------------- +228: __NR_mlock 2s 0m +----------------------------------------------------- +Syscall param mlock(addr) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:688) + +Syscall param mlock(len) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:688) + +----------------------------------------------------- +229: __NR_munlock 2s 0m +----------------------------------------------------- +Syscall param munlock(addr) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:692) + +Syscall param munlock(len) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:692) + +----------------------------------------------------- +230: __NR_mlockall 1s 0m +----------------------------------------------------- +Syscall param mlockall(flags) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:696) + +----------------------------------------------------- +231: __NR_munlockall 0s 0m +----------------------------------------------------- +----------------------------------------------------- +118: __NR_sched_setparam 2s 1m +----------------------------------------------------- +Syscall param sched_setparam(pid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:704) + +Syscall param sched_setparam(p) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:704) + +Syscall param sched_setparam(p) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:704) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +121: __NR_sched_getparam 2s 1m +----------------------------------------------------- +Syscall param sched_getparam(pid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:708) + +Syscall param sched_getparam(p) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:708) + +Syscall param sched_getparam(p) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:708) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +119:__NR_sched_setscheduler 3s 1m +----------------------------------------------------- +Syscall param sched_setscheduler(pid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:712) + +Syscall param sched_setscheduler(policy) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:712) + +Syscall param sched_setscheduler(p) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:712) + +Syscall param sched_setscheduler(p) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:712) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +120:__NR_sched_getscheduler 1s 0m +----------------------------------------------------- +Syscall param sched_getscheduler(pid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:716) + +----------------------------------------------------- +124: __NR_sched_yield 0s 0m +----------------------------------------------------- +----------------------------------------------------- +125:__NR_sched_get_priority_max 1s 0m +----------------------------------------------------- +Syscall param sched_get_priority_max(policy) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:724) + +----------------------------------------------------- +126:__NR_sched_get_priority_min 1s 0m +----------------------------------------------------- +Syscall param sched_get_priority_min(policy) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:728) + +----------------------------------------------------- +127:__NR_sched_rr_get_interval n/a +----------------------------------------------------- +----------------------------------------------------- +101: __NR_nanosleep 2s 2m +----------------------------------------------------- +Syscall param nanosleep(req) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:736) + +Syscall param nanosleep(rem) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:736) + +Syscall param nanosleep(req) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:736) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param nanosleep(rem) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:736) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +216: __NR_mremap 5s 0m +----------------------------------------------------- +Syscall param mremap(old_addr) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:740) + +Syscall param mremap(old_size) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:740) + +Syscall param mremap(new_size) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:740) + +Syscall param mremap(flags) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:740) + +Syscall param mremap(new_addr) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:740) + +----------------------------------------------------- +147: __NR_setresuid 3s 0m +----------------------------------------------------- +Syscall param setresuid(ruid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:744) + +Syscall param setresuid(euid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:744) + +Syscall param setresuid(suid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:744) + +----------------------------------------------------- +148: __NR_getresuid 3s 3m +----------------------------------------------------- +Syscall param getresuid(ruid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:748) + +Syscall param getresuid(euid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:748) + +Syscall param getresuid(suid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:748) + +Syscall param getresuid(ruid) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:748) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param getresuid(euid) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:748) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param getresuid(suid) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:748) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 42: __NR_nfsservctl n/a +----------------------------------------------------- +----------------------------------------------------- +149: __NR_setresgid 3s 0m +----------------------------------------------------- +Syscall param setresgid(rgid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:768) + +Syscall param setresgid(egid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:768) + +Syscall param setresgid(sgid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:768) + +----------------------------------------------------- +150: __NR_getresgid 3s 3m +----------------------------------------------------- +Syscall param getresgid(rgid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:772) + +Syscall param getresgid(egid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:772) + +Syscall param getresgid(sgid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:772) + +Syscall param getresgid(rgid) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:772) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param getresgid(egid) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:772) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param getresgid(sgid) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:772) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +167: __NR_prctl 5s 0m +----------------------------------------------------- +Syscall param prctl(option) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:777) + +Syscall param prctl(arg2) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:777) + +Syscall param prctl(arg3) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:777) + +Syscall param prctl(arg4) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:777) + +Syscall param prctl(arg5) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:777) + +----------------------------------------------------- +167: __NR_prctl 2s 0m +----------------------------------------------------- +Syscall param prctl(option) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:782) + +Syscall param prctl(set-name) points to uninitialised byte(s) + ... + by 0x........: main (scalar.c:782) + Address 0x........ is on thread 1's stack + in frame #1, created by main (scalar.c:28) + +----------------------------------------------------- +167: __NR_prctl 1s 0m +----------------------------------------------------- +Syscall param prctl(option) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:787) + +----------------------------------------------------- +139: __NR_rt_sigreturn n/a +----------------------------------------------------- +----------------------------------------------------- +134: __NR_rt_sigaction 4s 4m +----------------------------------------------------- +Syscall param rt_sigaction(signum) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:795) + +Syscall param rt_sigaction(act) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:795) + +Syscall param rt_sigaction(oldact) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:795) + +Syscall param rt_sigaction(sigsetsize) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:795) + +Syscall param rt_sigaction(act->sa_handler) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:795) + Address 0x........ is 8 bytes after a block of size 8 alloc'd + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: main (scalar.c:30) + +Syscall param rt_sigaction(act->sa_mask) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:795) + Address 0x........ is 16 bytes after a block of size 16 in arena "client" + +Syscall param rt_sigaction(act->sa_flags) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:795) + Address 0x........ is 16 bytes after a block of size 8 alloc'd + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: main (scalar.c:30) + +Syscall param rt_sigaction(oldact) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:795) + Address 0x........ is 8 bytes after a block of size 8 alloc'd + at 0x........: malloc (vg_replace_malloc.c:...) + by 0x........: main (scalar.c:30) + +----------------------------------------------------- +135: __NR_rt_sigprocmask 4s 2m +----------------------------------------------------- +Syscall param rt_sigprocmask(how) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:799) + +Syscall param rt_sigprocmask(set) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:799) + +Syscall param rt_sigprocmask(oldset) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:799) + +Syscall param rt_sigprocmask(sigsetsize) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:799) + +Syscall param rt_sigprocmask(set) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:799) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param rt_sigprocmask(oldset) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:799) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +136: __NR_rt_sigpending 2s 1m +----------------------------------------------------- +Syscall param rt_sigpending(set) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:803) + +Syscall param rt_sigpending(sigsetsize) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:803) + +Syscall param rt_sigpending(set) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:803) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +137:__NR_rt_sigtimedwait 4s 3m +----------------------------------------------------- +Syscall param rt_sigtimedwait(set) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:807) + +Syscall param rt_sigtimedwait(info) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:807) + +Syscall param rt_sigtimedwait(timeout) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:807) + +Syscall param rt_sigtimedwait(sigsetsize) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:807) + +Syscall param rt_sigtimedwait(set) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:807) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param rt_sigtimedwait(info) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:807) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param rt_sigtimedwait(timeout) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:807) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +138:__NR_rt_sigqueueinfo 3s 1m +----------------------------------------------------- +Syscall param rt_sigqueueinfo(pid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:811) + +Syscall param rt_sigqueueinfo(sig) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:811) + +Syscall param rt_sigqueueinfo(uinfo) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:811) + +Syscall param rt_sigqueueinfo(uinfo) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:811) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +133: __NR_rt_sigsuspend 2s 1m +----------------------------------------------------- +Syscall param rt_sigsuspend(mask) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:815) + +Syscall param rt_sigsuspend(size) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:815) + +Syscall param rt_sigsuspend(mask) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:815) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 67: __NR_pread64 5s 1m +----------------------------------------------------- +Syscall param pread64(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:819) + +Syscall param pread64(buf) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:819) + +Syscall param pread64(count) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:819) + +Syscall param pread64(offset) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:819) + +Syscall param pread64(buf) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:819) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 68: __NR_pwrite64 5s 1m +----------------------------------------------------- +Syscall param pwrite64(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:823) + +Syscall param pwrite64(buf) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:823) + +Syscall param pwrite64(count) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:823) + +Syscall param pwrite64(offset) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:823) + +Syscall param pwrite64(buf) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:823) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 17: __NR_getcwd 2s 1m +----------------------------------------------------- +Syscall param getcwd(buf) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:831) + +Syscall param getcwd(size) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:831) + +Syscall param getcwd(buf) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:831) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 90: __NR_capget 2s 2m +----------------------------------------------------- +Syscall param capget(header) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:835) + +Syscall param capget(data) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:835) + +Syscall param capget(header) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:835) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param capget(data) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:835) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 91: __NR_capset 2s 2m +----------------------------------------------------- +Syscall param capset(header) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:839) + +Syscall param capset(data) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:839) + +Syscall param capset(header) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:839) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param capset(data) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:839) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +132: __NR_sigaltstack 2s 2m +----------------------------------------------------- +Syscall param sigaltstack(ss) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:853) + +Syscall param sigaltstack(oss) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:853) + +Syscall param sigaltstack(ss) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:853) + Address 0x........ is on thread 1's stack + in frame #1, created by main (scalar.c:28) + +Syscall param sigaltstack(oss) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:853) + Address 0x........ is on thread 1's stack + in frame #1, created by main (scalar.c:28) + +----------------------------------------------------- + 71: __NR_sendfile 4s 1m +----------------------------------------------------- +Syscall param sendfile(out_fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:858) + +Syscall param sendfile(in_fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:858) + +Syscall param sendfile(offset) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:858) + +Syscall param sendfile(count) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:858) + +Syscall param sendfile(offset) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:858) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 41: __NR_pivot_root n/a +----------------------------------------------------- +----------------------------------------------------- +232: __NR_mincore 3s 1m +----------------------------------------------------- +Syscall param mincore(start) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:986) + +Syscall param mincore(length) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:986) + +Syscall param mincore(vec) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:986) + +Syscall param mincore(vec) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:986) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +233: __NR_madvise 3s 0m +----------------------------------------------------- +Syscall param madvise(start) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:990) + +Syscall param madvise(length) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:990) + +Syscall param madvise(advice) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:990) + +----------------------------------------------------- + 61: __NR_getdents64 3s 1m +----------------------------------------------------- +Syscall param getdents64(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:994) + +Syscall param getdents64(dirp) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:994) + +Syscall param getdents64(count) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:994) + +Syscall param getdents64(dirp) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:994) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +222: 222 ni +----------------------------------------------------- +----------------------------------------------------- +223: 223 ni +----------------------------------------------------- +----------------------------------------------------- +178: __NR_gettid n/a +----------------------------------------------------- +----------------------------------------------------- +213: __NR_readahead n/a +----------------------------------------------------- +----------------------------------------------------- + 5: __NR_setxattr 5s 3m +----------------------------------------------------- +Syscall param setxattr(path) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1031) + +Syscall param setxattr(name) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1031) + +Syscall param setxattr(value) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1031) + +Syscall param setxattr(size) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1031) + +Syscall param setxattr(flags) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1031) + +Syscall param setxattr(path) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1031) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param setxattr(name) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1031) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param setxattr(value) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1031) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 6: __NR_lsetxattr 5s 3m +----------------------------------------------------- +Syscall param lsetxattr(path) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1035) + +Syscall param lsetxattr(name) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1035) + +Syscall param lsetxattr(value) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1035) + +Syscall param lsetxattr(size) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1035) + +Syscall param lsetxattr(flags) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1035) + +Syscall param lsetxattr(path) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1035) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param lsetxattr(name) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1035) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param lsetxattr(value) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1035) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 7: __NR_fsetxattr 5s 2m +----------------------------------------------------- +Syscall param fsetxattr(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1039) + +Syscall param fsetxattr(name) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1039) + +Syscall param fsetxattr(value) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1039) + +Syscall param fsetxattr(size) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1039) + +Syscall param fsetxattr(flags) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1039) + +Syscall param fsetxattr(name) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1039) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param fsetxattr(value) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1039) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 8: __NR_getxattr 4s 3m +----------------------------------------------------- +Syscall param getxattr(path) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1043) + +Syscall param getxattr(name) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1043) + +Syscall param getxattr(value) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1043) + +Syscall param getxattr(size) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1043) + +Syscall param getxattr(path) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1043) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param getxattr(name) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1043) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param getxattr(value) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1043) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 9: __NR_lgetxattr 4s 3m +----------------------------------------------------- +Syscall param lgetxattr(path) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1047) + +Syscall param lgetxattr(name) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1047) + +Syscall param lgetxattr(value) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1047) + +Syscall param lgetxattr(size) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1047) + +Syscall param lgetxattr(path) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1047) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param lgetxattr(name) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1047) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param lgetxattr(value) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1047) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 10: __NR_fgetxattr 4s 2m +----------------------------------------------------- +Syscall param fgetxattr(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1051) + +Syscall param fgetxattr(name) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1051) + +Syscall param fgetxattr(value) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1051) + +Syscall param fgetxattr(size) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1051) + +Syscall param fgetxattr(name) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1051) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param fgetxattr(value) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1051) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 11: __NR_listxattr 3s 2m +----------------------------------------------------- +Syscall param listxattr(path) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1055) + +Syscall param listxattr(list) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1055) + +Syscall param listxattr(size) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1055) + +Syscall param listxattr(path) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1055) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param listxattr(list) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1055) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 12: __NR_llistxattr 3s 2m +----------------------------------------------------- +Syscall param llistxattr(path) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1059) + +Syscall param llistxattr(list) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1059) + +Syscall param llistxattr(size) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1059) + +Syscall param llistxattr(path) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1059) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param llistxattr(list) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1059) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 13: __NR_flistxattr 3s 1m +----------------------------------------------------- +Syscall param flistxattr(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1063) + +Syscall param flistxattr(list) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1063) + +Syscall param flistxattr(size) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1063) + +Syscall param flistxattr(list) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1063) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 14: __NR_removexattr 2s 2m +----------------------------------------------------- +Syscall param removexattr(path) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1067) + +Syscall param removexattr(name) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1067) + +Syscall param removexattr(path) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1067) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param removexattr(name) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1067) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 15: __NR_lremovexattr 2s 2m +----------------------------------------------------- +Syscall param lremovexattr(path) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1071) + +Syscall param lremovexattr(name) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1071) + +Syscall param lremovexattr(path) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1071) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param lremovexattr(name) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1071) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 16: __NR_fremovexattr 2s 1m +----------------------------------------------------- +Syscall param fremovexattr(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1075) + +Syscall param fremovexattr(name) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1075) + +Syscall param fremovexattr(name) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1075) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +130: __NR_tkill n/a +----------------------------------------------------- +----------------------------------------------------- + 98: __NR_futex 4s 2m +----------------------------------------------------- +Syscall param futex(futex) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1091) + +Syscall param futex(op) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1091) + +Syscall param futex(val) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1091) + +Syscall param futex(utime) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1091) + +Syscall param futex(futex) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1091) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param futex(timeout) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1091) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +122:__NR_sched_setaffinity 3s 1m +----------------------------------------------------- +Syscall param sched_setaffinity(pid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1095) + +Syscall param sched_setaffinity(len) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1095) + +Syscall param sched_setaffinity(mask) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1095) + +Syscall param sched_setaffinity(mask) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1095) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +123:__NR_sched_getaffinity 3s 1m +----------------------------------------------------- +Syscall param sched_getaffinity(pid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1099) + +Syscall param sched_getaffinity(len) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1099) + +Syscall param sched_getaffinity(mask) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1099) + +Syscall param sched_getaffinity(mask) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1099) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 0: __NR_io_setup 2s 1m +----------------------------------------------------- +Syscall param io_setup(nr_events) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1111) + +Syscall param io_setup(ctxp) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1111) + +Syscall param io_setup(ctxp) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1111) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 1: __NR_io_destroy 1s 0m +----------------------------------------------------- +Syscall param io_destroy(ctx) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1124) + +----------------------------------------------------- + 4: __NR_io_getevents 5s 2m +----------------------------------------------------- +Syscall param io_getevents(ctx_id) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1129) + +Syscall param io_getevents(min_nr) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1129) + +Syscall param io_getevents(nr) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1129) + +Syscall param io_getevents(events) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1129) + +Syscall param io_getevents(timeout) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1129) + +Syscall param io_getevents(events) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1129) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param io_getevents(timeout) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1129) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 2: __NR_io_submit 3s 1m +----------------------------------------------------- +Syscall param io_submit(ctx_id) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1133) + +Syscall param io_submit(nr) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1133) + +Syscall param io_submit(iocbpp) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1133) + +Syscall param io_submit(iocbpp) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1133) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 3: __NR_io_cancel 3s 2m +----------------------------------------------------- +Syscall param io_cancel(ctx_id) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1137) + +Syscall param io_cancel(iocb) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1137) + +Syscall param io_cancel(result) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1137) + +Syscall param io_cancel(iocb) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1137) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param io_cancel(result) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1137) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +223: __NR_fadvise64 n/a +----------------------------------------------------- +----------------------------------------------------- +251: 251 ni +----------------------------------------------------- +WARNING: unhandled loongarch64-linux syscall: 251 +You may be able to write your own handler. +Read the file README_MISSING_SYSCALL_OR_IOCTL. +Nevertheless we consider this a bug. Please report +it at http://valgrind.org/support/bug_reports.html. +----------------------------------------------------- + 94: __NR_exit_group other +----------------------------------------------------- +----------------------------------------------------- + 18: __NR_lookup_dcookie 4s 1m +----------------------------------------------------- +Syscall param lookup_dcookie(cookie) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1153) + +Syscall param lookup_dcookie(buf) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1153) + +Syscall param lookup_dcookie(len) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1153) + +----------------------------------------------------- + 21: __NR_epoll_ctl 4s 1m +----------------------------------------------------- +Syscall param epoll_ctl(epfd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1161) + +Syscall param epoll_ctl(op) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1161) + +Syscall param epoll_ctl(fd) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1161) + +Syscall param epoll_ctl(event) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1161) + +Syscall param epoll_ctl(event) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1161) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +234:__NR_remap_file_pages n/a +----------------------------------------------------- +----------------------------------------------------- + 96:__NR_set_tid_address 1s 0m +----------------------------------------------------- +Syscall param set_tid_address(tidptr) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1173) + +----------------------------------------------------- +107: __NR_timer_create 3s 2m +----------------------------------------------------- +Syscall param timer_create(clockid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1177) + +Syscall param timer_create(evp) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1177) + +Syscall param timer_create(timerid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1177) + +Syscall param timer_create(evp.sigev_value) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1177) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param timer_create(evp.sigev_signo) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1177) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param timer_create(evp.sigev_notify) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1177) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param timer_create(timerid) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1177) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +110: __NR_timer_settime 4s 2m +----------------------------------------------------- +Syscall param timer_settime(timerid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1181) + +Syscall param timer_settime(flags) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1181) + +Syscall param timer_settime(value) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1181) + +Syscall param timer_settime(ovalue) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1181) + +Syscall param timer_settime(value) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1181) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param timer_settime(ovalue) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1181) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +108: __NR_timer_gettime 2s 1m +----------------------------------------------------- +Syscall param timer_gettime(timerid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1185) + +Syscall param timer_gettime(value) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1185) + +Syscall param timer_gettime(value) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1185) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +109:__NR_timer_getoverrun 1s 0m +----------------------------------------------------- +Syscall param timer_getoverrun(timerid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1189) + +----------------------------------------------------- +111: __NR_timer_delete 1s 0m +----------------------------------------------------- +Syscall param timer_delete(timerid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1193) + +----------------------------------------------------- +112: __NR_clock_settime 2s 1m +----------------------------------------------------- +Syscall param clock_settime(clk_id) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1197) + +Syscall param clock_settime(tp) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1197) + +Syscall param clock_settime(tp) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1197) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +113: __NR_clock_gettime 2s 1m +----------------------------------------------------- +Syscall param clock_gettime(clk_id) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1201) + +Syscall param clock_gettime(tp) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1201) + +Syscall param clock_gettime(tp) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1201) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +114: __NR_clock_getres 2s 1m +----------------------------------------------------- +Syscall param clock_getres(clk_id) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1205) + +Syscall param clock_getres(res) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1205) + +Syscall param clock_getres(res) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1205) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +115:__NR_clock_nanosleep n/a +----------------------------------------------------- +----------------------------------------------------- +131: __NR_tgkill n/a +----------------------------------------------------- +----------------------------------------------------- +235: __NR_mbind n/a +----------------------------------------------------- +----------------------------------------------------- +236: __NR_get_mempolicy n/a +----------------------------------------------------- +----------------------------------------------------- +237: __NR_set_mempolicy n/a +----------------------------------------------------- +----------------------------------------------------- +180: __NR_mq_open 4s 3m +----------------------------------------------------- +Syscall param mq_open(name) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1249) + +Syscall param mq_open(oflag) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1249) + +Syscall param mq_open(mode) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1249) + +Syscall param mq_open(attr) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1249) + +Syscall param mq_open(name) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1249) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param mq_open(attr->mq_maxmsg) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1249) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param mq_open(attr->mq_msgsize) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1249) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +181: __NR_mq_unlink 1s 1m +----------------------------------------------------- +Syscall param mq_unlink(name) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1253) + +Syscall param mq_unlink(name) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1253) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +182: __NR_mq_timedsend 5s 2m +----------------------------------------------------- +Syscall param mq_timedsend(mqdes) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1257) + +Syscall param mq_timedsend(msg_ptr) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1257) + +Syscall param mq_timedsend(msg_len) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1257) + +Syscall param mq_timedsend(msg_prio) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1257) + +Syscall param mq_timedsend(abs_timeout) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1257) + +Syscall param mq_timedsend(msg_ptr) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1257) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param mq_timedsend(abs_timeout) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1257) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +183:__NR_mq_timedreceive 5s 3m +----------------------------------------------------- +Syscall param mq_timedreceive(mqdes) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1261) + +Syscall param mq_timedreceive(msg_ptr) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1261) + +Syscall param mq_timedreceive(msg_len) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1261) + +Syscall param mq_timedreceive(msg_prio) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1261) + +Syscall param mq_timedreceive(abs_timeout) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1261) + +Syscall param mq_timedreceive(msg_ptr) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1261) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param mq_timedreceive(msg_prio) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1261) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param mq_timedreceive(abs_timeout) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1261) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +184: __NR_mq_notify 2s 1m +----------------------------------------------------- +Syscall param mq_notify(mqdes) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1265) + +Syscall param mq_notify(notification) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1265) + +Syscall param mq_notify(notification) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1265) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +185: __NR_mq_getsetattr 3s 2m +----------------------------------------------------- +Syscall param mq_getsetattr(mqdes) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1269) + +Syscall param mq_getsetattr(mqstat) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1269) + +Syscall param mq_getsetattr(omqstat) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1269) + +Syscall param mq_getsetattr(mqstat->mq_flags) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1269) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param mq_getsetattr(omqstat) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1269) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- + 20: __NR_epoll_create1 1s 0m +----------------------------------------------------- +Syscall param epoll_create1(flags) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1277) + +----------------------------------------------------- +270:__NR_process_vm_readv 6s 2m +----------------------------------------------------- +Syscall param process_vm_readv(pid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1281) + +Syscall param process_vm_readv(lvec) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1281) + +Syscall param process_vm_readv(liovcnt) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1281) + +Syscall param process_vm_readv(rvec) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1281) + +Syscall param process_vm_readv(riovcnt) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1281) + +Syscall param process_vm_readv(flags) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1281) + +Syscall param process_vm_readv(lvec) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1281) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param process_vm_readv(rvec) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1281) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +271:__NR_process_vm_writev 6s 2m +----------------------------------------------------- +Syscall param process_vm_writev(pid) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1285) + +Syscall param process_vm_writev(lvec) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1285) + +Syscall param process_vm_writev(liovcnt) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1285) + +Syscall param process_vm_writev(rvec) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1285) + +Syscall param process_vm_writev(riovcnt) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1285) + +Syscall param process_vm_writev(flags) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1285) + +Syscall param process_vm_writev(lvec) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1285) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param process_vm_writev(rvec) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:1285) + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +----------------------------------------------------- +9999: 9999 1e +----------------------------------------------------- +WARNING: unhandled loongarch64-linux syscall: 9999 +You may be able to write your own handler. +Read the file README_MISSING_SYSCALL_OR_IOCTL. +Nevertheless we consider this a bug. Please report +it at http://valgrind.org/support/bug_reports.html. +----------------------------------------------------- + 93: __NR_exit 1s 0m +----------------------------------------------------- +Syscall param exit(status) contains uninitialised byte(s) + ... + by 0x........: main (scalar.c:1293) + diff --git a/memcheck/tests/loongarch64-linux/scalar.vgtest b/memcheck/tests/loongarch64-linux/scalar.vgtest new file mode 100644 index 0000000..897d9e7 --- /dev/null +++ b/memcheck/tests/loongarch64-linux/scalar.vgtest @@ -0,0 +1,3 @@ +prog: scalar +vgopts: -q --error-limit=no +args: < scalar.c diff --git a/memcheck/tests/mips32/Makefile.in b/memcheck/tests/mips32/Makefile.in index f6a8e5b..99c1a7c 100644 --- a/memcheck/tests/mips32/Makefile.in +++ b/memcheck/tests/mips32/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -202,8 +202,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -226,6 +224,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -239,6 +239,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -384,6 +385,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -523,6 +525,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -568,6 +576,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -739,7 +748,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/tests/mips64/Makefile.in b/memcheck/tests/mips64/Makefile.in index d158865..91b0aa8 100644 --- a/memcheck/tests/mips64/Makefile.in +++ b/memcheck/tests/mips64/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -202,8 +202,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -226,6 +224,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -239,6 +239,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -384,6 +385,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -523,6 +525,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -568,6 +576,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -738,7 +747,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/tests/ppc32/Makefile.in b/memcheck/tests/ppc32/Makefile.in index 0b68698..1ae402f 100644 --- a/memcheck/tests/ppc32/Makefile.in +++ b/memcheck/tests/ppc32/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -204,8 +204,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -228,6 +226,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -241,6 +241,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -386,6 +387,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -525,6 +527,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -570,6 +578,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -763,7 +772,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/tests/ppc64/Makefile.in b/memcheck/tests/ppc64/Makefile.in index 5f539d4..0343a21 100644 --- a/memcheck/tests/ppc64/Makefile.in +++ b/memcheck/tests/ppc64/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -204,8 +204,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -228,6 +226,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -241,6 +241,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -386,6 +387,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -525,6 +527,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -570,6 +578,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -763,7 +772,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/tests/s390x/Makefile.in b/memcheck/tests/s390x/Makefile.in index 7493c16..fd1a737 100644 --- a/memcheck/tests/s390x/Makefile.in +++ b/memcheck/tests/s390x/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -224,8 +224,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -248,6 +246,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -261,6 +261,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -406,6 +407,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -545,6 +547,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -590,6 +598,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -816,7 +825,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/tests/solaris/Makefile.in b/memcheck/tests/solaris/Makefile.in index 7b0410b..e19a4db 100644 --- a/memcheck/tests/solaris/Makefile.in +++ b/memcheck/tests/solaris/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -464,8 +464,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -488,6 +486,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -501,6 +501,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -646,6 +647,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -785,6 +787,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -830,6 +838,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -1293,7 +1302,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/tests/unit_libcbase.c b/memcheck/tests/unit_libcbase.c index 0ce65be..4803603 100644 --- a/memcheck/tests/unit_libcbase.c +++ b/memcheck/tests/unit_libcbase.c @@ -9,14 +9,14 @@ #include "pub_tool_vki.h" #include "m_libcbase.c" -/* On PPC, MIPS and ARM64 Linux VKI_PAGE_SIZE is a variable, not a macro. */ +/* On PPC, MIPS, ARM64 and LOONGARCH64 Linux VKI_PAGE_SIZE is a variable, not a macro. */ #if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \ || defined(VGP_ppc64le_linux) unsigned long VKI_PAGE_SIZE = 1UL << 12; #elif defined(VGP_arm64_linux) unsigned long VKI_PAGE_SIZE = 1UL << 16; #elif defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \ - || defined (VGP_nanomips_linux) + || defined (VGP_nanomips_linux) || defined(VGP_loongarch64_linux) #include unsigned long VKI_PAGE_SIZE; #endif diff --git a/memcheck/tests/vbit-test/Makefile.in b/memcheck/tests/vbit-test/Makefile.in index 16b7edf..2d0eeda 100644 --- a/memcheck/tests/vbit-test/Makefile.in +++ b/memcheck/tests/vbit-test/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -253,8 +253,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/depcomp README TODO DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -277,6 +275,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -290,6 +290,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -435,6 +436,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -574,6 +576,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -619,6 +627,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ EXTRA_DIST = vbit-test.vgtest vbit-test.stderr.exp \ @@ -1094,7 +1103,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/tests/vbit-test/irops.c b/memcheck/tests/vbit-test/irops.c index 1f1ba90..9d28733 100644 --- a/memcheck/tests/vbit-test/irops.c +++ b/memcheck/tests/vbit-test/irops.c @@ -34,281 +34,291 @@ That is not necessary but helpful when supporting a new architecture. */ static irop_t irops[] = { - { DEFOP(Iop_Add8, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Add16, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Add32, UNDEF_INT_ADD), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Add64, UNDEF_INT_ADD), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_Sub8, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Sub16, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Sub32, UNDEF_INT_SUB), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Sub64, UNDEF_INT_SUB), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // ppc32, mips assert - { DEFOP(Iop_Mul8, UNDEF_LEFT), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_Mul16, UNDEF_LEFT), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_Mul32, UNDEF_LEFT), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Mul64, UNDEF_LEFT), .s390x = 0, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // ppc32, mips assert - { DEFOP(Iop_Or1, UNDEF_OR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Or8, UNDEF_OR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Or16, UNDEF_OR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Or32, UNDEF_OR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Or64, UNDEF_OR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_And1, UNDEF_AND), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_And8, UNDEF_AND), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_And16, UNDEF_AND), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_And32, UNDEF_AND), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_And64, UNDEF_AND), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Xor8, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Xor16, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Xor32, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Xor64, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Shl8, UNDEF_SHL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_Shl16, UNDEF_SHL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_Shl32, UNDEF_SHL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Shl64, UNDEF_SHL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // ppc32 asserts - { DEFOP(Iop_Shr8, UNDEF_SHR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, // ppc32/64 assert - { DEFOP(Iop_Shr16, UNDEF_SHR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, // ppc32/64 assert - { DEFOP(Iop_Shr32, UNDEF_SHR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Shr64, UNDEF_SHR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // ppc32 asserts - { DEFOP(Iop_Sar8, UNDEF_SAR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, // ppc32/64 assert - { DEFOP(Iop_Sar16, UNDEF_SAR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, // ppc32/64 assert - { DEFOP(Iop_Sar32, UNDEF_SAR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Sar64, UNDEF_SAR), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 1, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // ppc32 asserts - { DEFOP(Iop_CmpEQ8, UNDEF_CMP_EQ_NE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_CmpEQ16, UNDEF_CMP_EQ_NE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_CmpEQ32, UNDEF_CMP_EQ_NE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_CmpEQ64, UNDEF_CMP_EQ_NE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // ppc32, mips assert - { DEFOP(Iop_CmpNE8, UNDEF_CMP_EQ_NE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_CmpNE16, UNDEF_CMP_EQ_NE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_CmpNE32, UNDEF_CMP_EQ_NE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_CmpNE64, UNDEF_CMP_EQ_NE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // ppc32, mips assert - { DEFOP(Iop_Not1, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Not8, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Not16, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Not32, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_Not64, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_CasCmpEQ8, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_CasCmpEQ16, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_CasCmpEQ32, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_CasCmpEQ64, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, + { DEFOP(Iop_Add8, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_Add16, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_Add32, UNDEF_INT_ADD), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_Add64, UNDEF_INT_ADD), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_Sub8, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_Sub16, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_Sub32, UNDEF_INT_SUB), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_Sub64, UNDEF_INT_SUB), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // ppc32, mips assert + { DEFOP(Iop_Mul8, UNDEF_LEFT), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_Mul16, UNDEF_LEFT), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_Mul32, UNDEF_LEFT), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_Mul64, UNDEF_LEFT), .s390x = 0, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 0 }, // ppc32, mips assert + { DEFOP(Iop_Or1, UNDEF_OR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_Or8, UNDEF_OR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_Or16, UNDEF_OR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_Or32, UNDEF_OR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_Or64, UNDEF_OR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_And1, UNDEF_AND), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_And8, UNDEF_AND), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_And16, UNDEF_AND), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_And32, UNDEF_AND), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_And64, UNDEF_AND), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_Xor8, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_Xor16, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_Xor32, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_Xor64, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_Shl8, UNDEF_SHL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_Shl16, UNDEF_SHL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_Shl32, UNDEF_SHL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_Shl64, UNDEF_SHL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // ppc32 asserts + { DEFOP(Iop_Shr8, UNDEF_SHR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, // ppc32/64 assert + { DEFOP(Iop_Shr16, UNDEF_SHR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, // ppc32/64 assert + { DEFOP(Iop_Shr32, UNDEF_SHR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_Shr64, UNDEF_SHR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // ppc32 asserts + { DEFOP(Iop_Sar8, UNDEF_SAR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, // ppc32/64 assert + { DEFOP(Iop_Sar16, UNDEF_SAR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, // ppc32/64 assert + { DEFOP(Iop_Sar32, UNDEF_SAR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_Sar64, UNDEF_SAR), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 1, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // ppc32 asserts + { DEFOP(Iop_CmpEQ8, UNDEF_CMP_EQ_NE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_CmpEQ16, UNDEF_CMP_EQ_NE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_CmpEQ32, UNDEF_CMP_EQ_NE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_CmpEQ64, UNDEF_CMP_EQ_NE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // ppc32, mips assert + { DEFOP(Iop_CmpNE8, UNDEF_CMP_EQ_NE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_CmpNE16, UNDEF_CMP_EQ_NE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_CmpNE32, UNDEF_CMP_EQ_NE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_CmpNE64, UNDEF_CMP_EQ_NE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // ppc32, mips assert + { DEFOP(Iop_Not1, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_Not8, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_Not16, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_Not32, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_Not64, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, + { DEFOP(Iop_CasCmpEQ8, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_CasCmpEQ16, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_CasCmpEQ32, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, + { DEFOP(Iop_CasCmpEQ64, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, - { DEFOP(Iop_CasCmpNE8, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_CasCmpNE16, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_CasCmpNE32, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_CasCmpNE64, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, + { DEFOP(Iop_CasCmpNE8, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_CasCmpNE16, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_CasCmpNE32, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, + { DEFOP(Iop_CasCmpNE64, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, { DEFOP(Iop_ExpCmpNE8, UNDEF_UNKNOWN), }, // exact (expensive) equality { DEFOP(Iop_ExpCmpNE16, UNDEF_UNKNOWN), }, // exact (expensive) equality { DEFOP(Iop_ExpCmpNE32, UNDEF_UNKNOWN), }, // exact (expensive) equality { DEFOP(Iop_ExpCmpNE64, UNDEF_UNKNOWN), }, // exact (expensive) equality - { DEFOP(Iop_MullS8, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_MullS16, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_MullS32, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts + { DEFOP(Iop_MullS8, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_MullS16, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_MullS32, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts // s390 has signed multiplication of 64-bit values but the result // is 64-bit (not 128-bit). So we cannot test this op standalone. - { DEFOP(Iop_MullS64, UNDEF_LEFT), .s390x = 0, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 1 }, // ppc32, mips assert - { DEFOP(Iop_MullU8, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 0 }, - { DEFOP(Iop_MullU16, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 0 }, - { DEFOP(Iop_MullU32, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_MullU64, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 1 }, // ppc32, mips assert - { DEFOP(Iop_Clz64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 1 }, // ppc32 asserts - { DEFOP(Iop_Clz32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =1, .mips64 = 1 }, - { DEFOP(Iop_Ctz64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 0 }, - { DEFOP(Iop_Ctz32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 0 }, - { DEFOP(Iop_ClzNat64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 0 }, // ppc32 asserts - { DEFOP(Iop_ClzNat32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 =0, .mips64 = 0 }, - { DEFOP(Iop_CtzNat64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 0 }, - { DEFOP(Iop_CtzNat32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 1, .mips32 =0, .mips64 = 0 }, - { DEFOP(Iop_PopCount64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 0 }, - { DEFOP(Iop_PopCount32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 =0, .mips64 = 0 }, - { DEFOP(Iop_CmpLT32S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =1, .mips64 = 1 }, - { DEFOP(Iop_CmpLT64S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 1 }, // ppc, mips assert - { DEFOP(Iop_CmpLE32S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =1, .mips64 = 1 }, - { DEFOP(Iop_CmpLE64S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 1 }, // ppc, mips assert - { DEFOP(Iop_CmpLT32U, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =1, .mips64 = 1 }, - { DEFOP(Iop_CmpLT64U, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 1}, // ppc32, mips assert - { DEFOP(Iop_CmpLE32U, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =1, .mips64 = 1 }, - { DEFOP(Iop_CmpLE64U, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 0 }, // ppc32 asserts + { DEFOP(Iop_MullS64, UNDEF_LEFT), .s390x = 0, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 1, .loongarch64 = 1 }, // ppc32, mips assert + { DEFOP(Iop_MullU8, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_MullU16, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_MullU32, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_MullU64, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 1, .loongarch64 = 1 }, // ppc32, mips assert + { DEFOP(Iop_Clz64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 1, .loongarch64 = 1 }, // ppc32 asserts + { DEFOP(Iop_Clz32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_Ctz64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 0, .loongarch64 = 1 }, + { DEFOP(Iop_Ctz32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 0, .loongarch64 = 1 }, + { DEFOP(Iop_ClzNat64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 0, .loongarch64 = 0 }, // ppc32 asserts + { DEFOP(Iop_ClzNat32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 =0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_CtzNat64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_CtzNat32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 1, .mips32 =0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_PopCount64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_PopCount32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 =0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_CmpLT32S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_CmpLT64S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 1, .loongarch64 = 1 }, // ppc, mips assert + { DEFOP(Iop_CmpLE32S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_CmpLE64S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 1, .loongarch64 = 1 }, // ppc, mips assert + { DEFOP(Iop_CmpLT32U, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_CmpLT64U, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 1, .loongarch64 = 1 }, // ppc32, mips assert + { DEFOP(Iop_CmpLE32U, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_CmpLE64U, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 0, .loongarch64 = 1 }, // ppc32 asserts { DEFOP(Iop_CmpNEZ8, UNDEF_ALL), }, // not supported by mc_translate { DEFOP(Iop_CmpNEZ16, UNDEF_ALL), }, // not supported by mc_translate { DEFOP(Iop_CmpNEZ32, UNDEF_ALL), }, // not supported by mc_translate { DEFOP(Iop_CmpNEZ64, UNDEF_ALL), }, // not supported by mc_translate - { DEFOP(Iop_CmpwNEZ32, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_CmpwNEZ64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts + { DEFOP(Iop_CmpwNEZ32, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_CmpwNEZ64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts { DEFOP(Iop_Left8, UNDEF_UNKNOWN), }, // not supported by mc_translate { DEFOP(Iop_Left16, UNDEF_UNKNOWN), }, // not supported by mc_translate { DEFOP(Iop_Left32, UNDEF_UNKNOWN), }, // not supported by mc_translate { DEFOP(Iop_Left64, UNDEF_UNKNOWN), }, // not supported by mc_translate { DEFOP(Iop_Max32U, UNDEF_UNKNOWN), }, // not supported by mc_translate - { DEFOP(Iop_CmpORD32U, UNDEF_ORD), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, // support added in vbit-test - { DEFOP(Iop_CmpORD64U, UNDEF_ORD), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, // support added in vbit-test - { DEFOP(Iop_CmpORD32S, UNDEF_ORD), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, // support added in vbit-test - { DEFOP(Iop_CmpORD64S, UNDEF_ORD), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, // support added in vbit-test - { DEFOP(Iop_DivU32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_DivS32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_DivU64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, // ppc32 asserts - { DEFOP(Iop_DivS64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, // ppc32 asserts - { DEFOP(Iop_DivU64E, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, // ppc32 asserts - { DEFOP(Iop_DivS64E, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, // ppc32 asserts - { DEFOP(Iop_DivU32E, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_DivS32E, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, + { DEFOP(Iop_CmpORD32U, UNDEF_ORD), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, // support added in vbit-test + { DEFOP(Iop_CmpORD64U, UNDEF_ORD), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, // support added in vbit-test + { DEFOP(Iop_CmpORD32S, UNDEF_ORD), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, // support added in vbit-test + { DEFOP(Iop_CmpORD64S, UNDEF_ORD), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, // support added in vbit-test + { DEFOP(Iop_DivU32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, + { DEFOP(Iop_DivS32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, + { DEFOP(Iop_DivU64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, // ppc32 asserts + { DEFOP(Iop_DivS64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, // ppc32 asserts + { DEFOP(Iop_DivU64E, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, // ppc32 asserts + { DEFOP(Iop_DivS64E, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, // ppc32 asserts + { DEFOP(Iop_DivU32E, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_DivS32E, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, // On s390 the DivMod operations always appear in a certain context // So they cannot be tested in isolation on that platform. - { DEFOP(Iop_DivModU64to32, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_DivModS64to32, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_DivModU32to32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_DivModS32to32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_DivModU128to64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, // mips asserts - { DEFOP(Iop_DivModS128to64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, // mips asserts - { DEFOP(Iop_DivModS64to64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_DivModU64to64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_8Uto16, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_8Uto32, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_8Uto64, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // ppc32 assert - { DEFOP(Iop_16Uto32, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_16Uto64, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // ppc32 assert - { DEFOP(Iop_32Uto64, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_8Sto16, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_8Sto32, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_8Sto64, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // ppc32, mips assert - { DEFOP(Iop_16Sto32, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_16Sto64, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // ppc32, mips assert - { DEFOP(Iop_32Sto64, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_64to8, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 1, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // ppc32, mips assert - { DEFOP(Iop_32to8, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_64to16, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // ppc32, mips assert - { DEFOP(Iop_16to8, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_16HIto8, UNDEF_UPPER), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_8HLto16, UNDEF_CONCAT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, // ppc isel - { DEFOP(Iop_32to16, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_32HIto16, UNDEF_UPPER), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_16HLto32, UNDEF_CONCAT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, // ppc isel - { DEFOP(Iop_64to32, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_64HIto32, UNDEF_UPPER), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, - { DEFOP(Iop_32HLto64, UNDEF_CONCAT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_128to64, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_128HIto64, UNDEF_UPPER), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_64HLto128, UNDEF_CONCAT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_32to1, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_64to1, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // ppc32, mips assert - { DEFOP(Iop_1Uto8, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_1Uto32, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_1Uto64, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // ppc32 assert - { DEFOP(Iop_1Sto8, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, + { DEFOP(Iop_DivModU64to32, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_DivModS64to32, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_DivModU32to32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_DivModS32to32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_DivModU128to64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, // mips asserts + { DEFOP(Iop_DivModS128to64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, // mips asserts + { DEFOP(Iop_DivModS64to64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_DivModU64to64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_8Uto16, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_8Uto32, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_8Uto64, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // ppc32 assert + { DEFOP(Iop_16Uto32, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_16Uto64, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // ppc32 assert + { DEFOP(Iop_32Uto64, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_8Sto16, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_8Sto32, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_8Sto64, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // ppc32, mips assert + { DEFOP(Iop_16Sto32, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_16Sto64, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // ppc32, mips assert + { DEFOP(Iop_32Sto64, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_64to8, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 1, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // ppc32, mips assert + { DEFOP(Iop_32to8, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_64to16, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 0 }, // ppc32, mips assert + { DEFOP(Iop_16to8, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_16HIto8, UNDEF_UPPER), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_8HLto16, UNDEF_CONCAT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, // ppc isel + { DEFOP(Iop_32to16, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_32HIto16, UNDEF_UPPER), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_16HLto32, UNDEF_CONCAT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, // ppc isel + { DEFOP(Iop_64to32, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_64HIto32, UNDEF_UPPER), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_32HLto64, UNDEF_CONCAT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_128to64, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_128HIto64, UNDEF_UPPER), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_64HLto128, UNDEF_CONCAT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_32to1, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_64to1, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 0 }, // ppc32, mips assert + { DEFOP(Iop_1Uto8, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_1Uto32, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_1Uto64, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // ppc32 assert + { DEFOP(Iop_1Sto8, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 0 }, { DEFOP(Iop_1Sto16, UNDEF_ALL), }, // not handled by mc_translate - { DEFOP(Iop_1Sto32, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_1Sto64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_AddF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_SubF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_MulF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_DivF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_AddF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_SubF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_MulF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_DivF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_AddF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_SubF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_MulF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_DivF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_NegF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_AbsF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_NegF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_AbsF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_SqrtF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_SqrtF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_CmpF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_CmpF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, // mips asserts - { DEFOP(Iop_CmpF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F64toI16S, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F64toI32S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_F64toI64S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F64toI64U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F64toI32U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_I32StoF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_I64StoF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, - { DEFOP(Iop_I64UtoF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, // mips asserts - { DEFOP(Iop_I64UtoF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_I32UtoF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_I32UtoF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F32toI32S, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F32toI64S, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, - { DEFOP(Iop_F32toI32U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F32toI64U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_I32StoF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_I64StoF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, - { DEFOP(Iop_F32toF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_F64toF32, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_ReinterpF64asI64, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_ReinterpI64asF64, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_ReinterpF32asI32, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 }, + { DEFOP(Iop_1Sto32, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_1Sto64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_AddF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_SubF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_MulF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_DivF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_ScaleBF64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, + { DEFOP(Iop_AddF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_SubF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_MulF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_DivF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_ScaleBF32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, + { DEFOP(Iop_AddF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_SubF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_MulF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_DivF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_NegF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_AbsF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_NegF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_AbsF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_SqrtF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_RSqrtF64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, + { DEFOP(Iop_LogBF64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, + { DEFOP(Iop_SqrtF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_RSqrtF32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, + { DEFOP(Iop_LogBF32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, + { DEFOP(Iop_CmpF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_CmpF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_CmpF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_F64toI16S, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_F64toI32S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_F64toI64S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, + { DEFOP(Iop_F64toI64U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_F64toI32U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_I32StoF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_I64StoF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_I64UtoF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, // mips asserts + { DEFOP(Iop_I64UtoF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_I32UtoF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_I32UtoF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_F32toI32S, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 1 }, + { DEFOP(Iop_F32toI64S, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_F32toI32U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_F32toI64U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_I32StoF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_I64StoF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_F32toF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_F64toF32, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_ReinterpF64asI64, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_ReinterpI64asF64, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, // mips asserts + { DEFOP(Iop_ReinterpF32asI32, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, // ppc requires this op to show up in a specific context. So it cannot be // tested standalone on that platform. - { DEFOP(Iop_ReinterpI32asF32, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_F64HLtoF128, UNDEF_CONCAT), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F128HItoF64, UNDEF_UPPER), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F128LOtoF64, UNDEF_TRUNC), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_AddF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_SubF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_MulF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_DivF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_MAddF128, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_MSubF128, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_NegMAddF128, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_NegMSubF128, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_NegF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_AbsF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_SqrtF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_I32StoF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_I64StoF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_I32UtoF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_I64UtoF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F32toF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F64toF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F128toI32S, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F128toI64S, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F128toI32U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F128toI64U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F128toI128S, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F128toF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_F128toF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_RndF128, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_TruncF128toI32S,UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_TruncF128toI32U,UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_TruncF128toI64U,UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_TruncF128toI64S,UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_AtanF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_Yl2xF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_Yl2xp1F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_PRemF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_PRemC3210F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_PRem1F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_PRem1C3210F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_ScaleF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_SinF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_CosF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_TanF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_2xm1F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_RoundF128toInt, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_RoundF64toInt, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, - { DEFOP(Iop_RoundF32toInt, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, - { DEFOP(Iop_MAddF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, - { DEFOP(Iop_MSubF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, - { DEFOP(Iop_MAddF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, - { DEFOP(Iop_MSubF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, - { DEFOP(Iop_MAddF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_MSubF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_RSqrtEst5GoodF64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_RoundF64toF64_NEAREST, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, - { DEFOP(Iop_RoundF64toF64_NegINF, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, - { DEFOP(Iop_RoundF64toF64_PosINF, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, - { DEFOP(Iop_RoundF64toF64_ZERO, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, - { DEFOP(Iop_TruncF64asF32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts - { DEFOP(Iop_RoundF64toF32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, + { DEFOP(Iop_ReinterpI32asF32, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_F64HLtoF128, UNDEF_CONCAT), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_F128HItoF64, UNDEF_UPPER), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_F128LOtoF64, UNDEF_TRUNC), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_AddF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_SubF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_MulF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_DivF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_MAddF128, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_MSubF128, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_NegMAddF128, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_NegMSubF128, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_NegF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_AbsF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_SqrtF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_I32StoF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_I64StoF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_I32UtoF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_I64UtoF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_F32toF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_F64toF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_F128toI32S, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_F128toI64S, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_F128toI32U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_F128toI64U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_F128toI128S, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_F128toF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_F128toF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_RndF128, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_TruncF128toI32S,UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_TruncF128toI32U,UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_TruncF128toI64U,UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_TruncF128toI64S,UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_AtanF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_Yl2xF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_Yl2xp1F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_PRemF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_PRemC3210F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_PRem1F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_PRem1C3210F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_ScaleF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_SinF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_CosF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_TanF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_2xm1F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_RoundF128toInt, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_RoundF64toInt, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_RoundF32toInt, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_MAddF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_MSubF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_MAddF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_MSubF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_MAddF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_MSubF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_RSqrtEst5GoodF64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_RoundF64toF64_NEAREST, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_RoundF64toF64_NegINF, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_RoundF64toF64_PosINF, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_RoundF64toF64_ZERO, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 0 }, + { DEFOP(Iop_TruncF64asF32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 0 }, // mips asserts + { DEFOP(Iop_RoundF64toF32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, { DEFOP(Iop_RecpExpF64, UNDEF_UNKNOWN), }, { DEFOP(Iop_RecpExpF32, UNDEF_UNKNOWN), }, /* --------- Possibly required by IEEE 754-2008. --------- */ - { DEFOP(Iop_MaxNumF64, UNDEF_ALL), .arm = 1 }, - { DEFOP(Iop_MinNumF64, UNDEF_ALL), .arm = 1 }, - { DEFOP(Iop_MaxNumF32, UNDEF_ALL), .arm = 1 }, - { DEFOP(Iop_MinNumF32, UNDEF_ALL), .arm = 1 }, + { DEFOP(Iop_MaxNumF64, UNDEF_ALL), .arm = 1, .loongarch64 = 1 }, + { DEFOP(Iop_MinNumF64, UNDEF_ALL), .arm = 1, .loongarch64 = 1 }, + { DEFOP(Iop_MaxNumAbsF64, UNDEF_ALL), .arm = 0, .loongarch64 = 1 }, + { DEFOP(Iop_MinNumAbsF64, UNDEF_ALL), .arm = 0, .loongarch64 = 1 }, + { DEFOP(Iop_MaxNumF32, UNDEF_ALL), .arm = 1, .loongarch64 = 1 }, + { DEFOP(Iop_MinNumF32, UNDEF_ALL), .arm = 1, .loongarch64 = 1 }, + { DEFOP(Iop_MaxNumAbsF32, UNDEF_ALL), .arm = 0, .loongarch64 = 1 }, + { DEFOP(Iop_MinNumAbsF32, UNDEF_ALL), .arm = 0, .loongarch64 = 1 }, /* ------------------ 16-bit scalar FP ------------------ */ { DEFOP(Iop_F16toF64, UNDEF_ALL), .arm64 = 1 }, diff --git a/memcheck/tests/vbit-test/vtest.h b/memcheck/tests/vbit-test/vtest.h index c724f41..fe17f67 100644 --- a/memcheck/tests/vbit-test/vtest.h +++ b/memcheck/tests/vbit-test/vtest.h @@ -179,15 +179,16 @@ typedef struct { unsigned immediate_type; // Indicate whether IROp can be tested on a particular architecture - unsigned s390x : 1; - unsigned amd64 : 1; - unsigned ppc32 : 1; - unsigned ppc64 : 1; - unsigned arm : 1; - unsigned arm64 : 1; - unsigned x86 : 1; - unsigned mips32 : 1; - unsigned mips64 : 1; + unsigned s390x : 1; + unsigned amd64 : 1; + unsigned ppc32 : 1; + unsigned ppc64 : 1; + unsigned arm : 1; + unsigned arm64 : 1; + unsigned x86 : 1; + unsigned mips32 : 1; + unsigned mips64 : 1; + unsigned loongarch64: 1; } irop_t; diff --git a/memcheck/tests/x86-linux/Makefile.in b/memcheck/tests/x86-linux/Makefile.in index b987fef..3c478df 100644 --- a/memcheck/tests/x86-linux/Makefile.in +++ b/memcheck/tests/x86-linux/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -219,8 +219,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -243,6 +241,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -256,6 +256,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -401,6 +402,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -540,6 +542,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -585,6 +593,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -776,7 +785,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/tests/x86-solaris/Makefile.in b/memcheck/tests/x86-solaris/Makefile.in index be319b4..364a5af 100644 --- a/memcheck/tests/x86-solaris/Makefile.in +++ b/memcheck/tests/x86-solaris/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -232,8 +232,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -256,6 +254,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -269,6 +269,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -414,6 +415,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -553,6 +555,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -598,6 +606,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -803,7 +812,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/memcheck/tests/x86/Makefile.in b/memcheck/tests/x86/Makefile.in index cb08671..b1dc9a4 100644 --- a/memcheck/tests/x86/Makefile.in +++ b/memcheck/tests/x86/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -259,8 +259,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -283,6 +281,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -296,6 +296,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -441,6 +442,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -580,6 +582,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -625,6 +633,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -910,7 +919,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/missing b/missing index 625aeb1..1fe1611 100755 --- a/missing +++ b/missing @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify diff --git a/mpi/Makefile.in b/mpi/Makefile.in index 6f3235b..07934a9 100644 --- a/mpi/Makefile.in +++ b/mpi/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -214,6 +214,8 @@ CFLAGS = CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -227,6 +229,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -372,6 +375,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -511,6 +515,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -556,6 +566,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ DEFAULT_INCLUDES = @@ -691,7 +702,6 @@ ctags CTAGS: cscope cscopelist: - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/Makefile.in b/none/Makefile.in index 432a991..860bc88 100644 --- a/none/Makefile.in +++ b/none/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -212,8 +212,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool.am $(top_srcdir)/depcomp @@ -262,6 +260,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -275,6 +275,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -420,6 +421,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -560,6 +562,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -605,6 +613,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ @@ -688,6 +697,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ @FLAG_M64@ +TOOL_LDFLAGS_LOONGARCH64_LINUX = \ + -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ + @FLAG_M64@ + TOOL_LDFLAGS_X86_SOLARIS = \ $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ @@ -742,6 +755,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ LIBREPLACEMALLOC_MIPS64_LINUX = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a +LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a + LIBREPLACEMALLOC_X86_SOLARIS = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a @@ -804,6 +820,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ $(LIBREPLACEMALLOC_MIPS64_LINUX) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ + -Wl,--whole-archive \ + $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ + -Wl,--no-whole-archive + LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_SOLARIS) \ @@ -1069,7 +1090,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/Makefile.am b/none/tests/Makefile.am index e4a12ca..80f3e67 100644 --- a/none/tests/Makefile.am +++ b/none/tests/Makefile.am @@ -35,7 +35,9 @@ endif if VGCONF_ARCHS_INCLUDE_NANOMIPS SUBDIRS += nanomips endif - +if VGCONF_ARCHS_INCLUDE_LOONGARCH64 +SUBDIRS += loongarch64 +endif # OS-specific tests if VGCONF_OS_IS_LINUX @@ -69,8 +71,8 @@ SUBDIRS += x86-solaris endif DIST_SUBDIRS = x86 amd64 ppc32 ppc64 arm arm64 s390x mips32 mips64 nanomips \ - linux darwin solaris amd64-linux x86-linux amd64-darwin \ - x86-darwin amd64-solaris x86-solaris scripts . + loongarch64 linux darwin solaris amd64-linux x86-linux \ + amd64-darwin x86-darwin amd64-solaris x86-solaris scripts . dist_noinst_SCRIPTS = \ filter_cmdline0 \ diff --git a/none/tests/Makefile.in b/none/tests/Makefile.in index 65ecae5..ea1c145 100644 --- a/none/tests/Makefile.in +++ b/none/tests/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -136,19 +136,20 @@ host_triplet = @host@ @VGCONF_ARCHS_INCLUDE_MIPS32_TRUE@am__append_18 = mips32 @VGCONF_ARCHS_INCLUDE_MIPS64_TRUE@am__append_19 = mips64 @VGCONF_ARCHS_INCLUDE_NANOMIPS_TRUE@am__append_20 = nanomips +@VGCONF_ARCHS_INCLUDE_LOONGARCH64_TRUE@am__append_21 = loongarch64 # OS-specific tests -@VGCONF_OS_IS_LINUX_TRUE@am__append_21 = linux -@VGCONF_OS_IS_DARWIN_TRUE@am__append_22 = darwin -@VGCONF_OS_IS_SOLARIS_TRUE@am__append_23 = solaris +@VGCONF_OS_IS_LINUX_TRUE@am__append_22 = linux +@VGCONF_OS_IS_DARWIN_TRUE@am__append_23 = darwin +@VGCONF_OS_IS_SOLARIS_TRUE@am__append_24 = solaris # Platform-specific tests -@VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_TRUE@am__append_24 = amd64-linux -@VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE@am__append_25 = x86-linux -@VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN_TRUE@am__append_26 = amd64-darwin -@VGCONF_PLATFORMS_INCLUDE_X86_DARWIN_TRUE@am__append_27 = x86-darwin -@VGCONF_PLATFORMS_INCLUDE_AMD64_SOLARIS_TRUE@am__append_28 = amd64-solaris -@VGCONF_PLATFORMS_INCLUDE_X86_SOLARIS_TRUE@am__append_29 = x86-solaris +@VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_TRUE@am__append_25 = amd64-linux +@VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE@am__append_26 = x86-linux +@VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN_TRUE@am__append_27 = amd64-darwin +@VGCONF_PLATFORMS_INCLUDE_X86_DARWIN_TRUE@am__append_28 = x86-darwin +@VGCONF_PLATFORMS_INCLUDE_AMD64_SOLARIS_TRUE@am__append_29 = amd64-solaris +@VGCONF_PLATFORMS_INCLUDE_X86_SOLARIS_TRUE@am__append_30 = x86-solaris check_PROGRAMS = args$(EXEEXT) async-sigs$(EXEEXT) bitfield1$(EXEEXT) \ bug129866$(EXEEXT) bug234814$(EXEEXT) closeall$(EXEEXT) \ coolo_strlen$(EXEEXT) discard$(EXEEXT) exec-sigmask$(EXEEXT) \ @@ -185,18 +186,18 @@ check_PROGRAMS = args$(EXEEXT) async-sigs$(EXEEXT) bitfield1$(EXEEXT) \ gxx304$(EXEEXT) process_vm_readv_writev$(EXEEXT) \ sigprocmask$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \ $(am__EXEEXT_3) $(am__EXEEXT_4) -@HAVE_NESTED_FUNCTIONS_TRUE@am__append_30 = nestedfns +@HAVE_NESTED_FUNCTIONS_TRUE@am__append_31 = nestedfns # This doesn't appear to be compilable on Darwin. -@VGCONF_OS_IS_DARWIN_FALSE@am__append_31 = rlimit64_nofile \ +@VGCONF_OS_IS_DARWIN_FALSE@am__append_32 = rlimit64_nofile \ @VGCONF_OS_IS_DARWIN_FALSE@ ppoll_alarm # clang does not know -ansi -@COMPILER_IS_CLANG_FALSE@am__append_32 = ansi -@BUILD_IFUNC_TESTS_TRUE@am__append_33 = ifunc -@VGCONF_OS_IS_SOLARIS_TRUE@am__append_34 = -U_REENTRANT -@VGCONF_OS_IS_SOLARIS_TRUE@am__append_35 = -Du_int32_t=uint32_t +@COMPILER_IS_CLANG_FALSE@am__append_33 = ansi +@BUILD_IFUNC_TESTS_TRUE@am__append_34 = ifunc +@VGCONF_OS_IS_SOLARIS_TRUE@am__append_35 = -U_REENTRANT +@VGCONF_OS_IS_SOLARIS_TRUE@am__append_36 = -Du_int32_t=uint32_t subdir = none/tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac @@ -705,8 +706,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -754,6 +753,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -767,6 +768,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -912,6 +914,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -1051,6 +1054,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -1096,6 +1105,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -1124,10 +1134,10 @@ SUBDIRS = . scripts $(am__append_11) $(am__append_12) $(am__append_13) \ $(am__append_20) $(am__append_21) $(am__append_22) \ $(am__append_23) $(am__append_24) $(am__append_25) \ $(am__append_26) $(am__append_27) $(am__append_28) \ - $(am__append_29) + $(am__append_29) $(am__append_30) DIST_SUBDIRS = x86 amd64 ppc32 ppc64 arm arm64 s390x mips32 mips64 nanomips \ - linux darwin solaris amd64-linux x86-linux amd64-darwin \ - x86-darwin amd64-solaris x86-solaris scripts . + loongarch64 linux darwin solaris amd64-linux x86-linux \ + amd64-darwin x86-darwin amd64-solaris x86-solaris scripts . dist_noinst_SCRIPTS = \ filter_cmdline0 \ @@ -1311,10 +1321,10 @@ pth_stackalign_LDADD = -lpthread pth_2sig_LDADD = -lpthread pth_term_signal_LDADD = -lpthread res_search_LDADD = -lresolv -lpthread -resolv_CFLAGS = $(AM_CFLAGS) $(am__append_34) +resolv_CFLAGS = $(AM_CFLAGS) $(am__append_35) resolv_LDADD = -lresolv -lpthread semlimit_LDADD = -lpthread -sha1_test_CFLAGS = $(AM_CFLAGS) $(am__append_35) +sha1_test_CFLAGS = $(AM_CFLAGS) $(am__append_36) sigsusp_LDADD = -lpthread thread_exits_LDADD = -lpthread threaded_fork_LDADD = -lpthread @@ -2166,7 +2176,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/allexec_prepare_prereq b/none/tests/allexec_prepare_prereq index a541f42..49c45c7 100755 --- a/none/tests/allexec_prepare_prereq +++ b/none/tests/allexec_prepare_prereq @@ -28,11 +28,12 @@ pair() } -pair x86 amd64 -pair ppc32 ppc64 -pair s390x_unexisting_in_32bits s390x -pair arm arm64 -pair mips32 mips64 -pair nanomips nanoMIPS_unexisting_in_64bits +pair x86 amd64 +pair ppc32 ppc64 +pair s390x_unexisting_in_32bits s390x +pair arm arm64 +pair mips32 mips64 +pair nanomips nanoMIPS_unexisting_in_64bits +pair loongarch_unexisting_in_32bits loongarch64 exit 0 diff --git a/none/tests/amd64-darwin/Makefile.in b/none/tests/amd64-darwin/Makefile.in index 2a768da..2f2863e 100644 --- a/none/tests/amd64-darwin/Makefile.in +++ b/none/tests/amd64-darwin/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -196,8 +196,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -220,6 +218,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -233,6 +233,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -378,6 +379,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -517,6 +519,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -562,6 +570,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -718,7 +727,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/amd64-linux/Makefile.in b/none/tests/amd64-linux/Makefile.in index fa881a9..003ea23 100644 --- a/none/tests/amd64-linux/Makefile.in +++ b/none/tests/amd64-linux/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -204,8 +204,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -228,6 +226,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -241,6 +241,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -386,6 +387,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -525,6 +527,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -570,6 +578,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -738,7 +747,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/amd64-solaris/Makefile.in b/none/tests/amd64-solaris/Makefile.in index 008c961..cf2ff2b 100644 --- a/none/tests/amd64-solaris/Makefile.in +++ b/none/tests/amd64-solaris/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -209,8 +209,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -233,6 +231,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -246,6 +246,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -391,6 +392,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -530,6 +532,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -575,6 +583,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -747,7 +756,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/amd64/Makefile.in b/none/tests/amd64/Makefile.in index 5cdf7b0..cadad98 100644 --- a/none/tests/amd64/Makefile.in +++ b/none/tests/amd64/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -534,8 +534,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -558,6 +556,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -571,6 +571,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -716,6 +717,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -855,6 +857,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -900,6 +908,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -1606,7 +1615,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/arm/Makefile.in b/none/tests/arm/Makefile.in index 2225b81..488e50f 100644 --- a/none/tests/arm/Makefile.in +++ b/none/tests/arm/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -306,8 +306,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -330,6 +328,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -343,6 +343,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -488,6 +489,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -627,6 +629,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -672,6 +680,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -1198,7 +1207,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/arm64/Makefile.in b/none/tests/arm64/Makefile.in index 49268f7..615499a 100644 --- a/none/tests/arm64/Makefile.in +++ b/none/tests/arm64/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -243,8 +243,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -267,6 +265,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -280,6 +280,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -425,6 +426,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -564,6 +566,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -609,6 +617,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -890,7 +899,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/darwin/Makefile.in b/none/tests/darwin/Makefile.in index bfd4eba..734e213 100644 --- a/none/tests/darwin/Makefile.in +++ b/none/tests/darwin/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -209,8 +209,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -233,6 +231,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -246,6 +246,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -391,6 +392,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -530,6 +532,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -575,6 +583,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -748,7 +757,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/libvex_test.c b/none/tests/libvex_test.c index 5b57a4c..3080ce6 100644 --- a/none/tests/libvex_test.c +++ b/none/tests/libvex_test.c @@ -76,6 +76,8 @@ __attribute__((noinline)) static void get_guest_arch(VexArch *ga) *ga = VexArchMIPS64; #elif defined(VGA_nanomips) *ga = VexArchNANOMIPS; +#elif defined(VGA_loongarch64) + *ga = VexArchLOONGARCH64; #else missing arch; #endif @@ -113,6 +115,7 @@ static VexEndness arch_endness (VexArch va) { else return VexEndnessBE; } + case VexArchLOONGARCH64: return VexEndnessLE; default: failure_exit(); } } @@ -139,6 +142,7 @@ static UInt arch_hwcaps (VexArch va) { case VexArchMIPS64: return VEX_PRID_COMP_MIPS | VEX_MIPS_HOST_FR; #endif case VexArchNANOMIPS: return 0; + case VexArchLOONGARCH64: return VEX_HWCAPS_LOONGARCH_ISA_64BIT; default: failure_exit(); } } @@ -156,6 +160,7 @@ static Bool mode64 (VexArch va) { case VexArchMIPS32: return False; case VexArchMIPS64: return True; case VexArchNANOMIPS: return False; + case VexArchLOONGARCH64: return True; default: failure_exit(); } } @@ -275,7 +280,7 @@ int main(int argc, char **argv) // explicitly via command line arguments. if (multiarch) { VexArch va; - for (va = VexArchX86; va <= VexArchNANOMIPS; va++) { + for (va = VexArchX86; va <= VexArchLOONGARCH64; va++) { vta.arch_host = va; vta.archinfo_host.endness = arch_endness (vta.arch_host); vta.archinfo_host.hwcaps = arch_hwcaps (vta.arch_host); diff --git a/none/tests/linux/Makefile.in b/none/tests/linux/Makefile.in index 5eeab9d..711f33f 100644 --- a/none/tests/linux/Makefile.in +++ b/none/tests/linux/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -251,8 +251,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -275,6 +273,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -288,6 +288,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -433,6 +434,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -572,6 +574,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -617,6 +625,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -860,7 +869,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/loongarch64/Makefile.am b/none/tests/loongarch64/Makefile.am new file mode 100644 index 0000000..c8e5b51 --- /dev/null +++ b/none/tests/loongarch64/Makefile.am @@ -0,0 +1,39 @@ + +include $(top_srcdir)/Makefile.tool-tests.am + +dist_noinst_SCRIPTS = filter_stderr + +EXTRA_DIST = \ + atomic.stdout.exp atomic.stderr.exp atomic.vgtest \ + branch.stdout.exp branch.stderr.exp branch.vgtest \ + cpucfg.stdout.exp cpucfg.stderr.exp cpucfg.vgtest \ + fault.stdout.exp fault.stderr.exp fault.vgtest \ + fault_fp.stdout.exp fault_fp.stderr.exp fault_fp.vgtest \ + float.stdout.exp float.stderr.exp float.vgtest \ + integer.stdout.exp integer.stderr.exp integer.vgtest \ + llsc.stdout.exp llsc.stderr.exp llsc.vgtest \ + memory.stdout.exp memory.stderr.exp memory.vgtest \ + move.stdout.exp move.stderr.exp move.vgtest \ + pc.stdout.exp pc.stderr.exp pc.vgtest \ + special.stdout.exp special.stderr.exp special.vgtest + +check_PROGRAMS = \ + allexec \ + atomic \ + branch \ + cpucfg \ + fault \ + fault_fp \ + float \ + integer \ + llsc \ + memory \ + move \ + pc \ + special + +AM_CFLAGS += @FLAG_M64@ +AM_CXXFLAGS += @FLAG_M64@ +AM_CCASFLAGS += @FLAG_M64@ + +allexec_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_NONNULL@ diff --git a/none/tests/loongarch64/Makefile.in b/none/tests/loongarch64/Makefile.in new file mode 100644 index 0000000..55104a1 --- /dev/null +++ b/none/tests/loongarch64/Makefile.in @@ -0,0 +1,1123 @@ +# Makefile.in generated by automake 1.16.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2021 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# This file is used for tool tests, and also in perf/Makefile.am. + +# This file should be included (directly or indirectly) by every +# Makefile.am that builds programs. And also the top-level Makefile.am. + +#---------------------------------------------------------------------------- +# Global stuff +#---------------------------------------------------------------------------- + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@COMPILER_IS_CLANG_TRUE@am__append_1 = -Wno-cast-align -Wno-self-assign \ +@COMPILER_IS_CLANG_TRUE@ -Wno-tautological-compare + +@VGCONF_HAVE_ABI_TRUE@am__append_2 = -DVGABI_@VGCONF_ABI@ +@VGCONF_HAVE_ABI_TRUE@@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__append_3 = -DVGABI_@VGCONF_ABI@ +@SOLARIS_XPG_SYMBOLS_PRESENT_TRUE@am__append_4 = -Wl,-M,$(top_srcdir)/solaris/vgpreload-solaris.mapfile + +# The Android toolchain includes all kinds of stdlib helpers present in +# bionic which is bad because we are not linking with it and the Android +# linker will panic. +@VGCONF_PLATVARIANT_IS_ANDROID_TRUE@am__append_5 = -nostdlib +@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__append_6 = -DVGA_SEC_@VGCONF_ARCH_SEC@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGP_SEC_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 + +@VGCONF_HAVE_ABI_TRUE@am__append_7 = -DVGABI_@VGCONF_ABI@ + +# Make sure that all test programs have threaded errno. +# Disable largefile support as there are test cases explicitly enabling it. +@VGCONF_OS_IS_SOLARIS_TRUE@am__append_8 = -D_REENTRANT @SOLARIS_UNDEF_LARGESOURCE@ +@COMPILER_IS_CLANG_TRUE@am__append_9 = -Wno-format-extra-args \ +@COMPILER_IS_CLANG_TRUE@ -Wno-literal-range \ +@COMPILER_IS_CLANG_TRUE@ -Wno-tautological-constant-out-of-range-compare \ +@COMPILER_IS_CLANG_TRUE@ -Wno-self-assign -Wno-string-plus-int \ +@COMPILER_IS_CLANG_TRUE@ -Wno-uninitialized -Wno-unused-value # \ +@COMPILER_IS_CLANG_TRUE@ clang 3.0.0 +@COMPILER_IS_CLANG_TRUE@am__append_10 = -Wno-unused-private-field # drd/tests/tsan_unittest.cpp +check_PROGRAMS = allexec$(EXEEXT) atomic$(EXEEXT) branch$(EXEEXT) \ + cpucfg$(EXEEXT) fault$(EXEEXT) fault_fp$(EXEEXT) \ + float$(EXEEXT) integer$(EXEEXT) llsc$(EXEEXT) memory$(EXEEXT) \ + move$(EXEEXT) pc$(EXEEXT) special$(EXEEXT) +subdir = none/tests/loongarch64 +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_noinst_SCRIPTS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +allexec_SOURCES = allexec.c +allexec_OBJECTS = allexec-allexec.$(OBJEXT) +allexec_LDADD = $(LDADD) +allexec_LINK = $(CCLD) $(allexec_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +atomic_SOURCES = atomic.c +atomic_OBJECTS = atomic.$(OBJEXT) +atomic_LDADD = $(LDADD) +branch_SOURCES = branch.c +branch_OBJECTS = branch.$(OBJEXT) +branch_LDADD = $(LDADD) +cpucfg_SOURCES = cpucfg.c +cpucfg_OBJECTS = cpucfg.$(OBJEXT) +cpucfg_LDADD = $(LDADD) +fault_SOURCES = fault.c +fault_OBJECTS = fault.$(OBJEXT) +fault_LDADD = $(LDADD) +fault_fp_SOURCES = fault_fp.c +fault_fp_OBJECTS = fault_fp.$(OBJEXT) +fault_fp_LDADD = $(LDADD) +float_SOURCES = float.c +float_OBJECTS = float.$(OBJEXT) +float_LDADD = $(LDADD) +integer_SOURCES = integer.c +integer_OBJECTS = integer.$(OBJEXT) +integer_LDADD = $(LDADD) +llsc_SOURCES = llsc.c +llsc_OBJECTS = llsc.$(OBJEXT) +llsc_LDADD = $(LDADD) +memory_SOURCES = memory.c +memory_OBJECTS = memory.$(OBJEXT) +memory_LDADD = $(LDADD) +move_SOURCES = move.c +move_OBJECTS = move.$(OBJEXT) +move_LDADD = $(LDADD) +pc_SOURCES = pc.c +pc_OBJECTS = pc.$(OBJEXT) +pc_LDADD = $(LDADD) +special_SOURCES = special.c +special_OBJECTS = special.$(OBJEXT) +special_LDADD = $(LDADD) +SCRIPTS = $(dist_noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/allexec-allexec.Po \ + ./$(DEPDIR)/atomic.Po ./$(DEPDIR)/branch.Po \ + ./$(DEPDIR)/cpucfg.Po ./$(DEPDIR)/fault.Po \ + ./$(DEPDIR)/fault_fp.Po ./$(DEPDIR)/float.Po \ + ./$(DEPDIR)/integer.Po ./$(DEPDIR)/llsc.Po \ + ./$(DEPDIR)/memory.Po ./$(DEPDIR)/move.Po ./$(DEPDIR)/pc.Po \ + ./$(DEPDIR)/special.Po +am__mv = mv -f +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = allexec.c atomic.c branch.c cpucfg.c fault.c fault_fp.c \ + float.c integer.c llsc.c memory.c move.c pc.c special.c +DIST_SOURCES = allexec.c atomic.c branch.c cpucfg.c fault.c fault_fp.c \ + float.c integer.c llsc.c memory.c move.c pc.c special.c +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ + $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BOOST_CFLAGS = @BOOST_CFLAGS@ +BOOST_LIBS = @BOOST_LIBS@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAGS_MPI = @CFLAGS_MPI@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_SUPP = @DEFAULT_SUPP@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +DIS_PATH = @DIS_PATH@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ +FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ +FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ +FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ +FLAG_FSANITIZE = @FLAG_FSANITIZE@ +FLAG_M32 = @FLAG_M32@ +FLAG_M64 = @FLAG_M64@ +FLAG_MLONG_DOUBLE_128 = @FLAG_MLONG_DOUBLE_128@ +FLAG_MMMX = @FLAG_MMMX@ +FLAG_MSA = @FLAG_MSA@ +FLAG_MSSE = @FLAG_MSSE@ +FLAG_NO_BUILD_ID = @FLAG_NO_BUILD_ID@ +FLAG_NO_PIE = @FLAG_NO_PIE@ +FLAG_OCTEON = @FLAG_OCTEON@ +FLAG_OCTEON2 = @FLAG_OCTEON2@ +FLAG_PIE = @FLAG_PIE@ +FLAG_T_TEXT = @FLAG_T_TEXT@ +FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ +FLAG_W_CAST_ALIGN = @FLAG_W_CAST_ALIGN@ +FLAG_W_CAST_QUAL = @FLAG_W_CAST_QUAL@ +FLAG_W_EMPTY_BODY = @FLAG_W_EMPTY_BODY@ +FLAG_W_ENUM_CONVERSION = @FLAG_W_ENUM_CONVERSION@ +FLAG_W_EXTRA = @FLAG_W_EXTRA@ +FLAG_W_FORMAT = @FLAG_W_FORMAT@ +FLAG_W_FORMAT_SECURITY = @FLAG_W_FORMAT_SECURITY@ +FLAG_W_FORMAT_SIGNEDNESS = @FLAG_W_FORMAT_SIGNEDNESS@ +FLAG_W_IGNORED_QUALIFIERS = @FLAG_W_IGNORED_QUALIFIERS@ +FLAG_W_IMPLICIT_FALLTHROUGH = @FLAG_W_IMPLICIT_FALLTHROUGH@ +FLAG_W_LOGICAL_OP = @FLAG_W_LOGICAL_OP@ +FLAG_W_MISSING_PARAMETER_TYPE = @FLAG_W_MISSING_PARAMETER_TYPE@ +FLAG_W_NO_INFINITE_RECURSION = @FLAG_W_NO_INFINITE_RECURSION@ +FLAG_W_NO_MEMSET_TRANSPOSED_ARGS = @FLAG_W_NO_MEMSET_TRANSPOSED_ARGS@ +FLAG_W_NO_MISMATCHED_NEW_DELETE = @FLAG_W_NO_MISMATCHED_NEW_DELETE@ +FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ +FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ +FLAG_W_NO_POINTER_SIGN = @FLAG_W_NO_POINTER_SIGN@ +FLAG_W_NO_STATIC_LOCAL_IN_INLINE = @FLAG_W_NO_STATIC_LOCAL_IN_INLINE@ +FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ +FLAG_W_NO_UNUSED_FUNCTION = @FLAG_W_NO_UNUSED_FUNCTION@ +FLAG_W_OLD_STYLE_DECLARATION = @FLAG_W_OLD_STYLE_DECLARATION@ +FLAG_W_WRITE_STRINGS = @FLAG_W_WRITE_STRINGS@ +GDB = @GDB@ +GLIBC_VERSION = @GLIBC_VERSION@ +GREP = @GREP@ +HWCAP_HAS_ALTIVEC = @HWCAP_HAS_ALTIVEC@ +HWCAP_HAS_DFP = @HWCAP_HAS_DFP@ +HWCAP_HAS_HTM = @HWCAP_HAS_HTM@ +HWCAP_HAS_ISA_2_05 = @HWCAP_HAS_ISA_2_05@ +HWCAP_HAS_ISA_2_06 = @HWCAP_HAS_ISA_2_06@ +HWCAP_HAS_ISA_2_07 = @HWCAP_HAS_ISA_2_07@ +HWCAP_HAS_ISA_3_00 = @HWCAP_HAS_ISA_3_00@ +HWCAP_HAS_VSX = @HWCAP_HAS_VSX@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LDFLAGS_MPI = @LDFLAGS_MPI@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIB_UBSAN = @LIB_UBSAN@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTO_AR = @LTO_AR@ +LTO_CFLAGS = @LTO_CFLAGS@ +LTO_RANLIB = @LTO_RANLIB@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MPI_CC = @MPI_CC@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PREFERRED_STACK_BOUNDARY_2 = @PREFERRED_STACK_BOUNDARY_2@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS_UNDEF_LARGESOURCE = @SOLARIS_UNDEF_LARGESOURCE@ +STRIP = @STRIP@ +VALT_LOAD_ADDRESS_PRI = @VALT_LOAD_ADDRESS_PRI@ +VALT_LOAD_ADDRESS_SEC = @VALT_LOAD_ADDRESS_SEC@ +VERSION = @VERSION@ +VGCONF_ABI = @VGCONF_ABI@ +VGCONF_ARCH_PRI = @VGCONF_ARCH_PRI@ +VGCONF_ARCH_SEC = @VGCONF_ARCH_SEC@ +VGCONF_OS = @VGCONF_OS@ +VGCONF_PLATFORM_PRI_CAPS = @VGCONF_PLATFORM_PRI_CAPS@ +VGCONF_PLATFORM_SEC_CAPS = @VGCONF_PLATFORM_SEC_CAPS@ +VGCONF_PLATVARIANT = @VGCONF_PLATVARIANT@ +VG_TMPDIR = @VG_TMPDIR@ +XCODE_DIR = @XCODE_DIR@ +XCRUN = @XCRUN@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +inplacedir = $(top_builddir)/.in_place + +#---------------------------------------------------------------------------- +# Flags +#---------------------------------------------------------------------------- + +# Baseline flags for all compilations. Aim here is to maximise +# performance and get whatever useful warnings we can out of gcc. +# -fno-builtin is important for defeating LLVM's idiom recognition +# that somehow causes VG_(memset) to get into infinite recursion. +AM_CFLAGS_BASE = -O2 -g -Wall -Wmissing-prototypes -Wshadow \ + -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations \ + @FLAG_W_CAST_ALIGN@ @FLAG_W_CAST_QUAL@ @FLAG_W_WRITE_STRINGS@ \ + @FLAG_W_EMPTY_BODY@ @FLAG_W_FORMAT@ @FLAG_W_FORMAT_SIGNEDNESS@ \ + @FLAG_W_FORMAT_SECURITY@ @FLAG_W_IGNORED_QUALIFIERS@ \ + @FLAG_W_MISSING_PARAMETER_TYPE@ @FLAG_W_LOGICAL_OP@ \ + @FLAG_W_ENUM_CONVERSION@ @FLAG_W_IMPLICIT_FALLTHROUGH@ \ + @FLAG_W_OLD_STYLE_DECLARATION@ @FLAG_FINLINE_FUNCTIONS@ \ + @FLAG_FNO_STACK_PROTECTOR@ @FLAG_FSANITIZE@ \ + -fno-strict-aliasing -fno-builtin $(am__append_1) +@VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + +# These flags are used for building the preload shared objects (PSOs). +# The aim is to give reasonable performance but also to have good +# stack traces, since users often see stack traces extending +# into (and through) the preloads. Also, we must use any +# -mpreferred-stack-boundary flag to build the preload shared +# objects, since that risks misaligning the client's stack and +# results in segfaults like (eg) #324050. +@VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ +@VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + +# Flags for specific targets. +# +# Nb: the AM_CPPFLAGS_* values are suitable for building tools and auxprogs. +# For building the core, coregrind/Makefile.am files add some extra things. +AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = -I$(top_srcdir) \ + -I$(top_srcdir)/include -I$(top_builddir)/include \ + -I$(top_srcdir)/VEX/pub -I$(top_builddir)/VEX/pub \ + -DVGA_@VGCONF_ARCH_PRI@=1 -DVGO_@VGCONF_OS@=1 \ + -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 \ + -DVGPV_@VGCONF_ARCH_PRI@_@VGCONF_OS@_@VGCONF_PLATVARIANT@=1 \ + $(am__append_2) +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@ = \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir) \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/include \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_builddir)/include \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_builddir)/VEX/pub \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGA_@VGCONF_ARCH_SEC@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGO_@VGCONF_OS@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGP_@VGCONF_ARCH_SEC@_@VGCONF_OS@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGPV_@VGCONF_ARCH_SEC@_@VGCONF_OS@_@VGCONF_PLATVARIANT@=1 \ +@VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(am__append_3) +AM_FLAG_M3264_X86_LINUX = @FLAG_M32@ +AM_CFLAGS_X86_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ + $(AM_CFLAGS_BASE) -fomit-frame-pointer + +AM_CFLAGS_PSO_X86_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_X86_LINUX = @FLAG_M32@ -g +AM_FLAG_M3264_AMD64_LINUX = @FLAG_M64@ +AM_CFLAGS_AMD64_LINUX = @FLAG_M64@ \ + $(AM_CFLAGS_BASE) -fomit-frame-pointer + +AM_CFLAGS_PSO_AMD64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_AMD64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_PPC32_LINUX = @FLAG_M32@ +AM_CFLAGS_PPC32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_PPC32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_PPC32_LINUX = @FLAG_M32@ -g +AM_FLAG_M3264_PPC64BE_LINUX = @FLAG_M64@ +AM_CFLAGS_PPC64BE_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_PPC64BE_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_PPC64BE_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_PPC64LE_LINUX = @FLAG_M64@ +AM_CFLAGS_PPC64LE_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_PPC64LE_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_PPC64LE_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ +AM_CFLAGS_ARM_LINUX = @FLAG_M32@ \ + $(AM_CFLAGS_BASE) -marm -mcpu=cortex-a8 + +AM_CFLAGS_PSO_ARM_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) \ + -marm -mcpu=cortex-a8 $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_ARM_LINUX = @FLAG_M32@ \ + -marm -mcpu=cortex-a8 -g + +AM_FLAG_M3264_ARM64_LINUX = @FLAG_M64@ +AM_CFLAGS_ARM64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_ARM64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_ARM64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_X86_DARWIN = -arch i386 +AM_CFLAGS_X86_DARWIN = $(WERROR) -arch i386 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.6 \ + -fno-pic -fno-PIC + +AM_CFLAGS_PSO_X86_DARWIN = $(AM_CFLAGS_X86_DARWIN) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_X86_DARWIN = -arch i386 -g +AM_FLAG_M3264_AMD64_DARWIN = -arch x86_64 +AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch x86_64 $(AM_CFLAGS_BASE) \ + -mmacosx-version-min=10.6 + +AM_CFLAGS_PSO_AMD64_DARWIN = $(AM_CFLAGS_AMD64_DARWIN) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_AMD64_DARWIN = -arch x86_64 -g +AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ +AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -fomit-frame-pointer +AM_CFLAGS_PSO_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_S390X_LINUX = @FLAG_M64@ -g -mzarch -march=z900 +AM_FLAG_M3264_MIPS32_LINUX = @FLAG_M32@ +AM_CFLAGS_MIPS32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_MIPS32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_MIPS32_LINUX = @FLAG_M32@ -g +AM_FLAG_M3264_NANOMIPS_LINUX = @FLAG_M32@ +AM_CFLAGS_NANOMIPS_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) -mno-jump-table-opt +AM_CFLAGS_PSO_NANOMIPS_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_NANOMIPS_LINUX = @FLAG_M32@ -g +AM_FLAG_M3264_MIPS64_LINUX = @FLAG_M64@ +AM_CFLAGS_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ +AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ + $(AM_CFLAGS_BASE) -fomit-frame-pointer \ + @SOLARIS_UNDEF_LARGESOURCE@ + +AM_CFLAGS_PSO_X86_SOLARIS = @FLAG_M32@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_X86_SOLARIS = @FLAG_M32@ -g -D_ASM +AM_FLAG_M3264_AMD64_SOLARIS = @FLAG_M64@ +AM_CFLAGS_AMD64_SOLARIS = @FLAG_M64@ \ + $(AM_CFLAGS_BASE) -fomit-frame-pointer + +AM_CFLAGS_PSO_AMD64_SOLARIS = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) +AM_CCASFLAGS_AMD64_SOLARIS = @FLAG_M64@ -g -D_ASM + +# Flags for the primary target. These must be used to build the +# regtests and performance tests. In fact, these must be used to +# build anything which is built only once on a dual-arch build. +# +AM_FLAG_M3264_PRI = $(AM_FLAG_M3264_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CPPFLAGS_PRI = $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CFLAGS_PRI = $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +AM_CCASFLAGS_PRI = $(AM_CCASFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +@VGCONF_HAVE_PLATFORM_SEC_FALSE@AM_FLAG_M3264_SEC = +@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_FLAG_M3264_SEC = $(AM_FLAG_M3264_@VGCONF_PLATFORM_SEC_CAPS@) + +# Baseline link flags for making vgpreload shared objects. +# +PRELOAD_LDFLAGS_COMMON_LINUX = -nodefaultlibs -shared \ + -Wl,-z,interpose,-z,initfirst $(am__append_5) +PRELOAD_LDFLAGS_COMMON_DARWIN = -dynamic -dynamiclib -all_load +PRELOAD_LDFLAGS_COMMON_SOLARIS = -nodefaultlibs -shared \ + -Wl,-z,interpose,-z,initfirst $(am__append_4) +PRELOAD_LDFLAGS_X86_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_AMD64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_PPC32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_PPC64BE_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_PPC64LE_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_ARM_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_ARM64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 +PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ +PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ + -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ + -I$(top_srcdir)/VEX/pub -I$(top_builddir)/VEX/pub \ + -DVGA_@VGCONF_ARCH_PRI@=1 -DVGO_@VGCONF_OS@=1 \ + -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 \ + -DVGPV_@VGCONF_ARCH_PRI@_@VGCONF_OS@_@VGCONF_PLATVARIANT@=1 \ + $(am__append_6) $(am__append_7) + +# Nb: Tools need to augment these flags with an arch-selection option, such +# as $(AM_FLAG_M3264_PRI). +AM_CFLAGS = -Winline -Wall -Wshadow -Wno-long-long -g \ + @FLAG_FNO_STACK_PROTECTOR@ $(am__append_8) $(am__append_9) \ + @FLAG_M64@ $(am__empty) +AM_CXXFLAGS = -Winline -Wall -Wshadow -Wno-long-long -g \ + @FLAG_FNO_STACK_PROTECTOR@ $(am__append_10) @FLAG_M64@ +# Include AM_CPPFLAGS in AM_CCASFLAGS to allow for older versions of +# automake; see comments in Makefile.all.am for more detail. +AM_CCASFLAGS = $(AM_CPPFLAGS) @FLAG_M64@ +@VGCONF_OS_IS_DARWIN_TRUE@noinst_DSYMS = $(check_PROGRAMS) +dist_noinst_SCRIPTS = filter_stderr +EXTRA_DIST = \ + atomic.stdout.exp atomic.stderr.exp atomic.vgtest \ + branch.stdout.exp branch.stderr.exp branch.vgtest \ + cpucfg.stdout.exp cpucfg.stderr.exp cpucfg.vgtest \ + fault.stdout.exp fault.stderr.exp fault.vgtest \ + fault_fp.stdout.exp fault_fp.stderr.exp fault_fp.vgtest \ + float.stdout.exp float.stderr.exp float.vgtest \ + integer.stdout.exp integer.stderr.exp integer.vgtest \ + llsc.stdout.exp llsc.stderr.exp llsc.vgtest \ + memory.stdout.exp memory.stderr.exp memory.vgtest \ + move.stdout.exp move.stderr.exp move.vgtest \ + pc.stdout.exp pc.stderr.exp pc.vgtest \ + special.stdout.exp special.stderr.exp special.vgtest + +allexec_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_NONNULL@ +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/Makefile.all.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign none/tests/loongarch64/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign none/tests/loongarch64/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; +$(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/Makefile.all.am $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) + +allexec$(EXEEXT): $(allexec_OBJECTS) $(allexec_DEPENDENCIES) $(EXTRA_allexec_DEPENDENCIES) + @rm -f allexec$(EXEEXT) + $(AM_V_CCLD)$(allexec_LINK) $(allexec_OBJECTS) $(allexec_LDADD) $(LIBS) + +atomic$(EXEEXT): $(atomic_OBJECTS) $(atomic_DEPENDENCIES) $(EXTRA_atomic_DEPENDENCIES) + @rm -f atomic$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(atomic_OBJECTS) $(atomic_LDADD) $(LIBS) + +branch$(EXEEXT): $(branch_OBJECTS) $(branch_DEPENDENCIES) $(EXTRA_branch_DEPENDENCIES) + @rm -f branch$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(branch_OBJECTS) $(branch_LDADD) $(LIBS) + +cpucfg$(EXEEXT): $(cpucfg_OBJECTS) $(cpucfg_DEPENDENCIES) $(EXTRA_cpucfg_DEPENDENCIES) + @rm -f cpucfg$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(cpucfg_OBJECTS) $(cpucfg_LDADD) $(LIBS) + +fault$(EXEEXT): $(fault_OBJECTS) $(fault_DEPENDENCIES) $(EXTRA_fault_DEPENDENCIES) + @rm -f fault$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fault_OBJECTS) $(fault_LDADD) $(LIBS) + +fault_fp$(EXEEXT): $(fault_fp_OBJECTS) $(fault_fp_DEPENDENCIES) $(EXTRA_fault_fp_DEPENDENCIES) + @rm -f fault_fp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fault_fp_OBJECTS) $(fault_fp_LDADD) $(LIBS) + +float$(EXEEXT): $(float_OBJECTS) $(float_DEPENDENCIES) $(EXTRA_float_DEPENDENCIES) + @rm -f float$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(float_OBJECTS) $(float_LDADD) $(LIBS) + +integer$(EXEEXT): $(integer_OBJECTS) $(integer_DEPENDENCIES) $(EXTRA_integer_DEPENDENCIES) + @rm -f integer$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(integer_OBJECTS) $(integer_LDADD) $(LIBS) + +llsc$(EXEEXT): $(llsc_OBJECTS) $(llsc_DEPENDENCIES) $(EXTRA_llsc_DEPENDENCIES) + @rm -f llsc$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(llsc_OBJECTS) $(llsc_LDADD) $(LIBS) + +memory$(EXEEXT): $(memory_OBJECTS) $(memory_DEPENDENCIES) $(EXTRA_memory_DEPENDENCIES) + @rm -f memory$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(memory_OBJECTS) $(memory_LDADD) $(LIBS) + +move$(EXEEXT): $(move_OBJECTS) $(move_DEPENDENCIES) $(EXTRA_move_DEPENDENCIES) + @rm -f move$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(move_OBJECTS) $(move_LDADD) $(LIBS) + +pc$(EXEEXT): $(pc_OBJECTS) $(pc_DEPENDENCIES) $(EXTRA_pc_DEPENDENCIES) + @rm -f pc$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(pc_OBJECTS) $(pc_LDADD) $(LIBS) + +special$(EXEEXT): $(special_OBJECTS) $(special_DEPENDENCIES) $(EXTRA_special_DEPENDENCIES) + @rm -f special$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(special_OBJECTS) $(special_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allexec-allexec.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atomic.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/branch.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpucfg.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fault.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fault_fp.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/float.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/integer.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llsc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/special.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +allexec-allexec.o: allexec.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(allexec_CFLAGS) $(CFLAGS) -MT allexec-allexec.o -MD -MP -MF $(DEPDIR)/allexec-allexec.Tpo -c -o allexec-allexec.o `test -f 'allexec.c' || echo '$(srcdir)/'`allexec.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/allexec-allexec.Tpo $(DEPDIR)/allexec-allexec.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='allexec.c' object='allexec-allexec.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(allexec_CFLAGS) $(CFLAGS) -c -o allexec-allexec.o `test -f 'allexec.c' || echo '$(srcdir)/'`allexec.c + +allexec-allexec.obj: allexec.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(allexec_CFLAGS) $(CFLAGS) -MT allexec-allexec.obj -MD -MP -MF $(DEPDIR)/allexec-allexec.Tpo -c -o allexec-allexec.obj `if test -f 'allexec.c'; then $(CYGPATH_W) 'allexec.c'; else $(CYGPATH_W) '$(srcdir)/allexec.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/allexec-allexec.Tpo $(DEPDIR)/allexec-allexec.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='allexec.c' object='allexec-allexec.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(allexec_CFLAGS) $(CFLAGS) -c -o allexec-allexec.obj `if test -f 'allexec.c'; then $(CYGPATH_W) 'allexec.c'; else $(CYGPATH_W) '$(srcdir)/allexec.c'; fi` + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-local +check: check-am +all-am: Makefile $(SCRIPTS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + 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: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-local mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/allexec-allexec.Po + -rm -f ./$(DEPDIR)/atomic.Po + -rm -f ./$(DEPDIR)/branch.Po + -rm -f ./$(DEPDIR)/cpucfg.Po + -rm -f ./$(DEPDIR)/fault.Po + -rm -f ./$(DEPDIR)/fault_fp.Po + -rm -f ./$(DEPDIR)/float.Po + -rm -f ./$(DEPDIR)/integer.Po + -rm -f ./$(DEPDIR)/llsc.Po + -rm -f ./$(DEPDIR)/memory.Po + -rm -f ./$(DEPDIR)/move.Po + -rm -f ./$(DEPDIR)/pc.Po + -rm -f ./$(DEPDIR)/special.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/allexec-allexec.Po + -rm -f ./$(DEPDIR)/atomic.Po + -rm -f ./$(DEPDIR)/branch.Po + -rm -f ./$(DEPDIR)/cpucfg.Po + -rm -f ./$(DEPDIR)/fault.Po + -rm -f ./$(DEPDIR)/fault_fp.Po + -rm -f ./$(DEPDIR)/float.Po + -rm -f ./$(DEPDIR)/integer.Po + -rm -f ./$(DEPDIR)/llsc.Po + -rm -f ./$(DEPDIR)/memory.Po + -rm -f ./$(DEPDIR)/move.Po + -rm -f ./$(DEPDIR)/pc.Po + -rm -f ./$(DEPDIR)/special.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am \ + check-local clean clean-checkPROGRAMS clean-generic \ + clean-local cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am + +.PRECIOUS: Makefile + + +# This used to be required when Vex had a handwritten Makefile. It +# shouldn't be needed any more, though. + +#---------------------------------------------------------------------------- +# noinst_PROGRAMS and noinst_DSYMS targets +#---------------------------------------------------------------------------- + +# On Darwin, for a program 'p', the DWARF debug info is stored in the +# directory 'p.dSYM'. This must be generated after the executable is +# created, with 'dsymutil p'. We could redefine LINK with a script that +# executes 'dsymutil' after linking, but that's a pain. Instead we use this +# hook so that every time "make check" is run, we subsequently invoke +# 'dsymutil' on all the executables that lack a .dSYM directory, or that are +# newer than their corresponding .dSYM directory. +build-noinst_DSYMS: $(noinst_DSYMS) + for f in $(noinst_DSYMS); do \ + if [ ! -e $$f.dSYM -o $$f -nt $$f.dSYM ] ; then \ + echo "dsymutil $$f"; \ + dsymutil $$f; \ + fi; \ + done + +# This is used by coregrind/Makefile.am and Makefile.tool.am for doing +# "in-place" installs. It copies $(noinst_PROGRAMS) into $inplacedir. +# It needs to be depended on by an 'all-local' rule. +inplace-noinst_PROGRAMS: $(noinst_PROGRAMS) + mkdir -p $(inplacedir); \ + for f in $(noinst_PROGRAMS) ; do \ + rm -f $(inplacedir)/$$f; \ + ln -f -s ../$(subdir)/$$f $(inplacedir); \ + done + +# Similar to inplace-noinst_PROGRAMS +inplace-noinst_DSYMS: build-noinst_DSYMS + mkdir -p $(inplacedir); \ + for f in $(noinst_DSYMS); do \ + rm -f $(inplacedir)/$$f.dSYM; \ + ln -f -s ../$(subdir)/$$f.dSYM $(inplacedir); \ + done + +# This is used by coregrind/Makefile.am and by /Makefile.am for doing +# "make install". It copies $(noinst_PROGRAMS) into $prefix/lib/valgrind/. +# It needs to be depended on by an 'install-exec-local' rule. +install-noinst_PROGRAMS: $(noinst_PROGRAMS) + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_PROGRAMS); do \ + $(INSTALL_PROGRAM) $$f $(DESTDIR)$(pkglibdir); \ + done + +# This is used by coregrind/Makefile.am and by /Makefile.am for doing +# "make uninstall". It removes $(noinst_PROGRAMS) from $prefix/lib/valgrind/. +# It needs to be depended on by an 'uninstall-local' rule. +uninstall-noinst_PROGRAMS: + for f in $(noinst_PROGRAMS); do \ + rm -f $(DESTDIR)$(pkglibdir)/$$f; \ + done + +# Similar to install-noinst_PROGRAMS. +# Nb: we don't use $(INSTALL_PROGRAM) here because it doesn't work with +# directories. XXX: not sure whether the resulting permissions will be +# correct when using 'cp -R'... +install-noinst_DSYMS: build-noinst_DSYMS + $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ + for f in $(noinst_DSYMS); do \ + cp -R $$f.dSYM $(DESTDIR)$(pkglibdir); \ + done + +# Similar to uninstall-noinst_PROGRAMS. +uninstall-noinst_DSYMS: + for f in $(noinst_DSYMS); do \ + rm -f $(DESTDIR)$(pkglibdir)/$$f.dSYM; \ + done + +# This needs to be depended on by a 'clean-local' rule. +clean-noinst_DSYMS: + for f in $(noinst_DSYMS); do \ + rm -rf $$f.dSYM; \ + done + +check-local: build-noinst_DSYMS + +clean-local: clean-noinst_DSYMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/none/tests/loongarch64/allexec.c b/none/tests/loongarch64/allexec.c new file mode 100644 index 0000000..69e1208 --- /dev/null +++ b/none/tests/loongarch64/allexec.c @@ -0,0 +1,56 @@ +#include +#include +#include +#include +#include +#include + +extern char **environ; + +#define S(...) (fprintf(stdout, __VA_ARGS__),fflush(stdout)) +#define FORKEXECWAIT(exec_call) do { \ + int status;\ + pid_t child = fork(); \ + if (child == 0) {exec_call; perror ("exec failed");} \ + else if (child == -1) perror ("cannot fork\n"); \ + else if (child != wait (&status)) perror ("error waiting child"); \ + else S("child exited\n"); \ + } while (0) + +void test_allexec (char *exec) +{ + FORKEXECWAIT (execlp(exec, exec, (char *) NULL)); + FORKEXECWAIT (execlp(exec, exec, "constant_arg1", "constant_arg2", + (char *) NULL)); + { + /* Solaris requires that the argv parameter to execve() isn't NULL, so + set it. Note that this isn't necessary on Linux. */ + char *const argv[] = {exec, NULL}; + FORKEXECWAIT (execve(exec, argv, environ)); + } +} + + +/* If a single argument "exec" is given, will execute itself + (in bi-arch, a 32 bit and 64 bit variant) via various exec system calls. + Note that this test can only be run after the prerequisite have been + prepared by allexec_prepare_prereq, which will a.o. make links + for the allexec32 and allexec64 executables. On single arch build, + these links points to the same executable to ensure this test works + everywhere the same. + No arguments or more arguments means just print its args. */ +int main(int argc, char **argv, char **envp) +{ + if ( (argc == 2) && (strcmp (argv[1], "exec") == 0)) { + S("%s will exec ./allexec32\n", argv[0]); + test_allexec ("./allexec32"); + S("%s will exec ./allexec64\n", argv[0]); + test_allexec ("./allexec64"); + } else { + int i; + S("program exec-ed:"); + for (i = 0; i < argc; i++) S(" %s", argv[i]); + S("\n"); + } + return 0; +} diff --git a/none/tests/loongarch64/atomic.c b/none/tests/loongarch64/atomic.c new file mode 100644 index 0000000..916d5f7 --- /dev/null +++ b/none/tests/loongarch64/atomic.c @@ -0,0 +1,75 @@ +#include + +#define TESTINST_AM(insn, res, val, addr) \ + { \ + __asm__ __volatile__( \ + "move $t1, %1 \n\t" \ + "move $t2, %2 \n\t" \ + insn " $t0, $t1, $t2 \n\t" \ + "move %0, $t0 \n\t" \ + : "=r" (res) \ + : "r" (val), "r" (addr) \ + : "$t0", "$t1", "$t2", "memory"); \ + } + +#define TESTINST_AM_4(insn, v) \ + { \ + printf(#insn ".w ::\n"); \ + TESTINST_AM(#insn ".w", res_i, v, &val_i); \ + printf("old: %d new: %d\n", res_i, val_i); \ + \ + printf(#insn "_db.w ::\n"); \ + TESTINST_AM(#insn "_db.w", res_i, v, &val_i); \ + printf("old: %d new: %d\n", res_i, val_i); \ + \ + printf(#insn ".d ::\n"); \ + TESTINST_AM(#insn ".d", res_l, v, &val_l); \ + printf("old: %ld new: %ld\n", res_l, val_l); \ + \ + printf(#insn "_db.d ::\n"); \ + TESTINST_AM(#insn "_db.d", res_l, v, &val_l); \ + printf("old: %ld new: %ld\n", res_l, val_l); \ + } + +#define TESTINST_AM_U_4(insn, v) \ + { \ + printf(#insn ".wu ::\n"); \ + TESTINST_AM(#insn ".wu", res_i, v, &val_i); \ + printf("old: %u new: %u\n", res_i, val_i); \ + \ + printf(#insn "_db.wu ::\n"); \ + TESTINST_AM(#insn "_db.wu", res_i, v, &val_i); \ + printf("old: %u new: %u\n", res_i, val_i); \ + \ + printf(#insn ".du ::\n"); \ + TESTINST_AM(#insn ".du", res_l, v, &val_l); \ + printf("old: %lu new: %lu\n", res_l, val_l); \ + \ + printf(#insn "_db.du ::\n"); \ + TESTINST_AM(#insn "_db.du", res_l, v, &val_l); \ + printf("old: %lu new: %lu\n", res_l, val_l); \ + } + +void test(void) +{ + int res_i; + long res_l; + int val_i = 1; + long val_l = 1; + + TESTINST_AM_4(amswap, 2); + TESTINST_AM_4(amadd, 5); + TESTINST_AM_4(amand, 3); + TESTINST_AM_4(amor, 8); + TESTINST_AM_4(amxor, 4); + TESTINST_AM_4(ammax, 16); + TESTINST_AM_4(ammin, -1); + TESTINST_AM_U_4(ammax, 9); + TESTINST_AM_U_4(ammin, 6); +} + +int main(void) +{ + test(); + return 0; +} diff --git a/none/tests/loongarch64/atomic.stderr.exp b/none/tests/loongarch64/atomic.stderr.exp new file mode 100644 index 0000000..e69de29 diff --git a/none/tests/loongarch64/atomic.stdout.exp b/none/tests/loongarch64/atomic.stdout.exp new file mode 100644 index 0000000..7eab9eb --- /dev/null +++ b/none/tests/loongarch64/atomic.stdout.exp @@ -0,0 +1,72 @@ +amswap.w :: +old: 1 new: 2 +amswap_db.w :: +old: 2 new: 2 +amswap.d :: +old: 1 new: 2 +amswap_db.d :: +old: 2 new: 2 +amadd.w :: +old: 2 new: 7 +amadd_db.w :: +old: 7 new: 12 +amadd.d :: +old: 2 new: 7 +amadd_db.d :: +old: 7 new: 12 +amand.w :: +old: 12 new: 0 +amand_db.w :: +old: 0 new: 0 +amand.d :: +old: 12 new: 0 +amand_db.d :: +old: 0 new: 0 +amor.w :: +old: 0 new: 8 +amor_db.w :: +old: 8 new: 8 +amor.d :: +old: 0 new: 8 +amor_db.d :: +old: 8 new: 8 +amxor.w :: +old: 8 new: 12 +amxor_db.w :: +old: 12 new: 8 +amxor.d :: +old: 8 new: 12 +amxor_db.d :: +old: 12 new: 8 +ammax.w :: +old: 8 new: 16 +ammax_db.w :: +old: 16 new: 16 +ammax.d :: +old: 8 new: 16 +ammax_db.d :: +old: 16 new: 16 +ammin.w :: +old: 16 new: -1 +ammin_db.w :: +old: -1 new: -1 +ammin.d :: +old: 16 new: -1 +ammin_db.d :: +old: -1 new: -1 +ammax.wu :: +old: 4294967295 new: 4294967295 +ammax_db.wu :: +old: 4294967295 new: 4294967295 +ammax.du :: +old: 18446744073709551615 new: 18446744073709551615 +ammax_db.du :: +old: 18446744073709551615 new: 18446744073709551615 +ammin.wu :: +old: 4294967295 new: 6 +ammin_db.wu :: +old: 6 new: 6 +ammin.du :: +old: 18446744073709551615 new: 6 +ammin_db.du :: +old: 6 new: 6 diff --git a/none/tests/loongarch64/atomic.vgtest b/none/tests/loongarch64/atomic.vgtest new file mode 100644 index 0000000..8fe5ce5 --- /dev/null +++ b/none/tests/loongarch64/atomic.vgtest @@ -0,0 +1,3 @@ +prereq: ../../../tests/loongarch64_features lam +prog: atomic +vgopts: -q diff --git a/none/tests/loongarch64/branch.c b/none/tests/loongarch64/branch.c new file mode 100644 index 0000000..e702d3f --- /dev/null +++ b/none/tests/loongarch64/branch.c @@ -0,0 +1,148 @@ +#include + +#define TESTINST_B_RR(insn, val1, val2) \ + { \ + int res; \ + unsigned long v1 = (unsigned long)val1; \ + unsigned long v2 = (unsigned long)val2; \ + __asm__ __volatile__( \ + insn " %1, %2, 1f \n\t" \ + " move %0, $zero \n\t" \ + " b 2f \n\t" \ + "1: \n\t" \ + " addi.w %0, $zero, 1 \n\t" \ + "2: \n\t" \ + : "=r" (res) \ + : "r" (v1), "r" (v2) \ + : "memory"); \ + printf("%s::\n", insn); \ + printf("input: %#lx %#lx\n", v1, v2); \ + printf("output: %d\n", res); \ + } + +#define TESTINST_B_R(insn, val) \ + { \ + int res; \ + unsigned long v = (unsigned long)val; \ + __asm__ __volatile__( \ + insn " %1, 1f \n\t" \ + " move %0, $zero \n\t" \ + " b 2f \n\t" \ + "1: \n\t" \ + " addi.w %0, $zero, 1 \n\t" \ + "2: \n\t" \ + : "=r" (res) \ + : "r" (v) \ + : "memory"); \ + printf("%s::\n", insn); \ + printf("input: %#lx\n", v); \ + printf("output: %d\n", res); \ + } + +#define TESTINST_B_C(insn, val) \ + { \ + int res; \ + unsigned long v = (unsigned long)val; \ + __asm__ __volatile__( \ + " movgr2cf $fcc0, %1 \n\t" \ + insn " $fcc0, 1f \n\t" \ + " move %0, $zero \n\t" \ + " b 2f \n\t" \ + "1: \n\t" \ + " addi.w %0, $zero, 1 \n\t" \ + "2: \n\t" \ + : "=r" (res) \ + : "r" (v) \ + : "$fcc0", "memory"); \ + printf("%s::\n", insn); \ + printf("input: %#lx\n", v); \ + printf("output: %d\n", res); \ + } + +#define TESTINST_BL() \ + { \ + int res; \ + __asm__ __volatile__( \ + " move %0, $zero \n\t" \ + " bl 1f \n\t" \ + " addi.w %0, %0, 1 \n\t" \ + " b 2f \n\t" \ + "1: \n\t" \ + " addi.w %0, %0, 1 \n\t" \ + " jr $ra \n\t" \ + "2: \n\t" \ + : "=r" (res) \ + : \ + : "$ra", "memory"); \ + printf("bl::\n"); \ + printf("res: %d\n", res); \ + } + +#define TESTINST_JIRL(insn) \ + { \ + unsigned long addr1, addr2; \ + __asm__ __volatile__( \ + " pcaddi $t0, 2 \n\t" \ + " jirl %0, $t0, 0 \n\t" \ + " pcaddi %1, 0 \n\t" \ + : "=r" (addr1), "=r" (addr2) \ + : \ + : "$t0", "memory"); \ + printf("jirl::\n"); \ + printf("res: %d\n", addr1 == addr2); \ + } + +void test(void) +{ + /* ---------------- beq rj, rd, offs16 ---------------- */ + TESTINST_B_RR("beq", 1, 2); + TESTINST_B_RR("beq", 1, 1); + + /* ---------------- bne rj, rd, offs16 ---------------- */ + TESTINST_B_RR("bne", 1, 2); + TESTINST_B_RR("bne", 1, 1); + + /* ---------------- blt rj, rd, offs16 ---------------- */ + TESTINST_B_RR("blt", 1, 2); + TESTINST_B_RR("blt", 1, 0); + + /* ---------------- bge rj, rd, offs16 ---------------- */ + TESTINST_B_RR("bge", 1, 2); + TESTINST_B_RR("bge", 0, 0); + + /* ---------------- bltu rj, rd, offs16 ---------------- */ + TESTINST_B_RR("bltu", -1, 2); + TESTINST_B_RR("bltu", 0, 1); + + /* ---------------- bgeu rj, rd, offs16 ---------------- */ + TESTINST_B_RR("bgeu", -1, 2); + TESTINST_B_RR("bgeu", 0, 1); + + /* ---------------- beqz rj, offs21 ---------------- */ + TESTINST_B_R("beqz", 0); + TESTINST_B_R("beqz", -1); + + /* ---------------- bnez rj, offs21 ---------------- */ + TESTINST_B_R("bnez", 0); + TESTINST_B_R("bnez", -1); + + /* ---------------- bceqz cj, offs21 ---------------- */ + TESTINST_B_C("bceqz", 0); + TESTINST_B_C("bceqz", 1); + + /* ---------------- bcnez cj, offs21 ---------------- */ + TESTINST_B_C("bcnez", 0); + TESTINST_B_C("bcnez", 1); + + /* ---------------- bl offs26 ---------------- */ + TESTINST_BL(); + + /* ---------------- jirl rd, rj, offs16 ---------------- */ + TESTINST_JIRL(); +} + +int main(void) +{ + test(); + return 0; +} diff --git a/none/tests/loongarch64/branch.stderr.exp b/none/tests/loongarch64/branch.stderr.exp new file mode 100644 index 0000000..e69de29 diff --git a/none/tests/loongarch64/branch.stdout.exp b/none/tests/loongarch64/branch.stdout.exp new file mode 100644 index 0000000..0a32d6a --- /dev/null +++ b/none/tests/loongarch64/branch.stdout.exp @@ -0,0 +1,64 @@ +beq:: +input: 0x1 0x2 +output: 0 +beq:: +input: 0x1 0x1 +output: 1 +bne:: +input: 0x1 0x2 +output: 1 +bne:: +input: 0x1 0x1 +output: 0 +blt:: +input: 0x1 0x2 +output: 1 +blt:: +input: 0x1 0 +output: 0 +bge:: +input: 0x1 0x2 +output: 0 +bge:: +input: 0 0 +output: 1 +bltu:: +input: 0xffffffffffffffff 0x2 +output: 0 +bltu:: +input: 0 0x1 +output: 1 +bgeu:: +input: 0xffffffffffffffff 0x2 +output: 1 +bgeu:: +input: 0 0x1 +output: 0 +beqz:: +input: 0 +output: 1 +beqz:: +input: 0xffffffffffffffff +output: 0 +bnez:: +input: 0 +output: 0 +bnez:: +input: 0xffffffffffffffff +output: 1 +bceqz:: +input: 0 +output: 1 +bceqz:: +input: 0x1 +output: 0 +bcnez:: +input: 0 +output: 0 +bcnez:: +input: 0x1 +output: 1 +bl:: +res: 2 +jirl:: +res: 1 diff --git a/none/tests/loongarch64/branch.vgtest b/none/tests/loongarch64/branch.vgtest new file mode 100644 index 0000000..535c055 --- /dev/null +++ b/none/tests/loongarch64/branch.vgtest @@ -0,0 +1,2 @@ +prog: branch +vgopts: -q diff --git a/none/tests/loongarch64/cpucfg.c b/none/tests/loongarch64/cpucfg.c new file mode 100644 index 0000000..f5d0570 --- /dev/null +++ b/none/tests/loongarch64/cpucfg.c @@ -0,0 +1,24 @@ +#include + +void test(int reg) +{ + int res; + __asm__ __volatile__( + "cpucfg %0, %1 \n\t" + : "=r" (res) + : "r" (reg) + : "memory"); + printf("cpucfg ::\n"); + printf("input: %x\n", (unsigned)reg); + printf("output: %x\n", (unsigned)res); +} + +int main(void) +{ + int i; + + for (i = 0; i < 24; i++) + test(i); + + return 0; +} diff --git a/none/tests/loongarch64/cpucfg.stderr.exp b/none/tests/loongarch64/cpucfg.stderr.exp new file mode 100644 index 0000000..e69de29 diff --git a/none/tests/loongarch64/cpucfg.stdout.exp b/none/tests/loongarch64/cpucfg.stdout.exp new file mode 100644 index 0000000..49e0ba7 --- /dev/null +++ b/none/tests/loongarch64/cpucfg.stdout.exp @@ -0,0 +1,72 @@ +cpucfg :: +input: 0 +output: 14c010 +cpucfg :: +input: 1 +output: 3f2f2fe +cpucfg :: +input: 2 +output: 7ccfc7 +cpucfg :: +input: 3 +output: fcff +cpucfg :: +input: 4 +output: 5f5e100 +cpucfg :: +input: 5 +output: 10001 +cpucfg :: +input: 6 +output: 7f33 +cpucfg :: +input: 7 +output: 0 +cpucfg :: +input: 8 +output: 0 +cpucfg :: +input: 9 +output: 0 +cpucfg :: +input: a +output: 0 +cpucfg :: +input: b +output: 0 +cpucfg :: +input: c +output: 0 +cpucfg :: +input: d +output: 0 +cpucfg :: +input: e +output: 0 +cpucfg :: +input: f +output: 0 +cpucfg :: +input: 10 +output: 2c3d +cpucfg :: +input: 11 +output: 6080003 +cpucfg :: +input: 12 +output: 6080003 +cpucfg :: +input: 13 +output: 608000f +cpucfg :: +input: 14 +output: 60e000f +cpucfg :: +input: 15 +output: 0 +cpucfg :: +input: 16 +output: 0 +cpucfg :: +input: 17 +output: 0 diff --git a/none/tests/loongarch64/cpucfg.vgtest b/none/tests/loongarch64/cpucfg.vgtest new file mode 100644 index 0000000..fea9644 --- /dev/null +++ b/none/tests/loongarch64/cpucfg.vgtest @@ -0,0 +1,3 @@ +prereq: ../../../tests/loongarch64_features cpucfg +prog: cpucfg +vgopts: -q diff --git a/none/tests/loongarch64/fault.c b/none/tests/loongarch64/fault.c new file mode 100644 index 0000000..2941768 --- /dev/null +++ b/none/tests/loongarch64/fault.c @@ -0,0 +1,234 @@ +#include +#include +#include +#include +#include + +#define NUM 24 + +unsigned long mem[NUM] = { + 0x121f1e1f0000e680, 0x0000000000010700, 0x000000030000e7dc, + 0xffffffff0000b0d0, 0x232f2e2f2ab05fd0, 0x242c2b2b0000b6a0, + 0x252a2e2b0000be80, 0x262d2d2a0000de10, 0x3f343f3e0000df20, + 0x3e353d3c2ab05fe0, 0x363a3c3b0000dfd0, 0x3b373b3a00010300, + 0x0000e680121f1e1f, 0x0001070000000000, 0x0000e7dc00000003, + 0x0000b0d0ffffffff, 0x2ab05fd0232f2e2f, 0x0000b6a0242c2b2b, + 0x0000be80252a2e2b, 0x0000de10262d2d2a, 0x0000df203f343f3e, + 0x2ab05fe03e353d3c, 0x0000dfd0363a3c3b, 0x000103003b373b3a +}; + +long val1 = 0; +long val2 = 0xfdecba9087654321UL; +char *p = (char *)mem; + +#define TESTINST_LOAD_RRR(n, insn, addr1, addr2) \ + void test ## n (void) \ + { \ + printf("test %d\n", n); \ + printf("%s ::\n", insn); \ + __asm__ __volatile__( \ + insn " %0, %1, %2 \n\t" \ + : "=r" (val1) \ + : "r" (addr1), "r" (addr2) \ + : "memory"); \ + printf("output: %ld\n", val1); \ + } + +#define TESTINST_STORE_RRR(n, insn, addr1, addr2) \ + void test ## n (void) \ + { \ + printf("test %d\n", n); \ + printf("%s ::\n", insn); \ + printf("input: %ld\n", val2); \ + __asm__ __volatile__( \ + insn " %0, %1, %2 \n\t" \ + : \ + : "r" (val2), "r" (addr1), "r" (addr2) \ + : "memory"); \ + } + +#define TESTINST_RR(n, insn, v1, v2) \ + void test ## n (void) \ + { \ + printf("test %d\n", n); \ + printf("%s ::\n", insn); \ + printf("input: %ld %ld\n", (long)v1, (long)v2); \ + __asm__ __volatile__( \ + insn " %0, %1 \n\t" \ + : \ + : "r" (v1), "r" (v2) \ + : "memory"); \ + } + +#define TESTINST_I(n, insn, imm) \ + void test ## n (void) \ + { \ + printf("test %d\n", n); \ + printf("%s ::\n", insn); \ + printf("input: %d\n", imm); \ + __asm__ __volatile__( \ + insn " " #imm " \n\t" \ + : \ + : \ + : "memory"); \ + } + +static sigjmp_buf escape; + +static void handler(int sig, siginfo_t *si, void *uc) +{ + fprintf(stderr, "signal: %d\n", sig); + fprintf(stderr, "code: %d\n", si->si_code); + siglongjmp(escape, 1); +} + +static inline void show(void) +{ + int i; + printf("memory block:\n"); + for (i = 0; i < NUM; i++) + printf("0x%lx:\t%#018lx\n", i * sizeof(unsigned long), mem[i]); +} + +TESTINST_LOAD_RRR(1, "ldgt.b", &p[0], &p[64]); +TESTINST_LOAD_RRR(2, "ldgt.b", &p[1], &p[0] ); +TESTINST_LOAD_RRR(3, "ldgt.h", &p[1], &p[0] ); +TESTINST_LOAD_RRR(4, "ldgt.h", &p[2], &p[64]); +TESTINST_LOAD_RRR(5, "ldgt.h", &p[4], &p[0] ); +TESTINST_LOAD_RRR(6, "ldgt.w", &p[2], &p[0] ); +TESTINST_LOAD_RRR(7, "ldgt.w", &p[8], &p[64]); +TESTINST_LOAD_RRR(8, "ldgt.w", &p[12], &p[0] ); +TESTINST_LOAD_RRR(9, "ldgt.d", &p[4], &p[0] ); +TESTINST_LOAD_RRR(10, "ldgt.d", &p[16], &p[64]); +TESTINST_LOAD_RRR(11, "ldgt.d", &p[32], &p[0] ); + +TESTINST_LOAD_RRR(12, "ldle.b", &p[64], &p[0] ); +TESTINST_LOAD_RRR(13, "ldle.b", &p[65], &p[96]); +TESTINST_LOAD_RRR(14, "ldle.h", &p[65], &p[0] ); +TESTINST_LOAD_RRR(15, "ldle.h", &p[66], &p[0] ); +TESTINST_LOAD_RRR(16, "ldle.h", &p[68], &p[96]); +TESTINST_LOAD_RRR(17, "ldle.w", &p[66], &p[0] ); +TESTINST_LOAD_RRR(18, "ldle.w", &p[72], &p[0] ); +TESTINST_LOAD_RRR(19, "ldle.w", &p[76], &p[96]); +TESTINST_LOAD_RRR(20, "ldle.d", &p[68], &p[0] ); +TESTINST_LOAD_RRR(21, "ldle.d", &p[80], &p[0] ); +TESTINST_LOAD_RRR(22, "ldle.d", &p[88], &p[96]); + +TESTINST_STORE_RRR(23, "ldgt.b", &p[0], &p[64]); +TESTINST_STORE_RRR(24, "ldgt.b", &p[1], &p[0] ); +TESTINST_STORE_RRR(25, "ldgt.h", &p[1], &p[0] ); +TESTINST_STORE_RRR(26, "ldgt.h", &p[2], &p[64]); +TESTINST_STORE_RRR(27, "ldgt.h", &p[4], &p[0] ); +TESTINST_STORE_RRR(28, "ldgt.w", &p[2], &p[0] ); +TESTINST_STORE_RRR(29, "ldgt.w", &p[8], &p[64]); +TESTINST_STORE_RRR(30, "ldgt.w", &p[12], &p[0] ); +TESTINST_STORE_RRR(31, "ldgt.d", &p[4], &p[0] ); +TESTINST_STORE_RRR(32, "ldgt.d", &p[16], &p[64]); +TESTINST_STORE_RRR(33, "ldgt.d", &p[32], &p[0] ); + +TESTINST_STORE_RRR(34, "ldle.b", &p[64], &p[0] ); +TESTINST_STORE_RRR(35, "ldle.b", &p[65], &p[96]); +TESTINST_STORE_RRR(36, "ldle.h", &p[65], &p[0] ); +TESTINST_STORE_RRR(37, "ldle.h", &p[66], &p[0] ); +TESTINST_STORE_RRR(38, "ldle.h", &p[68], &p[96]); +TESTINST_STORE_RRR(39, "ldle.w", &p[66], &p[0] ); +TESTINST_STORE_RRR(40, "ldle.w", &p[72], &p[0] ); +TESTINST_STORE_RRR(41, "ldle.w", &p[76], &p[96]); +TESTINST_STORE_RRR(42, "ldle.d", &p[68], &p[0] ); +TESTINST_STORE_RRR(43, "ldle.d", &p[80], &p[0] ); +TESTINST_STORE_RRR(44, "ldle.d", &p[88], &p[96]); + +TESTINST_RR(45, "asrtle.d", 123, 456); +TESTINST_RR(46, "asrtle.d", 789, 0); +TESTINST_RR(47, "asrtgt.d", 123, 456); +TESTINST_RR(48, "asrtgt.d", 789, 0); + +TESTINST_I(49, "break", 0); +TESTINST_I(50, "break", 6); +TESTINST_I(51, "break", 7); +TESTINST_I(52, "break", 100); + +struct test { + void (*func)(void); + bool show; +} tests[] = { + { test1, false }, + { test2, false }, + { test3, false }, + { test4, false }, + { test5, false }, + { test6, false }, + { test7, false }, + { test8, false }, + { test9, false }, + { test10, false }, + { test11, true }, + { test12, false }, + { test13, false }, + { test14, false }, + { test15, false }, + { test16, false }, + { test17, false }, + { test18, false }, + { test19, false }, + { test20, false }, + { test21, false }, + { test22, true }, + { test23, false }, + { test24, false }, + { test25, false }, + { test26, false }, + { test27, false }, + { test28, false }, + { test29, false }, + { test30, false }, + { test31, false }, + { test32, false }, + { test33, true }, + { test34, false }, + { test35, false }, + { test36, false }, + { test37, false }, + { test38, false }, + { test39, false }, + { test40, false }, + { test41, false }, + { test42, false }, + { test43, false }, + { test44, true }, + { test45, false }, + { test46, false }, + { test47, false }, + { test48, false }, + { test49, false }, + { test50, false }, + { test51, false }, + { test52, false } +}; + +int main(void) +{ + int i; + struct sigaction sa; + int sigs[] = { SIGSYS, SIGBUS, SIGFPE, SIGTRAP }; + + sa.sa_sigaction = handler; + sa.sa_flags = SA_SIGINFO; + sigfillset(&sa.sa_mask); + + for(i = 0; i < sizeof(sigs) / sizeof(sigs[0]); i++) + sigaction(sigs[i], &sa, NULL); + + show(); + for(i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) { + if (sigsetjmp(escape, 1) == 0) { + fprintf(stderr, "test %d\n", i + 1); + tests[i].func(); + if (tests[i].show) + show(); + fprintf(stderr, "no fault\n"); + } + } + + return 0; +} diff --git a/none/tests/loongarch64/fault.stderr.exp b/none/tests/loongarch64/fault.stderr.exp new file mode 100644 index 0000000..3f56668 --- /dev/null +++ b/none/tests/loongarch64/fault.stderr.exp @@ -0,0 +1,138 @@ +test 1 +signal: 31 +code: 128 +test 2 +no fault +test 3 +signal: 7 +code: 1 +test 4 +signal: 31 +code: 128 +test 5 +no fault +test 6 +signal: 7 +code: 1 +test 7 +signal: 31 +code: 128 +test 8 +no fault +test 9 +signal: 7 +code: 1 +test 10 +signal: 31 +code: 128 +test 11 +no fault +test 12 +signal: 31 +code: 128 +test 13 +no fault +test 14 +signal: 7 +code: 1 +test 15 +signal: 31 +code: 128 +test 16 +no fault +test 17 +signal: 7 +code: 1 +test 18 +signal: 31 +code: 128 +test 19 +no fault +test 20 +signal: 7 +code: 1 +test 21 +signal: 31 +code: 128 +test 22 +no fault +test 23 +signal: 31 +code: 128 +test 24 +no fault +test 25 +signal: 7 +code: 1 +test 26 +signal: 31 +code: 128 +test 27 +no fault +test 28 +signal: 7 +code: 1 +test 29 +signal: 31 +code: 128 +test 30 +no fault +test 31 +signal: 7 +code: 1 +test 32 +signal: 31 +code: 128 +test 33 +no fault +test 34 +signal: 31 +code: 128 +test 35 +no fault +test 36 +signal: 7 +code: 1 +test 37 +signal: 31 +code: 128 +test 38 +no fault +test 39 +signal: 7 +code: 1 +test 40 +signal: 31 +code: 128 +test 41 +no fault +test 42 +signal: 7 +code: 1 +test 43 +signal: 31 +code: 128 +test 44 +no fault +test 45 +no fault +test 46 +signal: 31 +code: 128 +test 47 +signal: 31 +code: 128 +test 48 +no fault +test 49 +signal: 5 +code: 1 +test 50 +signal: 8 +code: 2 +test 51 +signal: 8 +code: 1 +test 52 +signal: 5 +code: 1 diff --git a/none/tests/loongarch64/fault.stdout.exp b/none/tests/loongarch64/fault.stdout.exp new file mode 100644 index 0000000..d2e342d --- /dev/null +++ b/none/tests/loongarch64/fault.stdout.exp @@ -0,0 +1,267 @@ +memory block: +0x0: 0x121f1e1f0000e680 +0x8: 0x0000000000010700 +0x10: 0x000000030000e7dc +0x18: 0xffffffff0000b0d0 +0x20: 0x232f2e2f2ab05fd0 +0x28: 0x242c2b2b0000b6a0 +0x30: 0x252a2e2b0000be80 +0x38: 0x262d2d2a0000de10 +0x40: 0x3f343f3e0000df20 +0x48: 0x3e353d3c2ab05fe0 +0x50: 0x363a3c3b0000dfd0 +0x58: 0x3b373b3a00010300 +0x60: 0x0000e680121f1e1f +0x68: 0x0001070000000000 +0x70: 0x0000e7dc00000003 +0x78: 0x0000b0d0ffffffff +0x80: 0x2ab05fd0232f2e2f +0x88: 0x0000b6a0242c2b2b +0x90: 0x0000be80252a2e2b +0x98: 0x0000de10262d2d2a +0xa0: 0x0000df203f343f3e +0xa8: 0x2ab05fe03e353d3c +0xb0: 0x0000dfd0363a3c3b +0xb8: 0x000103003b373b3a +test 1 +ldgt.b :: +test 2 +ldgt.b :: +output: -26 +test 3 +ldgt.h :: +test 4 +ldgt.h :: +test 5 +ldgt.h :: +output: 7711 +test 6 +ldgt.w :: +test 7 +ldgt.w :: +test 8 +ldgt.w :: +output: 0 +test 9 +ldgt.d :: +test 10 +ldgt.d :: +test 11 +ldgt.d :: +output: 2535295895347421136 +memory block: +0x0: 0x121f1e1f0000e680 +0x8: 0x0000000000010700 +0x10: 0x000000030000e7dc +0x18: 0xffffffff0000b0d0 +0x20: 0x232f2e2f2ab05fd0 +0x28: 0x242c2b2b0000b6a0 +0x30: 0x252a2e2b0000be80 +0x38: 0x262d2d2a0000de10 +0x40: 0x3f343f3e0000df20 +0x48: 0x3e353d3c2ab05fe0 +0x50: 0x363a3c3b0000dfd0 +0x58: 0x3b373b3a00010300 +0x60: 0x0000e680121f1e1f +0x68: 0x0001070000000000 +0x70: 0x0000e7dc00000003 +0x78: 0x0000b0d0ffffffff +0x80: 0x2ab05fd0232f2e2f +0x88: 0x0000b6a0242c2b2b +0x90: 0x0000be80252a2e2b +0x98: 0x0000de10262d2d2a +0xa0: 0x0000df203f343f3e +0xa8: 0x2ab05fe03e353d3c +0xb0: 0x0000dfd0363a3c3b +0xb8: 0x000103003b373b3a +test 12 +ldle.b :: +test 13 +ldle.b :: +output: -33 +test 14 +ldle.h :: +test 15 +ldle.h :: +test 16 +ldle.h :: +output: 16190 +test 17 +ldle.w :: +test 18 +ldle.w :: +test 19 +ldle.w :: +output: 1043676476 +test 20 +ldle.d :: +test 21 +ldle.d :: +test 22 +ldle.d :: +output: 4266944292251042560 +memory block: +0x0: 0x121f1e1f0000e680 +0x8: 0x0000000000010700 +0x10: 0x000000030000e7dc +0x18: 0xffffffff0000b0d0 +0x20: 0x232f2e2f2ab05fd0 +0x28: 0x242c2b2b0000b6a0 +0x30: 0x252a2e2b0000be80 +0x38: 0x262d2d2a0000de10 +0x40: 0x3f343f3e0000df20 +0x48: 0x3e353d3c2ab05fe0 +0x50: 0x363a3c3b0000dfd0 +0x58: 0x3b373b3a00010300 +0x60: 0x0000e680121f1e1f +0x68: 0x0001070000000000 +0x70: 0x0000e7dc00000003 +0x78: 0x0000b0d0ffffffff +0x80: 0x2ab05fd0232f2e2f +0x88: 0x0000b6a0242c2b2b +0x90: 0x0000be80252a2e2b +0x98: 0x0000de10262d2d2a +0xa0: 0x0000df203f343f3e +0xa8: 0x2ab05fe03e353d3c +0xb0: 0x0000dfd0363a3c3b +0xb8: 0x000103003b373b3a +test 23 +ldgt.b :: +input: -149539557700451551 +test 24 +ldgt.b :: +input: -149539557700451551 +test 25 +ldgt.h :: +input: -149539557700451551 +test 26 +ldgt.h :: +input: -149539557700451551 +test 27 +ldgt.h :: +input: -149539557700451551 +test 28 +ldgt.w :: +input: -149539557700451551 +test 29 +ldgt.w :: +input: -149539557700451551 +test 30 +ldgt.w :: +input: -149539557700451551 +test 31 +ldgt.d :: +input: -149539557700451551 +test 32 +ldgt.d :: +input: -149539557700451551 +test 33 +ldgt.d :: +input: -149539557700451551 +memory block: +0x0: 0x121f1e1f0000e680 +0x8: 0x0000000000010700 +0x10: 0x000000030000e7dc +0x18: 0xffffffff0000b0d0 +0x20: 0x232f2e2f2ab05fd0 +0x28: 0x242c2b2b0000b6a0 +0x30: 0x252a2e2b0000be80 +0x38: 0x262d2d2a0000de10 +0x40: 0x3f343f3e0000df20 +0x48: 0x3e353d3c2ab05fe0 +0x50: 0x363a3c3b0000dfd0 +0x58: 0x3b373b3a00010300 +0x60: 0x0000e680121f1e1f +0x68: 0x0001070000000000 +0x70: 0x0000e7dc00000003 +0x78: 0x0000b0d0ffffffff +0x80: 0x2ab05fd0232f2e2f +0x88: 0x0000b6a0242c2b2b +0x90: 0x0000be80252a2e2b +0x98: 0x0000de10262d2d2a +0xa0: 0x0000df203f343f3e +0xa8: 0x2ab05fe03e353d3c +0xb0: 0x0000dfd0363a3c3b +0xb8: 0x000103003b373b3a +test 34 +ldle.b :: +input: -149539557700451551 +test 35 +ldle.b :: +input: -149539557700451551 +test 36 +ldle.h :: +input: -149539557700451551 +test 37 +ldle.h :: +input: -149539557700451551 +test 38 +ldle.h :: +input: -149539557700451551 +test 39 +ldle.w :: +input: -149539557700451551 +test 40 +ldle.w :: +input: -149539557700451551 +test 41 +ldle.w :: +input: -149539557700451551 +test 42 +ldle.d :: +input: -149539557700451551 +test 43 +ldle.d :: +input: -149539557700451551 +test 44 +ldle.d :: +input: -149539557700451551 +memory block: +0x0: 0x121f1e1f0000e680 +0x8: 0x0000000000010700 +0x10: 0x000000030000e7dc +0x18: 0xffffffff0000b0d0 +0x20: 0x232f2e2f2ab05fd0 +0x28: 0x242c2b2b0000b6a0 +0x30: 0x252a2e2b0000be80 +0x38: 0x262d2d2a0000de10 +0x40: 0x3f343f3e0000df20 +0x48: 0x3e353d3c2ab05fe0 +0x50: 0x363a3c3b0000dfd0 +0x58: 0x3b373b3a00010300 +0x60: 0x0000e680121f1e1f +0x68: 0x0001070000000000 +0x70: 0x0000e7dc00000003 +0x78: 0x0000b0d0ffffffff +0x80: 0x2ab05fd0232f2e2f +0x88: 0x0000b6a0242c2b2b +0x90: 0x0000be80252a2e2b +0x98: 0x0000de10262d2d2a +0xa0: 0x0000df203f343f3e +0xa8: 0x2ab05fe03e353d3c +0xb0: 0x0000dfd0363a3c3b +0xb8: 0x000103003b373b3a +test 45 +asrtle.d :: +input: 123 456 +test 46 +asrtle.d :: +input: 789 0 +test 47 +asrtgt.d :: +input: 123 456 +test 48 +asrtgt.d :: +input: 789 0 +test 49 +break :: +input: 0 +test 50 +break :: +input: 6 +test 51 +break :: +input: 7 +test 52 +break :: +input: 100 diff --git a/none/tests/loongarch64/fault.vgtest b/none/tests/loongarch64/fault.vgtest new file mode 100644 index 0000000..24bf21a --- /dev/null +++ b/none/tests/loongarch64/fault.vgtest @@ -0,0 +1,2 @@ +prog: fault +vgopts: -q diff --git a/none/tests/loongarch64/fault_fp.c b/none/tests/loongarch64/fault_fp.c new file mode 100644 index 0000000..0d5862d --- /dev/null +++ b/none/tests/loongarch64/fault_fp.c @@ -0,0 +1,163 @@ +#include +#include +#include +#include +#include + +#define NUM 24 + +unsigned long mem[NUM] = { + 0x121f1e1f0000e680, 0x0000000000010700, 0x000000030000e7dc, + 0xffffffff0000b0d0, 0x232f2e2f2ab05fd0, 0x242c2b2b0000b6a0, + 0x252a2e2b0000be80, 0x262d2d2a0000de10, 0x3f343f3e0000df20, + 0x3e353d3c2ab05fe0, 0x363a3c3b0000dfd0, 0x3b373b3a00010300, + 0x0000e680121f1e1f, 0x0001070000000000, 0x0000e7dc00000003, + 0x0000b0d0ffffffff, 0x2ab05fd0232f2e2f, 0x0000b6a0242c2b2b, + 0x0000be80252a2e2b, 0x0000de10262d2d2a, 0x0000df203f343f3e, + 0x2ab05fe03e353d3c, 0x0000dfd0363a3c3b, 0x000103003b373b3a +}; + +long val1 = 0; +long val2 = 0xfdecba9087654321UL; +char *p = (char *)mem; + +#define TESTINST_LOAD_FRR_S(n, insn, addr1, addr2) \ + void test ## n (void) \ + { \ + printf("test %d\n", n); \ + printf("%s ::\n", insn); \ + __asm__ __volatile__( \ + insn " %0, %1, %2 \n\t" \ + : "=f" (val1) \ + : "r" (addr1), "r" (addr2) \ + : "memory"); \ + printf("output: %d\n", (int)val1); \ + } + +#define TESTINST_LOAD_FRR_D(n, insn, addr1, addr2) \ + void test ## n (void) \ + { \ + printf("test %d\n", n); \ + printf("%s ::\n", insn); \ + __asm__ __volatile__( \ + insn " %0, %1, %2 \n\t" \ + : "=f" (val1) \ + : "r" (addr1), "r" (addr2) \ + : "memory"); \ + printf("output: %ld\n", val1); \ + } + +#define TESTINST_STORE_FRR(n, insn, addr1, addr2) \ + void test ## n (void) \ + { \ + printf("test %d\n", n); \ + printf("%s ::\n", insn); \ + printf("input: %ld\n", val2); \ + __asm__ __volatile__( \ + insn " %0, %1, %2 \n\t" \ + : \ + : "f" (val2), "r" (addr1), "r" (addr2) \ + : "memory"); \ + } + +static sigjmp_buf escape; + +static void handler(int sig, siginfo_t *si, void *uc) +{ + fprintf(stderr, "signal: %d\n", sig); + fprintf(stderr, "code: %d\n", si->si_code); + siglongjmp(escape, 1); +} + +static inline void show(void) +{ + int i; + printf("memory block:\n"); + for (i = 0; i < NUM; i++) + printf("0x%lx:\t%#018lx\n", i * sizeof(unsigned long), mem[i]); +} + +TESTINST_LOAD_FRR_S(1, "fldgt.s", &p[2], &p[0] ); +TESTINST_LOAD_FRR_S(2, "fldgt.s", &p[8], &p[64]); +TESTINST_LOAD_FRR_S(3, "fldgt.s", &p[12], &p[0] ); +TESTINST_LOAD_FRR_D(4, "fldgt.d", &p[4], &p[0] ); +TESTINST_LOAD_FRR_D(5, "fldgt.d", &p[16], &p[64]); +TESTINST_LOAD_FRR_D(6, "fldgt.d", &p[32], &p[0] ); + +TESTINST_LOAD_FRR_S(7, "fldle.s", &p[66], &p[0] ); +TESTINST_LOAD_FRR_S(8, "fldle.s", &p[72], &p[0] ); +TESTINST_LOAD_FRR_S(9, "fldle.s", &p[76], &p[96]); +TESTINST_LOAD_FRR_D(10, "fldle.d", &p[68], &p[0] ); +TESTINST_LOAD_FRR_D(11, "fldle.d", &p[80], &p[0] ); +TESTINST_LOAD_FRR_D(12, "fldle.d", &p[88], &p[96]); + +TESTINST_STORE_FRR(13, "fstgt.s", &p[2], &p[0] ); +TESTINST_STORE_FRR(14, "fstgt.s", &p[8], &p[64]); +TESTINST_STORE_FRR(15, "fstgt.s", &p[12], &p[0] ); +TESTINST_STORE_FRR(16, "fstgt.d", &p[4], &p[0] ); +TESTINST_STORE_FRR(17, "fstgt.d", &p[16], &p[64]); +TESTINST_STORE_FRR(18, "fstgt.d", &p[32], &p[0] ); + +TESTINST_STORE_FRR(19, "fstle.s", &p[66], &p[0] ); +TESTINST_STORE_FRR(20, "fstle.s", &p[72], &p[0] ); +TESTINST_STORE_FRR(21, "fstle.s", &p[76], &p[96]); +TESTINST_STORE_FRR(22, "fstle.d", &p[68], &p[0] ); +TESTINST_STORE_FRR(23, "fstle.d", &p[80], &p[0] ); +TESTINST_STORE_FRR(24, "fstle.d", &p[88], &p[96]); + +struct test { + void (*func)(void); + bool show; +} tests[] = { + { test1, false }, + { test2, false }, + { test3, false }, + { test4, false }, + { test5, false }, + { test6, true }, + { test7, false }, + { test8, false }, + { test9, false }, + { test10, false }, + { test11, false }, + { test12, true }, + { test13, false }, + { test14, false }, + { test15, false }, + { test16, false }, + { test17, false }, + { test18, true }, + { test19, false }, + { test20, false }, + { test21, false }, + { test22, false }, + { test23, false }, + { test24, true } +}; + +int main(void) +{ + int i; + struct sigaction sa; + int sigs[] = { SIGSYS, SIGBUS }; + + sa.sa_sigaction = handler; + sa.sa_flags = SA_SIGINFO; + sigfillset(&sa.sa_mask); + + for(i = 0; i < sizeof(sigs) / sizeof(sigs[0]); i++) + sigaction(sigs[i], &sa, NULL); + + show(); + for(i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) { + if (sigsetjmp(escape, 1) == 0) { + fprintf(stderr, "test %d\n", i + 1); + tests[i].func(); + if (tests[i].show) + show(); + fprintf(stderr, "no fault\n"); + } + } + + return 0; +} diff --git a/none/tests/loongarch64/fault_fp.stderr.exp b/none/tests/loongarch64/fault_fp.stderr.exp new file mode 100644 index 0000000..a983dea --- /dev/null +++ b/none/tests/loongarch64/fault_fp.stderr.exp @@ -0,0 +1,64 @@ +test 1 +signal: 7 +code: 1 +test 2 +signal: 31 +code: 128 +test 3 +no fault +test 4 +signal: 7 +code: 1 +test 5 +signal: 31 +code: 128 +test 6 +no fault +test 7 +signal: 7 +code: 1 +test 8 +signal: 31 +code: 128 +test 9 +no fault +test 10 +signal: 7 +code: 1 +test 11 +signal: 31 +code: 128 +test 12 +no fault +test 13 +signal: 7 +code: 1 +test 14 +signal: 31 +code: 128 +test 15 +no fault +test 16 +signal: 7 +code: 1 +test 17 +signal: 31 +code: 128 +test 18 +no fault +test 19 +signal: 7 +code: 1 +test 20 +signal: 31 +code: 128 +test 21 +no fault +test 22 +signal: 7 +code: 1 +test 23 +signal: 31 +code: 128 +test 24 +no fault diff --git a/none/tests/loongarch64/fault_fp.stdout.exp b/none/tests/loongarch64/fault_fp.stdout.exp new file mode 100644 index 0000000..254a123 --- /dev/null +++ b/none/tests/loongarch64/fault_fp.stdout.exp @@ -0,0 +1,189 @@ +memory block: +0x0: 0x121f1e1f0000e680 +0x8: 0x0000000000010700 +0x10: 0x000000030000e7dc +0x18: 0xffffffff0000b0d0 +0x20: 0x232f2e2f2ab05fd0 +0x28: 0x242c2b2b0000b6a0 +0x30: 0x252a2e2b0000be80 +0x38: 0x262d2d2a0000de10 +0x40: 0x3f343f3e0000df20 +0x48: 0x3e353d3c2ab05fe0 +0x50: 0x363a3c3b0000dfd0 +0x58: 0x3b373b3a00010300 +0x60: 0x0000e680121f1e1f +0x68: 0x0001070000000000 +0x70: 0x0000e7dc00000003 +0x78: 0x0000b0d0ffffffff +0x80: 0x2ab05fd0232f2e2f +0x88: 0x0000b6a0242c2b2b +0x90: 0x0000be80252a2e2b +0x98: 0x0000de10262d2d2a +0xa0: 0x0000df203f343f3e +0xa8: 0x2ab05fe03e353d3c +0xb0: 0x0000dfd0363a3c3b +0xb8: 0x000103003b373b3a +test 1 +fldgt.s :: +test 2 +fldgt.s :: +test 3 +fldgt.s :: +output: 0 +test 4 +fldgt.d :: +test 5 +fldgt.d :: +test 6 +fldgt.d :: +output: 2535295895347421136 +memory block: +0x0: 0x121f1e1f0000e680 +0x8: 0x0000000000010700 +0x10: 0x000000030000e7dc +0x18: 0xffffffff0000b0d0 +0x20: 0x232f2e2f2ab05fd0 +0x28: 0x242c2b2b0000b6a0 +0x30: 0x252a2e2b0000be80 +0x38: 0x262d2d2a0000de10 +0x40: 0x3f343f3e0000df20 +0x48: 0x3e353d3c2ab05fe0 +0x50: 0x363a3c3b0000dfd0 +0x58: 0x3b373b3a00010300 +0x60: 0x0000e680121f1e1f +0x68: 0x0001070000000000 +0x70: 0x0000e7dc00000003 +0x78: 0x0000b0d0ffffffff +0x80: 0x2ab05fd0232f2e2f +0x88: 0x0000b6a0242c2b2b +0x90: 0x0000be80252a2e2b +0x98: 0x0000de10262d2d2a +0xa0: 0x0000df203f343f3e +0xa8: 0x2ab05fe03e353d3c +0xb0: 0x0000dfd0363a3c3b +0xb8: 0x000103003b373b3a +test 7 +fldle.s :: +test 8 +fldle.s :: +test 9 +fldle.s :: +output: 1043676476 +test 10 +fldle.d :: +test 11 +fldle.d :: +test 12 +fldle.d :: +output: 4266944292251042560 +memory block: +0x0: 0x121f1e1f0000e680 +0x8: 0x0000000000010700 +0x10: 0x000000030000e7dc +0x18: 0xffffffff0000b0d0 +0x20: 0x232f2e2f2ab05fd0 +0x28: 0x242c2b2b0000b6a0 +0x30: 0x252a2e2b0000be80 +0x38: 0x262d2d2a0000de10 +0x40: 0x3f343f3e0000df20 +0x48: 0x3e353d3c2ab05fe0 +0x50: 0x363a3c3b0000dfd0 +0x58: 0x3b373b3a00010300 +0x60: 0x0000e680121f1e1f +0x68: 0x0001070000000000 +0x70: 0x0000e7dc00000003 +0x78: 0x0000b0d0ffffffff +0x80: 0x2ab05fd0232f2e2f +0x88: 0x0000b6a0242c2b2b +0x90: 0x0000be80252a2e2b +0x98: 0x0000de10262d2d2a +0xa0: 0x0000df203f343f3e +0xa8: 0x2ab05fe03e353d3c +0xb0: 0x0000dfd0363a3c3b +0xb8: 0x000103003b373b3a +test 13 +fstgt.s :: +input: -149539557700451551 +test 14 +fstgt.s :: +input: -149539557700451551 +test 15 +fstgt.s :: +input: -149539557700451551 +test 16 +fstgt.d :: +input: -149539557700451551 +test 17 +fstgt.d :: +input: -149539557700451551 +test 18 +fstgt.d :: +input: -149539557700451551 +memory block: +0x0: 0x121f1e1f0000e680 +0x8: 0x8765432100010700 +0x10: 0x000000030000e7dc +0x18: 0xffffffff0000b0d0 +0x20: 0xfdecba9087654321 +0x28: 0x242c2b2b0000b6a0 +0x30: 0x252a2e2b0000be80 +0x38: 0x262d2d2a0000de10 +0x40: 0x3f343f3e0000df20 +0x48: 0x3e353d3c2ab05fe0 +0x50: 0x363a3c3b0000dfd0 +0x58: 0x3b373b3a00010300 +0x60: 0x0000e680121f1e1f +0x68: 0x0001070000000000 +0x70: 0x0000e7dc00000003 +0x78: 0x0000b0d0ffffffff +0x80: 0x2ab05fd0232f2e2f +0x88: 0x0000b6a0242c2b2b +0x90: 0x0000be80252a2e2b +0x98: 0x0000de10262d2d2a +0xa0: 0x0000df203f343f3e +0xa8: 0x2ab05fe03e353d3c +0xb0: 0x0000dfd0363a3c3b +0xb8: 0x000103003b373b3a +test 19 +fstle.s :: +input: -149539557700451551 +test 20 +fstle.s :: +input: -149539557700451551 +test 21 +fstle.s :: +input: -149539557700451551 +test 22 +fstle.d :: +input: -149539557700451551 +test 23 +fstle.d :: +input: -149539557700451551 +test 24 +fstle.d :: +input: -149539557700451551 +memory block: +0x0: 0x121f1e1f0000e680 +0x8: 0x8765432100010700 +0x10: 0x000000030000e7dc +0x18: 0xffffffff0000b0d0 +0x20: 0xfdecba9087654321 +0x28: 0x242c2b2b0000b6a0 +0x30: 0x252a2e2b0000be80 +0x38: 0x262d2d2a0000de10 +0x40: 0x3f343f3e0000df20 +0x48: 0x876543212ab05fe0 +0x50: 0x363a3c3b0000dfd0 +0x58: 0xfdecba9087654321 +0x60: 0x0000e680121f1e1f +0x68: 0x0001070000000000 +0x70: 0x0000e7dc00000003 +0x78: 0x0000b0d0ffffffff +0x80: 0x2ab05fd0232f2e2f +0x88: 0x0000b6a0242c2b2b +0x90: 0x0000be80252a2e2b +0x98: 0x0000de10262d2d2a +0xa0: 0x0000df203f343f3e +0xa8: 0x2ab05fe03e353d3c +0xb0: 0x0000dfd0363a3c3b +0xb8: 0x000103003b373b3a diff --git a/none/tests/loongarch64/fault_fp.vgtest b/none/tests/loongarch64/fault_fp.vgtest new file mode 100644 index 0000000..b750af8 --- /dev/null +++ b/none/tests/loongarch64/fault_fp.vgtest @@ -0,0 +1,3 @@ +prereq: ../../../tests/loongarch64_features fpu +prog: fault_fp +vgopts: -q diff --git a/none/tests/loongarch64/filter_stderr b/none/tests/loongarch64/filter_stderr new file mode 100755 index 0000000..0ae9313 --- /dev/null +++ b/none/tests/loongarch64/filter_stderr @@ -0,0 +1,3 @@ +#! /bin/sh + +../filter_stderr diff --git a/none/tests/loongarch64/float.c b/none/tests/loongarch64/float.c new file mode 100644 index 0000000..7aa1b6c --- /dev/null +++ b/none/tests/loongarch64/float.c @@ -0,0 +1,804 @@ +#include +#include + +#define NUM 24 + +const float fj_s[NUM] = { + 0, 456.25, 3, -1, + 1384.5, -7.25, 1000000000, -5786.5, + 1752, 0.015625, 0.03125, -248562.75, + -45786.5, 456, 34.03125, 45786.75, + 1752065, 107, -45667.25, -7, + -347856.5, 356047.5, -1.0, 23.0625 +}; + +const double fj_d[NUM] = { + 0, 456.25, 3, -1, + 1384.5, -7.25, 1000000000, -5786.5, + 1752, 0.015625, 0.03125, -248562.75, + -45786.5, 456, 34.03125, 45786.75, + 1752065, 107, -45667.25, -7, + -347856.5, 356047.5, -1.0, 23.0625 +}; + +const float fk_s[NUM] = { + -4578.5, 456.25, 34.03125, 4578.75, + 175, 107, -456.25, -7.25, + -3478.5, 356.5, -1.0, 23.0625, + 0, 456.25, 3, -1, + 1384.5, -7, 100, -5786.5, + 1752, 0.015625, 0.03125, -248562.75 +}; + +const double fk_d[NUM] = { + -45786.5, 456.25, 34.03125, 45786.75, + 1752065, 107, -45667.25, -7.25, + -347856.5, 356047.5, -1.0, 23.0625, + 0, 456.25, 3, -1, + 1384.5, -7, 1000000000, -5786.5, + 1752, 0.015625, 0.03125, -248562.75 +}; + +const float fa_s[NUM] = { + -347856.5, 356047.5, -1.0, 23.0625, + 1752, 0.015625, 0.03125, -248562.75, + 1384.5, -7.25, 1000000000, -5786.5, + -347856.75, 356047.75, -1.0, 23.03125, + 0, 456.25, 3, -1, + -45786.5, 456, 34.03125, 45786.03125 +}; + +const double fa_d[NUM] = { + -347856.5, 356047.5, -1.0, 23.0625, + 1752, 0.015625, 0.03125, -248562.75, + 1384.5, -7.25, 1000000000, -5786.5, + -347856.75, 356047.75, -1.0, 23.03125, + 0, 456.25, 3, -1, + -45786.5, 456, 34.03125, 45786.03125 +}; + +const int fj_w[NUM] = { + 0, 456, 3, -1, + 0xffffffff, 356, 1000000000, -5786, + 1752, 24575, 10, -248562, + -45786, 456, 34, 45786, + 1752065, 107, -45667, -7, + -347856, 0x80000000, 0xfffffff, 23 +}; + +const long fj_l[NUM] = { + 18, 25, 3, -1, + 0xffffffff, 356, 1000000, -5786, + -1, 24575, 10, -125458, + -486, 456, 34, 45786, + 0, 1700000, -45667, -7, + -347856, 0x80000000, 0xfffffff, 23 +}; + +const int cf[NUM] = { + 0, 1, 0, 1, + 1, 0, 1, 0, + 0, 0, 1, 1, + 1, 1, 0, 0, + 0, 0, 0, 0, + 1, 1, 1, 1 +}; + +typedef enum { + TO_NEAREST = 0, + TO_ZERO, + TO_PLUS_INFINITY, + TO_MINUS_INFINITY +} round_mode_t; + +typedef enum { + FADD_S, FADD_D, FSUB_S, FSUB_D, + FMUL_S, FMUL_D, FDIV_S, FDIV_D, + FMADD_S, FMADD_D, FMSUB_S, FMSUB_D, + FNMADD_S, FNMADD_D, FNMSUB_S, FNMSUB_D, + FMAX_S, FMAX_D, FMIN_S, FMIN_D, + FMAXA_S, FMAXA_D, FMINA_S, FMINA_D, + FABS_S, FABS_D, FNEG_S, FNEG_D, + FSQRT_S, FSQRT_D, + FRECIP_S, FRECIP_D, + FRSQRT_S, FRSQRT_D, + FSCALEB_S, FSCALEB_D, + FLOGB_S, FLOGB_D, + FCVT_S_D, FCVT_D_S, + FTINTRM_W_S, FTINTRM_W_D, FTINTRM_L_S, FTINTRM_L_D, + FTINTRP_W_S, FTINTRP_W_D, FTINTRP_L_S, FTINTRP_L_D, + FTINTRZ_W_S, FTINTRZ_W_D, FTINTRZ_L_S, FTINTRZ_L_D, + FTINTRNE_W_S, FTINTRNE_W_D, FTINTRNE_L_S, FTINTRNE_L_D, + FTINT_W_S, FTINT_W_D, FTINT_L_S, FTINT_L_D, + FFINT_S_W, FFINT_S_L, FFINT_D_W, FFINT_D_L, + FRINT_S, FRINT_D, + FCMP_CAF_S, FCMP_CAF_D, FCMP_SAF_S, FCMP_SAF_D, + FCMP_CLT_S, FCMP_CLT_D, FCMP_SLT_S, FCMP_SLT_D, + FCMP_CEQ_S, FCMP_CEQ_D, FCMP_SEQ_S, FCMP_SEQ_D, + FCMP_CLE_S, FCMP_CLE_D, FCMP_SLE_S, FCMP_SLE_D, + FCMP_CUN_S, FCMP_CUN_D, FCMP_SUN_S, FCMP_SUN_D, + FCMP_CULT_S, FCMP_CULT_D, FCMP_SULT_S, FCMP_SULT_D, + FCMP_CUEQ_S, FCMP_CUEQ_D, FCMP_SUEQ_S, FCMP_SUEQ_D, + FCMP_CULE_S, FCMP_CULE_D, FCMP_SULE_S, FCMP_SULE_D, + FCMP_CNE_S, FCMP_CNE_D, FCMP_SNE_S, FCMP_SNE_D, + FCMP_COR_S, FCMP_COR_D, FCMP_SOR_S, FCMP_SOR_D, + FCMP_CUNE_S, FCMP_CUNE_D, FCMP_SUNE_S, FCMP_SUNE_D, + FSEL, FMOV_S, FMOV_D +} op_t; + +static inline void set_fcsr(round_mode_t mode) +{ + __asm__ __volatile__("movgr2fcsr $r0, %0" : : "r" (mode << 8)); + + const char *round_mode_name[] = { "near", "zero", "+inf", "-inf" }; + printf("roundig mode: %s\n", round_mode_name[mode]); +} + +#define TESTINST_FF_S(insn, v1) \ + { \ + unsigned int fcsr; \ + float fd_s; \ + __asm__ __volatile__( \ + insn " %0, %2 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=f" (fd_s), "=r" (fcsr) \ + : "f" (v1) \ + : "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %.6f\n", v1); \ + printf("output: %.6f\n", fd_s); \ + printf("fcsr: %#x\n", fcsr); \ + } + +#define TESTINST_FF_D(insn, v1) \ + { \ + unsigned int fcsr; \ + double fd_d; \ + __asm__ __volatile__( \ + insn " %0, %2 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=f" (fd_d), "=r" (fcsr) \ + : "f" (v1) \ + : "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %.15f\n", v1); \ + printf("output: %.15f\n", fd_d); \ + printf("fcsr: %#x\n", fcsr); \ + } + +#define TESTINST_FFF_S(insn, v1, v2) \ + { \ + unsigned int fcsr; \ + float fd_s; \ + __asm__ __volatile__( \ + insn " %0, %2, %3 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=f" (fd_s), "=r" (fcsr) \ + : "f" (v1), "f" (v2) \ + : "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %.6f %.6f\n", v1, v2); \ + printf("output: %.6f\n", fd_s); \ + printf("fcsr: %#x\n", fcsr); \ + } + +#define TESTINST_FFF_D(insn, v1, v2) \ + { \ + unsigned int fcsr; \ + double fd_s; \ + __asm__ __volatile__( \ + insn " %0, %2, %3 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=f" (fd_s), "=r" (fcsr) \ + : "f" (v1), "f" (v2) \ + : "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %.15f %.15f\n", v1, v2); \ + printf("output: %.15f\n", fd_s); \ + printf("fcsr: %#x\n", fcsr); \ + } + +#define TESTINST_FFFF_S(insn, v1, v2, v3) \ + { \ + unsigned int fcsr; \ + float fd_s; \ + __asm__ __volatile__( \ + insn " %0, %2, %3, %4 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=f" (fd_s), "=r" (fcsr) \ + : "f" (v1), "f" (v2), "f" (v3) \ + : "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %.6f %.6f %.6f\n", v1, v2, v3); \ + printf("output: %.6f\n", fd_s); \ + printf("fcsr: %#x\n", fcsr); \ + } + +#define TESTINST_FFFF_D(insn, v1, v2, v3) \ + { \ + unsigned int fcsr; \ + double fd_s; \ + __asm__ __volatile__( \ + insn " %0, %2, %3, %4 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=f" (fd_s), "=r" (fcsr) \ + : "f" (v1), "f" (v2), "f" (v3) \ + : "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %.15f %.15f %.15f\n", v1, v2, v3); \ + printf("output: %.15f\n", fd_s); \ + printf("fcsr: %#x\n", fcsr); \ + } + +#define TESTINST_FF_S_D(insn, v1) \ + { \ + unsigned int fcsr; \ + float fd_s; \ + __asm__ __volatile__( \ + insn " %0, %2 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=f" (fd_s), "=r" (fcsr) \ + : "f" (v1) \ + : "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %.15f\n", v1); \ + printf("output: %.6f\n", fd_s); \ + printf("fcsr: %#x\n", fcsr); \ + } + +#define TESTINST_FF_D_S(insn, v1) \ + { \ + unsigned int fcsr; \ + double fd_d; \ + __asm__ __volatile__( \ + insn " %0, %2 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=f" (fd_d), "=r" (fcsr) \ + : "f" (v1) \ + : "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %.6f\n", v1); \ + printf("output: %.15f\n", fd_d); \ + printf("fcsr: %#x\n", fcsr); \ + } + +#define TESTINST_FF_W_S(insn, v1) \ + { \ + unsigned int fcsr; \ + int fd_w; \ + __asm__ __volatile__( \ + insn " %0, %2 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=f" (fd_w), "=r" (fcsr) \ + : "f" (v1) \ + : "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %.6f\n", v1); \ + printf("output: %d\n", fd_w); \ + printf("fcsr: %#x\n", fcsr); \ + } + +#define TESTINST_FF_W_D(insn, v1) \ + { \ + unsigned int fcsr; \ + int fd_w; \ + __asm__ __volatile__( \ + insn " %0, %2 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=f" (fd_w), "=r" (fcsr) \ + : "f" (v1) \ + : "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %.15f\n", v1); \ + printf("output: %d\n", fd_w); \ + printf("fcsr: %#x\n", fcsr); \ + } +#define TESTINST_FF_L_S(insn, v1) \ + { \ + unsigned int fcsr; \ + long fd_l; \ + __asm__ __volatile__( \ + insn " %0, %2 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=f" (fd_l), "=r" (fcsr) \ + : "f" (v1) \ + : "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %.6f\n", v1); \ + printf("output: %ld\n", fd_l); \ + printf("fcsr: %#x\n", fcsr); \ + } + +#define TESTINST_FF_L_D(insn, v1) \ + { \ + unsigned int fcsr; \ + long fd_l; \ + __asm__ __volatile__( \ + insn " %0, %2 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=f" (fd_l), "=r" (fcsr) \ + : "f" (v1) \ + : "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %.15f\n", v1); \ + printf("output: %ld\n", fd_l); \ + printf("fcsr: %#x\n", fcsr); \ + } + +#define TESTINST_FF_S_W(insn, v1) \ + { \ + unsigned int fcsr; \ + float fd_s; \ + __asm__ __volatile__( \ + insn " %0, %2 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=f" (fd_s), "=r" (fcsr) \ + : "f" (v1) \ + : "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %d\n", v1); \ + printf("output: %.6f\n", fd_s); \ + printf("fcsr: %#x\n", fcsr); \ + } + +#define TESTINST_FF_S_L(insn, v1) \ + { \ + unsigned int fcsr; \ + float fd_s; \ + __asm__ __volatile__( \ + insn " %0, %2 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=f" (fd_s), "=r" (fcsr) \ + : "f" (v1) \ + : "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %ld\n", v1); \ + printf("output: %.6f\n", fd_s); \ + printf("fcsr: %#x\n", fcsr); \ + } + +#define TESTINST_FF_D_W(insn, v1) \ + { \ + unsigned int fcsr; \ + double fd_d; \ + __asm__ __volatile__( \ + insn " %0, %2 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=f" (fd_d), "=r" (fcsr) \ + : "f" (v1) \ + : "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %d\n", v1); \ + printf("output: %.15f\n", fd_d); \ + printf("fcsr: %#x\n", fcsr); \ + } + +#define TESTINST_FF_D_L(insn, v1) \ + { \ + unsigned int fcsr; \ + double fd_d; \ + __asm__ __volatile__( \ + insn " %0, %2 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=f" (fd_d), "=r" (fcsr) \ + : "f" (v1) \ + : "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %ld\n", v1); \ + printf("output: %.15f\n", fd_d); \ + printf("fcsr: %#x\n", fcsr); \ + } + +#define TESTINST_FFC_S(insn, v1, v2) \ + { \ + unsigned int fcsr; \ + int fcc; \ + __asm__ __volatile__( \ + insn " $fcc0, %2, %3 \n\t" \ + "movcf2gr %0, $fcc0 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=r" (fcc), "=r" (fcsr) \ + : "f" (v1), "f" (v2) \ + : "$fcc0", "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %.6f %.6f\n", v1, v2); \ + printf("output: %d\n", fcc); \ + printf("fcsr: %#x\n", fcsr); \ + } + +#define TESTINST_FFC_D(insn, v1, v2) \ + { \ + unsigned int fcsr; \ + int fcc; \ + __asm__ __volatile__( \ + insn " $fcc0, %2, %3 \n\t" \ + "movcf2gr %0, $fcc0 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=r" (fcc), "=r" (fcsr) \ + : "f" (v1), "f" (v2) \ + : "$fcc0", "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %.15f %.15f\n", v1, v2); \ + printf("output: %d\n", fcc); \ + printf("fcsr: %#x\n", fcsr); \ + } + +#define TESTINST_FFFC(insn, v1, v2, v3) \ + { \ + unsigned int fcsr; \ + double fd_s; \ + __asm__ __volatile__( \ + "movgr2cf $fcc0, %4 \n\t" \ + insn " %0, %2, %3, $fcc0 \n\t" \ + "movfcsr2gr %1, $r0 \n\t" \ + : "=f" (fd_s), "=r" (fcsr) \ + : "f" (v1), "f" (v2), "r" (v3) \ + : "memory"); \ + printf("%s ::\n", insn); \ + printf("input: %.15f %.15f %d\n", v1, v2, v3); \ + printf("output: %.15f\n", fd_s); \ + printf("fcsr: %#x\n", fcsr); \ + } + +void test(op_t op) +{ + int i; + round_mode_t mode; + for (mode = TO_NEAREST; mode <= TO_MINUS_INFINITY; mode++) { + for (i = 0; i < NUM; i++) { + set_fcsr(mode); + switch (op) { + case FADD_S: + TESTINST_FFF_S("fadd.s", fj_s[i], fk_s[i]); + break; + case FADD_D: + TESTINST_FFF_D("fadd.d", fj_d[i], fk_d[i]); + break; + case FSUB_S: + TESTINST_FFF_S("fsub.s", fj_s[i], fk_s[i]); + break; + case FSUB_D: + TESTINST_FFF_D("fsub.d", fj_d[i], fk_d[i]); + break; + case FMUL_S: + TESTINST_FFF_S("fmul.s", fj_s[i], fk_s[i]); + break; + case FMUL_D: + TESTINST_FFF_D("fmul.d", fj_d[i], fk_d[i]); + break; + case FDIV_S: + TESTINST_FFF_S("fdiv.s", fj_s[i], fk_s[i]); + break; + case FDIV_D: + TESTINST_FFF_D("fdiv.d", fj_d[i], fk_d[i]); + break; + case FMADD_S: + TESTINST_FFFF_S("fmadd.s", fj_s[i], fk_s[i], fa_s[i]); + break; + case FMADD_D: + TESTINST_FFFF_D("fmadd.d", fj_d[i], fk_d[i], fa_d[i]); + break; + case FMSUB_S: + TESTINST_FFFF_S("fmsub.s", fj_s[i], fk_s[i], fa_s[i]); + break; + case FMSUB_D: + TESTINST_FFFF_D("fmsub.d", fj_d[i], fk_d[i], fa_d[i]); + break; + case FNMADD_S: + TESTINST_FFFF_S("fnmadd.s", fj_s[i], fk_s[i], fa_s[i]); + break; + case FNMADD_D: + TESTINST_FFFF_D("fnmadd.d", fj_d[i], fk_d[i], fa_d[i]); + break; + case FNMSUB_S: + TESTINST_FFFF_S("fnmsub.s", fj_s[i], fk_s[i], fa_s[i]); + break; + case FNMSUB_D: + TESTINST_FFFF_D("fnmsub.d", fj_d[i], fk_d[i], fa_d[i]); + break; + case FMAX_S: + TESTINST_FFF_S("fmax.s", fj_s[i], fk_s[i]); + break; + case FMAX_D: + TESTINST_FFF_D("fmax.d", fj_d[i], fk_d[i]); + break; + case FMIN_S: + TESTINST_FFF_S("fmin.s", fj_s[i], fk_s[i]); + break; + case FMIN_D: + TESTINST_FFF_D("fmin.d", fj_d[i], fk_d[i]); + break; + case FMAXA_S: + TESTINST_FFF_S("fmaxa.s", fj_s[i], fk_s[i]); + break; + case FMAXA_D: + TESTINST_FFF_D("fmaxa.d", fj_d[i], fk_d[i]); + break; + case FMINA_S: + TESTINST_FFF_S("fmina.s", fj_s[i], fk_s[i]); + break; + case FMINA_D: + TESTINST_FFF_D("fmina.d", fj_d[i], fk_d[i]); + break; + case FABS_S: + TESTINST_FF_S("fabs.s", fj_s[i]); + break; + case FABS_D: + TESTINST_FF_D("fabs.d", fj_d[i]); + break; + case FNEG_S: + TESTINST_FF_S("fneg.s", fj_s[i]); + break; + case FNEG_D: + TESTINST_FF_D("fneg.d", fj_d[i]); + break; + case FSQRT_S: + TESTINST_FF_S("fsqrt.s", fj_s[i]); + break; + case FSQRT_D: + TESTINST_FF_D("fsqrt.d", fj_d[i]); + break; + case FRECIP_S: + TESTINST_FF_S("frecip.s", fj_s[i]); + break; + case FRECIP_D: + TESTINST_FF_D("frecip.d", fj_d[i]); + break; + case FRSQRT_S: + TESTINST_FF_S("frsqrt.s", fj_s[i]); + break; + case FRSQRT_D: + TESTINST_FF_D("frsqrt.d", fj_d[i]); + break; + case FSCALEB_S: + TESTINST_FFF_S("fscaleb.s", fj_s[i], fk_s[i]); + break; + case FSCALEB_D: + TESTINST_FFF_D("fscaleb.d", fj_d[i], fk_d[i]); + break; + case FLOGB_S: + TESTINST_FF_S("flogb.s", fj_s[i]); + break; + case FLOGB_D: + TESTINST_FF_D("flogb.d", fj_d[i]); + break; + case FCVT_S_D: + TESTINST_FF_S_D("fcvt.s.d", fj_d[i]); + break; + case FCVT_D_S: + TESTINST_FF_D_S("fcvt.d.s", fj_s[i]); + break; + case FTINTRM_W_S: + TESTINST_FF_W_S("ftintrm.w.s", fj_s[i]); + break; + case FTINTRM_W_D: + TESTINST_FF_W_D("ftintrm.w.d", fj_d[i]); + break; + case FTINTRM_L_S: + TESTINST_FF_L_S("ftintrm.l.s", fj_s[i]); + break; + case FTINTRM_L_D: + TESTINST_FF_L_D("ftintrm.l.d", fj_d[i]); + break; + case FTINTRP_W_S: + TESTINST_FF_W_S("ftintrp.w.s", fj_s[i]); + break; + case FTINTRP_W_D: + TESTINST_FF_W_D("ftintrp.w.d", fj_d[i]); + break; + case FTINTRP_L_S: + TESTINST_FF_L_S("ftintrp.l.s", fj_s[i]); + break; + case FTINTRP_L_D: + TESTINST_FF_L_D("ftintrp.l.d", fj_d[i]); + break; + case FTINTRZ_W_S: + TESTINST_FF_W_S("ftintrz.w.s", fj_s[i]); + break; + case FTINTRZ_W_D: + TESTINST_FF_W_D("ftintrz.w.d", fj_d[i]); + break; + case FTINTRZ_L_S: + TESTINST_FF_L_S("ftintrz.l.s", fj_s[i]); + break; + case FTINTRZ_L_D: + TESTINST_FF_L_D("ftintrz.l.d", fj_d[i]); + break; + case FTINTRNE_W_S: + TESTINST_FF_W_S("ftintrne.w.s", fj_s[i]); + break; + case FTINTRNE_W_D: + TESTINST_FF_W_D("ftintrne.w.d", fj_d[i]); + break; + case FTINTRNE_L_S: + TESTINST_FF_L_S("ftintrne.l.s", fj_s[i]); + break; + case FTINTRNE_L_D: + TESTINST_FF_L_D("ftintrne.l.d", fj_d[i]); + break; + case FTINT_W_S: + TESTINST_FF_W_S("ftint.w.s", fj_s[i]); + break; + case FTINT_W_D: + TESTINST_FF_W_D("ftint.w.d", fj_d[i]); + break; + case FTINT_L_S: + TESTINST_FF_L_S("ftint.l.s", fj_s[i]); + break; + case FTINT_L_D: + TESTINST_FF_L_D("ftint.l.d", fj_d[i]); + break; + case FFINT_S_W: + TESTINST_FF_S_W("ffint.s.w", fj_w[i]); + break; + case FFINT_S_L: + TESTINST_FF_S_L("ffint.s.l", fj_l[i]); + break; + case FFINT_D_W: + TESTINST_FF_D_W("ffint.d.w", fj_w[i]); + break; + case FFINT_D_L: + TESTINST_FF_D_L("ffint.d.l", fj_l[i]); + break; + case FRINT_S: + TESTINST_FF_S("frint.s", fj_s[i]); + break; + case FRINT_D: + TESTINST_FF_D("frint.d", fj_d[i]); + break; + case FCMP_CAF_S: + TESTINST_FFC_S("fcmp.caf.s", fj_s[i], fk_s[i]); + break; + case FCMP_CAF_D: + TESTINST_FFC_D("fcmp.caf.d", fj_d[i], fk_d[i]); + break; + case FCMP_SAF_S: + TESTINST_FFC_S("fcmp.saf.s", fj_s[i], fk_s[i]); + break; + case FCMP_SAF_D: + TESTINST_FFC_D("fcmp.saf.d", fj_d[i], fk_d[i]); + break; + case FCMP_CLT_S: + TESTINST_FFC_S("fcmp.clt.s", fj_s[i], fk_s[i]); + break; + case FCMP_CLT_D: + TESTINST_FFC_D("fcmp.clt.d", fj_d[i], fk_d[i]); + break; + case FCMP_SLT_S: + TESTINST_FFC_S("fcmp.slt.s", fj_s[i], fk_s[i]); + break; + case FCMP_SLT_D: + TESTINST_FFC_D("fcmp.slt.d", fj_d[i], fk_d[i]); + break; + case FCMP_CEQ_S: + TESTINST_FFC_S("fcmp.ceq.s", fj_s[i], fk_s[i]); + break; + case FCMP_CEQ_D: + TESTINST_FFC_D("fcmp.ceq.d", fj_d[i], fk_d[i]); + break; + case FCMP_SEQ_S: + TESTINST_FFC_S("fcmp.seq.s", fj_s[i], fk_s[i]); + break; + case FCMP_SEQ_D: + TESTINST_FFC_D("fcmp.seq.d", fj_d[i], fk_d[i]); + break; + case FCMP_CLE_S: + TESTINST_FFC_S("fcmp.cle.s", fj_s[i], fk_s[i]); + break; + case FCMP_CLE_D: + TESTINST_FFC_D("fcmp.cle.d", fj_d[i], fk_d[i]); + break; + case FCMP_SLE_S: + TESTINST_FFC_S("fcmp.sle.s", fj_s[i], fk_s[i]); + break; + case FCMP_SLE_D: + TESTINST_FFC_D("fcmp.sle.d", fj_d[i], fk_d[i]); + break; + case FCMP_CUN_S: + TESTINST_FFC_S("fcmp.cun.s", fj_s[i], fk_s[i]); + break; + case FCMP_CUN_D: + TESTINST_FFC_D("fcmp.cun.d", fj_d[i], fk_d[i]); + break; + case FCMP_SUN_S: + TESTINST_FFC_S("fcmp.sun.s", fj_s[i], fk_s[i]); + break; + case FCMP_SUN_D: + TESTINST_FFC_D("fcmp.sun.d", fj_d[i], fk_d[i]); + break; + case FCMP_CULT_S: + TESTINST_FFC_S("fcmp.cult.s", fj_s[i], fk_s[i]); + break; + case FCMP_CULT_D: + TESTINST_FFC_D("fcmp.cult.d", fj_d[i], fk_d[i]); + break; + case FCMP_SULT_S: + TESTINST_FFC_S("fcmp.sult.s", fj_s[i], fk_s[i]); + break; + case FCMP_SULT_D: + TESTINST_FFC_D("fcmp.sult.d", fj_d[i], fk_d[i]); + break; + case FCMP_CUEQ_S: + TESTINST_FFC_S("fcmp.cueq.s", fj_s[i], fk_s[i]); + break; + case FCMP_CUEQ_D: + TESTINST_FFC_D("fcmp.cueq.d", fj_d[i], fk_d[i]); + break; + case FCMP_SUEQ_S: + TESTINST_FFC_S("fcmp.sueq.s", fj_s[i], fk_s[i]); + break; + case FCMP_SUEQ_D: + TESTINST_FFC_D("fcmp.sueq.d", fj_d[i], fk_d[i]); + break; + case FCMP_CULE_S: + TESTINST_FFC_S("fcmp.cule.s", fj_s[i], fk_s[i]); + break; + case FCMP_CULE_D: + TESTINST_FFC_D("fcmp.cule.d", fj_d[i], fk_d[i]); + break; + case FCMP_SULE_S: + TESTINST_FFC_S("fcmp.sule.s", fj_s[i], fk_s[i]); + break; + case FCMP_SULE_D: + TESTINST_FFC_D("fcmp.sule.d", fj_d[i], fk_d[i]); + break; + case FCMP_CNE_S: + TESTINST_FFC_S("fcmp.cne.s", fj_s[i], fk_s[i]); + break; + case FCMP_CNE_D: + TESTINST_FFC_D("fcmp.cne.d", fj_d[i], fk_d[i]); + break; + case FCMP_SNE_S: + TESTINST_FFC_S("fcmp.sne.s", fj_s[i], fk_s[i]); + break; + case FCMP_SNE_D: + TESTINST_FFC_D("fcmp.sne.d", fj_d[i], fk_d[i]); + break; + case FCMP_COR_S: + TESTINST_FFC_S("fcmp.cor.s", fj_s[i], fk_s[i]); + break; + case FCMP_COR_D: + TESTINST_FFC_D("fcmp.cor.d", fj_d[i], fk_d[i]); + break; + case FCMP_SOR_S: + TESTINST_FFC_S("fcmp.sor.s", fj_s[i], fk_s[i]); + break; + case FCMP_SOR_D: + TESTINST_FFC_D("fcmp.sor.d", fj_d[i], fk_d[i]); + break; + case FCMP_CUNE_S: + TESTINST_FFC_S("fcmp.cune.s", fj_s[i], fk_s[i]); + break; + case FCMP_CUNE_D: + TESTINST_FFC_D("fcmp.cune.d", fj_d[i], fk_d[i]); + break; + case FCMP_SUNE_S: + TESTINST_FFC_S("fcmp.sune.s", fj_s[i], fk_s[i]); + break; + case FCMP_SUNE_D: + TESTINST_FFC_D("fcmp.sune.d", fj_d[i], fk_d[i]); + break; + case FSEL: + TESTINST_FFFC("fsel", fj_d[i], fk_d[i], cf[i]); + break; + case FMOV_S: + TESTINST_FF_S("fmov.s", fj_s[i]); + break; + case FMOV_D: + TESTINST_FF_D("fmov.d", fj_d[i]); + break; + default: + assert(0); + break; + } + } + } +} + +int main(void) +{ + op_t op; + for (op = FADD_S; op <= FMOV_D; op++) + test(op); + return 0; +} diff --git a/none/tests/loongarch64/float.stderr.exp b/none/tests/loongarch64/float.stderr.exp new file mode 100644 index 0000000..e69de29 diff --git a/none/tests/loongarch64/float.stdout.exp b/none/tests/loongarch64/float.stdout.exp new file mode 100644 index 0000000..f4914ff --- /dev/null +++ b/none/tests/loongarch64/float.stdout.exp @@ -0,0 +1,54240 @@ +roundig mode: near +fadd.s :: +input: 0.000000 -4578.500000 +output: -4578.500000 +fcsr: 0 +roundig mode: near +fadd.s :: +input: 456.250000 456.250000 +output: 912.500000 +fcsr: 0 +roundig mode: near +fadd.s :: +input: 3.000000 34.031250 +output: 37.031250 +fcsr: 0 +roundig mode: near +fadd.s :: +input: -1.000000 4578.750000 +output: 4577.750000 +fcsr: 0 +roundig mode: near +fadd.s :: +input: 1384.500000 175.000000 +output: 1559.500000 +fcsr: 0 +roundig mode: near +fadd.s :: +input: -7.250000 107.000000 +output: 99.750000 +fcsr: 0 +roundig mode: near +fadd.s :: +input: 1000000000.000000 -456.250000 +output: 999999552.000000 +fcsr: 0x1010000 +roundig mode: near +fadd.s :: +input: -5786.500000 -7.250000 +output: -5793.750000 +fcsr: 0 +roundig mode: near +fadd.s :: +input: 1752.000000 -3478.500000 +output: -1726.500000 +fcsr: 0 +roundig mode: near +fadd.s :: +input: 0.015625 356.500000 +output: 356.515625 +fcsr: 0 +roundig mode: near +fadd.s :: +input: 0.031250 -1.000000 +output: -0.968750 +fcsr: 0 +roundig mode: near +fadd.s :: +input: -248562.750000 23.062500 +output: -248539.687500 +fcsr: 0 +roundig mode: near +fadd.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0 +roundig mode: near +fadd.s :: +input: 456.000000 456.250000 +output: 912.250000 +fcsr: 0 +roundig mode: near +fadd.s :: +input: 34.031250 3.000000 +output: 37.031250 +fcsr: 0 +roundig mode: near +fadd.s :: +input: 45786.750000 -1.000000 +output: 45785.750000 +fcsr: 0 +roundig mode: near +fadd.s :: +input: 1752065.000000 1384.500000 +output: 1753449.500000 +fcsr: 0 +roundig mode: near +fadd.s :: +input: 107.000000 -7.000000 +output: 100.000000 +fcsr: 0 +roundig mode: near +fadd.s :: +input: -45667.250000 100.000000 +output: -45567.250000 +fcsr: 0 +roundig mode: near +fadd.s :: +input: -7.000000 -5786.500000 +output: -5793.500000 +fcsr: 0 +roundig mode: near +fadd.s :: +input: -347856.500000 1752.000000 +output: -346104.500000 +fcsr: 0 +roundig mode: near +fadd.s :: +input: 356047.500000 0.015625 +output: 356047.500000 +fcsr: 0x1010000 +roundig mode: near +fadd.s :: +input: -1.000000 0.031250 +output: -0.968750 +fcsr: 0 +roundig mode: near +fadd.s :: +input: 23.062500 -248562.750000 +output: -248539.687500 +fcsr: 0 +roundig mode: zero +fadd.s :: +input: 0.000000 -4578.500000 +output: -4578.500000 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: 456.250000 456.250000 +output: 912.500000 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: 3.000000 34.031250 +output: 37.031250 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: -1.000000 4578.750000 +output: 4577.750000 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: 1384.500000 175.000000 +output: 1559.500000 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: -7.250000 107.000000 +output: 99.750000 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: 1000000000.000000 -456.250000 +output: 999999488.000000 +fcsr: 0x1010100 +roundig mode: zero +fadd.s :: +input: -5786.500000 -7.250000 +output: -5793.750000 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: 1752.000000 -3478.500000 +output: -1726.500000 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: 0.015625 356.500000 +output: 356.515625 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: 0.031250 -1.000000 +output: -0.968750 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: -248562.750000 23.062500 +output: -248539.687500 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: 456.000000 456.250000 +output: 912.250000 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: 34.031250 3.000000 +output: 37.031250 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: 45786.750000 -1.000000 +output: 45785.750000 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: 1752065.000000 1384.500000 +output: 1753449.500000 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: 107.000000 -7.000000 +output: 100.000000 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: -45667.250000 100.000000 +output: -45567.250000 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: -7.000000 -5786.500000 +output: -5793.500000 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: -347856.500000 1752.000000 +output: -346104.500000 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: 356047.500000 0.015625 +output: 356047.500000 +fcsr: 0x1010100 +roundig mode: zero +fadd.s :: +input: -1.000000 0.031250 +output: -0.968750 +fcsr: 0x100 +roundig mode: zero +fadd.s :: +input: 23.062500 -248562.750000 +output: -248539.687500 +fcsr: 0x100 +roundig mode: +inf +fadd.s :: +input: 0.000000 -4578.500000 +output: -4578.500000 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: 456.250000 456.250000 +output: 912.500000 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: 3.000000 34.031250 +output: 37.031250 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: -1.000000 4578.750000 +output: 4577.750000 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: 1384.500000 175.000000 +output: 1559.500000 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: -7.250000 107.000000 +output: 99.750000 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: 1000000000.000000 -456.250000 +output: 999999552.000000 +fcsr: 0x1010200 +roundig mode: +inf +fadd.s :: +input: -5786.500000 -7.250000 +output: -5793.750000 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: 1752.000000 -3478.500000 +output: -1726.500000 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: 0.015625 356.500000 +output: 356.515625 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: 0.031250 -1.000000 +output: -0.968750 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: -248562.750000 23.062500 +output: -248539.687500 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: 456.000000 456.250000 +output: 912.250000 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: 34.031250 3.000000 +output: 37.031250 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: 45786.750000 -1.000000 +output: 45785.750000 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: 1752065.000000 1384.500000 +output: 1753449.500000 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: 107.000000 -7.000000 +output: 100.000000 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: -45667.250000 100.000000 +output: -45567.250000 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: -7.000000 -5786.500000 +output: -5793.500000 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: -347856.500000 1752.000000 +output: -346104.500000 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: 356047.500000 0.015625 +output: 356047.531250 +fcsr: 0x1010200 +roundig mode: +inf +fadd.s :: +input: -1.000000 0.031250 +output: -0.968750 +fcsr: 0x200 +roundig mode: +inf +fadd.s :: +input: 23.062500 -248562.750000 +output: -248539.687500 +fcsr: 0x200 +roundig mode: -inf +fadd.s :: +input: 0.000000 -4578.500000 +output: -4578.500000 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: 456.250000 456.250000 +output: 912.500000 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: 3.000000 34.031250 +output: 37.031250 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: -1.000000 4578.750000 +output: 4577.750000 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: 1384.500000 175.000000 +output: 1559.500000 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: -7.250000 107.000000 +output: 99.750000 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: 1000000000.000000 -456.250000 +output: 999999488.000000 +fcsr: 0x1010300 +roundig mode: -inf +fadd.s :: +input: -5786.500000 -7.250000 +output: -5793.750000 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: 1752.000000 -3478.500000 +output: -1726.500000 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: 0.015625 356.500000 +output: 356.515625 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: 0.031250 -1.000000 +output: -0.968750 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: -248562.750000 23.062500 +output: -248539.687500 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: 456.000000 456.250000 +output: 912.250000 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: 34.031250 3.000000 +output: 37.031250 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: 45786.750000 -1.000000 +output: 45785.750000 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: 1752065.000000 1384.500000 +output: 1753449.500000 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: 107.000000 -7.000000 +output: 100.000000 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: -45667.250000 100.000000 +output: -45567.250000 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: -7.000000 -5786.500000 +output: -5793.500000 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: -347856.500000 1752.000000 +output: -346104.500000 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: 356047.500000 0.015625 +output: 356047.500000 +fcsr: 0x1010300 +roundig mode: -inf +fadd.s :: +input: -1.000000 0.031250 +output: -0.968750 +fcsr: 0x300 +roundig mode: -inf +fadd.s :: +input: 23.062500 -248562.750000 +output: -248539.687500 +fcsr: 0x300 +roundig mode: near +fadd.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -45786.500000000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: 456.250000000000000 456.250000000000000 +output: 912.500000000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: 3.000000000000000 34.031250000000000 +output: 37.031250000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: -1.000000000000000 45786.750000000000000 +output: 45785.750000000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1753449.500000000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: -7.250000000000000 107.000000000000000 +output: 99.750000000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 999954332.750000000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -5793.750000000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -346104.500000000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: 0.015625000000000 356047.500000000000000 +output: 356047.515625000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: 0.031250000000000 -1.000000000000000 +output: -0.968750000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: -248562.750000000000000 23.062500000000000 +output: -248539.687500000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: 456.000000000000000 456.250000000000000 +output: 912.250000000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: 34.031250000000000 3.000000000000000 +output: 37.031250000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 45785.750000000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1753449.500000000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: 107.000000000000000 -7.000000000000000 +output: 100.000000000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 999954332.750000000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -5793.500000000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -346104.500000000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: 356047.500000000000000 0.015625000000000 +output: 356047.515625000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: -1.000000000000000 0.031250000000000 +output: -0.968750000000000 +fcsr: 0 +roundig mode: near +fadd.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -248539.687500000000000 +fcsr: 0 +roundig mode: zero +fadd.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -45786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: 456.250000000000000 456.250000000000000 +output: 912.500000000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: 3.000000000000000 34.031250000000000 +output: 37.031250000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: -1.000000000000000 45786.750000000000000 +output: 45785.750000000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1753449.500000000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: -7.250000000000000 107.000000000000000 +output: 99.750000000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 999954332.750000000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -5793.750000000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -346104.500000000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: 0.015625000000000 356047.500000000000000 +output: 356047.515625000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: 0.031250000000000 -1.000000000000000 +output: -0.968750000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: -248562.750000000000000 23.062500000000000 +output: -248539.687500000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: 456.000000000000000 456.250000000000000 +output: 912.250000000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: 34.031250000000000 3.000000000000000 +output: 37.031250000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 45785.750000000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1753449.500000000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: 107.000000000000000 -7.000000000000000 +output: 100.000000000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 999954332.750000000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -5793.500000000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -346104.500000000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: 356047.500000000000000 0.015625000000000 +output: 356047.515625000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: -1.000000000000000 0.031250000000000 +output: -0.968750000000000 +fcsr: 0x100 +roundig mode: zero +fadd.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -248539.687500000000000 +fcsr: 0x100 +roundig mode: +inf +fadd.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -45786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: 456.250000000000000 456.250000000000000 +output: 912.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: 3.000000000000000 34.031250000000000 +output: 37.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: -1.000000000000000 45786.750000000000000 +output: 45785.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1753449.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: -7.250000000000000 107.000000000000000 +output: 99.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 999954332.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -5793.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -346104.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: 0.015625000000000 356047.500000000000000 +output: 356047.515625000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: 0.031250000000000 -1.000000000000000 +output: -0.968750000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: -248562.750000000000000 23.062500000000000 +output: -248539.687500000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: 456.000000000000000 456.250000000000000 +output: 912.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: 34.031250000000000 3.000000000000000 +output: 37.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 45785.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1753449.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: 107.000000000000000 -7.000000000000000 +output: 100.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 999954332.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -5793.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -346104.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: 356047.500000000000000 0.015625000000000 +output: 356047.515625000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: -1.000000000000000 0.031250000000000 +output: -0.968750000000000 +fcsr: 0x200 +roundig mode: +inf +fadd.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -248539.687500000000000 +fcsr: 0x200 +roundig mode: -inf +fadd.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -45786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: 456.250000000000000 456.250000000000000 +output: 912.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: 3.000000000000000 34.031250000000000 +output: 37.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: -1.000000000000000 45786.750000000000000 +output: 45785.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1753449.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: -7.250000000000000 107.000000000000000 +output: 99.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 999954332.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -5793.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -346104.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: 0.015625000000000 356047.500000000000000 +output: 356047.515625000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: 0.031250000000000 -1.000000000000000 +output: -0.968750000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: -248562.750000000000000 23.062500000000000 +output: -248539.687500000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: 456.000000000000000 456.250000000000000 +output: 912.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: 34.031250000000000 3.000000000000000 +output: 37.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 45785.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1753449.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: 107.000000000000000 -7.000000000000000 +output: 100.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 999954332.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -5793.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -346104.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: 356047.500000000000000 0.015625000000000 +output: 356047.515625000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: -1.000000000000000 0.031250000000000 +output: -0.968750000000000 +fcsr: 0x300 +roundig mode: -inf +fadd.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -248539.687500000000000 +fcsr: 0x300 +roundig mode: near +fsub.s :: +input: 0.000000 -4578.500000 +output: 4578.500000 +fcsr: 0 +roundig mode: near +fsub.s :: +input: 456.250000 456.250000 +output: 0.000000 +fcsr: 0 +roundig mode: near +fsub.s :: +input: 3.000000 34.031250 +output: -31.031250 +fcsr: 0 +roundig mode: near +fsub.s :: +input: -1.000000 4578.750000 +output: -4579.750000 +fcsr: 0 +roundig mode: near +fsub.s :: +input: 1384.500000 175.000000 +output: 1209.500000 +fcsr: 0 +roundig mode: near +fsub.s :: +input: -7.250000 107.000000 +output: -114.250000 +fcsr: 0 +roundig mode: near +fsub.s :: +input: 1000000000.000000 -456.250000 +output: 1000000448.000000 +fcsr: 0x1010000 +roundig mode: near +fsub.s :: +input: -5786.500000 -7.250000 +output: -5779.250000 +fcsr: 0 +roundig mode: near +fsub.s :: +input: 1752.000000 -3478.500000 +output: 5230.500000 +fcsr: 0 +roundig mode: near +fsub.s :: +input: 0.015625 356.500000 +output: -356.484375 +fcsr: 0 +roundig mode: near +fsub.s :: +input: 0.031250 -1.000000 +output: 1.031250 +fcsr: 0 +roundig mode: near +fsub.s :: +input: -248562.750000 23.062500 +output: -248585.812500 +fcsr: 0 +roundig mode: near +fsub.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0 +roundig mode: near +fsub.s :: +input: 456.000000 456.250000 +output: -0.250000 +fcsr: 0 +roundig mode: near +fsub.s :: +input: 34.031250 3.000000 +output: 31.031250 +fcsr: 0 +roundig mode: near +fsub.s :: +input: 45786.750000 -1.000000 +output: 45787.750000 +fcsr: 0 +roundig mode: near +fsub.s :: +input: 1752065.000000 1384.500000 +output: 1750680.500000 +fcsr: 0 +roundig mode: near +fsub.s :: +input: 107.000000 -7.000000 +output: 114.000000 +fcsr: 0 +roundig mode: near +fsub.s :: +input: -45667.250000 100.000000 +output: -45767.250000 +fcsr: 0 +roundig mode: near +fsub.s :: +input: -7.000000 -5786.500000 +output: 5779.500000 +fcsr: 0 +roundig mode: near +fsub.s :: +input: -347856.500000 1752.000000 +output: -349608.500000 +fcsr: 0 +roundig mode: near +fsub.s :: +input: 356047.500000 0.015625 +output: 356047.500000 +fcsr: 0x1010000 +roundig mode: near +fsub.s :: +input: -1.000000 0.031250 +output: -1.031250 +fcsr: 0 +roundig mode: near +fsub.s :: +input: 23.062500 -248562.750000 +output: 248585.812500 +fcsr: 0 +roundig mode: zero +fsub.s :: +input: 0.000000 -4578.500000 +output: 4578.500000 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: 456.250000 456.250000 +output: 0.000000 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: 3.000000 34.031250 +output: -31.031250 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: -1.000000 4578.750000 +output: -4579.750000 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: 1384.500000 175.000000 +output: 1209.500000 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: -7.250000 107.000000 +output: -114.250000 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: 1000000000.000000 -456.250000 +output: 1000000448.000000 +fcsr: 0x1010100 +roundig mode: zero +fsub.s :: +input: -5786.500000 -7.250000 +output: -5779.250000 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: 1752.000000 -3478.500000 +output: 5230.500000 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: 0.015625 356.500000 +output: -356.484375 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: 0.031250 -1.000000 +output: 1.031250 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: -248562.750000 23.062500 +output: -248585.812500 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: 456.000000 456.250000 +output: -0.250000 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: 34.031250 3.000000 +output: 31.031250 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: 45786.750000 -1.000000 +output: 45787.750000 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: 1752065.000000 1384.500000 +output: 1750680.500000 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: 107.000000 -7.000000 +output: 114.000000 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: -45667.250000 100.000000 +output: -45767.250000 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: -7.000000 -5786.500000 +output: 5779.500000 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: -347856.500000 1752.000000 +output: -349608.500000 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: 356047.500000 0.015625 +output: 356047.468750 +fcsr: 0x1010100 +roundig mode: zero +fsub.s :: +input: -1.000000 0.031250 +output: -1.031250 +fcsr: 0x100 +roundig mode: zero +fsub.s :: +input: 23.062500 -248562.750000 +output: 248585.812500 +fcsr: 0x100 +roundig mode: +inf +fsub.s :: +input: 0.000000 -4578.500000 +output: 4578.500000 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: 456.250000 456.250000 +output: 0.000000 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: 3.000000 34.031250 +output: -31.031250 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: -1.000000 4578.750000 +output: -4579.750000 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: 1384.500000 175.000000 +output: 1209.500000 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: -7.250000 107.000000 +output: -114.250000 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: 1000000000.000000 -456.250000 +output: 1000000512.000000 +fcsr: 0x1010200 +roundig mode: +inf +fsub.s :: +input: -5786.500000 -7.250000 +output: -5779.250000 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: 1752.000000 -3478.500000 +output: 5230.500000 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: 0.015625 356.500000 +output: -356.484375 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: 0.031250 -1.000000 +output: 1.031250 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: -248562.750000 23.062500 +output: -248585.812500 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: 456.000000 456.250000 +output: -0.250000 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: 34.031250 3.000000 +output: 31.031250 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: 45786.750000 -1.000000 +output: 45787.750000 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: 1752065.000000 1384.500000 +output: 1750680.500000 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: 107.000000 -7.000000 +output: 114.000000 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: -45667.250000 100.000000 +output: -45767.250000 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: -7.000000 -5786.500000 +output: 5779.500000 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: -347856.500000 1752.000000 +output: -349608.500000 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: 356047.500000 0.015625 +output: 356047.500000 +fcsr: 0x1010200 +roundig mode: +inf +fsub.s :: +input: -1.000000 0.031250 +output: -1.031250 +fcsr: 0x200 +roundig mode: +inf +fsub.s :: +input: 23.062500 -248562.750000 +output: 248585.812500 +fcsr: 0x200 +roundig mode: -inf +fsub.s :: +input: 0.000000 -4578.500000 +output: 4578.500000 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: 456.250000 456.250000 +output: -0.000000 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: 3.000000 34.031250 +output: -31.031250 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: -1.000000 4578.750000 +output: -4579.750000 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: 1384.500000 175.000000 +output: 1209.500000 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: -7.250000 107.000000 +output: -114.250000 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: 1000000000.000000 -456.250000 +output: 1000000448.000000 +fcsr: 0x1010300 +roundig mode: -inf +fsub.s :: +input: -5786.500000 -7.250000 +output: -5779.250000 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: 1752.000000 -3478.500000 +output: 5230.500000 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: 0.015625 356.500000 +output: -356.484375 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: 0.031250 -1.000000 +output: 1.031250 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: -248562.750000 23.062500 +output: -248585.812500 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: 456.000000 456.250000 +output: -0.250000 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: 34.031250 3.000000 +output: 31.031250 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: 45786.750000 -1.000000 +output: 45787.750000 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: 1752065.000000 1384.500000 +output: 1750680.500000 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: 107.000000 -7.000000 +output: 114.000000 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: -45667.250000 100.000000 +output: -45767.250000 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: -7.000000 -5786.500000 +output: 5779.500000 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: -347856.500000 1752.000000 +output: -349608.500000 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: 356047.500000 0.015625 +output: 356047.468750 +fcsr: 0x1010300 +roundig mode: -inf +fsub.s :: +input: -1.000000 0.031250 +output: -1.031250 +fcsr: 0x300 +roundig mode: -inf +fsub.s :: +input: 23.062500 -248562.750000 +output: 248585.812500 +fcsr: 0x300 +roundig mode: near +fsub.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 45786.500000000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: 456.250000000000000 456.250000000000000 +output: 0.000000000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: 3.000000000000000 34.031250000000000 +output: -31.031250000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: -1.000000000000000 45786.750000000000000 +output: -45787.750000000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: -1750680.500000000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: -7.250000000000000 107.000000000000000 +output: -114.250000000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1000045667.250000000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -5779.250000000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 349608.500000000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: 0.015625000000000 356047.500000000000000 +output: -356047.484375000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1.031250000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: -248562.750000000000000 23.062500000000000 +output: -248585.812500000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: 456.000000000000000 456.250000000000000 +output: -0.250000000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: 34.031250000000000 3.000000000000000 +output: 31.031250000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 45787.750000000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1750680.500000000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: 107.000000000000000 -7.000000000000000 +output: 114.000000000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -1000045667.250000000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 5779.500000000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -349608.500000000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: 356047.500000000000000 0.015625000000000 +output: 356047.484375000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: -1.000000000000000 0.031250000000000 +output: -1.031250000000000 +fcsr: 0 +roundig mode: near +fsub.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 248585.812500000000000 +fcsr: 0 +roundig mode: zero +fsub.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 45786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: 456.250000000000000 456.250000000000000 +output: 0.000000000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: 3.000000000000000 34.031250000000000 +output: -31.031250000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: -1.000000000000000 45786.750000000000000 +output: -45787.750000000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: -1750680.500000000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: -7.250000000000000 107.000000000000000 +output: -114.250000000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1000045667.250000000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -5779.250000000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 349608.500000000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: 0.015625000000000 356047.500000000000000 +output: -356047.484375000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1.031250000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: -248562.750000000000000 23.062500000000000 +output: -248585.812500000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: 456.000000000000000 456.250000000000000 +output: -0.250000000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: 34.031250000000000 3.000000000000000 +output: 31.031250000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 45787.750000000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1750680.500000000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: 107.000000000000000 -7.000000000000000 +output: 114.000000000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -1000045667.250000000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 5779.500000000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -349608.500000000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: 356047.500000000000000 0.015625000000000 +output: 356047.484375000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: -1.000000000000000 0.031250000000000 +output: -1.031250000000000 +fcsr: 0x100 +roundig mode: zero +fsub.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 248585.812500000000000 +fcsr: 0x100 +roundig mode: +inf +fsub.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 45786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: 456.250000000000000 456.250000000000000 +output: 0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: 3.000000000000000 34.031250000000000 +output: -31.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: -1.000000000000000 45786.750000000000000 +output: -45787.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: -1750680.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: -7.250000000000000 107.000000000000000 +output: -114.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1000045667.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -5779.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 349608.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: 0.015625000000000 356047.500000000000000 +output: -356047.484375000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: -248562.750000000000000 23.062500000000000 +output: -248585.812500000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: 456.000000000000000 456.250000000000000 +output: -0.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: 34.031250000000000 3.000000000000000 +output: 31.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 45787.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1750680.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: 107.000000000000000 -7.000000000000000 +output: 114.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -1000045667.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 5779.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -349608.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: 356047.500000000000000 0.015625000000000 +output: 356047.484375000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: -1.000000000000000 0.031250000000000 +output: -1.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fsub.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 248585.812500000000000 +fcsr: 0x200 +roundig mode: -inf +fsub.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 45786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: 456.250000000000000 456.250000000000000 +output: -0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: 3.000000000000000 34.031250000000000 +output: -31.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: -1.000000000000000 45786.750000000000000 +output: -45787.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: -1750680.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: -7.250000000000000 107.000000000000000 +output: -114.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1000045667.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -5779.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 349608.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: 0.015625000000000 356047.500000000000000 +output: -356047.484375000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: -248562.750000000000000 23.062500000000000 +output: -248585.812500000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: 456.000000000000000 456.250000000000000 +output: -0.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: 34.031250000000000 3.000000000000000 +output: 31.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 45787.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1750680.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: 107.000000000000000 -7.000000000000000 +output: 114.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -1000045667.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 5779.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -349608.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: 356047.500000000000000 0.015625000000000 +output: 356047.484375000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: -1.000000000000000 0.031250000000000 +output: -1.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fsub.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 248585.812500000000000 +fcsr: 0x300 +roundig mode: near +fmul.s :: +input: 0.000000 -4578.500000 +output: -0.000000 +fcsr: 0 +roundig mode: near +fmul.s :: +input: 456.250000 456.250000 +output: 208164.062500 +fcsr: 0 +roundig mode: near +fmul.s :: +input: 3.000000 34.031250 +output: 102.093750 +fcsr: 0 +roundig mode: near +fmul.s :: +input: -1.000000 4578.750000 +output: -4578.750000 +fcsr: 0 +roundig mode: near +fmul.s :: +input: 1384.500000 175.000000 +output: 242287.500000 +fcsr: 0 +roundig mode: near +fmul.s :: +input: -7.250000 107.000000 +output: -775.750000 +fcsr: 0 +roundig mode: near +fmul.s :: +input: 1000000000.000000 -456.250000 +output: -456249999360.000000 +fcsr: 0x1010000 +roundig mode: near +fmul.s :: +input: -5786.500000 -7.250000 +output: 41952.125000 +fcsr: 0 +roundig mode: near +fmul.s :: +input: 1752.000000 -3478.500000 +output: -6094332.000000 +fcsr: 0 +roundig mode: near +fmul.s :: +input: 0.015625 356.500000 +output: 5.570312 +fcsr: 0 +roundig mode: near +fmul.s :: +input: 0.031250 -1.000000 +output: -0.031250 +fcsr: 0 +roundig mode: near +fmul.s :: +input: -248562.750000 23.062500 +output: -5732478.500000 +fcsr: 0x1010000 +roundig mode: near +fmul.s :: +input: -45786.500000 0.000000 +output: -0.000000 +fcsr: 0 +roundig mode: near +fmul.s :: +input: 456.000000 456.250000 +output: 208050.000000 +fcsr: 0 +roundig mode: near +fmul.s :: +input: 34.031250 3.000000 +output: 102.093750 +fcsr: 0 +roundig mode: near +fmul.s :: +input: 45786.750000 -1.000000 +output: -45786.750000 +fcsr: 0 +roundig mode: near +fmul.s :: +input: 1752065.000000 1384.500000 +output: 2425733888.000000 +fcsr: 0x1010000 +roundig mode: near +fmul.s :: +input: 107.000000 -7.000000 +output: -749.000000 +fcsr: 0 +roundig mode: near +fmul.s :: +input: -45667.250000 100.000000 +output: -4566725.000000 +fcsr: 0 +roundig mode: near +fmul.s :: +input: -7.000000 -5786.500000 +output: 40505.500000 +fcsr: 0 +roundig mode: near +fmul.s :: +input: -347856.500000 1752.000000 +output: -609444608.000000 +fcsr: 0x1010000 +roundig mode: near +fmul.s :: +input: 356047.500000 0.015625 +output: 5563.242188 +fcsr: 0 +roundig mode: near +fmul.s :: +input: -1.000000 0.031250 +output: -0.031250 +fcsr: 0 +roundig mode: near +fmul.s :: +input: 23.062500 -248562.750000 +output: -5732478.500000 +fcsr: 0x1010000 +roundig mode: zero +fmul.s :: +input: 0.000000 -4578.500000 +output: -0.000000 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: 456.250000 456.250000 +output: 208164.062500 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: 3.000000 34.031250 +output: 102.093750 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: -1.000000 4578.750000 +output: -4578.750000 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: 1384.500000 175.000000 +output: 242287.500000 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: -7.250000 107.000000 +output: -775.750000 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: 1000000000.000000 -456.250000 +output: -456249999360.000000 +fcsr: 0x1010100 +roundig mode: zero +fmul.s :: +input: -5786.500000 -7.250000 +output: 41952.125000 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: 1752.000000 -3478.500000 +output: -6094332.000000 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: 0.015625 356.500000 +output: 5.570312 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: 0.031250 -1.000000 +output: -0.031250 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: -248562.750000 23.062500 +output: -5732478.000000 +fcsr: 0x1010100 +roundig mode: zero +fmul.s :: +input: -45786.500000 0.000000 +output: -0.000000 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: 456.000000 456.250000 +output: 208050.000000 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: 34.031250 3.000000 +output: 102.093750 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: 45786.750000 -1.000000 +output: -45786.750000 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: 1752065.000000 1384.500000 +output: 2425733888.000000 +fcsr: 0x1010100 +roundig mode: zero +fmul.s :: +input: 107.000000 -7.000000 +output: -749.000000 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: -45667.250000 100.000000 +output: -4566725.000000 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: -7.000000 -5786.500000 +output: 40505.500000 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: -347856.500000 1752.000000 +output: -609444544.000000 +fcsr: 0x1010100 +roundig mode: zero +fmul.s :: +input: 356047.500000 0.015625 +output: 5563.242187 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: -1.000000 0.031250 +output: -0.031250 +fcsr: 0x100 +roundig mode: zero +fmul.s :: +input: 23.062500 -248562.750000 +output: -5732478.000000 +fcsr: 0x1010100 +roundig mode: +inf +fmul.s :: +input: 0.000000 -4578.500000 +output: -0.000000 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: 456.250000 456.250000 +output: 208164.062500 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: 3.000000 34.031250 +output: 102.093750 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: -1.000000 4578.750000 +output: -4578.750000 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: 1384.500000 175.000000 +output: 242287.500000 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: -7.250000 107.000000 +output: -775.750000 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: 1000000000.000000 -456.250000 +output: -456249999360.000000 +fcsr: 0x1010200 +roundig mode: +inf +fmul.s :: +input: -5786.500000 -7.250000 +output: 41952.125000 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: 1752.000000 -3478.500000 +output: -6094332.000000 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: 0.015625 356.500000 +output: 5.570313 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: 0.031250 -1.000000 +output: -0.031250 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: -248562.750000 23.062500 +output: -5732478.000000 +fcsr: 0x1010200 +roundig mode: +inf +fmul.s :: +input: -45786.500000 0.000000 +output: -0.000000 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: 456.000000 456.250000 +output: 208050.000000 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: 34.031250 3.000000 +output: 102.093750 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: 45786.750000 -1.000000 +output: -45786.750000 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: 1752065.000000 1384.500000 +output: 2425734144.000000 +fcsr: 0x1010200 +roundig mode: +inf +fmul.s :: +input: 107.000000 -7.000000 +output: -749.000000 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: -45667.250000 100.000000 +output: -4566725.000000 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: -7.000000 -5786.500000 +output: 40505.500000 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: -347856.500000 1752.000000 +output: -609444544.000000 +fcsr: 0x1010200 +roundig mode: +inf +fmul.s :: +input: 356047.500000 0.015625 +output: 5563.242188 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: -1.000000 0.031250 +output: -0.031250 +fcsr: 0x200 +roundig mode: +inf +fmul.s :: +input: 23.062500 -248562.750000 +output: -5732478.000000 +fcsr: 0x1010200 +roundig mode: -inf +fmul.s :: +input: 0.000000 -4578.500000 +output: -0.000000 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: 456.250000 456.250000 +output: 208164.062500 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: 3.000000 34.031250 +output: 102.093750 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: -1.000000 4578.750000 +output: -4578.750000 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: 1384.500000 175.000000 +output: 242287.500000 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: -7.250000 107.000000 +output: -775.750000 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: 1000000000.000000 -456.250000 +output: -456250032128.000000 +fcsr: 0x1010300 +roundig mode: -inf +fmul.s :: +input: -5786.500000 -7.250000 +output: 41952.125000 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: 1752.000000 -3478.500000 +output: -6094332.000000 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: 0.015625 356.500000 +output: 5.570312 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: 0.031250 -1.000000 +output: -0.031250 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: -248562.750000 23.062500 +output: -5732478.500000 +fcsr: 0x1010300 +roundig mode: -inf +fmul.s :: +input: -45786.500000 0.000000 +output: -0.000000 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: 456.000000 456.250000 +output: 208050.000000 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: 34.031250 3.000000 +output: 102.093750 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: 45786.750000 -1.000000 +output: -45786.750000 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: 1752065.000000 1384.500000 +output: 2425733888.000000 +fcsr: 0x1010300 +roundig mode: -inf +fmul.s :: +input: 107.000000 -7.000000 +output: -749.000000 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: -45667.250000 100.000000 +output: -4566725.000000 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: -7.000000 -5786.500000 +output: 40505.500000 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: -347856.500000 1752.000000 +output: -609444608.000000 +fcsr: 0x1010300 +roundig mode: -inf +fmul.s :: +input: 356047.500000 0.015625 +output: 5563.242187 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: -1.000000 0.031250 +output: -0.031250 +fcsr: 0x300 +roundig mode: -inf +fmul.s :: +input: 23.062500 -248562.750000 +output: -5732478.500000 +fcsr: 0x1010300 +roundig mode: near +fmul.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -0.000000000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: 456.250000000000000 456.250000000000000 +output: 208164.062500000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: 3.000000000000000 34.031250000000000 +output: 102.093750000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: -1.000000000000000 45786.750000000000000 +output: -45786.750000000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 2425733992.500000000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: -7.250000000000000 107.000000000000000 +output: -775.750000000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: -45667250000000.000000000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 41952.125000000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -609444588.000000000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: 0.015625000000000 356047.500000000000000 +output: 5563.242187500000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: 0.031250000000000 -1.000000000000000 +output: -0.031250000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: -248562.750000000000000 23.062500000000000 +output: -5732478.421875000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: -45786.500000000000000 0.000000000000000 +output: -0.000000000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: 456.000000000000000 456.250000000000000 +output: 208050.000000000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: 34.031250000000000 3.000000000000000 +output: 102.093750000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: 45786.750000000000000 -1.000000000000000 +output: -45786.750000000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 2425733992.500000000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: 107.000000000000000 -7.000000000000000 +output: -749.000000000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -45667250000000.000000000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 40505.500000000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -609444588.000000000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: 356047.500000000000000 0.015625000000000 +output: 5563.242187500000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: -1.000000000000000 0.031250000000000 +output: -0.031250000000000 +fcsr: 0 +roundig mode: near +fmul.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -5732478.421875000000000 +fcsr: 0 +roundig mode: zero +fmul.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -0.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: 456.250000000000000 456.250000000000000 +output: 208164.062500000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: 3.000000000000000 34.031250000000000 +output: 102.093750000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: -1.000000000000000 45786.750000000000000 +output: -45786.750000000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 2425733992.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: -7.250000000000000 107.000000000000000 +output: -775.750000000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: -45667250000000.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 41952.125000000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -609444588.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: 0.015625000000000 356047.500000000000000 +output: 5563.242187500000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: 0.031250000000000 -1.000000000000000 +output: -0.031250000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: -248562.750000000000000 23.062500000000000 +output: -5732478.421875000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: -45786.500000000000000 0.000000000000000 +output: -0.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: 456.000000000000000 456.250000000000000 +output: 208050.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: 34.031250000000000 3.000000000000000 +output: 102.093750000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: 45786.750000000000000 -1.000000000000000 +output: -45786.750000000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 2425733992.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: 107.000000000000000 -7.000000000000000 +output: -749.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -45667250000000.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 40505.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -609444588.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: 356047.500000000000000 0.015625000000000 +output: 5563.242187500000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: -1.000000000000000 0.031250000000000 +output: -0.031250000000000 +fcsr: 0x100 +roundig mode: zero +fmul.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -5732478.421875000000000 +fcsr: 0x100 +roundig mode: +inf +fmul.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: 456.250000000000000 456.250000000000000 +output: 208164.062500000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: 3.000000000000000 34.031250000000000 +output: 102.093750000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: -1.000000000000000 45786.750000000000000 +output: -45786.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 2425733992.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: -7.250000000000000 107.000000000000000 +output: -775.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: -45667250000000.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 41952.125000000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -609444588.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: 0.015625000000000 356047.500000000000000 +output: 5563.242187500000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: 0.031250000000000 -1.000000000000000 +output: -0.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: -248562.750000000000000 23.062500000000000 +output: -5732478.421875000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: -45786.500000000000000 0.000000000000000 +output: -0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: 456.000000000000000 456.250000000000000 +output: 208050.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: 34.031250000000000 3.000000000000000 +output: 102.093750000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: 45786.750000000000000 -1.000000000000000 +output: -45786.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 2425733992.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: 107.000000000000000 -7.000000000000000 +output: -749.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -45667250000000.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 40505.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -609444588.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: 356047.500000000000000 0.015625000000000 +output: 5563.242187500000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: -1.000000000000000 0.031250000000000 +output: -0.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fmul.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -5732478.421875000000000 +fcsr: 0x200 +roundig mode: -inf +fmul.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: 456.250000000000000 456.250000000000000 +output: 208164.062500000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: 3.000000000000000 34.031250000000000 +output: 102.093750000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: -1.000000000000000 45786.750000000000000 +output: -45786.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 2425733992.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: -7.250000000000000 107.000000000000000 +output: -775.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: -45667250000000.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 41952.125000000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -609444588.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: 0.015625000000000 356047.500000000000000 +output: 5563.242187500000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: 0.031250000000000 -1.000000000000000 +output: -0.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: -248562.750000000000000 23.062500000000000 +output: -5732478.421875000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: -45786.500000000000000 0.000000000000000 +output: -0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: 456.000000000000000 456.250000000000000 +output: 208050.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: 34.031250000000000 3.000000000000000 +output: 102.093750000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: 45786.750000000000000 -1.000000000000000 +output: -45786.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 2425733992.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: 107.000000000000000 -7.000000000000000 +output: -749.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -45667250000000.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 40505.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -609444588.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: 356047.500000000000000 0.015625000000000 +output: 5563.242187500000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: -1.000000000000000 0.031250000000000 +output: -0.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fmul.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -5732478.421875000000000 +fcsr: 0x300 +roundig mode: near +fdiv.s :: +input: 0.000000 -4578.500000 +output: -0.000000 +fcsr: 0 +roundig mode: near +fdiv.s :: +input: 456.250000 456.250000 +output: 1.000000 +fcsr: 0 +roundig mode: near +fdiv.s :: +input: 3.000000 34.031250 +output: 0.088154 +fcsr: 0x1010000 +roundig mode: near +fdiv.s :: +input: -1.000000 4578.750000 +output: -0.000218 +fcsr: 0x1010000 +roundig mode: near +fdiv.s :: +input: 1384.500000 175.000000 +output: 7.911428 +fcsr: 0x1010000 +roundig mode: near +fdiv.s :: +input: -7.250000 107.000000 +output: -0.067757 +fcsr: 0x1010000 +roundig mode: near +fdiv.s :: +input: 1000000000.000000 -456.250000 +output: -2191780.750000 +fcsr: 0x1010000 +roundig mode: near +fdiv.s :: +input: -5786.500000 -7.250000 +output: 798.137939 +fcsr: 0x1010000 +roundig mode: near +fdiv.s :: +input: 1752.000000 -3478.500000 +output: -0.503665 +fcsr: 0x1010000 +roundig mode: near +fdiv.s :: +input: 0.015625 356.500000 +output: 0.000044 +fcsr: 0x1010000 +roundig mode: near +fdiv.s :: +input: 0.031250 -1.000000 +output: -0.031250 +fcsr: 0 +roundig mode: near +fdiv.s :: +input: -248562.750000 23.062500 +output: -10777.789062 +fcsr: 0x1010000 +roundig mode: near +fdiv.s :: +input: -45786.500000 0.000000 +output: -inf +fcsr: 0x8080000 +roundig mode: near +fdiv.s :: +input: 456.000000 456.250000 +output: 0.999452 +fcsr: 0x1010000 +roundig mode: near +fdiv.s :: +input: 34.031250 3.000000 +output: 11.343750 +fcsr: 0 +roundig mode: near +fdiv.s :: +input: 45786.750000 -1.000000 +output: -45786.750000 +fcsr: 0 +roundig mode: near +fdiv.s :: +input: 1752065.000000 1384.500000 +output: 1265.485718 +fcsr: 0x1010000 +roundig mode: near +fdiv.s :: +input: 107.000000 -7.000000 +output: -15.285714 +fcsr: 0x1010000 +roundig mode: near +fdiv.s :: +input: -45667.250000 100.000000 +output: -456.672485 +fcsr: 0x1010000 +roundig mode: near +fdiv.s :: +input: -7.000000 -5786.500000 +output: 0.001210 +fcsr: 0x1010000 +roundig mode: near +fdiv.s :: +input: -347856.500000 1752.000000 +output: -198.548233 +fcsr: 0x1010000 +roundig mode: near +fdiv.s :: +input: 356047.500000 0.015625 +output: 22787040.000000 +fcsr: 0 +roundig mode: near +fdiv.s :: +input: -1.000000 0.031250 +output: -32.000000 +fcsr: 0 +roundig mode: near +fdiv.s :: +input: 23.062500 -248562.750000 +output: -0.000093 +fcsr: 0x1010000 +roundig mode: zero +fdiv.s :: +input: 0.000000 -4578.500000 +output: -0.000000 +fcsr: 0x100 +roundig mode: zero +fdiv.s :: +input: 456.250000 456.250000 +output: 1.000000 +fcsr: 0x100 +roundig mode: zero +fdiv.s :: +input: 3.000000 34.031250 +output: 0.088154 +fcsr: 0x1010100 +roundig mode: zero +fdiv.s :: +input: -1.000000 4578.750000 +output: -0.000218 +fcsr: 0x1010100 +roundig mode: zero +fdiv.s :: +input: 1384.500000 175.000000 +output: 7.911428 +fcsr: 0x1010100 +roundig mode: zero +fdiv.s :: +input: -7.250000 107.000000 +output: -0.067757 +fcsr: 0x1010100 +roundig mode: zero +fdiv.s :: +input: 1000000000.000000 -456.250000 +output: -2191780.750000 +fcsr: 0x1010100 +roundig mode: zero +fdiv.s :: +input: -5786.500000 -7.250000 +output: 798.137878 +fcsr: 0x1010100 +roundig mode: zero +fdiv.s :: +input: 1752.000000 -3478.500000 +output: -0.503665 +fcsr: 0x1010100 +roundig mode: zero +fdiv.s :: +input: 0.015625 356.500000 +output: 0.000043 +fcsr: 0x1010100 +roundig mode: zero +fdiv.s :: +input: 0.031250 -1.000000 +output: -0.031250 +fcsr: 0x100 +roundig mode: zero +fdiv.s :: +input: -248562.750000 23.062500 +output: -10777.788085 +fcsr: 0x1010100 +roundig mode: zero +fdiv.s :: +input: -45786.500000 0.000000 +output: -inf +fcsr: 0x8080100 +roundig mode: zero +fdiv.s :: +input: 456.000000 456.250000 +output: 0.999452 +fcsr: 0x1010100 +roundig mode: zero +fdiv.s :: +input: 34.031250 3.000000 +output: 11.343750 +fcsr: 0x100 +roundig mode: zero +fdiv.s :: +input: 45786.750000 -1.000000 +output: -45786.750000 +fcsr: 0x100 +roundig mode: zero +fdiv.s :: +input: 1752065.000000 1384.500000 +output: 1265.485717 +fcsr: 0x1010100 +roundig mode: zero +fdiv.s :: +input: 107.000000 -7.000000 +output: -15.285714 +fcsr: 0x1010100 +roundig mode: zero +fdiv.s :: +input: -45667.250000 100.000000 +output: -456.672485 +fcsr: 0x1010100 +roundig mode: zero +fdiv.s :: +input: -7.000000 -5786.500000 +output: 0.001209 +fcsr: 0x1010100 +roundig mode: zero +fdiv.s :: +input: -347856.500000 1752.000000 +output: -198.548217 +fcsr: 0x1010100 +roundig mode: zero +fdiv.s :: +input: 356047.500000 0.015625 +output: 22787040.000000 +fcsr: 0x100 +roundig mode: zero +fdiv.s :: +input: -1.000000 0.031250 +output: -32.000000 +fcsr: 0x100 +roundig mode: zero +fdiv.s :: +input: 23.062500 -248562.750000 +output: -0.000092 +fcsr: 0x1010100 +roundig mode: +inf +fdiv.s :: +input: 0.000000 -4578.500000 +output: -0.000000 +fcsr: 0x200 +roundig mode: +inf +fdiv.s :: +input: 456.250000 456.250000 +output: 1.000000 +fcsr: 0x200 +roundig mode: +inf +fdiv.s :: +input: 3.000000 34.031250 +output: 0.088155 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.s :: +input: -1.000000 4578.750000 +output: -0.000218 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.s :: +input: 1384.500000 175.000000 +output: 7.911429 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.s :: +input: -7.250000 107.000000 +output: -0.067757 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.s :: +input: 1000000000.000000 -456.250000 +output: -2191780.750000 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.s :: +input: -5786.500000 -7.250000 +output: 798.137940 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.s :: +input: 1752.000000 -3478.500000 +output: -0.503665 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.s :: +input: 0.015625 356.500000 +output: 0.000044 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.s :: +input: 0.031250 -1.000000 +output: -0.031250 +fcsr: 0x200 +roundig mode: +inf +fdiv.s :: +input: -248562.750000 23.062500 +output: -10777.788085 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.s :: +input: -45786.500000 0.000000 +output: -inf +fcsr: 0x8080200 +roundig mode: +inf +fdiv.s :: +input: 456.000000 456.250000 +output: 0.999453 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.s :: +input: 34.031250 3.000000 +output: 11.343750 +fcsr: 0x200 +roundig mode: +inf +fdiv.s :: +input: 45786.750000 -1.000000 +output: -45786.750000 +fcsr: 0x200 +roundig mode: +inf +fdiv.s :: +input: 1752065.000000 1384.500000 +output: 1265.485840 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.s :: +input: 107.000000 -7.000000 +output: -15.285714 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.s :: +input: -45667.250000 100.000000 +output: -456.672485 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.s :: +input: -7.000000 -5786.500000 +output: 0.001210 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.s :: +input: -347856.500000 1752.000000 +output: -198.548217 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.s :: +input: 356047.500000 0.015625 +output: 22787040.000000 +fcsr: 0x200 +roundig mode: +inf +fdiv.s :: +input: -1.000000 0.031250 +output: -32.000000 +fcsr: 0x200 +roundig mode: +inf +fdiv.s :: +input: 23.062500 -248562.750000 +output: -0.000092 +fcsr: 0x1010200 +roundig mode: -inf +fdiv.s :: +input: 0.000000 -4578.500000 +output: -0.000000 +fcsr: 0x300 +roundig mode: -inf +fdiv.s :: +input: 456.250000 456.250000 +output: 1.000000 +fcsr: 0x300 +roundig mode: -inf +fdiv.s :: +input: 3.000000 34.031250 +output: 0.088154 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.s :: +input: -1.000000 4578.750000 +output: -0.000219 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.s :: +input: 1384.500000 175.000000 +output: 7.911428 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.s :: +input: -7.250000 107.000000 +output: -0.067758 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.s :: +input: 1000000000.000000 -456.250000 +output: -2191781.000000 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.s :: +input: -5786.500000 -7.250000 +output: 798.137878 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.s :: +input: 1752.000000 -3478.500000 +output: -0.503666 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.s :: +input: 0.015625 356.500000 +output: 0.000043 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.s :: +input: 0.031250 -1.000000 +output: -0.031250 +fcsr: 0x300 +roundig mode: -inf +fdiv.s :: +input: -248562.750000 23.062500 +output: -10777.789063 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.s :: +input: -45786.500000 0.000000 +output: -inf +fcsr: 0x8080300 +roundig mode: -inf +fdiv.s :: +input: 456.000000 456.250000 +output: 0.999452 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.s :: +input: 34.031250 3.000000 +output: 11.343750 +fcsr: 0x300 +roundig mode: -inf +fdiv.s :: +input: 45786.750000 -1.000000 +output: -45786.750000 +fcsr: 0x300 +roundig mode: -inf +fdiv.s :: +input: 1752065.000000 1384.500000 +output: 1265.485717 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.s :: +input: 107.000000 -7.000000 +output: -15.285716 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.s :: +input: -45667.250000 100.000000 +output: -456.672516 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.s :: +input: -7.000000 -5786.500000 +output: 0.001209 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.s :: +input: -347856.500000 1752.000000 +output: -198.548234 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.s :: +input: 356047.500000 0.015625 +output: 22787040.000000 +fcsr: 0x300 +roundig mode: -inf +fdiv.s :: +input: -1.000000 0.031250 +output: -32.000000 +fcsr: 0x300 +roundig mode: -inf +fdiv.s :: +input: 23.062500 -248562.750000 +output: -0.000093 +fcsr: 0x1010300 +roundig mode: near +fdiv.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -0.000000000000000 +fcsr: 0 +roundig mode: near +fdiv.d :: +input: 456.250000000000000 456.250000000000000 +output: 1.000000000000000 +fcsr: 0 +roundig mode: near +fdiv.d :: +input: 3.000000000000000 34.031250000000000 +output: 0.088154269972452 +fcsr: 0x1010000 +roundig mode: near +fdiv.d :: +input: -1.000000000000000 45786.750000000000000 +output: -0.000021840379586 +fcsr: 0x1010000 +roundig mode: near +fdiv.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0.000790210408860 +fcsr: 0x1010000 +roundig mode: near +fdiv.d :: +input: -7.250000000000000 107.000000000000000 +output: -0.067757009345794 +fcsr: 0x1010000 +roundig mode: near +fdiv.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: -21897.530505997186992 +fcsr: 0x1010000 +roundig mode: near +fdiv.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 798.137931034482790 +fcsr: 0x1010000 +roundig mode: near +fdiv.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -0.005036559615819 +fcsr: 0x1010000 +roundig mode: near +fdiv.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0.000000043884594 +fcsr: 0x1010000 +roundig mode: near +fdiv.d :: +input: 0.031250000000000 -1.000000000000000 +output: -0.031250000000000 +fcsr: 0 +roundig mode: near +fdiv.d :: +input: -248562.750000000000000 23.062500000000000 +output: -10777.788617886179054 +fcsr: 0x1010000 +roundig mode: near +fdiv.d :: +input: -45786.500000000000000 0.000000000000000 +output: -inf +fcsr: 0x8080000 +roundig mode: near +fdiv.d :: +input: 456.000000000000000 456.250000000000000 +output: 0.999452054794521 +fcsr: 0x1010000 +roundig mode: near +fdiv.d :: +input: 34.031250000000000 3.000000000000000 +output: 11.343750000000000 +fcsr: 0 +roundig mode: near +fdiv.d :: +input: 45786.750000000000000 -1.000000000000000 +output: -45786.750000000000000 +fcsr: 0 +roundig mode: near +fdiv.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1265.485734922354595 +fcsr: 0x1010000 +roundig mode: near +fdiv.d :: +input: 107.000000000000000 -7.000000000000000 +output: -15.285714285714286 +fcsr: 0x1010000 +roundig mode: near +fdiv.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -0.000045667250000 +fcsr: 0x1010000 +roundig mode: near +fdiv.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0.001209712261298 +fcsr: 0x1010000 +roundig mode: near +fdiv.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -198.548230593607315 +fcsr: 0x1010000 +roundig mode: near +fdiv.d :: +input: 356047.500000000000000 0.015625000000000 +output: 22787040.000000000000000 +fcsr: 0 +roundig mode: near +fdiv.d :: +input: -1.000000000000000 0.031250000000000 +output: -32.000000000000000 +fcsr: 0 +roundig mode: near +fdiv.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -0.000092783411835 +fcsr: 0x1010000 +roundig mode: zero +fdiv.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -0.000000000000000 +fcsr: 0x100 +roundig mode: zero +fdiv.d :: +input: 456.250000000000000 456.250000000000000 +output: 1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fdiv.d :: +input: 3.000000000000000 34.031250000000000 +output: 0.088154269972451 +fcsr: 0x1010100 +roundig mode: zero +fdiv.d :: +input: -1.000000000000000 45786.750000000000000 +output: -0.000021840379585 +fcsr: 0x1010100 +roundig mode: zero +fdiv.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0.000790210408860 +fcsr: 0x1010100 +roundig mode: zero +fdiv.d :: +input: -7.250000000000000 107.000000000000000 +output: -0.067757009345794 +fcsr: 0x1010100 +roundig mode: zero +fdiv.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: -21897.530505997183354 +fcsr: 0x1010100 +roundig mode: zero +fdiv.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 798.137931034482676 +fcsr: 0x1010100 +roundig mode: zero +fdiv.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -0.005036559615818 +fcsr: 0x1010100 +roundig mode: zero +fdiv.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0.000000043884594 +fcsr: 0x1010100 +roundig mode: zero +fdiv.d :: +input: 0.031250000000000 -1.000000000000000 +output: -0.031250000000000 +fcsr: 0x100 +roundig mode: zero +fdiv.d :: +input: -248562.750000000000000 23.062500000000000 +output: -10777.788617886177235 +fcsr: 0x1010100 +roundig mode: zero +fdiv.d :: +input: -45786.500000000000000 0.000000000000000 +output: -inf +fcsr: 0x8080100 +roundig mode: zero +fdiv.d :: +input: 456.000000000000000 456.250000000000000 +output: 0.999452054794520 +fcsr: 0x1010100 +roundig mode: zero +fdiv.d :: +input: 34.031250000000000 3.000000000000000 +output: 11.343750000000000 +fcsr: 0x100 +roundig mode: zero +fdiv.d :: +input: 45786.750000000000000 -1.000000000000000 +output: -45786.750000000000000 +fcsr: 0x100 +roundig mode: zero +fdiv.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1265.485734922354595 +fcsr: 0x1010100 +roundig mode: zero +fdiv.d :: +input: 107.000000000000000 -7.000000000000000 +output: -15.285714285714284 +fcsr: 0x1010100 +roundig mode: zero +fdiv.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -0.000045667249999 +fcsr: 0x1010100 +roundig mode: zero +fdiv.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0.001209712261297 +fcsr: 0x1010100 +roundig mode: zero +fdiv.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -198.548230593607286 +fcsr: 0x1010100 +roundig mode: zero +fdiv.d :: +input: 356047.500000000000000 0.015625000000000 +output: 22787040.000000000000000 +fcsr: 0x100 +roundig mode: zero +fdiv.d :: +input: -1.000000000000000 0.031250000000000 +output: -32.000000000000000 +fcsr: 0x100 +roundig mode: zero +fdiv.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -0.000092783411834 +fcsr: 0x1010100 +roundig mode: +inf +fdiv.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fdiv.d :: +input: 456.250000000000000 456.250000000000000 +output: 1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fdiv.d :: +input: 3.000000000000000 34.031250000000000 +output: 0.088154269972452 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.d :: +input: -1.000000000000000 45786.750000000000000 +output: -0.000021840379585 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0.000790210408861 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.d :: +input: -7.250000000000000 107.000000000000000 +output: -0.067757009345794 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: -21897.530505997183354 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 798.137931034482790 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -0.005036559615818 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0.000000043884595 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.d :: +input: 0.031250000000000 -1.000000000000000 +output: -0.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fdiv.d :: +input: -248562.750000000000000 23.062500000000000 +output: -10777.788617886177235 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.d :: +input: -45786.500000000000000 0.000000000000000 +output: -inf +fcsr: 0x8080200 +roundig mode: +inf +fdiv.d :: +input: 456.000000000000000 456.250000000000000 +output: 0.999452054794521 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.d :: +input: 34.031250000000000 3.000000000000000 +output: 11.343750000000000 +fcsr: 0x200 +roundig mode: +inf +fdiv.d :: +input: 45786.750000000000000 -1.000000000000000 +output: -45786.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fdiv.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1265.485734922354823 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.d :: +input: 107.000000000000000 -7.000000000000000 +output: -15.285714285714284 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -0.000045667249999 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0.001209712261298 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -198.548230593607286 +fcsr: 0x1010200 +roundig mode: +inf +fdiv.d :: +input: 356047.500000000000000 0.015625000000000 +output: 22787040.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fdiv.d :: +input: -1.000000000000000 0.031250000000000 +output: -32.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fdiv.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -0.000092783411834 +fcsr: 0x1010200 +roundig mode: -inf +fdiv.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fdiv.d :: +input: 456.250000000000000 456.250000000000000 +output: 1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fdiv.d :: +input: 3.000000000000000 34.031250000000000 +output: 0.088154269972451 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.d :: +input: -1.000000000000000 45786.750000000000000 +output: -0.000021840379586 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0.000790210408860 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.d :: +input: -7.250000000000000 107.000000000000000 +output: -0.067757009345795 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: -21897.530505997186993 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 798.137931034482676 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -0.005036559615819 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0.000000043884594 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.d :: +input: 0.031250000000000 -1.000000000000000 +output: -0.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fdiv.d :: +input: -248562.750000000000000 23.062500000000000 +output: -10777.788617886179055 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.d :: +input: -45786.500000000000000 0.000000000000000 +output: -inf +fcsr: 0x8080300 +roundig mode: -inf +fdiv.d :: +input: 456.000000000000000 456.250000000000000 +output: 0.999452054794520 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.d :: +input: 34.031250000000000 3.000000000000000 +output: 11.343750000000000 +fcsr: 0x300 +roundig mode: -inf +fdiv.d :: +input: 45786.750000000000000 -1.000000000000000 +output: -45786.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fdiv.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1265.485734922354595 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.d :: +input: 107.000000000000000 -7.000000000000000 +output: -15.285714285714287 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -0.000045667250001 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0.001209712261297 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -198.548230593607315 +fcsr: 0x1010300 +roundig mode: -inf +fdiv.d :: +input: 356047.500000000000000 0.015625000000000 +output: 22787040.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fdiv.d :: +input: -1.000000000000000 0.031250000000000 +output: -32.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fdiv.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -0.000092783411835 +fcsr: 0x1010300 +roundig mode: near +fmadd.s :: +input: 0.000000 -4578.500000 -347856.500000 +output: -347856.500000 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: 456.250000 456.250000 356047.500000 +output: 564211.562500 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: 3.000000 34.031250 -1.000000 +output: 101.093750 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: -1.000000 4578.750000 23.062500 +output: -4555.687500 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: 1384.500000 175.000000 1752.000000 +output: 244039.500000 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: -7.250000 107.000000 0.015625 +output: -775.734375 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: 1000000000.000000 -456.250000 0.031250 +output: -456249999360.000000 +fcsr: 0x1010000 +roundig mode: near +fmadd.s :: +input: -5786.500000 -7.250000 -248562.750000 +output: -206610.625000 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: 1752.000000 -3478.500000 1384.500000 +output: -6092947.500000 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: 0.015625 356.500000 -7.250000 +output: -1.679688 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: 0.031250 -1.000000 1000000000.000000 +output: 1000000000.000000 +fcsr: 0x1010000 +roundig mode: near +fmadd.s :: +input: -248562.750000 23.062500 -5786.500000 +output: -5738265.000000 +fcsr: 0x1010000 +roundig mode: near +fmadd.s :: +input: -45786.500000 0.000000 -347856.750000 +output: -347856.750000 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: 456.000000 456.250000 356047.750000 +output: 564097.750000 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: 34.031250 3.000000 -1.000000 +output: 101.093750 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: 45786.750000 -1.000000 23.031250 +output: -45763.718750 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: 1752065.000000 1384.500000 0.000000 +output: 2425733888.000000 +fcsr: 0x1010000 +roundig mode: near +fmadd.s :: +input: 107.000000 -7.000000 456.250000 +output: -292.750000 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: -45667.250000 100.000000 3.000000 +output: -4566722.000000 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: -7.000000 -5786.500000 -1.000000 +output: 40504.500000 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: -347856.500000 1752.000000 -45786.500000 +output: -609490368.000000 +fcsr: 0x1010000 +roundig mode: near +fmadd.s :: +input: 356047.500000 0.015625 456.000000 +output: 6019.242188 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: -1.000000 0.031250 34.031250 +output: 34.000000 +fcsr: 0 +roundig mode: near +fmadd.s :: +input: 23.062500 -248562.750000 45786.031250 +output: -5686692.500000 +fcsr: 0x1010000 +roundig mode: zero +fmadd.s :: +input: 0.000000 -4578.500000 -347856.500000 +output: -347856.500000 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: 456.250000 456.250000 356047.500000 +output: 564211.562500 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: 3.000000 34.031250 -1.000000 +output: 101.093750 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: -1.000000 4578.750000 23.062500 +output: -4555.687500 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: 1384.500000 175.000000 1752.000000 +output: 244039.500000 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: -7.250000 107.000000 0.015625 +output: -775.734375 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: 1000000000.000000 -456.250000 0.031250 +output: -456249999360.000000 +fcsr: 0x1010100 +roundig mode: zero +fmadd.s :: +input: -5786.500000 -7.250000 -248562.750000 +output: -206610.625000 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: 1752.000000 -3478.500000 1384.500000 +output: -6092947.500000 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: 0.015625 356.500000 -7.250000 +output: -1.679687 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: 0.031250 -1.000000 1000000000.000000 +output: 999999936.000000 +fcsr: 0x1010100 +roundig mode: zero +fmadd.s :: +input: -248562.750000 23.062500 -5786.500000 +output: -5738264.500000 +fcsr: 0x1010100 +roundig mode: zero +fmadd.s :: +input: -45786.500000 0.000000 -347856.750000 +output: -347856.750000 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: 456.000000 456.250000 356047.750000 +output: 564097.750000 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: 34.031250 3.000000 -1.000000 +output: 101.093750 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: 45786.750000 -1.000000 23.031250 +output: -45763.718750 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: 1752065.000000 1384.500000 0.000000 +output: 2425733888.000000 +fcsr: 0x1010100 +roundig mode: zero +fmadd.s :: +input: 107.000000 -7.000000 456.250000 +output: -292.750000 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: -45667.250000 100.000000 3.000000 +output: -4566722.000000 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: -7.000000 -5786.500000 -1.000000 +output: 40504.500000 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: -347856.500000 1752.000000 -45786.500000 +output: -609490368.000000 +fcsr: 0x1010100 +roundig mode: zero +fmadd.s :: +input: 356047.500000 0.015625 456.000000 +output: 6019.242187 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: -1.000000 0.031250 34.031250 +output: 34.000000 +fcsr: 0x100 +roundig mode: zero +fmadd.s :: +input: 23.062500 -248562.750000 45786.031250 +output: -5686692.000000 +fcsr: 0x1010100 +roundig mode: +inf +fmadd.s :: +input: 0.000000 -4578.500000 -347856.500000 +output: -347856.500000 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: 456.250000 456.250000 356047.500000 +output: 564211.562500 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: 3.000000 34.031250 -1.000000 +output: 101.093750 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: -1.000000 4578.750000 23.062500 +output: -4555.687500 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: 1384.500000 175.000000 1752.000000 +output: 244039.500000 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: -7.250000 107.000000 0.015625 +output: -775.734375 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: 1000000000.000000 -456.250000 0.031250 +output: -456249999360.000000 +fcsr: 0x1010200 +roundig mode: +inf +fmadd.s :: +input: -5786.500000 -7.250000 -248562.750000 +output: -206610.625000 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: 1752.000000 -3478.500000 1384.500000 +output: -6092947.500000 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: 0.015625 356.500000 -7.250000 +output: -1.679687 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: 0.031250 -1.000000 1000000000.000000 +output: 1000000000.000000 +fcsr: 0x1010200 +roundig mode: +inf +fmadd.s :: +input: -248562.750000 23.062500 -5786.500000 +output: -5738264.500000 +fcsr: 0x1010200 +roundig mode: +inf +fmadd.s :: +input: -45786.500000 0.000000 -347856.750000 +output: -347856.750000 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: 456.000000 456.250000 356047.750000 +output: 564097.750000 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: 34.031250 3.000000 -1.000000 +output: 101.093750 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: 45786.750000 -1.000000 23.031250 +output: -45763.718750 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: 1752065.000000 1384.500000 0.000000 +output: 2425734144.000000 +fcsr: 0x1010200 +roundig mode: +inf +fmadd.s :: +input: 107.000000 -7.000000 456.250000 +output: -292.750000 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: -45667.250000 100.000000 3.000000 +output: -4566722.000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: -7.000000 -5786.500000 -1.000000 +output: 40504.500000 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: -347856.500000 1752.000000 -45786.500000 +output: -609490368.000000 +fcsr: 0x1010200 +roundig mode: +inf +fmadd.s :: +input: 356047.500000 0.015625 456.000000 +output: 6019.242188 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: -1.000000 0.031250 34.031250 +output: 34.000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.s :: +input: 23.062500 -248562.750000 45786.031250 +output: -5686692.000000 +fcsr: 0x1010200 +roundig mode: -inf +fmadd.s :: +input: 0.000000 -4578.500000 -347856.500000 +output: -347856.500000 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: 456.250000 456.250000 356047.500000 +output: 564211.562500 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: 3.000000 34.031250 -1.000000 +output: 101.093750 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: -1.000000 4578.750000 23.062500 +output: -4555.687500 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: 1384.500000 175.000000 1752.000000 +output: 244039.500000 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: -7.250000 107.000000 0.015625 +output: -775.734375 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: 1000000000.000000 -456.250000 0.031250 +output: -456250032128.000000 +fcsr: 0x1010300 +roundig mode: -inf +fmadd.s :: +input: -5786.500000 -7.250000 -248562.750000 +output: -206610.625000 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: 1752.000000 -3478.500000 1384.500000 +output: -6092947.500000 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: 0.015625 356.500000 -7.250000 +output: -1.679688 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: 0.031250 -1.000000 1000000000.000000 +output: 999999936.000000 +fcsr: 0x1010300 +roundig mode: -inf +fmadd.s :: +input: -248562.750000 23.062500 -5786.500000 +output: -5738265.000000 +fcsr: 0x1010300 +roundig mode: -inf +fmadd.s :: +input: -45786.500000 0.000000 -347856.750000 +output: -347856.750000 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: 456.000000 456.250000 356047.750000 +output: 564097.750000 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: 34.031250 3.000000 -1.000000 +output: 101.093750 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: 45786.750000 -1.000000 23.031250 +output: -45763.718750 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: 1752065.000000 1384.500000 0.000000 +output: 2425733888.000000 +fcsr: 0x1010300 +roundig mode: -inf +fmadd.s :: +input: 107.000000 -7.000000 456.250000 +output: -292.750000 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: -45667.250000 100.000000 3.000000 +output: -4566722.000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: -7.000000 -5786.500000 -1.000000 +output: 40504.500000 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: -347856.500000 1752.000000 -45786.500000 +output: -609490432.000000 +fcsr: 0x1010300 +roundig mode: -inf +fmadd.s :: +input: 356047.500000 0.015625 456.000000 +output: 6019.242187 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: -1.000000 0.031250 34.031250 +output: 34.000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.s :: +input: 23.062500 -248562.750000 45786.031250 +output: -5686692.500000 +fcsr: 0x1010300 +roundig mode: near +fmadd.d :: +input: 0.000000000000000 -45786.500000000000000 -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: 456.250000000000000 456.250000000000000 356047.500000000000000 +output: 564211.562500000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: 3.000000000000000 34.031250000000000 -1.000000000000000 +output: 101.093750000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: -1.000000000000000 45786.750000000000000 23.062500000000000 +output: -45763.687500000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: 1384.500000000000000 1752065.000000000000000 1752.000000000000000 +output: 2425735744.500000000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: -7.250000000000000 107.000000000000000 0.015625000000000 +output: -775.734375000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: 1000000000.000000000000000 -45667.250000000000000 0.031250000000000 +output: -45667249999999.968750000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: -5786.500000000000000 -7.250000000000000 -248562.750000000000000 +output: -206610.625000000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: 1752.000000000000000 -347856.500000000000000 1384.500000000000000 +output: -609443203.500000000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: 0.015625000000000 356047.500000000000000 -7.250000000000000 +output: 5555.992187500000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: 0.031250000000000 -1.000000000000000 1000000000.000000000000000 +output: 999999999.968750000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: -248562.750000000000000 23.062500000000000 -5786.500000000000000 +output: -5738264.921875000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: -45786.500000000000000 0.000000000000000 -347856.750000000000000 +output: -347856.750000000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: 456.000000000000000 456.250000000000000 356047.750000000000000 +output: 564097.750000000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: 34.031250000000000 3.000000000000000 -1.000000000000000 +output: 101.093750000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: 45786.750000000000000 -1.000000000000000 23.031250000000000 +output: -45763.718750000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: 1752065.000000000000000 1384.500000000000000 0.000000000000000 +output: 2425733992.500000000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: 107.000000000000000 -7.000000000000000 456.250000000000000 +output: -292.750000000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: -45667.250000000000000 1000000000.000000000000000 3.000000000000000 +output: -45667249999997.000000000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: -7.000000000000000 -5786.500000000000000 -1.000000000000000 +output: 40504.500000000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: -347856.500000000000000 1752.000000000000000 -45786.500000000000000 +output: -609490374.500000000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: 356047.500000000000000 0.015625000000000 456.000000000000000 +output: 6019.242187500000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: -1.000000000000000 0.031250000000000 34.031250000000000 +output: 34.000000000000000 +fcsr: 0 +roundig mode: near +fmadd.d :: +input: 23.062500000000000 -248562.750000000000000 45786.031250000000000 +output: -5686692.390625000000000 +fcsr: 0 +roundig mode: zero +fmadd.d :: +input: 0.000000000000000 -45786.500000000000000 -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: 456.250000000000000 456.250000000000000 356047.500000000000000 +output: 564211.562500000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: 3.000000000000000 34.031250000000000 -1.000000000000000 +output: 101.093750000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: -1.000000000000000 45786.750000000000000 23.062500000000000 +output: -45763.687500000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: 1384.500000000000000 1752065.000000000000000 1752.000000000000000 +output: 2425735744.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: -7.250000000000000 107.000000000000000 0.015625000000000 +output: -775.734375000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: 1000000000.000000000000000 -45667.250000000000000 0.031250000000000 +output: -45667249999999.968750000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: -5786.500000000000000 -7.250000000000000 -248562.750000000000000 +output: -206610.625000000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: 1752.000000000000000 -347856.500000000000000 1384.500000000000000 +output: -609443203.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: 0.015625000000000 356047.500000000000000 -7.250000000000000 +output: 5555.992187500000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: 0.031250000000000 -1.000000000000000 1000000000.000000000000000 +output: 999999999.968750000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: -248562.750000000000000 23.062500000000000 -5786.500000000000000 +output: -5738264.921875000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: -45786.500000000000000 0.000000000000000 -347856.750000000000000 +output: -347856.750000000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: 456.000000000000000 456.250000000000000 356047.750000000000000 +output: 564097.750000000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: 34.031250000000000 3.000000000000000 -1.000000000000000 +output: 101.093750000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: 45786.750000000000000 -1.000000000000000 23.031250000000000 +output: -45763.718750000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: 1752065.000000000000000 1384.500000000000000 0.000000000000000 +output: 2425733992.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: 107.000000000000000 -7.000000000000000 456.250000000000000 +output: -292.750000000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: -45667.250000000000000 1000000000.000000000000000 3.000000000000000 +output: -45667249999997.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: -7.000000000000000 -5786.500000000000000 -1.000000000000000 +output: 40504.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: -347856.500000000000000 1752.000000000000000 -45786.500000000000000 +output: -609490374.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: 356047.500000000000000 0.015625000000000 456.000000000000000 +output: 6019.242187500000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: -1.000000000000000 0.031250000000000 34.031250000000000 +output: 34.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmadd.d :: +input: 23.062500000000000 -248562.750000000000000 45786.031250000000000 +output: -5686692.390625000000000 +fcsr: 0x100 +roundig mode: +inf +fmadd.d :: +input: 0.000000000000000 -45786.500000000000000 -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: 456.250000000000000 456.250000000000000 356047.500000000000000 +output: 564211.562500000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: 3.000000000000000 34.031250000000000 -1.000000000000000 +output: 101.093750000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: -1.000000000000000 45786.750000000000000 23.062500000000000 +output: -45763.687500000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: 1384.500000000000000 1752065.000000000000000 1752.000000000000000 +output: 2425735744.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: -7.250000000000000 107.000000000000000 0.015625000000000 +output: -775.734375000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: 1000000000.000000000000000 -45667.250000000000000 0.031250000000000 +output: -45667249999999.968750000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: -5786.500000000000000 -7.250000000000000 -248562.750000000000000 +output: -206610.625000000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: 1752.000000000000000 -347856.500000000000000 1384.500000000000000 +output: -609443203.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: 0.015625000000000 356047.500000000000000 -7.250000000000000 +output: 5555.992187500000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: 0.031250000000000 -1.000000000000000 1000000000.000000000000000 +output: 999999999.968750000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: -248562.750000000000000 23.062500000000000 -5786.500000000000000 +output: -5738264.921875000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: -45786.500000000000000 0.000000000000000 -347856.750000000000000 +output: -347856.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: 456.000000000000000 456.250000000000000 356047.750000000000000 +output: 564097.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: 34.031250000000000 3.000000000000000 -1.000000000000000 +output: 101.093750000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: 45786.750000000000000 -1.000000000000000 23.031250000000000 +output: -45763.718750000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: 1752065.000000000000000 1384.500000000000000 0.000000000000000 +output: 2425733992.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: 107.000000000000000 -7.000000000000000 456.250000000000000 +output: -292.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: -45667.250000000000000 1000000000.000000000000000 3.000000000000000 +output: -45667249999997.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: -7.000000000000000 -5786.500000000000000 -1.000000000000000 +output: 40504.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: -347856.500000000000000 1752.000000000000000 -45786.500000000000000 +output: -609490374.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: 356047.500000000000000 0.015625000000000 456.000000000000000 +output: 6019.242187500000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: -1.000000000000000 0.031250000000000 34.031250000000000 +output: 34.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmadd.d :: +input: 23.062500000000000 -248562.750000000000000 45786.031250000000000 +output: -5686692.390625000000000 +fcsr: 0x200 +roundig mode: -inf +fmadd.d :: +input: 0.000000000000000 -45786.500000000000000 -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: 456.250000000000000 456.250000000000000 356047.500000000000000 +output: 564211.562500000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: 3.000000000000000 34.031250000000000 -1.000000000000000 +output: 101.093750000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: -1.000000000000000 45786.750000000000000 23.062500000000000 +output: -45763.687500000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: 1384.500000000000000 1752065.000000000000000 1752.000000000000000 +output: 2425735744.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: -7.250000000000000 107.000000000000000 0.015625000000000 +output: -775.734375000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: 1000000000.000000000000000 -45667.250000000000000 0.031250000000000 +output: -45667249999999.968750000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: -5786.500000000000000 -7.250000000000000 -248562.750000000000000 +output: -206610.625000000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: 1752.000000000000000 -347856.500000000000000 1384.500000000000000 +output: -609443203.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: 0.015625000000000 356047.500000000000000 -7.250000000000000 +output: 5555.992187500000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: 0.031250000000000 -1.000000000000000 1000000000.000000000000000 +output: 999999999.968750000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: -248562.750000000000000 23.062500000000000 -5786.500000000000000 +output: -5738264.921875000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: -45786.500000000000000 0.000000000000000 -347856.750000000000000 +output: -347856.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: 456.000000000000000 456.250000000000000 356047.750000000000000 +output: 564097.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: 34.031250000000000 3.000000000000000 -1.000000000000000 +output: 101.093750000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: 45786.750000000000000 -1.000000000000000 23.031250000000000 +output: -45763.718750000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: 1752065.000000000000000 1384.500000000000000 0.000000000000000 +output: 2425733992.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: 107.000000000000000 -7.000000000000000 456.250000000000000 +output: -292.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: -45667.250000000000000 1000000000.000000000000000 3.000000000000000 +output: -45667249999997.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: -7.000000000000000 -5786.500000000000000 -1.000000000000000 +output: 40504.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: -347856.500000000000000 1752.000000000000000 -45786.500000000000000 +output: -609490374.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: 356047.500000000000000 0.015625000000000 456.000000000000000 +output: 6019.242187500000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: -1.000000000000000 0.031250000000000 34.031250000000000 +output: 34.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmadd.d :: +input: 23.062500000000000 -248562.750000000000000 45786.031250000000000 +output: -5686692.390625000000000 +fcsr: 0x300 +roundig mode: near +fmsub.s :: +input: 0.000000 -4578.500000 -347856.500000 +output: 347856.500000 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: 456.250000 456.250000 356047.500000 +output: -147883.437500 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: 3.000000 34.031250 -1.000000 +output: 103.093750 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: -1.000000 4578.750000 23.062500 +output: -4601.812500 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: 1384.500000 175.000000 1752.000000 +output: 240535.500000 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: -7.250000 107.000000 0.015625 +output: -775.765625 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: 1000000000.000000 -456.250000 0.031250 +output: -456249999360.000000 +fcsr: 0x1010000 +roundig mode: near +fmsub.s :: +input: -5786.500000 -7.250000 -248562.750000 +output: 290514.875000 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: 1752.000000 -3478.500000 1384.500000 +output: -6095716.500000 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: 0.015625 356.500000 -7.250000 +output: 12.820312 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: 0.031250 -1.000000 1000000000.000000 +output: -1000000000.000000 +fcsr: 0x1010000 +roundig mode: near +fmsub.s :: +input: -248562.750000 23.062500 -5786.500000 +output: -5726692.000000 +fcsr: 0x1010000 +roundig mode: near +fmsub.s :: +input: -45786.500000 0.000000 -347856.750000 +output: 347856.750000 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: 456.000000 456.250000 356047.750000 +output: -147997.750000 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: 34.031250 3.000000 -1.000000 +output: 103.093750 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: 45786.750000 -1.000000 23.031250 +output: -45809.781250 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: 1752065.000000 1384.500000 0.000000 +output: 2425733888.000000 +fcsr: 0x1010000 +roundig mode: near +fmsub.s :: +input: 107.000000 -7.000000 456.250000 +output: -1205.250000 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: -45667.250000 100.000000 3.000000 +output: -4566728.000000 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: -7.000000 -5786.500000 -1.000000 +output: 40506.500000 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: -347856.500000 1752.000000 -45786.500000 +output: -609398784.000000 +fcsr: 0x1010000 +roundig mode: near +fmsub.s :: +input: 356047.500000 0.015625 456.000000 +output: 5107.242188 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: -1.000000 0.031250 34.031250 +output: -34.062500 +fcsr: 0 +roundig mode: near +fmsub.s :: +input: 23.062500 -248562.750000 45786.031250 +output: -5778264.500000 +fcsr: 0x1010000 +roundig mode: zero +fmsub.s :: +input: 0.000000 -4578.500000 -347856.500000 +output: 347856.500000 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: 456.250000 456.250000 356047.500000 +output: -147883.437500 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: 3.000000 34.031250 -1.000000 +output: 103.093750 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: -1.000000 4578.750000 23.062500 +output: -4601.812500 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: 1384.500000 175.000000 1752.000000 +output: 240535.500000 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: -7.250000 107.000000 0.015625 +output: -775.765625 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: 1000000000.000000 -456.250000 0.031250 +output: -456249999360.000000 +fcsr: 0x1010100 +roundig mode: zero +fmsub.s :: +input: -5786.500000 -7.250000 -248562.750000 +output: 290514.875000 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: 1752.000000 -3478.500000 1384.500000 +output: -6095716.500000 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: 0.015625 356.500000 -7.250000 +output: 12.820312 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: 0.031250 -1.000000 1000000000.000000 +output: -1000000000.000000 +fcsr: 0x1010100 +roundig mode: zero +fmsub.s :: +input: -248562.750000 23.062500 -5786.500000 +output: -5726691.500000 +fcsr: 0x1010100 +roundig mode: zero +fmsub.s :: +input: -45786.500000 0.000000 -347856.750000 +output: 347856.750000 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: 456.000000 456.250000 356047.750000 +output: -147997.750000 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: 34.031250 3.000000 -1.000000 +output: 103.093750 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: 45786.750000 -1.000000 23.031250 +output: -45809.781250 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: 1752065.000000 1384.500000 0.000000 +output: 2425733888.000000 +fcsr: 0x1010100 +roundig mode: zero +fmsub.s :: +input: 107.000000 -7.000000 456.250000 +output: -1205.250000 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: -45667.250000 100.000000 3.000000 +output: -4566728.000000 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: -7.000000 -5786.500000 -1.000000 +output: 40506.500000 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: -347856.500000 1752.000000 -45786.500000 +output: -609398784.000000 +fcsr: 0x1010100 +roundig mode: zero +fmsub.s :: +input: 356047.500000 0.015625 456.000000 +output: 5107.242187 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: -1.000000 0.031250 34.031250 +output: -34.062500 +fcsr: 0x100 +roundig mode: zero +fmsub.s :: +input: 23.062500 -248562.750000 45786.031250 +output: -5778264.000000 +fcsr: 0x1010100 +roundig mode: +inf +fmsub.s :: +input: 0.000000 -4578.500000 -347856.500000 +output: 347856.500000 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: 456.250000 456.250000 356047.500000 +output: -147883.437500 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: 3.000000 34.031250 -1.000000 +output: 103.093750 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: -1.000000 4578.750000 23.062500 +output: -4601.812500 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: 1384.500000 175.000000 1752.000000 +output: 240535.500000 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: -7.250000 107.000000 0.015625 +output: -775.765625 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: 1000000000.000000 -456.250000 0.031250 +output: -456249999360.000000 +fcsr: 0x1010200 +roundig mode: +inf +fmsub.s :: +input: -5786.500000 -7.250000 -248562.750000 +output: 290514.875000 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: 1752.000000 -3478.500000 1384.500000 +output: -6095716.500000 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: 0.015625 356.500000 -7.250000 +output: 12.820313 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: 0.031250 -1.000000 1000000000.000000 +output: -1000000000.000000 +fcsr: 0x1010200 +roundig mode: +inf +fmsub.s :: +input: -248562.750000 23.062500 -5786.500000 +output: -5726691.500000 +fcsr: 0x1010200 +roundig mode: +inf +fmsub.s :: +input: -45786.500000 0.000000 -347856.750000 +output: 347856.750000 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: 456.000000 456.250000 356047.750000 +output: -147997.750000 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: 34.031250 3.000000 -1.000000 +output: 103.093750 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: 45786.750000 -1.000000 23.031250 +output: -45809.781250 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: 1752065.000000 1384.500000 0.000000 +output: 2425734144.000000 +fcsr: 0x1010200 +roundig mode: +inf +fmsub.s :: +input: 107.000000 -7.000000 456.250000 +output: -1205.250000 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: -45667.250000 100.000000 3.000000 +output: -4566728.000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: -7.000000 -5786.500000 -1.000000 +output: 40506.500000 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: -347856.500000 1752.000000 -45786.500000 +output: -609398784.000000 +fcsr: 0x1010200 +roundig mode: +inf +fmsub.s :: +input: 356047.500000 0.015625 456.000000 +output: 5107.242188 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: -1.000000 0.031250 34.031250 +output: -34.062500 +fcsr: 0x200 +roundig mode: +inf +fmsub.s :: +input: 23.062500 -248562.750000 45786.031250 +output: -5778264.000000 +fcsr: 0x1010200 +roundig mode: -inf +fmsub.s :: +input: 0.000000 -4578.500000 -347856.500000 +output: 347856.500000 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: 456.250000 456.250000 356047.500000 +output: -147883.437500 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: 3.000000 34.031250 -1.000000 +output: 103.093750 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: -1.000000 4578.750000 23.062500 +output: -4601.812500 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: 1384.500000 175.000000 1752.000000 +output: 240535.500000 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: -7.250000 107.000000 0.015625 +output: -775.765625 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: 1000000000.000000 -456.250000 0.031250 +output: -456250032128.000000 +fcsr: 0x1010300 +roundig mode: -inf +fmsub.s :: +input: -5786.500000 -7.250000 -248562.750000 +output: 290514.875000 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: 1752.000000 -3478.500000 1384.500000 +output: -6095716.500000 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: 0.015625 356.500000 -7.250000 +output: 12.820312 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: 0.031250 -1.000000 1000000000.000000 +output: -1000000064.000000 +fcsr: 0x1010300 +roundig mode: -inf +fmsub.s :: +input: -248562.750000 23.062500 -5786.500000 +output: -5726692.000000 +fcsr: 0x1010300 +roundig mode: -inf +fmsub.s :: +input: -45786.500000 0.000000 -347856.750000 +output: 347856.750000 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: 456.000000 456.250000 356047.750000 +output: -147997.750000 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: 34.031250 3.000000 -1.000000 +output: 103.093750 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: 45786.750000 -1.000000 23.031250 +output: -45809.781250 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: 1752065.000000 1384.500000 0.000000 +output: 2425733888.000000 +fcsr: 0x1010300 +roundig mode: -inf +fmsub.s :: +input: 107.000000 -7.000000 456.250000 +output: -1205.250000 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: -45667.250000 100.000000 3.000000 +output: -4566728.000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: -7.000000 -5786.500000 -1.000000 +output: 40506.500000 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: -347856.500000 1752.000000 -45786.500000 +output: -609398848.000000 +fcsr: 0x1010300 +roundig mode: -inf +fmsub.s :: +input: 356047.500000 0.015625 456.000000 +output: 5107.242187 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: -1.000000 0.031250 34.031250 +output: -34.062500 +fcsr: 0x300 +roundig mode: -inf +fmsub.s :: +input: 23.062500 -248562.750000 45786.031250 +output: -5778264.500000 +fcsr: 0x1010300 +roundig mode: near +fmsub.d :: +input: 0.000000000000000 -45786.500000000000000 -347856.500000000000000 +output: 347856.500000000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: 456.250000000000000 456.250000000000000 356047.500000000000000 +output: -147883.437500000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: 3.000000000000000 34.031250000000000 -1.000000000000000 +output: 103.093750000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: -1.000000000000000 45786.750000000000000 23.062500000000000 +output: -45809.812500000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: 1384.500000000000000 1752065.000000000000000 1752.000000000000000 +output: 2425732240.500000000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: -7.250000000000000 107.000000000000000 0.015625000000000 +output: -775.765625000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: 1000000000.000000000000000 -45667.250000000000000 0.031250000000000 +output: -45667250000000.031250000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: -5786.500000000000000 -7.250000000000000 -248562.750000000000000 +output: 290514.875000000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: 1752.000000000000000 -347856.500000000000000 1384.500000000000000 +output: -609445972.500000000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: 0.015625000000000 356047.500000000000000 -7.250000000000000 +output: 5570.492187500000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: 0.031250000000000 -1.000000000000000 1000000000.000000000000000 +output: -1000000000.031250000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: -248562.750000000000000 23.062500000000000 -5786.500000000000000 +output: -5726691.921875000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: -45786.500000000000000 0.000000000000000 -347856.750000000000000 +output: 347856.750000000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: 456.000000000000000 456.250000000000000 356047.750000000000000 +output: -147997.750000000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: 34.031250000000000 3.000000000000000 -1.000000000000000 +output: 103.093750000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: 45786.750000000000000 -1.000000000000000 23.031250000000000 +output: -45809.781250000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: 1752065.000000000000000 1384.500000000000000 0.000000000000000 +output: 2425733992.500000000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: 107.000000000000000 -7.000000000000000 456.250000000000000 +output: -1205.250000000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: -45667.250000000000000 1000000000.000000000000000 3.000000000000000 +output: -45667250000003.000000000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: -7.000000000000000 -5786.500000000000000 -1.000000000000000 +output: 40506.500000000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: -347856.500000000000000 1752.000000000000000 -45786.500000000000000 +output: -609398801.500000000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: 356047.500000000000000 0.015625000000000 456.000000000000000 +output: 5107.242187500000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: -1.000000000000000 0.031250000000000 34.031250000000000 +output: -34.062500000000000 +fcsr: 0 +roundig mode: near +fmsub.d :: +input: 23.062500000000000 -248562.750000000000000 45786.031250000000000 +output: -5778264.453125000000000 +fcsr: 0 +roundig mode: zero +fmsub.d :: +input: 0.000000000000000 -45786.500000000000000 -347856.500000000000000 +output: 347856.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: 456.250000000000000 456.250000000000000 356047.500000000000000 +output: -147883.437500000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: 3.000000000000000 34.031250000000000 -1.000000000000000 +output: 103.093750000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: -1.000000000000000 45786.750000000000000 23.062500000000000 +output: -45809.812500000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: 1384.500000000000000 1752065.000000000000000 1752.000000000000000 +output: 2425732240.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: -7.250000000000000 107.000000000000000 0.015625000000000 +output: -775.765625000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: 1000000000.000000000000000 -45667.250000000000000 0.031250000000000 +output: -45667250000000.031250000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: -5786.500000000000000 -7.250000000000000 -248562.750000000000000 +output: 290514.875000000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: 1752.000000000000000 -347856.500000000000000 1384.500000000000000 +output: -609445972.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: 0.015625000000000 356047.500000000000000 -7.250000000000000 +output: 5570.492187500000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: 0.031250000000000 -1.000000000000000 1000000000.000000000000000 +output: -1000000000.031250000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: -248562.750000000000000 23.062500000000000 -5786.500000000000000 +output: -5726691.921875000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: -45786.500000000000000 0.000000000000000 -347856.750000000000000 +output: 347856.750000000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: 456.000000000000000 456.250000000000000 356047.750000000000000 +output: -147997.750000000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: 34.031250000000000 3.000000000000000 -1.000000000000000 +output: 103.093750000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: 45786.750000000000000 -1.000000000000000 23.031250000000000 +output: -45809.781250000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: 1752065.000000000000000 1384.500000000000000 0.000000000000000 +output: 2425733992.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: 107.000000000000000 -7.000000000000000 456.250000000000000 +output: -1205.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: -45667.250000000000000 1000000000.000000000000000 3.000000000000000 +output: -45667250000003.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: -7.000000000000000 -5786.500000000000000 -1.000000000000000 +output: 40506.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: -347856.500000000000000 1752.000000000000000 -45786.500000000000000 +output: -609398801.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: 356047.500000000000000 0.015625000000000 456.000000000000000 +output: 5107.242187500000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: -1.000000000000000 0.031250000000000 34.031250000000000 +output: -34.062500000000000 +fcsr: 0x100 +roundig mode: zero +fmsub.d :: +input: 23.062500000000000 -248562.750000000000000 45786.031250000000000 +output: -5778264.453125000000000 +fcsr: 0x100 +roundig mode: +inf +fmsub.d :: +input: 0.000000000000000 -45786.500000000000000 -347856.500000000000000 +output: 347856.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: 456.250000000000000 456.250000000000000 356047.500000000000000 +output: -147883.437500000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: 3.000000000000000 34.031250000000000 -1.000000000000000 +output: 103.093750000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: -1.000000000000000 45786.750000000000000 23.062500000000000 +output: -45809.812500000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: 1384.500000000000000 1752065.000000000000000 1752.000000000000000 +output: 2425732240.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: -7.250000000000000 107.000000000000000 0.015625000000000 +output: -775.765625000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: 1000000000.000000000000000 -45667.250000000000000 0.031250000000000 +output: -45667250000000.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: -5786.500000000000000 -7.250000000000000 -248562.750000000000000 +output: 290514.875000000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: 1752.000000000000000 -347856.500000000000000 1384.500000000000000 +output: -609445972.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: 0.015625000000000 356047.500000000000000 -7.250000000000000 +output: 5570.492187500000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: 0.031250000000000 -1.000000000000000 1000000000.000000000000000 +output: -1000000000.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: -248562.750000000000000 23.062500000000000 -5786.500000000000000 +output: -5726691.921875000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: -45786.500000000000000 0.000000000000000 -347856.750000000000000 +output: 347856.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: 456.000000000000000 456.250000000000000 356047.750000000000000 +output: -147997.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: 34.031250000000000 3.000000000000000 -1.000000000000000 +output: 103.093750000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: 45786.750000000000000 -1.000000000000000 23.031250000000000 +output: -45809.781250000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: 1752065.000000000000000 1384.500000000000000 0.000000000000000 +output: 2425733992.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: 107.000000000000000 -7.000000000000000 456.250000000000000 +output: -1205.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: -45667.250000000000000 1000000000.000000000000000 3.000000000000000 +output: -45667250000003.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: -7.000000000000000 -5786.500000000000000 -1.000000000000000 +output: 40506.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: -347856.500000000000000 1752.000000000000000 -45786.500000000000000 +output: -609398801.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: 356047.500000000000000 0.015625000000000 456.000000000000000 +output: 5107.242187500000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: -1.000000000000000 0.031250000000000 34.031250000000000 +output: -34.062500000000000 +fcsr: 0x200 +roundig mode: +inf +fmsub.d :: +input: 23.062500000000000 -248562.750000000000000 45786.031250000000000 +output: -5778264.453125000000000 +fcsr: 0x200 +roundig mode: -inf +fmsub.d :: +input: 0.000000000000000 -45786.500000000000000 -347856.500000000000000 +output: 347856.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: 456.250000000000000 456.250000000000000 356047.500000000000000 +output: -147883.437500000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: 3.000000000000000 34.031250000000000 -1.000000000000000 +output: 103.093750000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: -1.000000000000000 45786.750000000000000 23.062500000000000 +output: -45809.812500000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: 1384.500000000000000 1752065.000000000000000 1752.000000000000000 +output: 2425732240.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: -7.250000000000000 107.000000000000000 0.015625000000000 +output: -775.765625000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: 1000000000.000000000000000 -45667.250000000000000 0.031250000000000 +output: -45667250000000.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: -5786.500000000000000 -7.250000000000000 -248562.750000000000000 +output: 290514.875000000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: 1752.000000000000000 -347856.500000000000000 1384.500000000000000 +output: -609445972.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: 0.015625000000000 356047.500000000000000 -7.250000000000000 +output: 5570.492187500000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: 0.031250000000000 -1.000000000000000 1000000000.000000000000000 +output: -1000000000.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: -248562.750000000000000 23.062500000000000 -5786.500000000000000 +output: -5726691.921875000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: -45786.500000000000000 0.000000000000000 -347856.750000000000000 +output: 347856.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: 456.000000000000000 456.250000000000000 356047.750000000000000 +output: -147997.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: 34.031250000000000 3.000000000000000 -1.000000000000000 +output: 103.093750000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: 45786.750000000000000 -1.000000000000000 23.031250000000000 +output: -45809.781250000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: 1752065.000000000000000 1384.500000000000000 0.000000000000000 +output: 2425733992.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: 107.000000000000000 -7.000000000000000 456.250000000000000 +output: -1205.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: -45667.250000000000000 1000000000.000000000000000 3.000000000000000 +output: -45667250000003.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: -7.000000000000000 -5786.500000000000000 -1.000000000000000 +output: 40506.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: -347856.500000000000000 1752.000000000000000 -45786.500000000000000 +output: -609398801.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: 356047.500000000000000 0.015625000000000 456.000000000000000 +output: 5107.242187500000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: -1.000000000000000 0.031250000000000 34.031250000000000 +output: -34.062500000000000 +fcsr: 0x300 +roundig mode: -inf +fmsub.d :: +input: 23.062500000000000 -248562.750000000000000 45786.031250000000000 +output: -5778264.453125000000000 +fcsr: 0x300 +roundig mode: near +fnmadd.s :: +input: 0.000000 -4578.500000 -347856.500000 +output: 347856.500000 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: 456.250000 456.250000 356047.500000 +output: -564211.562500 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: 3.000000 34.031250 -1.000000 +output: -101.093750 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: -1.000000 4578.750000 23.062500 +output: 4555.687500 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: 1384.500000 175.000000 1752.000000 +output: -244039.500000 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: -7.250000 107.000000 0.015625 +output: 775.734375 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: 1000000000.000000 -456.250000 0.031250 +output: 456249999360.000000 +fcsr: 0x1010000 +roundig mode: near +fnmadd.s :: +input: -5786.500000 -7.250000 -248562.750000 +output: 206610.625000 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: 1752.000000 -3478.500000 1384.500000 +output: 6092947.500000 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: 0.015625 356.500000 -7.250000 +output: 1.679688 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: 0.031250 -1.000000 1000000000.000000 +output: -1000000000.000000 +fcsr: 0x1010000 +roundig mode: near +fnmadd.s :: +input: -248562.750000 23.062500 -5786.500000 +output: 5738265.000000 +fcsr: 0x1010000 +roundig mode: near +fnmadd.s :: +input: -45786.500000 0.000000 -347856.750000 +output: 347856.750000 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: 456.000000 456.250000 356047.750000 +output: -564097.750000 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: 34.031250 3.000000 -1.000000 +output: -101.093750 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: 45786.750000 -1.000000 23.031250 +output: 45763.718750 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: 1752065.000000 1384.500000 0.000000 +output: -2425733888.000000 +fcsr: 0x1010000 +roundig mode: near +fnmadd.s :: +input: 107.000000 -7.000000 456.250000 +output: 292.750000 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: -45667.250000 100.000000 3.000000 +output: 4566722.000000 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: -7.000000 -5786.500000 -1.000000 +output: -40504.500000 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: -347856.500000 1752.000000 -45786.500000 +output: 609490368.000000 +fcsr: 0x1010000 +roundig mode: near +fnmadd.s :: +input: 356047.500000 0.015625 456.000000 +output: -6019.242188 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: -1.000000 0.031250 34.031250 +output: -34.000000 +fcsr: 0 +roundig mode: near +fnmadd.s :: +input: 23.062500 -248562.750000 45786.031250 +output: 5686692.500000 +fcsr: 0x1010000 +roundig mode: zero +fnmadd.s :: +input: 0.000000 -4578.500000 -347856.500000 +output: 347856.500000 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: 456.250000 456.250000 356047.500000 +output: -564211.562500 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: 3.000000 34.031250 -1.000000 +output: -101.093750 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: -1.000000 4578.750000 23.062500 +output: 4555.687500 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: 1384.500000 175.000000 1752.000000 +output: -244039.500000 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: -7.250000 107.000000 0.015625 +output: 775.734375 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: 1000000000.000000 -456.250000 0.031250 +output: 456249999360.000000 +fcsr: 0x1010100 +roundig mode: zero +fnmadd.s :: +input: -5786.500000 -7.250000 -248562.750000 +output: 206610.625000 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: 1752.000000 -3478.500000 1384.500000 +output: 6092947.500000 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: 0.015625 356.500000 -7.250000 +output: 1.679687 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: 0.031250 -1.000000 1000000000.000000 +output: -999999936.000000 +fcsr: 0x1010100 +roundig mode: zero +fnmadd.s :: +input: -248562.750000 23.062500 -5786.500000 +output: 5738264.500000 +fcsr: 0x1010100 +roundig mode: zero +fnmadd.s :: +input: -45786.500000 0.000000 -347856.750000 +output: 347856.750000 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: 456.000000 456.250000 356047.750000 +output: -564097.750000 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: 34.031250 3.000000 -1.000000 +output: -101.093750 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: 45786.750000 -1.000000 23.031250 +output: 45763.718750 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: 1752065.000000 1384.500000 0.000000 +output: -2425733888.000000 +fcsr: 0x1010100 +roundig mode: zero +fnmadd.s :: +input: 107.000000 -7.000000 456.250000 +output: 292.750000 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: -45667.250000 100.000000 3.000000 +output: 4566722.000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: -7.000000 -5786.500000 -1.000000 +output: -40504.500000 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: -347856.500000 1752.000000 -45786.500000 +output: 609490368.000000 +fcsr: 0x1010100 +roundig mode: zero +fnmadd.s :: +input: 356047.500000 0.015625 456.000000 +output: -6019.242187 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: -1.000000 0.031250 34.031250 +output: -34.000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.s :: +input: 23.062500 -248562.750000 45786.031250 +output: 5686692.000000 +fcsr: 0x1010100 +roundig mode: +inf +fnmadd.s :: +input: 0.000000 -4578.500000 -347856.500000 +output: 347856.500000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: 456.250000 456.250000 356047.500000 +output: -564211.562500 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: 3.000000 34.031250 -1.000000 +output: -101.093750 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: -1.000000 4578.750000 23.062500 +output: 4555.687500 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: 1384.500000 175.000000 1752.000000 +output: -244039.500000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: -7.250000 107.000000 0.015625 +output: 775.734375 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: 1000000000.000000 -456.250000 0.031250 +output: 456249999360.000000 +fcsr: 0x1010200 +roundig mode: +inf +fnmadd.s :: +input: -5786.500000 -7.250000 -248562.750000 +output: 206610.625000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: 1752.000000 -3478.500000 1384.500000 +output: 6092947.500000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: 0.015625 356.500000 -7.250000 +output: 1.679688 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: 0.031250 -1.000000 1000000000.000000 +output: -1000000000.000000 +fcsr: 0x1010200 +roundig mode: +inf +fnmadd.s :: +input: -248562.750000 23.062500 -5786.500000 +output: 5738264.500000 +fcsr: 0x1010200 +roundig mode: +inf +fnmadd.s :: +input: -45786.500000 0.000000 -347856.750000 +output: 347856.750000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: 456.000000 456.250000 356047.750000 +output: -564097.750000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: 34.031250 3.000000 -1.000000 +output: -101.093750 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: 45786.750000 -1.000000 23.031250 +output: 45763.718750 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: 1752065.000000 1384.500000 0.000000 +output: -2425734144.000000 +fcsr: 0x1010200 +roundig mode: +inf +fnmadd.s :: +input: 107.000000 -7.000000 456.250000 +output: 292.750000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: -45667.250000 100.000000 3.000000 +output: 4566722.000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: -7.000000 -5786.500000 -1.000000 +output: -40504.500000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: -347856.500000 1752.000000 -45786.500000 +output: 609490368.000000 +fcsr: 0x1010200 +roundig mode: +inf +fnmadd.s :: +input: 356047.500000 0.015625 456.000000 +output: -6019.242187 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: -1.000000 0.031250 34.031250 +output: -34.000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.s :: +input: 23.062500 -248562.750000 45786.031250 +output: 5686692.000000 +fcsr: 0x1010200 +roundig mode: -inf +fnmadd.s :: +input: 0.000000 -4578.500000 -347856.500000 +output: 347856.500000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: 456.250000 456.250000 356047.500000 +output: -564211.562500 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: 3.000000 34.031250 -1.000000 +output: -101.093750 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: -1.000000 4578.750000 23.062500 +output: 4555.687500 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: 1384.500000 175.000000 1752.000000 +output: -244039.500000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: -7.250000 107.000000 0.015625 +output: 775.734375 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: 1000000000.000000 -456.250000 0.031250 +output: 456250032128.000000 +fcsr: 0x1010300 +roundig mode: -inf +fnmadd.s :: +input: -5786.500000 -7.250000 -248562.750000 +output: 206610.625000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: 1752.000000 -3478.500000 1384.500000 +output: 6092947.500000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: 0.015625 356.500000 -7.250000 +output: 1.679687 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: 0.031250 -1.000000 1000000000.000000 +output: -999999936.000000 +fcsr: 0x1010300 +roundig mode: -inf +fnmadd.s :: +input: -248562.750000 23.062500 -5786.500000 +output: 5738265.000000 +fcsr: 0x1010300 +roundig mode: -inf +fnmadd.s :: +input: -45786.500000 0.000000 -347856.750000 +output: 347856.750000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: 456.000000 456.250000 356047.750000 +output: -564097.750000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: 34.031250 3.000000 -1.000000 +output: -101.093750 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: 45786.750000 -1.000000 23.031250 +output: 45763.718750 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: 1752065.000000 1384.500000 0.000000 +output: -2425733888.000000 +fcsr: 0x1010300 +roundig mode: -inf +fnmadd.s :: +input: 107.000000 -7.000000 456.250000 +output: 292.750000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: -45667.250000 100.000000 3.000000 +output: 4566722.000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: -7.000000 -5786.500000 -1.000000 +output: -40504.500000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: -347856.500000 1752.000000 -45786.500000 +output: 609490432.000000 +fcsr: 0x1010300 +roundig mode: -inf +fnmadd.s :: +input: 356047.500000 0.015625 456.000000 +output: -6019.242188 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: -1.000000 0.031250 34.031250 +output: -34.000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.s :: +input: 23.062500 -248562.750000 45786.031250 +output: 5686692.500000 +fcsr: 0x1010300 +roundig mode: near +fnmadd.d :: +input: 0.000000000000000 -45786.500000000000000 -347856.500000000000000 +output: 347856.500000000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: 456.250000000000000 456.250000000000000 356047.500000000000000 +output: -564211.562500000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: 3.000000000000000 34.031250000000000 -1.000000000000000 +output: -101.093750000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: -1.000000000000000 45786.750000000000000 23.062500000000000 +output: 45763.687500000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: 1384.500000000000000 1752065.000000000000000 1752.000000000000000 +output: -2425735744.500000000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: -7.250000000000000 107.000000000000000 0.015625000000000 +output: 775.734375000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: 1000000000.000000000000000 -45667.250000000000000 0.031250000000000 +output: 45667249999999.968750000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: -5786.500000000000000 -7.250000000000000 -248562.750000000000000 +output: 206610.625000000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: 1752.000000000000000 -347856.500000000000000 1384.500000000000000 +output: 609443203.500000000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: 0.015625000000000 356047.500000000000000 -7.250000000000000 +output: -5555.992187500000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: 0.031250000000000 -1.000000000000000 1000000000.000000000000000 +output: -999999999.968750000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: -248562.750000000000000 23.062500000000000 -5786.500000000000000 +output: 5738264.921875000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: -45786.500000000000000 0.000000000000000 -347856.750000000000000 +output: 347856.750000000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: 456.000000000000000 456.250000000000000 356047.750000000000000 +output: -564097.750000000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: 34.031250000000000 3.000000000000000 -1.000000000000000 +output: -101.093750000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: 45786.750000000000000 -1.000000000000000 23.031250000000000 +output: 45763.718750000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: 1752065.000000000000000 1384.500000000000000 0.000000000000000 +output: -2425733992.500000000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: 107.000000000000000 -7.000000000000000 456.250000000000000 +output: 292.750000000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: -45667.250000000000000 1000000000.000000000000000 3.000000000000000 +output: 45667249999997.000000000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: -7.000000000000000 -5786.500000000000000 -1.000000000000000 +output: -40504.500000000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: -347856.500000000000000 1752.000000000000000 -45786.500000000000000 +output: 609490374.500000000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: 356047.500000000000000 0.015625000000000 456.000000000000000 +output: -6019.242187500000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: -1.000000000000000 0.031250000000000 34.031250000000000 +output: -34.000000000000000 +fcsr: 0 +roundig mode: near +fnmadd.d :: +input: 23.062500000000000 -248562.750000000000000 45786.031250000000000 +output: 5686692.390625000000000 +fcsr: 0 +roundig mode: zero +fnmadd.d :: +input: 0.000000000000000 -45786.500000000000000 -347856.500000000000000 +output: 347856.500000000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: 456.250000000000000 456.250000000000000 356047.500000000000000 +output: -564211.562500000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: 3.000000000000000 34.031250000000000 -1.000000000000000 +output: -101.093750000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: -1.000000000000000 45786.750000000000000 23.062500000000000 +output: 45763.687500000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: 1384.500000000000000 1752065.000000000000000 1752.000000000000000 +output: -2425735744.500000000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: -7.250000000000000 107.000000000000000 0.015625000000000 +output: 775.734375000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: 1000000000.000000000000000 -45667.250000000000000 0.031250000000000 +output: 45667249999999.968750000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: -5786.500000000000000 -7.250000000000000 -248562.750000000000000 +output: 206610.625000000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: 1752.000000000000000 -347856.500000000000000 1384.500000000000000 +output: 609443203.500000000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: 0.015625000000000 356047.500000000000000 -7.250000000000000 +output: -5555.992187500000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: 0.031250000000000 -1.000000000000000 1000000000.000000000000000 +output: -999999999.968750000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: -248562.750000000000000 23.062500000000000 -5786.500000000000000 +output: 5738264.921875000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: -45786.500000000000000 0.000000000000000 -347856.750000000000000 +output: 347856.750000000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: 456.000000000000000 456.250000000000000 356047.750000000000000 +output: -564097.750000000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: 34.031250000000000 3.000000000000000 -1.000000000000000 +output: -101.093750000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: 45786.750000000000000 -1.000000000000000 23.031250000000000 +output: 45763.718750000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: 1752065.000000000000000 1384.500000000000000 0.000000000000000 +output: -2425733992.500000000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: 107.000000000000000 -7.000000000000000 456.250000000000000 +output: 292.750000000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: -45667.250000000000000 1000000000.000000000000000 3.000000000000000 +output: 45667249999997.000000000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: -7.000000000000000 -5786.500000000000000 -1.000000000000000 +output: -40504.500000000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: -347856.500000000000000 1752.000000000000000 -45786.500000000000000 +output: 609490374.500000000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: 356047.500000000000000 0.015625000000000 456.000000000000000 +output: -6019.242187500000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: -1.000000000000000 0.031250000000000 34.031250000000000 +output: -34.000000000000000 +fcsr: 0x100 +roundig mode: zero +fnmadd.d :: +input: 23.062500000000000 -248562.750000000000000 45786.031250000000000 +output: 5686692.390625000000000 +fcsr: 0x100 +roundig mode: +inf +fnmadd.d :: +input: 0.000000000000000 -45786.500000000000000 -347856.500000000000000 +output: 347856.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: 456.250000000000000 456.250000000000000 356047.500000000000000 +output: -564211.562500000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: 3.000000000000000 34.031250000000000 -1.000000000000000 +output: -101.093750000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: -1.000000000000000 45786.750000000000000 23.062500000000000 +output: 45763.687500000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: 1384.500000000000000 1752065.000000000000000 1752.000000000000000 +output: -2425735744.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: -7.250000000000000 107.000000000000000 0.015625000000000 +output: 775.734375000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: 1000000000.000000000000000 -45667.250000000000000 0.031250000000000 +output: 45667249999999.968750000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: -5786.500000000000000 -7.250000000000000 -248562.750000000000000 +output: 206610.625000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: 1752.000000000000000 -347856.500000000000000 1384.500000000000000 +output: 609443203.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: 0.015625000000000 356047.500000000000000 -7.250000000000000 +output: -5555.992187500000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: 0.031250000000000 -1.000000000000000 1000000000.000000000000000 +output: -999999999.968750000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: -248562.750000000000000 23.062500000000000 -5786.500000000000000 +output: 5738264.921875000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: -45786.500000000000000 0.000000000000000 -347856.750000000000000 +output: 347856.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: 456.000000000000000 456.250000000000000 356047.750000000000000 +output: -564097.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: 34.031250000000000 3.000000000000000 -1.000000000000000 +output: -101.093750000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: 45786.750000000000000 -1.000000000000000 23.031250000000000 +output: 45763.718750000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: 1752065.000000000000000 1384.500000000000000 0.000000000000000 +output: -2425733992.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: 107.000000000000000 -7.000000000000000 456.250000000000000 +output: 292.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: -45667.250000000000000 1000000000.000000000000000 3.000000000000000 +output: 45667249999997.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: -7.000000000000000 -5786.500000000000000 -1.000000000000000 +output: -40504.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: -347856.500000000000000 1752.000000000000000 -45786.500000000000000 +output: 609490374.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: 356047.500000000000000 0.015625000000000 456.000000000000000 +output: -6019.242187500000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: -1.000000000000000 0.031250000000000 34.031250000000000 +output: -34.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmadd.d :: +input: 23.062500000000000 -248562.750000000000000 45786.031250000000000 +output: 5686692.390625000000000 +fcsr: 0x200 +roundig mode: -inf +fnmadd.d :: +input: 0.000000000000000 -45786.500000000000000 -347856.500000000000000 +output: 347856.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: 456.250000000000000 456.250000000000000 356047.500000000000000 +output: -564211.562500000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: 3.000000000000000 34.031250000000000 -1.000000000000000 +output: -101.093750000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: -1.000000000000000 45786.750000000000000 23.062500000000000 +output: 45763.687500000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: 1384.500000000000000 1752065.000000000000000 1752.000000000000000 +output: -2425735744.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: -7.250000000000000 107.000000000000000 0.015625000000000 +output: 775.734375000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: 1000000000.000000000000000 -45667.250000000000000 0.031250000000000 +output: 45667249999999.968750000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: -5786.500000000000000 -7.250000000000000 -248562.750000000000000 +output: 206610.625000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: 1752.000000000000000 -347856.500000000000000 1384.500000000000000 +output: 609443203.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: 0.015625000000000 356047.500000000000000 -7.250000000000000 +output: -5555.992187500000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: 0.031250000000000 -1.000000000000000 1000000000.000000000000000 +output: -999999999.968750000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: -248562.750000000000000 23.062500000000000 -5786.500000000000000 +output: 5738264.921875000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: -45786.500000000000000 0.000000000000000 -347856.750000000000000 +output: 347856.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: 456.000000000000000 456.250000000000000 356047.750000000000000 +output: -564097.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: 34.031250000000000 3.000000000000000 -1.000000000000000 +output: -101.093750000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: 45786.750000000000000 -1.000000000000000 23.031250000000000 +output: 45763.718750000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: 1752065.000000000000000 1384.500000000000000 0.000000000000000 +output: -2425733992.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: 107.000000000000000 -7.000000000000000 456.250000000000000 +output: 292.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: -45667.250000000000000 1000000000.000000000000000 3.000000000000000 +output: 45667249999997.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: -7.000000000000000 -5786.500000000000000 -1.000000000000000 +output: -40504.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: -347856.500000000000000 1752.000000000000000 -45786.500000000000000 +output: 609490374.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: 356047.500000000000000 0.015625000000000 456.000000000000000 +output: -6019.242187500000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: -1.000000000000000 0.031250000000000 34.031250000000000 +output: -34.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmadd.d :: +input: 23.062500000000000 -248562.750000000000000 45786.031250000000000 +output: 5686692.390625000000000 +fcsr: 0x300 +roundig mode: near +fnmsub.s :: +input: 0.000000 -4578.500000 -347856.500000 +output: -347856.500000 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: 456.250000 456.250000 356047.500000 +output: 147883.437500 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: 3.000000 34.031250 -1.000000 +output: -103.093750 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: -1.000000 4578.750000 23.062500 +output: 4601.812500 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: 1384.500000 175.000000 1752.000000 +output: -240535.500000 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: -7.250000 107.000000 0.015625 +output: 775.765625 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: 1000000000.000000 -456.250000 0.031250 +output: 456249999360.000000 +fcsr: 0x1010000 +roundig mode: near +fnmsub.s :: +input: -5786.500000 -7.250000 -248562.750000 +output: -290514.875000 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: 1752.000000 -3478.500000 1384.500000 +output: 6095716.500000 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: 0.015625 356.500000 -7.250000 +output: -12.820312 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: 0.031250 -1.000000 1000000000.000000 +output: 1000000000.000000 +fcsr: 0x1010000 +roundig mode: near +fnmsub.s :: +input: -248562.750000 23.062500 -5786.500000 +output: 5726692.000000 +fcsr: 0x1010000 +roundig mode: near +fnmsub.s :: +input: -45786.500000 0.000000 -347856.750000 +output: -347856.750000 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: 456.000000 456.250000 356047.750000 +output: 147997.750000 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: 34.031250 3.000000 -1.000000 +output: -103.093750 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: 45786.750000 -1.000000 23.031250 +output: 45809.781250 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: 1752065.000000 1384.500000 0.000000 +output: -2425733888.000000 +fcsr: 0x1010000 +roundig mode: near +fnmsub.s :: +input: 107.000000 -7.000000 456.250000 +output: 1205.250000 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: -45667.250000 100.000000 3.000000 +output: 4566728.000000 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: -7.000000 -5786.500000 -1.000000 +output: -40506.500000 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: -347856.500000 1752.000000 -45786.500000 +output: 609398784.000000 +fcsr: 0x1010000 +roundig mode: near +fnmsub.s :: +input: 356047.500000 0.015625 456.000000 +output: -5107.242188 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: -1.000000 0.031250 34.031250 +output: 34.062500 +fcsr: 0 +roundig mode: near +fnmsub.s :: +input: 23.062500 -248562.750000 45786.031250 +output: 5778264.500000 +fcsr: 0x1010000 +roundig mode: zero +fnmsub.s :: +input: 0.000000 -4578.500000 -347856.500000 +output: -347856.500000 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: 456.250000 456.250000 356047.500000 +output: 147883.437500 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: 3.000000 34.031250 -1.000000 +output: -103.093750 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: -1.000000 4578.750000 23.062500 +output: 4601.812500 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: 1384.500000 175.000000 1752.000000 +output: -240535.500000 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: -7.250000 107.000000 0.015625 +output: 775.765625 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: 1000000000.000000 -456.250000 0.031250 +output: 456249999360.000000 +fcsr: 0x1010100 +roundig mode: zero +fnmsub.s :: +input: -5786.500000 -7.250000 -248562.750000 +output: -290514.875000 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: 1752.000000 -3478.500000 1384.500000 +output: 6095716.500000 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: 0.015625 356.500000 -7.250000 +output: -12.820312 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: 0.031250 -1.000000 1000000000.000000 +output: 1000000000.000000 +fcsr: 0x1010100 +roundig mode: zero +fnmsub.s :: +input: -248562.750000 23.062500 -5786.500000 +output: 5726691.500000 +fcsr: 0x1010100 +roundig mode: zero +fnmsub.s :: +input: -45786.500000 0.000000 -347856.750000 +output: -347856.750000 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: 456.000000 456.250000 356047.750000 +output: 147997.750000 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: 34.031250 3.000000 -1.000000 +output: -103.093750 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: 45786.750000 -1.000000 23.031250 +output: 45809.781250 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: 1752065.000000 1384.500000 0.000000 +output: -2425733888.000000 +fcsr: 0x1010100 +roundig mode: zero +fnmsub.s :: +input: 107.000000 -7.000000 456.250000 +output: 1205.250000 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: -45667.250000 100.000000 3.000000 +output: 4566728.000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: -7.000000 -5786.500000 -1.000000 +output: -40506.500000 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: -347856.500000 1752.000000 -45786.500000 +output: 609398784.000000 +fcsr: 0x1010100 +roundig mode: zero +fnmsub.s :: +input: 356047.500000 0.015625 456.000000 +output: -5107.242187 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: -1.000000 0.031250 34.031250 +output: 34.062500 +fcsr: 0x100 +roundig mode: zero +fnmsub.s :: +input: 23.062500 -248562.750000 45786.031250 +output: 5778264.000000 +fcsr: 0x1010100 +roundig mode: +inf +fnmsub.s :: +input: 0.000000 -4578.500000 -347856.500000 +output: -347856.500000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: 456.250000 456.250000 356047.500000 +output: 147883.437500 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: 3.000000 34.031250 -1.000000 +output: -103.093750 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: -1.000000 4578.750000 23.062500 +output: 4601.812500 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: 1384.500000 175.000000 1752.000000 +output: -240535.500000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: -7.250000 107.000000 0.015625 +output: 775.765625 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: 1000000000.000000 -456.250000 0.031250 +output: 456249999360.000000 +fcsr: 0x1010200 +roundig mode: +inf +fnmsub.s :: +input: -5786.500000 -7.250000 -248562.750000 +output: -290514.875000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: 1752.000000 -3478.500000 1384.500000 +output: 6095716.500000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: 0.015625 356.500000 -7.250000 +output: -12.820312 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: 0.031250 -1.000000 1000000000.000000 +output: 1000000000.000000 +fcsr: 0x1010200 +roundig mode: +inf +fnmsub.s :: +input: -248562.750000 23.062500 -5786.500000 +output: 5726691.500000 +fcsr: 0x1010200 +roundig mode: +inf +fnmsub.s :: +input: -45786.500000 0.000000 -347856.750000 +output: -347856.750000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: 456.000000 456.250000 356047.750000 +output: 147997.750000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: 34.031250 3.000000 -1.000000 +output: -103.093750 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: 45786.750000 -1.000000 23.031250 +output: 45809.781250 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: 1752065.000000 1384.500000 0.000000 +output: -2425734144.000000 +fcsr: 0x1010200 +roundig mode: +inf +fnmsub.s :: +input: 107.000000 -7.000000 456.250000 +output: 1205.250000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: -45667.250000 100.000000 3.000000 +output: 4566728.000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: -7.000000 -5786.500000 -1.000000 +output: -40506.500000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: -347856.500000 1752.000000 -45786.500000 +output: 609398784.000000 +fcsr: 0x1010200 +roundig mode: +inf +fnmsub.s :: +input: 356047.500000 0.015625 456.000000 +output: -5107.242187 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: -1.000000 0.031250 34.031250 +output: 34.062500 +fcsr: 0x200 +roundig mode: +inf +fnmsub.s :: +input: 23.062500 -248562.750000 45786.031250 +output: 5778264.000000 +fcsr: 0x1010200 +roundig mode: -inf +fnmsub.s :: +input: 0.000000 -4578.500000 -347856.500000 +output: -347856.500000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: 456.250000 456.250000 356047.500000 +output: 147883.437500 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: 3.000000 34.031250 -1.000000 +output: -103.093750 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: -1.000000 4578.750000 23.062500 +output: 4601.812500 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: 1384.500000 175.000000 1752.000000 +output: -240535.500000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: -7.250000 107.000000 0.015625 +output: 775.765625 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: 1000000000.000000 -456.250000 0.031250 +output: 456250032128.000000 +fcsr: 0x1010300 +roundig mode: -inf +fnmsub.s :: +input: -5786.500000 -7.250000 -248562.750000 +output: -290514.875000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: 1752.000000 -3478.500000 1384.500000 +output: 6095716.500000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: 0.015625 356.500000 -7.250000 +output: -12.820313 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: 0.031250 -1.000000 1000000000.000000 +output: 1000000064.000000 +fcsr: 0x1010300 +roundig mode: -inf +fnmsub.s :: +input: -248562.750000 23.062500 -5786.500000 +output: 5726692.000000 +fcsr: 0x1010300 +roundig mode: -inf +fnmsub.s :: +input: -45786.500000 0.000000 -347856.750000 +output: -347856.750000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: 456.000000 456.250000 356047.750000 +output: 147997.750000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: 34.031250 3.000000 -1.000000 +output: -103.093750 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: 45786.750000 -1.000000 23.031250 +output: 45809.781250 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: 1752065.000000 1384.500000 0.000000 +output: -2425733888.000000 +fcsr: 0x1010300 +roundig mode: -inf +fnmsub.s :: +input: 107.000000 -7.000000 456.250000 +output: 1205.250000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: -45667.250000 100.000000 3.000000 +output: 4566728.000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: -7.000000 -5786.500000 -1.000000 +output: -40506.500000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: -347856.500000 1752.000000 -45786.500000 +output: 609398848.000000 +fcsr: 0x1010300 +roundig mode: -inf +fnmsub.s :: +input: 356047.500000 0.015625 456.000000 +output: -5107.242188 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: -1.000000 0.031250 34.031250 +output: 34.062500 +fcsr: 0x300 +roundig mode: -inf +fnmsub.s :: +input: 23.062500 -248562.750000 45786.031250 +output: 5778264.500000 +fcsr: 0x1010300 +roundig mode: near +fnmsub.d :: +input: 0.000000000000000 -45786.500000000000000 -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: 456.250000000000000 456.250000000000000 356047.500000000000000 +output: 147883.437500000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: 3.000000000000000 34.031250000000000 -1.000000000000000 +output: -103.093750000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: -1.000000000000000 45786.750000000000000 23.062500000000000 +output: 45809.812500000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: 1384.500000000000000 1752065.000000000000000 1752.000000000000000 +output: -2425732240.500000000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: -7.250000000000000 107.000000000000000 0.015625000000000 +output: 775.765625000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: 1000000000.000000000000000 -45667.250000000000000 0.031250000000000 +output: 45667250000000.031250000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: -5786.500000000000000 -7.250000000000000 -248562.750000000000000 +output: -290514.875000000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: 1752.000000000000000 -347856.500000000000000 1384.500000000000000 +output: 609445972.500000000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: 0.015625000000000 356047.500000000000000 -7.250000000000000 +output: -5570.492187500000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: 0.031250000000000 -1.000000000000000 1000000000.000000000000000 +output: 1000000000.031250000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: -248562.750000000000000 23.062500000000000 -5786.500000000000000 +output: 5726691.921875000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: -45786.500000000000000 0.000000000000000 -347856.750000000000000 +output: -347856.750000000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: 456.000000000000000 456.250000000000000 356047.750000000000000 +output: 147997.750000000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: 34.031250000000000 3.000000000000000 -1.000000000000000 +output: -103.093750000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: 45786.750000000000000 -1.000000000000000 23.031250000000000 +output: 45809.781250000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: 1752065.000000000000000 1384.500000000000000 0.000000000000000 +output: -2425733992.500000000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: 107.000000000000000 -7.000000000000000 456.250000000000000 +output: 1205.250000000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: -45667.250000000000000 1000000000.000000000000000 3.000000000000000 +output: 45667250000003.000000000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: -7.000000000000000 -5786.500000000000000 -1.000000000000000 +output: -40506.500000000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: -347856.500000000000000 1752.000000000000000 -45786.500000000000000 +output: 609398801.500000000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: 356047.500000000000000 0.015625000000000 456.000000000000000 +output: -5107.242187500000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: -1.000000000000000 0.031250000000000 34.031250000000000 +output: 34.062500000000000 +fcsr: 0 +roundig mode: near +fnmsub.d :: +input: 23.062500000000000 -248562.750000000000000 45786.031250000000000 +output: 5778264.453125000000000 +fcsr: 0 +roundig mode: zero +fnmsub.d :: +input: 0.000000000000000 -45786.500000000000000 -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: 456.250000000000000 456.250000000000000 356047.500000000000000 +output: 147883.437500000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: 3.000000000000000 34.031250000000000 -1.000000000000000 +output: -103.093750000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: -1.000000000000000 45786.750000000000000 23.062500000000000 +output: 45809.812500000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: 1384.500000000000000 1752065.000000000000000 1752.000000000000000 +output: -2425732240.500000000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: -7.250000000000000 107.000000000000000 0.015625000000000 +output: 775.765625000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: 1000000000.000000000000000 -45667.250000000000000 0.031250000000000 +output: 45667250000000.031250000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: -5786.500000000000000 -7.250000000000000 -248562.750000000000000 +output: -290514.875000000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: 1752.000000000000000 -347856.500000000000000 1384.500000000000000 +output: 609445972.500000000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: 0.015625000000000 356047.500000000000000 -7.250000000000000 +output: -5570.492187500000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: 0.031250000000000 -1.000000000000000 1000000000.000000000000000 +output: 1000000000.031250000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: -248562.750000000000000 23.062500000000000 -5786.500000000000000 +output: 5726691.921875000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: -45786.500000000000000 0.000000000000000 -347856.750000000000000 +output: -347856.750000000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: 456.000000000000000 456.250000000000000 356047.750000000000000 +output: 147997.750000000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: 34.031250000000000 3.000000000000000 -1.000000000000000 +output: -103.093750000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: 45786.750000000000000 -1.000000000000000 23.031250000000000 +output: 45809.781250000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: 1752065.000000000000000 1384.500000000000000 0.000000000000000 +output: -2425733992.500000000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: 107.000000000000000 -7.000000000000000 456.250000000000000 +output: 1205.250000000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: -45667.250000000000000 1000000000.000000000000000 3.000000000000000 +output: 45667250000003.000000000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: -7.000000000000000 -5786.500000000000000 -1.000000000000000 +output: -40506.500000000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: -347856.500000000000000 1752.000000000000000 -45786.500000000000000 +output: 609398801.500000000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: 356047.500000000000000 0.015625000000000 456.000000000000000 +output: -5107.242187500000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: -1.000000000000000 0.031250000000000 34.031250000000000 +output: 34.062500000000000 +fcsr: 0x100 +roundig mode: zero +fnmsub.d :: +input: 23.062500000000000 -248562.750000000000000 45786.031250000000000 +output: 5778264.453125000000000 +fcsr: 0x100 +roundig mode: +inf +fnmsub.d :: +input: 0.000000000000000 -45786.500000000000000 -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: 456.250000000000000 456.250000000000000 356047.500000000000000 +output: 147883.437500000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: 3.000000000000000 34.031250000000000 -1.000000000000000 +output: -103.093750000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: -1.000000000000000 45786.750000000000000 23.062500000000000 +output: 45809.812500000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: 1384.500000000000000 1752065.000000000000000 1752.000000000000000 +output: -2425732240.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: -7.250000000000000 107.000000000000000 0.015625000000000 +output: 775.765625000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: 1000000000.000000000000000 -45667.250000000000000 0.031250000000000 +output: 45667250000000.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: -5786.500000000000000 -7.250000000000000 -248562.750000000000000 +output: -290514.875000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: 1752.000000000000000 -347856.500000000000000 1384.500000000000000 +output: 609445972.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: 0.015625000000000 356047.500000000000000 -7.250000000000000 +output: -5570.492187500000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: 0.031250000000000 -1.000000000000000 1000000000.000000000000000 +output: 1000000000.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: -248562.750000000000000 23.062500000000000 -5786.500000000000000 +output: 5726691.921875000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: -45786.500000000000000 0.000000000000000 -347856.750000000000000 +output: -347856.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: 456.000000000000000 456.250000000000000 356047.750000000000000 +output: 147997.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: 34.031250000000000 3.000000000000000 -1.000000000000000 +output: -103.093750000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: 45786.750000000000000 -1.000000000000000 23.031250000000000 +output: 45809.781250000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: 1752065.000000000000000 1384.500000000000000 0.000000000000000 +output: -2425733992.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: 107.000000000000000 -7.000000000000000 456.250000000000000 +output: 1205.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: -45667.250000000000000 1000000000.000000000000000 3.000000000000000 +output: 45667250000003.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: -7.000000000000000 -5786.500000000000000 -1.000000000000000 +output: -40506.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: -347856.500000000000000 1752.000000000000000 -45786.500000000000000 +output: 609398801.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: 356047.500000000000000 0.015625000000000 456.000000000000000 +output: -5107.242187500000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: -1.000000000000000 0.031250000000000 34.031250000000000 +output: 34.062500000000000 +fcsr: 0x200 +roundig mode: +inf +fnmsub.d :: +input: 23.062500000000000 -248562.750000000000000 45786.031250000000000 +output: 5778264.453125000000000 +fcsr: 0x200 +roundig mode: -inf +fnmsub.d :: +input: 0.000000000000000 -45786.500000000000000 -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: 456.250000000000000 456.250000000000000 356047.500000000000000 +output: 147883.437500000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: 3.000000000000000 34.031250000000000 -1.000000000000000 +output: -103.093750000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: -1.000000000000000 45786.750000000000000 23.062500000000000 +output: 45809.812500000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: 1384.500000000000000 1752065.000000000000000 1752.000000000000000 +output: -2425732240.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: -7.250000000000000 107.000000000000000 0.015625000000000 +output: 775.765625000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: 1000000000.000000000000000 -45667.250000000000000 0.031250000000000 +output: 45667250000000.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: -5786.500000000000000 -7.250000000000000 -248562.750000000000000 +output: -290514.875000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: 1752.000000000000000 -347856.500000000000000 1384.500000000000000 +output: 609445972.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: 0.015625000000000 356047.500000000000000 -7.250000000000000 +output: -5570.492187500000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: 0.031250000000000 -1.000000000000000 1000000000.000000000000000 +output: 1000000000.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: -248562.750000000000000 23.062500000000000 -5786.500000000000000 +output: 5726691.921875000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: -45786.500000000000000 0.000000000000000 -347856.750000000000000 +output: -347856.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: 456.000000000000000 456.250000000000000 356047.750000000000000 +output: 147997.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: 34.031250000000000 3.000000000000000 -1.000000000000000 +output: -103.093750000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: 45786.750000000000000 -1.000000000000000 23.031250000000000 +output: 45809.781250000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: 1752065.000000000000000 1384.500000000000000 0.000000000000000 +output: -2425733992.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: 107.000000000000000 -7.000000000000000 456.250000000000000 +output: 1205.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: -45667.250000000000000 1000000000.000000000000000 3.000000000000000 +output: 45667250000003.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: -7.000000000000000 -5786.500000000000000 -1.000000000000000 +output: -40506.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: -347856.500000000000000 1752.000000000000000 -45786.500000000000000 +output: 609398801.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: 356047.500000000000000 0.015625000000000 456.000000000000000 +output: -5107.242187500000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: -1.000000000000000 0.031250000000000 34.031250000000000 +output: 34.062500000000000 +fcsr: 0x300 +roundig mode: -inf +fnmsub.d :: +input: 23.062500000000000 -248562.750000000000000 45786.031250000000000 +output: 5778264.453125000000000 +fcsr: 0x300 +roundig mode: near +fmax.s :: +input: 0.000000 -4578.500000 +output: 0.000000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: 456.250000 456.250000 +output: 456.250000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: 3.000000 34.031250 +output: 34.031250 +fcsr: 0 +roundig mode: near +fmax.s :: +input: -1.000000 4578.750000 +output: 4578.750000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: 1384.500000 175.000000 +output: 1384.500000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: -7.250000 107.000000 +output: 107.000000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: 1000000000.000000 -456.250000 +output: 1000000000.000000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: -5786.500000 -7.250000 +output: -7.250000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: 1752.000000 -3478.500000 +output: 1752.000000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: 0.015625 356.500000 +output: 356.500000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: 0.031250 -1.000000 +output: 0.031250 +fcsr: 0 +roundig mode: near +fmax.s :: +input: -248562.750000 23.062500 +output: 23.062500 +fcsr: 0 +roundig mode: near +fmax.s :: +input: -45786.500000 0.000000 +output: 0.000000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: 456.000000 456.250000 +output: 456.250000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: 34.031250 3.000000 +output: 34.031250 +fcsr: 0 +roundig mode: near +fmax.s :: +input: 45786.750000 -1.000000 +output: 45786.750000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: 1752065.000000 1384.500000 +output: 1752065.000000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: 107.000000 -7.000000 +output: 107.000000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: -45667.250000 100.000000 +output: 100.000000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: -7.000000 -5786.500000 +output: -7.000000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: -347856.500000 1752.000000 +output: 1752.000000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: 356047.500000 0.015625 +output: 356047.500000 +fcsr: 0 +roundig mode: near +fmax.s :: +input: -1.000000 0.031250 +output: 0.031250 +fcsr: 0 +roundig mode: near +fmax.s :: +input: 23.062500 -248562.750000 +output: 23.062500 +fcsr: 0 +roundig mode: zero +fmax.s :: +input: 0.000000 -4578.500000 +output: 0.000000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: 456.250000 456.250000 +output: 456.250000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: 3.000000 34.031250 +output: 34.031250 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: -1.000000 4578.750000 +output: 4578.750000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: 1384.500000 175.000000 +output: 1384.500000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: -7.250000 107.000000 +output: 107.000000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: 1000000000.000000 -456.250000 +output: 1000000000.000000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: -5786.500000 -7.250000 +output: -7.250000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: 1752.000000 -3478.500000 +output: 1752.000000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: 0.015625 356.500000 +output: 356.500000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: 0.031250 -1.000000 +output: 0.031250 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: -248562.750000 23.062500 +output: 23.062500 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: -45786.500000 0.000000 +output: 0.000000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: 456.000000 456.250000 +output: 456.250000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: 34.031250 3.000000 +output: 34.031250 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: 45786.750000 -1.000000 +output: 45786.750000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: 1752065.000000 1384.500000 +output: 1752065.000000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: 107.000000 -7.000000 +output: 107.000000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: -45667.250000 100.000000 +output: 100.000000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: -7.000000 -5786.500000 +output: -7.000000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: -347856.500000 1752.000000 +output: 1752.000000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: 356047.500000 0.015625 +output: 356047.500000 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: -1.000000 0.031250 +output: 0.031250 +fcsr: 0x100 +roundig mode: zero +fmax.s :: +input: 23.062500 -248562.750000 +output: 23.062500 +fcsr: 0x100 +roundig mode: +inf +fmax.s :: +input: 0.000000 -4578.500000 +output: 0.000000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: 456.250000 456.250000 +output: 456.250000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: 3.000000 34.031250 +output: 34.031250 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: -1.000000 4578.750000 +output: 4578.750000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: 1384.500000 175.000000 +output: 1384.500000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: -7.250000 107.000000 +output: 107.000000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: 1000000000.000000 -456.250000 +output: 1000000000.000000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: -5786.500000 -7.250000 +output: -7.250000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: 1752.000000 -3478.500000 +output: 1752.000000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: 0.015625 356.500000 +output: 356.500000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: 0.031250 -1.000000 +output: 0.031250 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: -248562.750000 23.062500 +output: 23.062500 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: -45786.500000 0.000000 +output: 0.000000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: 456.000000 456.250000 +output: 456.250000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: 34.031250 3.000000 +output: 34.031250 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: 45786.750000 -1.000000 +output: 45786.750000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: 1752065.000000 1384.500000 +output: 1752065.000000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: 107.000000 -7.000000 +output: 107.000000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: -45667.250000 100.000000 +output: 100.000000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: -7.000000 -5786.500000 +output: -7.000000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: -347856.500000 1752.000000 +output: 1752.000000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: 356047.500000 0.015625 +output: 356047.500000 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: -1.000000 0.031250 +output: 0.031250 +fcsr: 0x200 +roundig mode: +inf +fmax.s :: +input: 23.062500 -248562.750000 +output: 23.062500 +fcsr: 0x200 +roundig mode: -inf +fmax.s :: +input: 0.000000 -4578.500000 +output: 0.000000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: 456.250000 456.250000 +output: 456.250000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: 3.000000 34.031250 +output: 34.031250 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: -1.000000 4578.750000 +output: 4578.750000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: 1384.500000 175.000000 +output: 1384.500000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: -7.250000 107.000000 +output: 107.000000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: 1000000000.000000 -456.250000 +output: 1000000000.000000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: -5786.500000 -7.250000 +output: -7.250000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: 1752.000000 -3478.500000 +output: 1752.000000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: 0.015625 356.500000 +output: 356.500000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: 0.031250 -1.000000 +output: 0.031250 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: -248562.750000 23.062500 +output: 23.062500 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: -45786.500000 0.000000 +output: 0.000000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: 456.000000 456.250000 +output: 456.250000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: 34.031250 3.000000 +output: 34.031250 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: 45786.750000 -1.000000 +output: 45786.750000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: 1752065.000000 1384.500000 +output: 1752065.000000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: 107.000000 -7.000000 +output: 107.000000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: -45667.250000 100.000000 +output: 100.000000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: -7.000000 -5786.500000 +output: -7.000000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: -347856.500000 1752.000000 +output: 1752.000000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: 356047.500000 0.015625 +output: 356047.500000 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: -1.000000 0.031250 +output: 0.031250 +fcsr: 0x300 +roundig mode: -inf +fmax.s :: +input: 23.062500 -248562.750000 +output: 23.062500 +fcsr: 0x300 +roundig mode: near +fmax.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0.000000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: 456.250000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: 3.000000000000000 34.031250000000000 +output: 34.031250000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: -1.000000000000000 45786.750000000000000 +output: 45786.750000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: -7.250000000000000 107.000000000000000 +output: 107.000000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1000000000.000000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -7.250000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1752.000000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: 0.015625000000000 356047.500000000000000 +output: 356047.500000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0.031250000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: -248562.750000000000000 23.062500000000000 +output: 23.062500000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0.000000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: 456.000000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: 34.031250000000000 3.000000000000000 +output: 34.031250000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 45786.750000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1752065.000000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: 107.000000000000000 -7.000000000000000 +output: 107.000000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -7.000000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: 356047.500000000000000 0.015625000000000 +output: 356047.500000000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: -1.000000000000000 0.031250000000000 +output: 0.031250000000000 +fcsr: 0 +roundig mode: near +fmax.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 23.062500000000000 +fcsr: 0 +roundig mode: zero +fmax.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: 456.250000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: 3.000000000000000 34.031250000000000 +output: 34.031250000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: -1.000000000000000 45786.750000000000000 +output: 45786.750000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: -7.250000000000000 107.000000000000000 +output: 107.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1000000000.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -7.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1752.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: 0.015625000000000 356047.500000000000000 +output: 356047.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0.031250000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: -248562.750000000000000 23.062500000000000 +output: 23.062500000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: 456.000000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: 34.031250000000000 3.000000000000000 +output: 34.031250000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 45786.750000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1752065.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: 107.000000000000000 -7.000000000000000 +output: 107.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -7.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: 356047.500000000000000 0.015625000000000 +output: 356047.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: -1.000000000000000 0.031250000000000 +output: 0.031250000000000 +fcsr: 0x100 +roundig mode: zero +fmax.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 23.062500000000000 +fcsr: 0x100 +roundig mode: +inf +fmax.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: 456.250000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: 3.000000000000000 34.031250000000000 +output: 34.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: -1.000000000000000 45786.750000000000000 +output: 45786.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: -7.250000000000000 107.000000000000000 +output: 107.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1000000000.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -7.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1752.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: 0.015625000000000 356047.500000000000000 +output: 356047.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: -248562.750000000000000 23.062500000000000 +output: 23.062500000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: 456.000000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: 34.031250000000000 3.000000000000000 +output: 34.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 45786.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1752065.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: 107.000000000000000 -7.000000000000000 +output: 107.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -7.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: 356047.500000000000000 0.015625000000000 +output: 356047.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: -1.000000000000000 0.031250000000000 +output: 0.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fmax.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 23.062500000000000 +fcsr: 0x200 +roundig mode: -inf +fmax.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: 456.250000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: 3.000000000000000 34.031250000000000 +output: 34.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: -1.000000000000000 45786.750000000000000 +output: 45786.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: -7.250000000000000 107.000000000000000 +output: 107.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1000000000.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -7.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1752.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: 0.015625000000000 356047.500000000000000 +output: 356047.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: -248562.750000000000000 23.062500000000000 +output: 23.062500000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: 456.000000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: 34.031250000000000 3.000000000000000 +output: 34.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 45786.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1752065.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: 107.000000000000000 -7.000000000000000 +output: 107.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -7.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: 356047.500000000000000 0.015625000000000 +output: 356047.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: -1.000000000000000 0.031250000000000 +output: 0.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fmax.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 23.062500000000000 +fcsr: 0x300 +roundig mode: near +fmin.s :: +input: 0.000000 -4578.500000 +output: -4578.500000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: 456.250000 456.250000 +output: 456.250000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: 3.000000 34.031250 +output: 3.000000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: -1.000000 4578.750000 +output: -1.000000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: 1384.500000 175.000000 +output: 175.000000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: -7.250000 107.000000 +output: -7.250000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: 1000000000.000000 -456.250000 +output: -456.250000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: -5786.500000 -7.250000 +output: -5786.500000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: 1752.000000 -3478.500000 +output: -3478.500000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: 0.015625 356.500000 +output: 0.015625 +fcsr: 0 +roundig mode: near +fmin.s :: +input: 0.031250 -1.000000 +output: -1.000000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: -248562.750000 23.062500 +output: -248562.750000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: 456.000000 456.250000 +output: 456.000000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: 34.031250 3.000000 +output: 3.000000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: 45786.750000 -1.000000 +output: -1.000000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: 1752065.000000 1384.500000 +output: 1384.500000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: 107.000000 -7.000000 +output: -7.000000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: -45667.250000 100.000000 +output: -45667.250000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: -7.000000 -5786.500000 +output: -5786.500000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: -347856.500000 1752.000000 +output: -347856.500000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: 356047.500000 0.015625 +output: 0.015625 +fcsr: 0 +roundig mode: near +fmin.s :: +input: -1.000000 0.031250 +output: -1.000000 +fcsr: 0 +roundig mode: near +fmin.s :: +input: 23.062500 -248562.750000 +output: -248562.750000 +fcsr: 0 +roundig mode: zero +fmin.s :: +input: 0.000000 -4578.500000 +output: -4578.500000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: 456.250000 456.250000 +output: 456.250000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: 3.000000 34.031250 +output: 3.000000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: -1.000000 4578.750000 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: 1384.500000 175.000000 +output: 175.000000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: -7.250000 107.000000 +output: -7.250000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: 1000000000.000000 -456.250000 +output: -456.250000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: -5786.500000 -7.250000 +output: -5786.500000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: 1752.000000 -3478.500000 +output: -3478.500000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: 0.015625 356.500000 +output: 0.015625 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: 0.031250 -1.000000 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: -248562.750000 23.062500 +output: -248562.750000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: 456.000000 456.250000 +output: 456.000000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: 34.031250 3.000000 +output: 3.000000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: 45786.750000 -1.000000 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: 1752065.000000 1384.500000 +output: 1384.500000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: 107.000000 -7.000000 +output: -7.000000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: -45667.250000 100.000000 +output: -45667.250000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: -7.000000 -5786.500000 +output: -5786.500000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: -347856.500000 1752.000000 +output: -347856.500000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: 356047.500000 0.015625 +output: 0.015625 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: -1.000000 0.031250 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +fmin.s :: +input: 23.062500 -248562.750000 +output: -248562.750000 +fcsr: 0x100 +roundig mode: +inf +fmin.s :: +input: 0.000000 -4578.500000 +output: -4578.500000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: 456.250000 456.250000 +output: 456.250000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: 3.000000 34.031250 +output: 3.000000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: -1.000000 4578.750000 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: 1384.500000 175.000000 +output: 175.000000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: -7.250000 107.000000 +output: -7.250000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: 1000000000.000000 -456.250000 +output: -456.250000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: -5786.500000 -7.250000 +output: -5786.500000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: 1752.000000 -3478.500000 +output: -3478.500000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: 0.015625 356.500000 +output: 0.015625 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: 0.031250 -1.000000 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: -248562.750000 23.062500 +output: -248562.750000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: 456.000000 456.250000 +output: 456.000000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: 34.031250 3.000000 +output: 3.000000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: 45786.750000 -1.000000 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: 1752065.000000 1384.500000 +output: 1384.500000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: 107.000000 -7.000000 +output: -7.000000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: -45667.250000 100.000000 +output: -45667.250000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: -7.000000 -5786.500000 +output: -5786.500000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: -347856.500000 1752.000000 +output: -347856.500000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: 356047.500000 0.015625 +output: 0.015625 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: -1.000000 0.031250 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +fmin.s :: +input: 23.062500 -248562.750000 +output: -248562.750000 +fcsr: 0x200 +roundig mode: -inf +fmin.s :: +input: 0.000000 -4578.500000 +output: -4578.500000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: 456.250000 456.250000 +output: 456.250000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: 3.000000 34.031250 +output: 3.000000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: -1.000000 4578.750000 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: 1384.500000 175.000000 +output: 175.000000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: -7.250000 107.000000 +output: -7.250000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: 1000000000.000000 -456.250000 +output: -456.250000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: -5786.500000 -7.250000 +output: -5786.500000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: 1752.000000 -3478.500000 +output: -3478.500000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: 0.015625 356.500000 +output: 0.015625 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: 0.031250 -1.000000 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: -248562.750000 23.062500 +output: -248562.750000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: 456.000000 456.250000 +output: 456.000000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: 34.031250 3.000000 +output: 3.000000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: 45786.750000 -1.000000 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: 1752065.000000 1384.500000 +output: 1384.500000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: 107.000000 -7.000000 +output: -7.000000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: -45667.250000 100.000000 +output: -45667.250000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: -7.000000 -5786.500000 +output: -5786.500000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: -347856.500000 1752.000000 +output: -347856.500000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: 356047.500000 0.015625 +output: 0.015625 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: -1.000000 0.031250 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +fmin.s :: +input: 23.062500 -248562.750000 +output: -248562.750000 +fcsr: 0x300 +roundig mode: near +fmin.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -45786.500000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: 456.250000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: 3.000000000000000 34.031250000000000 +output: 3.000000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: -1.000000000000000 45786.750000000000000 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1384.500000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: -7.250000000000000 107.000000000000000 +output: -7.250000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: -45667.250000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -5786.500000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0.015625000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: 0.031250000000000 -1.000000000000000 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: -248562.750000000000000 23.062500000000000 +output: -248562.750000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: 456.000000000000000 456.250000000000000 +output: 456.000000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: 34.031250000000000 3.000000000000000 +output: 3.000000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: 45786.750000000000000 -1.000000000000000 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1384.500000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: 107.000000000000000 -7.000000000000000 +output: -7.000000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -45667.250000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -5786.500000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -347856.500000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0.015625000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: -1.000000000000000 0.031250000000000 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +fmin.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -248562.750000000000000 +fcsr: 0 +roundig mode: zero +fmin.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -45786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: 456.250000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: 3.000000000000000 34.031250000000000 +output: 3.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: -1.000000000000000 45786.750000000000000 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1384.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: -7.250000000000000 107.000000000000000 +output: -7.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: -45667.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -5786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0.015625000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: 0.031250000000000 -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: -248562.750000000000000 23.062500000000000 +output: -248562.750000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: 456.000000000000000 456.250000000000000 +output: 456.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: 34.031250000000000 3.000000000000000 +output: 3.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: 45786.750000000000000 -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1384.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: 107.000000000000000 -7.000000000000000 +output: -7.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -45667.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -5786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -347856.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0.015625000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: -1.000000000000000 0.031250000000000 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmin.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -248562.750000000000000 +fcsr: 0x100 +roundig mode: +inf +fmin.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -45786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: 456.250000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: 3.000000000000000 34.031250000000000 +output: 3.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: -1.000000000000000 45786.750000000000000 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1384.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: -7.250000000000000 107.000000000000000 +output: -7.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: -45667.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -5786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0.015625000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: 0.031250000000000 -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: -248562.750000000000000 23.062500000000000 +output: -248562.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: 456.000000000000000 456.250000000000000 +output: 456.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: 34.031250000000000 3.000000000000000 +output: 3.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: 45786.750000000000000 -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1384.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: 107.000000000000000 -7.000000000000000 +output: -7.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -45667.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -5786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -347856.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0.015625000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: -1.000000000000000 0.031250000000000 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmin.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -248562.750000000000000 +fcsr: 0x200 +roundig mode: -inf +fmin.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -45786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: 456.250000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: 3.000000000000000 34.031250000000000 +output: 3.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: -1.000000000000000 45786.750000000000000 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1384.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: -7.250000000000000 107.000000000000000 +output: -7.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: -45667.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -5786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0.015625000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: 0.031250000000000 -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: -248562.750000000000000 23.062500000000000 +output: -248562.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: 456.000000000000000 456.250000000000000 +output: 456.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: 34.031250000000000 3.000000000000000 +output: 3.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: 45786.750000000000000 -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1384.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: 107.000000000000000 -7.000000000000000 +output: -7.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -45667.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -5786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -347856.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0.015625000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: -1.000000000000000 0.031250000000000 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmin.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -248562.750000000000000 +fcsr: 0x300 +roundig mode: near +fmaxa.s :: +input: 0.000000 -4578.500000 +output: -4578.500000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: 456.250000 456.250000 +output: 456.250000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: 3.000000 34.031250 +output: 34.031250 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: -1.000000 4578.750000 +output: 4578.750000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: 1384.500000 175.000000 +output: 1384.500000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: -7.250000 107.000000 +output: 107.000000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: 1000000000.000000 -456.250000 +output: 1000000000.000000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: -5786.500000 -7.250000 +output: -5786.500000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: 1752.000000 -3478.500000 +output: -3478.500000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: 0.015625 356.500000 +output: 356.500000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: 0.031250 -1.000000 +output: -1.000000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: -248562.750000 23.062500 +output: -248562.750000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: 456.000000 456.250000 +output: 456.250000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: 34.031250 3.000000 +output: 34.031250 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: 45786.750000 -1.000000 +output: 45786.750000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: 1752065.000000 1384.500000 +output: 1752065.000000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: 107.000000 -7.000000 +output: 107.000000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: -45667.250000 100.000000 +output: -45667.250000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: -7.000000 -5786.500000 +output: -5786.500000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: -347856.500000 1752.000000 +output: -347856.500000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: 356047.500000 0.015625 +output: 356047.500000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: -1.000000 0.031250 +output: -1.000000 +fcsr: 0 +roundig mode: near +fmaxa.s :: +input: 23.062500 -248562.750000 +output: -248562.750000 +fcsr: 0 +roundig mode: zero +fmaxa.s :: +input: 0.000000 -4578.500000 +output: -4578.500000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: 456.250000 456.250000 +output: 456.250000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: 3.000000 34.031250 +output: 34.031250 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: -1.000000 4578.750000 +output: 4578.750000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: 1384.500000 175.000000 +output: 1384.500000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: -7.250000 107.000000 +output: 107.000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: 1000000000.000000 -456.250000 +output: 1000000000.000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: -5786.500000 -7.250000 +output: -5786.500000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: 1752.000000 -3478.500000 +output: -3478.500000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: 0.015625 356.500000 +output: 356.500000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: 0.031250 -1.000000 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: -248562.750000 23.062500 +output: -248562.750000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: 456.000000 456.250000 +output: 456.250000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: 34.031250 3.000000 +output: 34.031250 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: 45786.750000 -1.000000 +output: 45786.750000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: 1752065.000000 1384.500000 +output: 1752065.000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: 107.000000 -7.000000 +output: 107.000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: -45667.250000 100.000000 +output: -45667.250000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: -7.000000 -5786.500000 +output: -5786.500000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: -347856.500000 1752.000000 +output: -347856.500000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: 356047.500000 0.015625 +output: 356047.500000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: -1.000000 0.031250 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.s :: +input: 23.062500 -248562.750000 +output: -248562.750000 +fcsr: 0x100 +roundig mode: +inf +fmaxa.s :: +input: 0.000000 -4578.500000 +output: -4578.500000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: 456.250000 456.250000 +output: 456.250000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: 3.000000 34.031250 +output: 34.031250 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: -1.000000 4578.750000 +output: 4578.750000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: 1384.500000 175.000000 +output: 1384.500000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: -7.250000 107.000000 +output: 107.000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: 1000000000.000000 -456.250000 +output: 1000000000.000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: -5786.500000 -7.250000 +output: -5786.500000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: 1752.000000 -3478.500000 +output: -3478.500000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: 0.015625 356.500000 +output: 356.500000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: 0.031250 -1.000000 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: -248562.750000 23.062500 +output: -248562.750000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: 456.000000 456.250000 +output: 456.250000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: 34.031250 3.000000 +output: 34.031250 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: 45786.750000 -1.000000 +output: 45786.750000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: 1752065.000000 1384.500000 +output: 1752065.000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: 107.000000 -7.000000 +output: 107.000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: -45667.250000 100.000000 +output: -45667.250000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: -7.000000 -5786.500000 +output: -5786.500000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: -347856.500000 1752.000000 +output: -347856.500000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: 356047.500000 0.015625 +output: 356047.500000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: -1.000000 0.031250 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.s :: +input: 23.062500 -248562.750000 +output: -248562.750000 +fcsr: 0x200 +roundig mode: -inf +fmaxa.s :: +input: 0.000000 -4578.500000 +output: -4578.500000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: 456.250000 456.250000 +output: 456.250000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: 3.000000 34.031250 +output: 34.031250 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: -1.000000 4578.750000 +output: 4578.750000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: 1384.500000 175.000000 +output: 1384.500000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: -7.250000 107.000000 +output: 107.000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: 1000000000.000000 -456.250000 +output: 1000000000.000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: -5786.500000 -7.250000 +output: -5786.500000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: 1752.000000 -3478.500000 +output: -3478.500000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: 0.015625 356.500000 +output: 356.500000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: 0.031250 -1.000000 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: -248562.750000 23.062500 +output: -248562.750000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: 456.000000 456.250000 +output: 456.250000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: 34.031250 3.000000 +output: 34.031250 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: 45786.750000 -1.000000 +output: 45786.750000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: 1752065.000000 1384.500000 +output: 1752065.000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: 107.000000 -7.000000 +output: 107.000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: -45667.250000 100.000000 +output: -45667.250000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: -7.000000 -5786.500000 +output: -5786.500000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: -347856.500000 1752.000000 +output: -347856.500000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: 356047.500000 0.015625 +output: 356047.500000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: -1.000000 0.031250 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.s :: +input: 23.062500 -248562.750000 +output: -248562.750000 +fcsr: 0x300 +roundig mode: near +fmaxa.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -45786.500000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: 456.250000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: 3.000000000000000 34.031250000000000 +output: 34.031250000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: -1.000000000000000 45786.750000000000000 +output: 45786.750000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: -7.250000000000000 107.000000000000000 +output: 107.000000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1000000000.000000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -5786.500000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: 0.015625000000000 356047.500000000000000 +output: 356047.500000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: 0.031250000000000 -1.000000000000000 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: -248562.750000000000000 23.062500000000000 +output: -248562.750000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: 456.000000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: 34.031250000000000 3.000000000000000 +output: 34.031250000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 45786.750000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1752065.000000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: 107.000000000000000 -7.000000000000000 +output: 107.000000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -5786.500000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -347856.500000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: 356047.500000000000000 0.015625000000000 +output: 356047.500000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: -1.000000000000000 0.031250000000000 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +fmaxa.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -248562.750000000000000 +fcsr: 0 +roundig mode: zero +fmaxa.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -45786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: 456.250000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: 3.000000000000000 34.031250000000000 +output: 34.031250000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: -1.000000000000000 45786.750000000000000 +output: 45786.750000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: -7.250000000000000 107.000000000000000 +output: 107.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1000000000.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -5786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: 0.015625000000000 356047.500000000000000 +output: 356047.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: 0.031250000000000 -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: -248562.750000000000000 23.062500000000000 +output: -248562.750000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: 456.000000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: 34.031250000000000 3.000000000000000 +output: 34.031250000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 45786.750000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1752065.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: 107.000000000000000 -7.000000000000000 +output: 107.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -5786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -347856.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: 356047.500000000000000 0.015625000000000 +output: 356047.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: -1.000000000000000 0.031250000000000 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmaxa.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -248562.750000000000000 +fcsr: 0x100 +roundig mode: +inf +fmaxa.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -45786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: 456.250000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: 3.000000000000000 34.031250000000000 +output: 34.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: -1.000000000000000 45786.750000000000000 +output: 45786.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: -7.250000000000000 107.000000000000000 +output: 107.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1000000000.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -5786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: 0.015625000000000 356047.500000000000000 +output: 356047.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: 0.031250000000000 -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: -248562.750000000000000 23.062500000000000 +output: -248562.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: 456.000000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: 34.031250000000000 3.000000000000000 +output: 34.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 45786.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1752065.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: 107.000000000000000 -7.000000000000000 +output: 107.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -5786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -347856.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: 356047.500000000000000 0.015625000000000 +output: 356047.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: -1.000000000000000 0.031250000000000 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmaxa.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -248562.750000000000000 +fcsr: 0x200 +roundig mode: -inf +fmaxa.d :: +input: 0.000000000000000 -45786.500000000000000 +output: -45786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: 456.250000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: 3.000000000000000 34.031250000000000 +output: 34.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: -1.000000000000000 45786.750000000000000 +output: 45786.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: -7.250000000000000 107.000000000000000 +output: 107.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1000000000.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -5786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: 0.015625000000000 356047.500000000000000 +output: 356047.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: 0.031250000000000 -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: -248562.750000000000000 23.062500000000000 +output: -248562.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: 456.000000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: 34.031250000000000 3.000000000000000 +output: 34.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 45786.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1752065.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: 107.000000000000000 -7.000000000000000 +output: 107.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -5786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -347856.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: 356047.500000000000000 0.015625000000000 +output: 356047.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: -1.000000000000000 0.031250000000000 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmaxa.d :: +input: 23.062500000000000 -248562.750000000000000 +output: -248562.750000000000000 +fcsr: 0x300 +roundig mode: near +fmina.s :: +input: 0.000000 -4578.500000 +output: 0.000000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: 456.250000 456.250000 +output: 456.250000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: 3.000000 34.031250 +output: 3.000000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: -1.000000 4578.750000 +output: -1.000000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: 1384.500000 175.000000 +output: 175.000000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: -7.250000 107.000000 +output: -7.250000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: 1000000000.000000 -456.250000 +output: -456.250000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: -5786.500000 -7.250000 +output: -7.250000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: 1752.000000 -3478.500000 +output: 1752.000000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: 0.015625 356.500000 +output: 0.015625 +fcsr: 0 +roundig mode: near +fmina.s :: +input: 0.031250 -1.000000 +output: 0.031250 +fcsr: 0 +roundig mode: near +fmina.s :: +input: -248562.750000 23.062500 +output: 23.062500 +fcsr: 0 +roundig mode: near +fmina.s :: +input: -45786.500000 0.000000 +output: 0.000000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: 456.000000 456.250000 +output: 456.000000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: 34.031250 3.000000 +output: 3.000000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: 45786.750000 -1.000000 +output: -1.000000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: 1752065.000000 1384.500000 +output: 1384.500000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: 107.000000 -7.000000 +output: -7.000000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: -45667.250000 100.000000 +output: 100.000000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: -7.000000 -5786.500000 +output: -7.000000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: -347856.500000 1752.000000 +output: 1752.000000 +fcsr: 0 +roundig mode: near +fmina.s :: +input: 356047.500000 0.015625 +output: 0.015625 +fcsr: 0 +roundig mode: near +fmina.s :: +input: -1.000000 0.031250 +output: 0.031250 +fcsr: 0 +roundig mode: near +fmina.s :: +input: 23.062500 -248562.750000 +output: 23.062500 +fcsr: 0 +roundig mode: zero +fmina.s :: +input: 0.000000 -4578.500000 +output: 0.000000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: 456.250000 456.250000 +output: 456.250000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: 3.000000 34.031250 +output: 3.000000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: -1.000000 4578.750000 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: 1384.500000 175.000000 +output: 175.000000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: -7.250000 107.000000 +output: -7.250000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: 1000000000.000000 -456.250000 +output: -456.250000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: -5786.500000 -7.250000 +output: -7.250000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: 1752.000000 -3478.500000 +output: 1752.000000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: 0.015625 356.500000 +output: 0.015625 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: 0.031250 -1.000000 +output: 0.031250 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: -248562.750000 23.062500 +output: 23.062500 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: -45786.500000 0.000000 +output: 0.000000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: 456.000000 456.250000 +output: 456.000000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: 34.031250 3.000000 +output: 3.000000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: 45786.750000 -1.000000 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: 1752065.000000 1384.500000 +output: 1384.500000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: 107.000000 -7.000000 +output: -7.000000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: -45667.250000 100.000000 +output: 100.000000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: -7.000000 -5786.500000 +output: -7.000000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: -347856.500000 1752.000000 +output: 1752.000000 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: 356047.500000 0.015625 +output: 0.015625 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: -1.000000 0.031250 +output: 0.031250 +fcsr: 0x100 +roundig mode: zero +fmina.s :: +input: 23.062500 -248562.750000 +output: 23.062500 +fcsr: 0x100 +roundig mode: +inf +fmina.s :: +input: 0.000000 -4578.500000 +output: 0.000000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: 456.250000 456.250000 +output: 456.250000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: 3.000000 34.031250 +output: 3.000000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: -1.000000 4578.750000 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: 1384.500000 175.000000 +output: 175.000000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: -7.250000 107.000000 +output: -7.250000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: 1000000000.000000 -456.250000 +output: -456.250000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: -5786.500000 -7.250000 +output: -7.250000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: 1752.000000 -3478.500000 +output: 1752.000000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: 0.015625 356.500000 +output: 0.015625 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: 0.031250 -1.000000 +output: 0.031250 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: -248562.750000 23.062500 +output: 23.062500 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: -45786.500000 0.000000 +output: 0.000000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: 456.000000 456.250000 +output: 456.000000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: 34.031250 3.000000 +output: 3.000000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: 45786.750000 -1.000000 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: 1752065.000000 1384.500000 +output: 1384.500000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: 107.000000 -7.000000 +output: -7.000000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: -45667.250000 100.000000 +output: 100.000000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: -7.000000 -5786.500000 +output: -7.000000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: -347856.500000 1752.000000 +output: 1752.000000 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: 356047.500000 0.015625 +output: 0.015625 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: -1.000000 0.031250 +output: 0.031250 +fcsr: 0x200 +roundig mode: +inf +fmina.s :: +input: 23.062500 -248562.750000 +output: 23.062500 +fcsr: 0x200 +roundig mode: -inf +fmina.s :: +input: 0.000000 -4578.500000 +output: 0.000000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: 456.250000 456.250000 +output: 456.250000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: 3.000000 34.031250 +output: 3.000000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: -1.000000 4578.750000 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: 1384.500000 175.000000 +output: 175.000000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: -7.250000 107.000000 +output: -7.250000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: 1000000000.000000 -456.250000 +output: -456.250000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: -5786.500000 -7.250000 +output: -7.250000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: 1752.000000 -3478.500000 +output: 1752.000000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: 0.015625 356.500000 +output: 0.015625 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: 0.031250 -1.000000 +output: 0.031250 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: -248562.750000 23.062500 +output: 23.062500 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: -45786.500000 0.000000 +output: 0.000000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: 456.000000 456.250000 +output: 456.000000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: 34.031250 3.000000 +output: 3.000000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: 45786.750000 -1.000000 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: 1752065.000000 1384.500000 +output: 1384.500000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: 107.000000 -7.000000 +output: -7.000000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: -45667.250000 100.000000 +output: 100.000000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: -7.000000 -5786.500000 +output: -7.000000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: -347856.500000 1752.000000 +output: 1752.000000 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: 356047.500000 0.015625 +output: 0.015625 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: -1.000000 0.031250 +output: 0.031250 +fcsr: 0x300 +roundig mode: -inf +fmina.s :: +input: 23.062500 -248562.750000 +output: 23.062500 +fcsr: 0x300 +roundig mode: near +fmina.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0.000000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: 456.250000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: 3.000000000000000 34.031250000000000 +output: 3.000000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: -1.000000000000000 45786.750000000000000 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1384.500000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: -7.250000000000000 107.000000000000000 +output: -7.250000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: -45667.250000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -7.250000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1752.000000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0.015625000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0.031250000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: -248562.750000000000000 23.062500000000000 +output: 23.062500000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0.000000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: 456.000000000000000 456.250000000000000 +output: 456.000000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: 34.031250000000000 3.000000000000000 +output: 3.000000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: 45786.750000000000000 -1.000000000000000 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1384.500000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: 107.000000000000000 -7.000000000000000 +output: -7.000000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -45667.250000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -7.000000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0.015625000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: -1.000000000000000 0.031250000000000 +output: 0.031250000000000 +fcsr: 0 +roundig mode: near +fmina.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 23.062500000000000 +fcsr: 0 +roundig mode: zero +fmina.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: 456.250000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: 3.000000000000000 34.031250000000000 +output: 3.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: -1.000000000000000 45786.750000000000000 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1384.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: -7.250000000000000 107.000000000000000 +output: -7.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: -45667.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -7.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1752.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0.015625000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0.031250000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: -248562.750000000000000 23.062500000000000 +output: 23.062500000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: 456.000000000000000 456.250000000000000 +output: 456.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: 34.031250000000000 3.000000000000000 +output: 3.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: 45786.750000000000000 -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1384.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: 107.000000000000000 -7.000000000000000 +output: -7.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -45667.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -7.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0.015625000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: -1.000000000000000 0.031250000000000 +output: 0.031250000000000 +fcsr: 0x100 +roundig mode: zero +fmina.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 23.062500000000000 +fcsr: 0x100 +roundig mode: +inf +fmina.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: 456.250000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: 3.000000000000000 34.031250000000000 +output: 3.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: -1.000000000000000 45786.750000000000000 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1384.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: -7.250000000000000 107.000000000000000 +output: -7.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: -45667.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -7.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1752.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0.015625000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: -248562.750000000000000 23.062500000000000 +output: 23.062500000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: 456.000000000000000 456.250000000000000 +output: 456.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: 34.031250000000000 3.000000000000000 +output: 3.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: 45786.750000000000000 -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1384.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: 107.000000000000000 -7.000000000000000 +output: -7.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -45667.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -7.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0.015625000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: -1.000000000000000 0.031250000000000 +output: 0.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fmina.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 23.062500000000000 +fcsr: 0x200 +roundig mode: -inf +fmina.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: 456.250000000000000 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: 3.000000000000000 34.031250000000000 +output: 3.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: -1.000000000000000 45786.750000000000000 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1384.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: -7.250000000000000 107.000000000000000 +output: -7.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: -45667.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -7.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1752.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0.015625000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: -248562.750000000000000 23.062500000000000 +output: 23.062500000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: 456.000000000000000 456.250000000000000 +output: 456.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: 34.031250000000000 3.000000000000000 +output: 3.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: 45786.750000000000000 -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1384.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: 107.000000000000000 -7.000000000000000 +output: -7.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -45667.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -7.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0.015625000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: -1.000000000000000 0.031250000000000 +output: 0.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fmina.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 23.062500000000000 +fcsr: 0x300 +roundig mode: near +fabs.s :: +input: 0.000000 +output: 0.000000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: 456.250000 +output: 456.250000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: 3.000000 +output: 3.000000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: -1.000000 +output: 1.000000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: 1384.500000 +output: 1384.500000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: -7.250000 +output: 7.250000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: 1000000000.000000 +output: 1000000000.000000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: -5786.500000 +output: 5786.500000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: 1752.000000 +output: 1752.000000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: 0.015625 +output: 0.015625 +fcsr: 0 +roundig mode: near +fabs.s :: +input: 0.031250 +output: 0.031250 +fcsr: 0 +roundig mode: near +fabs.s :: +input: -248562.750000 +output: 248562.750000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: -45786.500000 +output: 45786.500000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: 456.000000 +output: 456.000000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: 34.031250 +output: 34.031250 +fcsr: 0 +roundig mode: near +fabs.s :: +input: 45786.750000 +output: 45786.750000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: 1752065.000000 +output: 1752065.000000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: 107.000000 +output: 107.000000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: -45667.250000 +output: 45667.250000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: -7.000000 +output: 7.000000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: -347856.500000 +output: 347856.500000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: 356047.500000 +output: 356047.500000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: -1.000000 +output: 1.000000 +fcsr: 0 +roundig mode: near +fabs.s :: +input: 23.062500 +output: 23.062500 +fcsr: 0 +roundig mode: zero +fabs.s :: +input: 0.000000 +output: 0.000000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: 456.250000 +output: 456.250000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: 3.000000 +output: 3.000000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: -1.000000 +output: 1.000000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: 1384.500000 +output: 1384.500000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: -7.250000 +output: 7.250000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: 1000000000.000000 +output: 1000000000.000000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: -5786.500000 +output: 5786.500000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: 1752.000000 +output: 1752.000000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: 0.015625 +output: 0.015625 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: 0.031250 +output: 0.031250 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: -248562.750000 +output: 248562.750000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: -45786.500000 +output: 45786.500000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: 456.000000 +output: 456.000000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: 34.031250 +output: 34.031250 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: 45786.750000 +output: 45786.750000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: 1752065.000000 +output: 1752065.000000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: 107.000000 +output: 107.000000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: -45667.250000 +output: 45667.250000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: -7.000000 +output: 7.000000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: -347856.500000 +output: 347856.500000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: 356047.500000 +output: 356047.500000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: -1.000000 +output: 1.000000 +fcsr: 0x100 +roundig mode: zero +fabs.s :: +input: 23.062500 +output: 23.062500 +fcsr: 0x100 +roundig mode: +inf +fabs.s :: +input: 0.000000 +output: 0.000000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: 456.250000 +output: 456.250000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: 3.000000 +output: 3.000000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: -1.000000 +output: 1.000000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: 1384.500000 +output: 1384.500000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: -7.250000 +output: 7.250000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: 1000000000.000000 +output: 1000000000.000000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: -5786.500000 +output: 5786.500000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: 1752.000000 +output: 1752.000000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: 0.015625 +output: 0.015625 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: 0.031250 +output: 0.031250 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: -248562.750000 +output: 248562.750000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: -45786.500000 +output: 45786.500000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: 456.000000 +output: 456.000000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: 34.031250 +output: 34.031250 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: 45786.750000 +output: 45786.750000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: 1752065.000000 +output: 1752065.000000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: 107.000000 +output: 107.000000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: -45667.250000 +output: 45667.250000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: -7.000000 +output: 7.000000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: -347856.500000 +output: 347856.500000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: 356047.500000 +output: 356047.500000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: -1.000000 +output: 1.000000 +fcsr: 0x200 +roundig mode: +inf +fabs.s :: +input: 23.062500 +output: 23.062500 +fcsr: 0x200 +roundig mode: -inf +fabs.s :: +input: 0.000000 +output: 0.000000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: 456.250000 +output: 456.250000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: 3.000000 +output: 3.000000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: -1.000000 +output: 1.000000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: 1384.500000 +output: 1384.500000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: -7.250000 +output: 7.250000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: 1000000000.000000 +output: 1000000000.000000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: -5786.500000 +output: 5786.500000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: 1752.000000 +output: 1752.000000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: 0.015625 +output: 0.015625 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: 0.031250 +output: 0.031250 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: -248562.750000 +output: 248562.750000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: -45786.500000 +output: 45786.500000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: 456.000000 +output: 456.000000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: 34.031250 +output: 34.031250 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: 45786.750000 +output: 45786.750000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: 1752065.000000 +output: 1752065.000000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: 107.000000 +output: 107.000000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: -45667.250000 +output: 45667.250000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: -7.000000 +output: 7.000000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: -347856.500000 +output: 347856.500000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: 356047.500000 +output: 356047.500000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: -1.000000 +output: 1.000000 +fcsr: 0x300 +roundig mode: -inf +fabs.s :: +input: 23.062500 +output: 23.062500 +fcsr: 0x300 +roundig mode: near +fabs.d :: +input: 0.000000000000000 +output: 0.000000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: 456.250000000000000 +output: 456.250000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: 3.000000000000000 +output: 3.000000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: -1.000000000000000 +output: 1.000000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: 1384.500000000000000 +output: 1384.500000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: -7.250000000000000 +output: 7.250000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: -5786.500000000000000 +output: 5786.500000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: 0.015625000000000 +output: 0.015625000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: 0.031250000000000 +output: 0.031250000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: -248562.750000000000000 +output: 248562.750000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: -45786.500000000000000 +output: 45786.500000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: 456.000000000000000 +output: 456.000000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: 34.031250000000000 +output: 34.031250000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: 45786.750000000000000 +output: 45786.750000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: 107.000000000000000 +output: 107.000000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: -45667.250000000000000 +output: 45667.250000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: -7.000000000000000 +output: 7.000000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: -347856.500000000000000 +output: 347856.500000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: 356047.500000000000000 +output: 356047.500000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: -1.000000000000000 +output: 1.000000000000000 +fcsr: 0 +roundig mode: near +fabs.d :: +input: 23.062500000000000 +output: 23.062500000000000 +fcsr: 0 +roundig mode: zero +fabs.d :: +input: 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: 3.000000000000000 +output: 3.000000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: -1.000000000000000 +output: 1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: 1384.500000000000000 +output: 1384.500000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: -7.250000000000000 +output: 7.250000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: -5786.500000000000000 +output: 5786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: 0.015625000000000 +output: 0.015625000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: 0.031250000000000 +output: 0.031250000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: -248562.750000000000000 +output: 248562.750000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: -45786.500000000000000 +output: 45786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: 456.000000000000000 +output: 456.000000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: 34.031250000000000 +output: 34.031250000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: 45786.750000000000000 +output: 45786.750000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: 107.000000000000000 +output: 107.000000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: -45667.250000000000000 +output: 45667.250000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: -7.000000000000000 +output: 7.000000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: -347856.500000000000000 +output: 347856.500000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: 356047.500000000000000 +output: 356047.500000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: -1.000000000000000 +output: 1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fabs.d :: +input: 23.062500000000000 +output: 23.062500000000000 +fcsr: 0x100 +roundig mode: +inf +fabs.d :: +input: 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: 3.000000000000000 +output: 3.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: -1.000000000000000 +output: 1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: 1384.500000000000000 +output: 1384.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: -7.250000000000000 +output: 7.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: -5786.500000000000000 +output: 5786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: 0.015625000000000 +output: 0.015625000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: 0.031250000000000 +output: 0.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: -248562.750000000000000 +output: 248562.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: -45786.500000000000000 +output: 45786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: 456.000000000000000 +output: 456.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: 34.031250000000000 +output: 34.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: 45786.750000000000000 +output: 45786.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: 107.000000000000000 +output: 107.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: -45667.250000000000000 +output: 45667.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: -7.000000000000000 +output: 7.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: -347856.500000000000000 +output: 347856.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: 356047.500000000000000 +output: 356047.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: -1.000000000000000 +output: 1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fabs.d :: +input: 23.062500000000000 +output: 23.062500000000000 +fcsr: 0x200 +roundig mode: -inf +fabs.d :: +input: 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: 3.000000000000000 +output: 3.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: -1.000000000000000 +output: 1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: 1384.500000000000000 +output: 1384.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: -7.250000000000000 +output: 7.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: -5786.500000000000000 +output: 5786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: 0.015625000000000 +output: 0.015625000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: 0.031250000000000 +output: 0.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: -248562.750000000000000 +output: 248562.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: -45786.500000000000000 +output: 45786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: 456.000000000000000 +output: 456.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: 34.031250000000000 +output: 34.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: 45786.750000000000000 +output: 45786.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: 107.000000000000000 +output: 107.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: -45667.250000000000000 +output: 45667.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: -7.000000000000000 +output: 7.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: -347856.500000000000000 +output: 347856.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: 356047.500000000000000 +output: 356047.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: -1.000000000000000 +output: 1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fabs.d :: +input: 23.062500000000000 +output: 23.062500000000000 +fcsr: 0x300 +roundig mode: near +fneg.s :: +input: 0.000000 +output: -0.000000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: 456.250000 +output: -456.250000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: 3.000000 +output: -3.000000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: -1.000000 +output: 1.000000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: 1384.500000 +output: -1384.500000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: -7.250000 +output: 7.250000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: 1000000000.000000 +output: -1000000000.000000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: -5786.500000 +output: 5786.500000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: 1752.000000 +output: -1752.000000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: 0.015625 +output: -0.015625 +fcsr: 0 +roundig mode: near +fneg.s :: +input: 0.031250 +output: -0.031250 +fcsr: 0 +roundig mode: near +fneg.s :: +input: -248562.750000 +output: 248562.750000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: -45786.500000 +output: 45786.500000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: 456.000000 +output: -456.000000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: 34.031250 +output: -34.031250 +fcsr: 0 +roundig mode: near +fneg.s :: +input: 45786.750000 +output: -45786.750000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: 1752065.000000 +output: -1752065.000000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: 107.000000 +output: -107.000000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: -45667.250000 +output: 45667.250000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: -7.000000 +output: 7.000000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: -347856.500000 +output: 347856.500000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: 356047.500000 +output: -356047.500000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: -1.000000 +output: 1.000000 +fcsr: 0 +roundig mode: near +fneg.s :: +input: 23.062500 +output: -23.062500 +fcsr: 0 +roundig mode: zero +fneg.s :: +input: 0.000000 +output: -0.000000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: 456.250000 +output: -456.250000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: 3.000000 +output: -3.000000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: -1.000000 +output: 1.000000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: 1384.500000 +output: -1384.500000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: -7.250000 +output: 7.250000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: 1000000000.000000 +output: -1000000000.000000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: -5786.500000 +output: 5786.500000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: 1752.000000 +output: -1752.000000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: 0.015625 +output: -0.015625 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: 0.031250 +output: -0.031250 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: -248562.750000 +output: 248562.750000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: -45786.500000 +output: 45786.500000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: 456.000000 +output: -456.000000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: 34.031250 +output: -34.031250 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: 45786.750000 +output: -45786.750000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: 1752065.000000 +output: -1752065.000000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: 107.000000 +output: -107.000000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: -45667.250000 +output: 45667.250000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: -7.000000 +output: 7.000000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: -347856.500000 +output: 347856.500000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: 356047.500000 +output: -356047.500000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: -1.000000 +output: 1.000000 +fcsr: 0x100 +roundig mode: zero +fneg.s :: +input: 23.062500 +output: -23.062500 +fcsr: 0x100 +roundig mode: +inf +fneg.s :: +input: 0.000000 +output: -0.000000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: 456.250000 +output: -456.250000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: 3.000000 +output: -3.000000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: -1.000000 +output: 1.000000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: 1384.500000 +output: -1384.500000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: -7.250000 +output: 7.250000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: 1000000000.000000 +output: -1000000000.000000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: -5786.500000 +output: 5786.500000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: 1752.000000 +output: -1752.000000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: 0.015625 +output: -0.015625 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: 0.031250 +output: -0.031250 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: -248562.750000 +output: 248562.750000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: -45786.500000 +output: 45786.500000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: 456.000000 +output: -456.000000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: 34.031250 +output: -34.031250 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: 45786.750000 +output: -45786.750000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: 1752065.000000 +output: -1752065.000000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: 107.000000 +output: -107.000000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: -45667.250000 +output: 45667.250000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: -7.000000 +output: 7.000000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: -347856.500000 +output: 347856.500000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: 356047.500000 +output: -356047.500000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: -1.000000 +output: 1.000000 +fcsr: 0x200 +roundig mode: +inf +fneg.s :: +input: 23.062500 +output: -23.062500 +fcsr: 0x200 +roundig mode: -inf +fneg.s :: +input: 0.000000 +output: -0.000000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: 456.250000 +output: -456.250000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: 3.000000 +output: -3.000000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: -1.000000 +output: 1.000000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: 1384.500000 +output: -1384.500000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: -7.250000 +output: 7.250000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: 1000000000.000000 +output: -1000000000.000000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: -5786.500000 +output: 5786.500000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: 1752.000000 +output: -1752.000000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: 0.015625 +output: -0.015625 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: 0.031250 +output: -0.031250 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: -248562.750000 +output: 248562.750000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: -45786.500000 +output: 45786.500000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: 456.000000 +output: -456.000000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: 34.031250 +output: -34.031250 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: 45786.750000 +output: -45786.750000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: 1752065.000000 +output: -1752065.000000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: 107.000000 +output: -107.000000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: -45667.250000 +output: 45667.250000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: -7.000000 +output: 7.000000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: -347856.500000 +output: 347856.500000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: 356047.500000 +output: -356047.500000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: -1.000000 +output: 1.000000 +fcsr: 0x300 +roundig mode: -inf +fneg.s :: +input: 23.062500 +output: -23.062500 +fcsr: 0x300 +roundig mode: near +fneg.d :: +input: 0.000000000000000 +output: -0.000000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: 456.250000000000000 +output: -456.250000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: 3.000000000000000 +output: -3.000000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: -1.000000000000000 +output: 1.000000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: 1384.500000000000000 +output: -1384.500000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: -7.250000000000000 +output: 7.250000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: 1000000000.000000000000000 +output: -1000000000.000000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: -5786.500000000000000 +output: 5786.500000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: 1752.000000000000000 +output: -1752.000000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: 0.015625000000000 +output: -0.015625000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: 0.031250000000000 +output: -0.031250000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: -248562.750000000000000 +output: 248562.750000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: -45786.500000000000000 +output: 45786.500000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: 456.000000000000000 +output: -456.000000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: 34.031250000000000 +output: -34.031250000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: 45786.750000000000000 +output: -45786.750000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: 1752065.000000000000000 +output: -1752065.000000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: 107.000000000000000 +output: -107.000000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: -45667.250000000000000 +output: 45667.250000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: -7.000000000000000 +output: 7.000000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: -347856.500000000000000 +output: 347856.500000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: 356047.500000000000000 +output: -356047.500000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: -1.000000000000000 +output: 1.000000000000000 +fcsr: 0 +roundig mode: near +fneg.d :: +input: 23.062500000000000 +output: -23.062500000000000 +fcsr: 0 +roundig mode: zero +fneg.d :: +input: 0.000000000000000 +output: -0.000000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: 456.250000000000000 +output: -456.250000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: 3.000000000000000 +output: -3.000000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: -1.000000000000000 +output: 1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: 1384.500000000000000 +output: -1384.500000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: -7.250000000000000 +output: 7.250000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: 1000000000.000000000000000 +output: -1000000000.000000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: -5786.500000000000000 +output: 5786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: 1752.000000000000000 +output: -1752.000000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: 0.015625000000000 +output: -0.015625000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: 0.031250000000000 +output: -0.031250000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: -248562.750000000000000 +output: 248562.750000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: -45786.500000000000000 +output: 45786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: 456.000000000000000 +output: -456.000000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: 34.031250000000000 +output: -34.031250000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: 45786.750000000000000 +output: -45786.750000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: 1752065.000000000000000 +output: -1752065.000000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: 107.000000000000000 +output: -107.000000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: -45667.250000000000000 +output: 45667.250000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: -7.000000000000000 +output: 7.000000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: -347856.500000000000000 +output: 347856.500000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: 356047.500000000000000 +output: -356047.500000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: -1.000000000000000 +output: 1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fneg.d :: +input: 23.062500000000000 +output: -23.062500000000000 +fcsr: 0x100 +roundig mode: +inf +fneg.d :: +input: 0.000000000000000 +output: -0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: 456.250000000000000 +output: -456.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: 3.000000000000000 +output: -3.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: -1.000000000000000 +output: 1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: 1384.500000000000000 +output: -1384.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: -7.250000000000000 +output: 7.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: 1000000000.000000000000000 +output: -1000000000.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: -5786.500000000000000 +output: 5786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: 1752.000000000000000 +output: -1752.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: 0.015625000000000 +output: -0.015625000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: 0.031250000000000 +output: -0.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: -248562.750000000000000 +output: 248562.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: -45786.500000000000000 +output: 45786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: 456.000000000000000 +output: -456.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: 34.031250000000000 +output: -34.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: 45786.750000000000000 +output: -45786.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: 1752065.000000000000000 +output: -1752065.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: 107.000000000000000 +output: -107.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: -45667.250000000000000 +output: 45667.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: -7.000000000000000 +output: 7.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: -347856.500000000000000 +output: 347856.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: 356047.500000000000000 +output: -356047.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: -1.000000000000000 +output: 1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fneg.d :: +input: 23.062500000000000 +output: -23.062500000000000 +fcsr: 0x200 +roundig mode: -inf +fneg.d :: +input: 0.000000000000000 +output: -0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: 456.250000000000000 +output: -456.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: 3.000000000000000 +output: -3.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: -1.000000000000000 +output: 1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: 1384.500000000000000 +output: -1384.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: -7.250000000000000 +output: 7.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: 1000000000.000000000000000 +output: -1000000000.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: -5786.500000000000000 +output: 5786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: 1752.000000000000000 +output: -1752.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: 0.015625000000000 +output: -0.015625000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: 0.031250000000000 +output: -0.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: -248562.750000000000000 +output: 248562.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: -45786.500000000000000 +output: 45786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: 456.000000000000000 +output: -456.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: 34.031250000000000 +output: -34.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: 45786.750000000000000 +output: -45786.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: 1752065.000000000000000 +output: -1752065.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: 107.000000000000000 +output: -107.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: -45667.250000000000000 +output: 45667.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: -7.000000000000000 +output: 7.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: -347856.500000000000000 +output: 347856.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: 356047.500000000000000 +output: -356047.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: -1.000000000000000 +output: 1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fneg.d :: +input: 23.062500000000000 +output: -23.062500000000000 +fcsr: 0x300 +roundig mode: near +fsqrt.s :: +input: 0.000000 +output: 0.000000 +fcsr: 0 +roundig mode: near +fsqrt.s :: +input: 456.250000 +output: 21.360010 +fcsr: 0x1010000 +roundig mode: near +fsqrt.s :: +input: 3.000000 +output: 1.732051 +fcsr: 0x1010000 +roundig mode: near +fsqrt.s :: +input: -1.000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.s :: +input: 1384.500000 +output: 37.208870 +fcsr: 0x1010000 +roundig mode: near +fsqrt.s :: +input: -7.250000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.s :: +input: 1000000000.000000 +output: 31622.777344 +fcsr: 0x1010000 +roundig mode: near +fsqrt.s :: +input: -5786.500000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.s :: +input: 1752.000000 +output: 41.856899 +fcsr: 0x1010000 +roundig mode: near +fsqrt.s :: +input: 0.015625 +output: 0.125000 +fcsr: 0 +roundig mode: near +fsqrt.s :: +input: 0.031250 +output: 0.176777 +fcsr: 0x1010000 +roundig mode: near +fsqrt.s :: +input: -248562.750000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.s :: +input: -45786.500000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.s :: +input: 456.000000 +output: 21.354156 +fcsr: 0x1010000 +roundig mode: near +fsqrt.s :: +input: 34.031250 +output: 5.833631 +fcsr: 0x1010000 +roundig mode: near +fsqrt.s :: +input: 45786.750000 +output: 213.978394 +fcsr: 0x1010000 +roundig mode: near +fsqrt.s :: +input: 1752065.000000 +output: 1323.655884 +fcsr: 0x1010000 +roundig mode: near +fsqrt.s :: +input: 107.000000 +output: 10.344080 +fcsr: 0x1010000 +roundig mode: near +fsqrt.s :: +input: -45667.250000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.s :: +input: -7.000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.s :: +input: -347856.500000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.s :: +input: 356047.500000 +output: 596.697144 +fcsr: 0x1010000 +roundig mode: near +fsqrt.s :: +input: -1.000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.s :: +input: 23.062500 +output: 4.802343 +fcsr: 0x1010000 +roundig mode: zero +fsqrt.s :: +input: 0.000000 +output: 0.000000 +fcsr: 0x100 +roundig mode: zero +fsqrt.s :: +input: 456.250000 +output: 21.360008 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.s :: +input: 3.000000 +output: 1.732050 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.s :: +input: -1.000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.s :: +input: 1384.500000 +output: 37.208866 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.s :: +input: -7.250000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.s :: +input: 1000000000.000000 +output: 31622.775390 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.s :: +input: -5786.500000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.s :: +input: 1752.000000 +output: 41.856895 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.s :: +input: 0.015625 +output: 0.125000 +fcsr: 0x100 +roundig mode: zero +fsqrt.s :: +input: 0.031250 +output: 0.176776 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.s :: +input: -248562.750000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.s :: +input: -45786.500000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.s :: +input: 456.000000 +output: 21.354156 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.s :: +input: 34.031250 +output: 5.833630 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.s :: +input: 45786.750000 +output: 213.978378 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.s :: +input: 1752065.000000 +output: 1323.655883 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.s :: +input: 107.000000 +output: 10.344079 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.s :: +input: -45667.250000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.s :: +input: -7.000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.s :: +input: -347856.500000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.s :: +input: 356047.500000 +output: 596.697143 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.s :: +input: -1.000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.s :: +input: 23.062500 +output: 4.802342 +fcsr: 0x1010100 +roundig mode: +inf +fsqrt.s :: +input: 0.000000 +output: 0.000000 +fcsr: 0x200 +roundig mode: +inf +fsqrt.s :: +input: 456.250000 +output: 21.360011 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.s :: +input: 3.000000 +output: 1.732051 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.s :: +input: -1.000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.s :: +input: 1384.500000 +output: 37.208870 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.s :: +input: -7.250000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.s :: +input: 1000000000.000000 +output: 31622.777344 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.s :: +input: -5786.500000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.s :: +input: 1752.000000 +output: 41.856900 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.s :: +input: 0.015625 +output: 0.125000 +fcsr: 0x200 +roundig mode: +inf +fsqrt.s :: +input: 0.031250 +output: 0.176777 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.s :: +input: -248562.750000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.s :: +input: -45786.500000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.s :: +input: 456.000000 +output: 21.354159 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.s :: +input: 34.031250 +output: 5.833632 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.s :: +input: 45786.750000 +output: 213.978394 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.s :: +input: 1752065.000000 +output: 1323.656006 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.s :: +input: 107.000000 +output: 10.344081 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.s :: +input: -45667.250000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.s :: +input: -7.000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.s :: +input: -347856.500000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.s :: +input: 356047.500000 +output: 596.697205 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.s :: +input: -1.000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.s :: +input: 23.062500 +output: 4.802344 +fcsr: 0x1010200 +roundig mode: -inf +fsqrt.s :: +input: 0.000000 +output: 0.000000 +fcsr: 0x300 +roundig mode: -inf +fsqrt.s :: +input: 456.250000 +output: 21.360008 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.s :: +input: 3.000000 +output: 1.732050 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.s :: +input: -1.000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.s :: +input: 1384.500000 +output: 37.208866 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.s :: +input: -7.250000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.s :: +input: 1000000000.000000 +output: 31622.775390 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.s :: +input: -5786.500000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.s :: +input: 1752.000000 +output: 41.856895 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.s :: +input: 0.015625 +output: 0.125000 +fcsr: 0x300 +roundig mode: -inf +fsqrt.s :: +input: 0.031250 +output: 0.176776 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.s :: +input: -248562.750000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.s :: +input: -45786.500000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.s :: +input: 456.000000 +output: 21.354156 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.s :: +input: 34.031250 +output: 5.833630 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.s :: +input: 45786.750000 +output: 213.978378 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.s :: +input: 1752065.000000 +output: 1323.655883 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.s :: +input: 107.000000 +output: 10.344079 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.s :: +input: -45667.250000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.s :: +input: -7.000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.s :: +input: -347856.500000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.s :: +input: 356047.500000 +output: 596.697143 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.s :: +input: -1.000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.s :: +input: 23.062500 +output: 4.802342 +fcsr: 0x1010300 +roundig mode: near +fsqrt.d :: +input: 0.000000000000000 +output: 0.000000000000000 +fcsr: 0 +roundig mode: near +fsqrt.d :: +input: 456.250000000000000 +output: 21.360009363293827 +fcsr: 0x1010000 +roundig mode: near +fsqrt.d :: +input: 3.000000000000000 +output: 1.732050807568877 +fcsr: 0x1010000 +roundig mode: near +fsqrt.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.d :: +input: 1384.500000000000000 +output: 37.208869910278111 +fcsr: 0x1010000 +roundig mode: near +fsqrt.d :: +input: -7.250000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.d :: +input: 1000000000.000000000000000 +output: 31622.776601683792251 +fcsr: 0x1010000 +roundig mode: near +fsqrt.d :: +input: -5786.500000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.d :: +input: 1752.000000000000000 +output: 41.856899072912697 +fcsr: 0x1010000 +roundig mode: near +fsqrt.d :: +input: 0.015625000000000 +output: 0.125000000000000 +fcsr: 0 +roundig mode: near +fsqrt.d :: +input: 0.031250000000000 +output: 0.176776695296637 +fcsr: 0x1010000 +roundig mode: near +fsqrt.d :: +input: -248562.750000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.d :: +input: -45786.500000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.d :: +input: 456.000000000000000 +output: 21.354156504062622 +fcsr: 0x1010000 +roundig mode: near +fsqrt.d :: +input: 34.031250000000000 +output: 5.833630944789017 +fcsr: 0x1010000 +roundig mode: near +fsqrt.d :: +input: 45786.750000000000000 +output: 213.978386759036965 +fcsr: 0x1010000 +roundig mode: near +fsqrt.d :: +input: 1752065.000000000000000 +output: 1323.655922058296937 +fcsr: 0x1010000 +roundig mode: near +fsqrt.d :: +input: 107.000000000000000 +output: 10.344080432788601 +fcsr: 0x1010000 +roundig mode: near +fsqrt.d :: +input: -45667.250000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.d :: +input: -7.000000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.d :: +input: -347856.500000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.d :: +input: 356047.500000000000000 +output: 596.697159369809583 +fcsr: 0x1010000 +roundig mode: near +fsqrt.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +fsqrt.d :: +input: 23.062500000000000 +output: 4.802343178074636 +fcsr: 0x1010000 +roundig mode: zero +fsqrt.d :: +input: 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x100 +roundig mode: zero +fsqrt.d :: +input: 456.250000000000000 +output: 21.360009363293826 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.d :: +input: 3.000000000000000 +output: 1.732050807568877 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.d :: +input: 1384.500000000000000 +output: 37.208869910278110 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.d :: +input: -7.250000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.d :: +input: 1000000000.000000000000000 +output: 31622.776601683792250 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.d :: +input: -5786.500000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.d :: +input: 1752.000000000000000 +output: 41.856899072912696 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.d :: +input: 0.015625000000000 +output: 0.125000000000000 +fcsr: 0x100 +roundig mode: zero +fsqrt.d :: +input: 0.031250000000000 +output: 0.176776695296636 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.d :: +input: -248562.750000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.d :: +input: -45786.500000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.d :: +input: 456.000000000000000 +output: 21.354156504062618 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.d :: +input: 34.031250000000000 +output: 5.833630944789016 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.d :: +input: 45786.750000000000000 +output: 213.978386759036936 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.d :: +input: 1752065.000000000000000 +output: 1323.655922058296710 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.d :: +input: 107.000000000000000 +output: 10.344080432788599 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.d :: +input: -45667.250000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.d :: +input: -7.000000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.d :: +input: -347856.500000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.d :: +input: 356047.500000000000000 +output: 596.697159369809583 +fcsr: 0x1010100 +roundig mode: zero +fsqrt.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +fsqrt.d :: +input: 23.062500000000000 +output: 4.802343178074636 +fcsr: 0x1010100 +roundig mode: +inf +fsqrt.d :: +input: 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fsqrt.d :: +input: 456.250000000000000 +output: 21.360009363293831 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.d :: +input: 3.000000000000000 +output: 1.732050807568878 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.d :: +input: 1384.500000000000000 +output: 37.208869910278118 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.d :: +input: -7.250000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.d :: +input: 1000000000.000000000000000 +output: 31622.776601683795889 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.d :: +input: -5786.500000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.d :: +input: 1752.000000000000000 +output: 41.856899072912704 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.d :: +input: 0.015625000000000 +output: 0.125000000000000 +fcsr: 0x200 +roundig mode: +inf +fsqrt.d :: +input: 0.031250000000000 +output: 0.176776695296637 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.d :: +input: -248562.750000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.d :: +input: -45786.500000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.d :: +input: 456.000000000000000 +output: 21.354156504062623 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.d :: +input: 34.031250000000000 +output: 5.833630944789018 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.d :: +input: 45786.750000000000000 +output: 213.978386759036966 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.d :: +input: 1752065.000000000000000 +output: 1323.655922058296938 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.d :: +input: 107.000000000000000 +output: 10.344080432788602 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.d :: +input: -45667.250000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.d :: +input: -7.000000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.d :: +input: -347856.500000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.d :: +input: 356047.500000000000000 +output: 596.697159369809697 +fcsr: 0x1010200 +roundig mode: +inf +fsqrt.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +fsqrt.d :: +input: 23.062500000000000 +output: 4.802343178074638 +fcsr: 0x1010200 +roundig mode: -inf +fsqrt.d :: +input: 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fsqrt.d :: +input: 456.250000000000000 +output: 21.360009363293826 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.d :: +input: 3.000000000000000 +output: 1.732050807568877 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.d :: +input: 1384.500000000000000 +output: 37.208869910278110 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.d :: +input: -7.250000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.d :: +input: 1000000000.000000000000000 +output: 31622.776601683792250 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.d :: +input: -5786.500000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.d :: +input: 1752.000000000000000 +output: 41.856899072912696 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.d :: +input: 0.015625000000000 +output: 0.125000000000000 +fcsr: 0x300 +roundig mode: -inf +fsqrt.d :: +input: 0.031250000000000 +output: 0.176776695296636 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.d :: +input: -248562.750000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.d :: +input: -45786.500000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.d :: +input: 456.000000000000000 +output: 21.354156504062618 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.d :: +input: 34.031250000000000 +output: 5.833630944789016 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.d :: +input: 45786.750000000000000 +output: 213.978386759036936 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.d :: +input: 1752065.000000000000000 +output: 1323.655922058296710 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.d :: +input: 107.000000000000000 +output: 10.344080432788599 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.d :: +input: -45667.250000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.d :: +input: -7.000000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.d :: +input: -347856.500000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.d :: +input: 356047.500000000000000 +output: 596.697159369809583 +fcsr: 0x1010300 +roundig mode: -inf +fsqrt.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +fsqrt.d :: +input: 23.062500000000000 +output: 4.802343178074636 +fcsr: 0x1010300 +roundig mode: near +frecip.s :: +input: 0.000000 +output: inf +fcsr: 0x8080000 +roundig mode: near +frecip.s :: +input: 456.250000 +output: 0.002192 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: 3.000000 +output: 0.333333 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0 +roundig mode: near +frecip.s :: +input: 1384.500000 +output: 0.000722 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: -7.250000 +output: -0.137931 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: 1000000000.000000 +output: 0.000000 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: -5786.500000 +output: -0.000173 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: 1752.000000 +output: 0.000571 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: 0.015625 +output: 64.000000 +fcsr: 0 +roundig mode: near +frecip.s :: +input: 0.031250 +output: 32.000000 +fcsr: 0 +roundig mode: near +frecip.s :: +input: -248562.750000 +output: -0.000004 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: -45786.500000 +output: -0.000022 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: 456.000000 +output: 0.002193 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: 34.031250 +output: 0.029385 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: 45786.750000 +output: 0.000022 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: 1752065.000000 +output: 0.000001 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: 107.000000 +output: 0.009346 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: -45667.250000 +output: -0.000022 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: -7.000000 +output: -0.142857 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: -347856.500000 +output: -0.000003 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: 356047.500000 +output: 0.000003 +fcsr: 0x1010000 +roundig mode: near +frecip.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0 +roundig mode: near +frecip.s :: +input: 23.062500 +output: 0.043360 +fcsr: 0x1010000 +roundig mode: zero +frecip.s :: +input: 0.000000 +output: inf +fcsr: 0x8080100 +roundig mode: zero +frecip.s :: +input: 456.250000 +output: 0.002191 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: 3.000000 +output: 0.333333 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +frecip.s :: +input: 1384.500000 +output: 0.000722 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: -7.250000 +output: -0.137931 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: 1000000000.000000 +output: 0.000000 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: -5786.500000 +output: -0.000172 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: 1752.000000 +output: 0.000570 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: 0.015625 +output: 64.000000 +fcsr: 0x100 +roundig mode: zero +frecip.s :: +input: 0.031250 +output: 32.000000 +fcsr: 0x100 +roundig mode: zero +frecip.s :: +input: -248562.750000 +output: -0.000004 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: -45786.500000 +output: -0.000021 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: 456.000000 +output: 0.002192 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: 34.031250 +output: 0.029384 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: 45786.750000 +output: 0.000021 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: 1752065.000000 +output: 0.000000 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: 107.000000 +output: 0.009345 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: -45667.250000 +output: -0.000021 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: -7.000000 +output: -0.142857 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: -347856.500000 +output: -0.000002 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: 356047.500000 +output: 0.000002 +fcsr: 0x1010100 +roundig mode: zero +frecip.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +frecip.s :: +input: 23.062500 +output: 0.043360 +fcsr: 0x1010100 +roundig mode: +inf +frecip.s :: +input: 0.000000 +output: inf +fcsr: 0x8080200 +roundig mode: +inf +frecip.s :: +input: 456.250000 +output: 0.002192 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: 3.000000 +output: 0.333334 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +frecip.s :: +input: 1384.500000 +output: 0.000723 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: -7.250000 +output: -0.137931 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: 1000000000.000000 +output: 0.000001 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: -5786.500000 +output: -0.000172 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: 1752.000000 +output: 0.000571 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: 0.015625 +output: 64.000000 +fcsr: 0x200 +roundig mode: +inf +frecip.s :: +input: 0.031250 +output: 32.000000 +fcsr: 0x200 +roundig mode: +inf +frecip.s :: +input: -248562.750000 +output: -0.000004 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: -45786.500000 +output: -0.000021 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: 456.000000 +output: 0.002193 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: 34.031250 +output: 0.029385 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: 45786.750000 +output: 0.000022 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: 1752065.000000 +output: 0.000001 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: 107.000000 +output: 0.009346 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: -45667.250000 +output: -0.000021 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: -7.000000 +output: -0.142857 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: -347856.500000 +output: -0.000002 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: 356047.500000 +output: 0.000003 +fcsr: 0x1010200 +roundig mode: +inf +frecip.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +frecip.s :: +input: 23.062500 +output: 0.043361 +fcsr: 0x1010200 +roundig mode: -inf +frecip.s :: +input: 0.000000 +output: inf +fcsr: 0x8080300 +roundig mode: -inf +frecip.s :: +input: 456.250000 +output: 0.002191 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: 3.000000 +output: 0.333333 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +frecip.s :: +input: 1384.500000 +output: 0.000722 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: -7.250000 +output: -0.137932 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: 1000000000.000000 +output: 0.000000 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: -5786.500000 +output: -0.000173 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: 1752.000000 +output: 0.000570 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: 0.015625 +output: 64.000000 +fcsr: 0x300 +roundig mode: -inf +frecip.s :: +input: 0.031250 +output: 32.000000 +fcsr: 0x300 +roundig mode: -inf +frecip.s :: +input: -248562.750000 +output: -0.000005 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: -45786.500000 +output: -0.000022 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: 456.000000 +output: 0.002192 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: 34.031250 +output: 0.029384 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: 45786.750000 +output: 0.000021 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: 1752065.000000 +output: 0.000000 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: 107.000000 +output: 0.009345 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: -45667.250000 +output: -0.000022 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: -7.000000 +output: -0.142858 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: -347856.500000 +output: -0.000003 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: 356047.500000 +output: 0.000002 +fcsr: 0x1010300 +roundig mode: -inf +frecip.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +frecip.s :: +input: 23.062500 +output: 0.043360 +fcsr: 0x1010300 +roundig mode: near +frecip.d :: +input: 0.000000000000000 +output: inf +fcsr: 0x8080000 +roundig mode: near +frecip.d :: +input: 456.250000000000000 +output: 0.002191780821918 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: 3.000000000000000 +output: 0.333333333333333 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +frecip.d :: +input: 1384.500000000000000 +output: 0.000722282412423 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: -7.250000000000000 +output: -0.137931034482759 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: 1000000000.000000000000000 +output: 0.000000001000000 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: -5786.500000000000000 +output: -0.000172816037328 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: 1752.000000000000000 +output: 0.000570776255708 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: 0.015625000000000 +output: 64.000000000000000 +fcsr: 0 +roundig mode: near +frecip.d :: +input: 0.031250000000000 +output: 32.000000000000000 +fcsr: 0 +roundig mode: near +frecip.d :: +input: -248562.750000000000000 +output: -0.000004023128968 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: -45786.500000000000000 +output: -0.000021840498837 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: 456.000000000000000 +output: 0.002192982456140 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: 34.031250000000000 +output: 0.029384756657484 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: 45786.750000000000000 +output: 0.000021840379586 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: 1752065.000000000000000 +output: 0.000000570755080 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: 107.000000000000000 +output: 0.009345794392523 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: -45667.250000000000000 +output: -0.000021897530506 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: -7.000000000000000 +output: -0.142857142857143 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: -347856.500000000000000 +output: -0.000002874748639 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: 356047.500000000000000 +output: 0.000002808614019 +fcsr: 0x1010000 +roundig mode: near +frecip.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +frecip.d :: +input: 23.062500000000000 +output: 0.043360433604336 +fcsr: 0x1010000 +roundig mode: zero +frecip.d :: +input: 0.000000000000000 +output: inf +fcsr: 0x8080100 +roundig mode: zero +frecip.d :: +input: 456.250000000000000 +output: 0.002191780821917 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: 3.000000000000000 +output: 0.333333333333333 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +frecip.d :: +input: 1384.500000000000000 +output: 0.000722282412423 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: -7.250000000000000 +output: -0.137931034482758 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: 1000000000.000000000000000 +output: 0.000000000999999 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: -5786.500000000000000 +output: -0.000172816037328 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: 1752.000000000000000 +output: 0.000570776255707 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: 0.015625000000000 +output: 64.000000000000000 +fcsr: 0x100 +roundig mode: zero +frecip.d :: +input: 0.031250000000000 +output: 32.000000000000000 +fcsr: 0x100 +roundig mode: zero +frecip.d :: +input: -248562.750000000000000 +output: -0.000004023128968 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: -45786.500000000000000 +output: -0.000021840498836 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: 456.000000000000000 +output: 0.002192982456140 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: 34.031250000000000 +output: 0.029384756657483 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: 45786.750000000000000 +output: 0.000021840379585 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: 1752065.000000000000000 +output: 0.000000570755080 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: 107.000000000000000 +output: 0.009345794392523 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: -45667.250000000000000 +output: -0.000021897530505 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: -7.000000000000000 +output: -0.142857142857142 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: -347856.500000000000000 +output: -0.000002874748639 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: 356047.500000000000000 +output: 0.000002808614019 +fcsr: 0x1010100 +roundig mode: zero +frecip.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +frecip.d :: +input: 23.062500000000000 +output: 0.043360433604336 +fcsr: 0x1010100 +roundig mode: +inf +frecip.d :: +input: 0.000000000000000 +output: inf +fcsr: 0x8080200 +roundig mode: +inf +frecip.d :: +input: 456.250000000000000 +output: 0.002191780821918 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: 3.000000000000000 +output: 0.333333333333334 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +frecip.d :: +input: 1384.500000000000000 +output: 0.000722282412424 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: -7.250000000000000 +output: -0.137931034482758 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: 1000000000.000000000000000 +output: 0.000000001000001 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: -5786.500000000000000 +output: -0.000172816037328 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: 1752.000000000000000 +output: 0.000570776255708 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: 0.015625000000000 +output: 64.000000000000000 +fcsr: 0x200 +roundig mode: +inf +frecip.d :: +input: 0.031250000000000 +output: 32.000000000000000 +fcsr: 0x200 +roundig mode: +inf +frecip.d :: +input: -248562.750000000000000 +output: -0.000004023128968 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: -45786.500000000000000 +output: -0.000021840498836 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: 456.000000000000000 +output: 0.002192982456141 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: 34.031250000000000 +output: 0.029384756657484 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: 45786.750000000000000 +output: 0.000021840379586 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: 1752065.000000000000000 +output: 0.000000570755081 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: 107.000000000000000 +output: 0.009345794392524 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: -45667.250000000000000 +output: -0.000021897530505 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: -7.000000000000000 +output: -0.142857142857142 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: -347856.500000000000000 +output: -0.000002874748639 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: 356047.500000000000000 +output: 0.000002808614020 +fcsr: 0x1010200 +roundig mode: +inf +frecip.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +frecip.d :: +input: 23.062500000000000 +output: 0.043360433604337 +fcsr: 0x1010200 +roundig mode: -inf +frecip.d :: +input: 0.000000000000000 +output: inf +fcsr: 0x8080300 +roundig mode: -inf +frecip.d :: +input: 456.250000000000000 +output: 0.002191780821917 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: 3.000000000000000 +output: 0.333333333333333 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +frecip.d :: +input: 1384.500000000000000 +output: 0.000722282412423 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: -7.250000000000000 +output: -0.137931034482759 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: 1000000000.000000000000000 +output: 0.000000000999999 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: -5786.500000000000000 +output: -0.000172816037329 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: 1752.000000000000000 +output: 0.000570776255707 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: 0.015625000000000 +output: 64.000000000000000 +fcsr: 0x300 +roundig mode: -inf +frecip.d :: +input: 0.031250000000000 +output: 32.000000000000000 +fcsr: 0x300 +roundig mode: -inf +frecip.d :: +input: -248562.750000000000000 +output: -0.000004023128969 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: -45786.500000000000000 +output: -0.000021840498837 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: 456.000000000000000 +output: 0.002192982456140 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: 34.031250000000000 +output: 0.029384756657483 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: 45786.750000000000000 +output: 0.000021840379585 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: 1752065.000000000000000 +output: 0.000000570755080 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: 107.000000000000000 +output: 0.009345794392523 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: -45667.250000000000000 +output: -0.000021897530506 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: -7.000000000000000 +output: -0.142857142857143 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: -347856.500000000000000 +output: -0.000002874748640 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: 356047.500000000000000 +output: 0.000002808614019 +fcsr: 0x1010300 +roundig mode: -inf +frecip.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +frecip.d :: +input: 23.062500000000000 +output: 0.043360433604336 +fcsr: 0x1010300 +roundig mode: near +frsqrt.s :: +input: 0.000000 +output: inf +fcsr: 0x8080000 +roundig mode: near +frsqrt.s :: +input: 456.250000 +output: 0.046816 +fcsr: 0x1010000 +roundig mode: near +frsqrt.s :: +input: 3.000000 +output: 0.577350 +fcsr: 0x1010000 +roundig mode: near +frsqrt.s :: +input: -1.000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.s :: +input: 1384.500000 +output: 0.026875 +fcsr: 0x1010000 +roundig mode: near +frsqrt.s :: +input: -7.250000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.s :: +input: 1000000000.000000 +output: 0.000032 +fcsr: 0x1010000 +roundig mode: near +frsqrt.s :: +input: -5786.500000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.s :: +input: 1752.000000 +output: 0.023891 +fcsr: 0x1010000 +roundig mode: near +frsqrt.s :: +input: 0.015625 +output: 8.000000 +fcsr: 0 +roundig mode: near +frsqrt.s :: +input: 0.031250 +output: 5.656854 +fcsr: 0x1010000 +roundig mode: near +frsqrt.s :: +input: -248562.750000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.s :: +input: -45786.500000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.s :: +input: 456.000000 +output: 0.046829 +fcsr: 0x1010000 +roundig mode: near +frsqrt.s :: +input: 34.031250 +output: 0.171420 +fcsr: 0x1010000 +roundig mode: near +frsqrt.s :: +input: 45786.750000 +output: 0.004673 +fcsr: 0x1010000 +roundig mode: near +frsqrt.s :: +input: 1752065.000000 +output: 0.000755 +fcsr: 0x1010000 +roundig mode: near +frsqrt.s :: +input: 107.000000 +output: 0.096674 +fcsr: 0x1010000 +roundig mode: near +frsqrt.s :: +input: -45667.250000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.s :: +input: -7.000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.s :: +input: -347856.500000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.s :: +input: 356047.500000 +output: 0.001676 +fcsr: 0x1010000 +roundig mode: near +frsqrt.s :: +input: -1.000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.s :: +input: 23.062500 +output: 0.208232 +fcsr: 0x1010000 +roundig mode: zero +frsqrt.s :: +input: 0.000000 +output: inf +fcsr: 0x8080100 +roundig mode: zero +frsqrt.s :: +input: 456.250000 +output: 0.046816 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.s :: +input: 3.000000 +output: 0.577350 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.s :: +input: -1.000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.s :: +input: 1384.500000 +output: 0.026875 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.s :: +input: -7.250000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.s :: +input: 1000000000.000000 +output: 0.000031 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.s :: +input: -5786.500000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.s :: +input: 1752.000000 +output: 0.023890 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.s :: +input: 0.015625 +output: 8.000000 +fcsr: 0x100 +roundig mode: zero +frsqrt.s :: +input: 0.031250 +output: 5.656854 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.s :: +input: -248562.750000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.s :: +input: -45786.500000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.s :: +input: 456.000000 +output: 0.046829 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.s :: +input: 34.031250 +output: 0.171419 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.s :: +input: 45786.750000 +output: 0.004673 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.s :: +input: 1752065.000000 +output: 0.000755 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.s :: +input: 107.000000 +output: 0.096673 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.s :: +input: -45667.250000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.s :: +input: -7.000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.s :: +input: -347856.500000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.s :: +input: 356047.500000 +output: 0.001675 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.s :: +input: -1.000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.s :: +input: 23.062500 +output: 0.208231 +fcsr: 0x1010100 +roundig mode: +inf +frsqrt.s :: +input: 0.000000 +output: inf +fcsr: 0x8080200 +roundig mode: +inf +frsqrt.s :: +input: 456.250000 +output: 0.046817 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.s :: +input: 3.000000 +output: 0.577351 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.s :: +input: -1.000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.s :: +input: 1384.500000 +output: 0.026876 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.s :: +input: -7.250000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.s :: +input: 1000000000.000000 +output: 0.000032 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.s :: +input: -5786.500000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.s :: +input: 1752.000000 +output: 0.023891 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.s :: +input: 0.015625 +output: 8.000000 +fcsr: 0x200 +roundig mode: +inf +frsqrt.s :: +input: 0.031250 +output: 5.656855 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.s :: +input: -248562.750000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.s :: +input: -45786.500000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.s :: +input: 456.000000 +output: 0.046830 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.s :: +input: 34.031250 +output: 0.171420 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.s :: +input: 45786.750000 +output: 0.004674 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.s :: +input: 1752065.000000 +output: 0.000756 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.s :: +input: 107.000000 +output: 0.096674 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.s :: +input: -45667.250000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.s :: +input: -7.000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.s :: +input: -347856.500000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.s :: +input: 356047.500000 +output: 0.001676 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.s :: +input: -1.000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.s :: +input: 23.062500 +output: 0.208232 +fcsr: 0x1010200 +roundig mode: -inf +frsqrt.s :: +input: 0.000000 +output: inf +fcsr: 0x8080300 +roundig mode: -inf +frsqrt.s :: +input: 456.250000 +output: 0.046816 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.s :: +input: 3.000000 +output: 0.577350 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.s :: +input: -1.000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.s :: +input: 1384.500000 +output: 0.026875 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.s :: +input: -7.250000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.s :: +input: 1000000000.000000 +output: 0.000031 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.s :: +input: -5786.500000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.s :: +input: 1752.000000 +output: 0.023890 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.s :: +input: 0.015625 +output: 8.000000 +fcsr: 0x300 +roundig mode: -inf +frsqrt.s :: +input: 0.031250 +output: 5.656854 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.s :: +input: -248562.750000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.s :: +input: -45786.500000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.s :: +input: 456.000000 +output: 0.046829 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.s :: +input: 34.031250 +output: 0.171419 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.s :: +input: 45786.750000 +output: 0.004673 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.s :: +input: 1752065.000000 +output: 0.000755 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.s :: +input: 107.000000 +output: 0.096673 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.s :: +input: -45667.250000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.s :: +input: -7.000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.s :: +input: -347856.500000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.s :: +input: 356047.500000 +output: 0.001675 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.s :: +input: -1.000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.s :: +input: 23.062500 +output: 0.208231 +fcsr: 0x1010300 +roundig mode: near +frsqrt.d :: +input: 0.000000000000000 +output: inf +fcsr: 0x8080000 +roundig mode: near +frsqrt.d :: +input: 456.250000000000000 +output: 0.046816458878452 +fcsr: 0x1010000 +roundig mode: near +frsqrt.d :: +input: 3.000000000000000 +output: 0.577350269189626 +fcsr: 0x1010000 +roundig mode: near +frsqrt.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.d :: +input: 1384.500000000000000 +output: 0.026875312322339 +fcsr: 0x1010000 +roundig mode: near +frsqrt.d :: +input: -7.250000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.d :: +input: 1000000000.000000000000000 +output: 0.000031622776602 +fcsr: 0x1010000 +roundig mode: near +frsqrt.d :: +input: -5786.500000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.d :: +input: 1752.000000000000000 +output: 0.023890924128375 +fcsr: 0x1010000 +roundig mode: near +frsqrt.d :: +input: 0.015625000000000 +output: 8.000000000000000 +fcsr: 0 +roundig mode: near +frsqrt.d :: +input: 0.031250000000000 +output: 5.656854249492380 +fcsr: 0x1010000 +roundig mode: near +frsqrt.d :: +input: -248562.750000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.d :: +input: -45786.500000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.d :: +input: 456.000000000000000 +output: 0.046829290579085 +fcsr: 0x1010000 +roundig mode: near +frsqrt.d :: +input: 34.031250000000000 +output: 0.171419825742193 +fcsr: 0x1010000 +roundig mode: near +frsqrt.d :: +input: 45786.750000000000000 +output: 0.004673369189974 +fcsr: 0x1010000 +roundig mode: near +frsqrt.d :: +input: 1752065.000000000000000 +output: 0.000755483342261 +fcsr: 0x1010000 +roundig mode: near +frsqrt.d :: +input: 107.000000000000000 +output: 0.096673648904566 +fcsr: 0x1010000 +roundig mode: near +frsqrt.d :: +input: -45667.250000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.d :: +input: -7.000000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.d :: +input: -347856.500000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.d :: +input: 356047.500000000000000 +output: 0.001675892007021 +fcsr: 0x1010000 +roundig mode: near +frsqrt.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +frsqrt.d :: +input: 23.062500000000000 +output: 0.208231682518141 +fcsr: 0x1010000 +roundig mode: zero +frsqrt.d :: +input: 0.000000000000000 +output: inf +fcsr: 0x8080100 +roundig mode: zero +frsqrt.d :: +input: 456.250000000000000 +output: 0.046816458878452 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.d :: +input: 3.000000000000000 +output: 0.577350269189625 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.d :: +input: 1384.500000000000000 +output: 0.026875312322338 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.d :: +input: -7.250000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.d :: +input: 1000000000.000000000000000 +output: 0.000031622776601 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.d :: +input: -5786.500000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.d :: +input: 1752.000000000000000 +output: 0.023890924128374 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.d :: +input: 0.015625000000000 +output: 8.000000000000000 +fcsr: 0x100 +roundig mode: zero +frsqrt.d :: +input: 0.031250000000000 +output: 5.656854249492380 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.d :: +input: -248562.750000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.d :: +input: -45786.500000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.d :: +input: 456.000000000000000 +output: 0.046829290579084 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.d :: +input: 34.031250000000000 +output: 0.171419825742193 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.d :: +input: 45786.750000000000000 +output: 0.004673369189973 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.d :: +input: 1752065.000000000000000 +output: 0.000755483342260 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.d :: +input: 107.000000000000000 +output: 0.096673648904566 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.d :: +input: -45667.250000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.d :: +input: -7.000000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.d :: +input: -347856.500000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.d :: +input: 356047.500000000000000 +output: 0.001675892007021 +fcsr: 0x1010100 +roundig mode: zero +frsqrt.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +frsqrt.d :: +input: 23.062500000000000 +output: 0.208231682518141 +fcsr: 0x1010100 +roundig mode: +inf +frsqrt.d :: +input: 0.000000000000000 +output: inf +fcsr: 0x8080200 +roundig mode: +inf +frsqrt.d :: +input: 456.250000000000000 +output: 0.046816458878453 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.d :: +input: 3.000000000000000 +output: 0.577350269189626 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.d :: +input: 1384.500000000000000 +output: 0.026875312322339 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.d :: +input: -7.250000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.d :: +input: 1000000000.000000000000000 +output: 0.000031622776602 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.d :: +input: -5786.500000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.d :: +input: 1752.000000000000000 +output: 0.023890924128375 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.d :: +input: 0.015625000000000 +output: 8.000000000000000 +fcsr: 0x200 +roundig mode: +inf +frsqrt.d :: +input: 0.031250000000000 +output: 5.656854249492381 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.d :: +input: -248562.750000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.d :: +input: -45786.500000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.d :: +input: 456.000000000000000 +output: 0.046829290579085 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.d :: +input: 34.031250000000000 +output: 0.171419825742194 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.d :: +input: 45786.750000000000000 +output: 0.004673369189974 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.d :: +input: 1752065.000000000000000 +output: 0.000755483342261 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.d :: +input: 107.000000000000000 +output: 0.096673648904567 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.d :: +input: -45667.250000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.d :: +input: -7.000000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.d :: +input: -347856.500000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.d :: +input: 356047.500000000000000 +output: 0.001675892007022 +fcsr: 0x1010200 +roundig mode: +inf +frsqrt.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +frsqrt.d :: +input: 23.062500000000000 +output: 0.208231682518142 +fcsr: 0x1010200 +roundig mode: -inf +frsqrt.d :: +input: 0.000000000000000 +output: inf +fcsr: 0x8080300 +roundig mode: -inf +frsqrt.d :: +input: 456.250000000000000 +output: 0.046816458878452 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.d :: +input: 3.000000000000000 +output: 0.577350269189625 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.d :: +input: 1384.500000000000000 +output: 0.026875312322338 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.d :: +input: -7.250000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.d :: +input: 1000000000.000000000000000 +output: 0.000031622776601 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.d :: +input: -5786.500000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.d :: +input: 1752.000000000000000 +output: 0.023890924128374 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.d :: +input: 0.015625000000000 +output: 8.000000000000000 +fcsr: 0x300 +roundig mode: -inf +frsqrt.d :: +input: 0.031250000000000 +output: 5.656854249492380 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.d :: +input: -248562.750000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.d :: +input: -45786.500000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.d :: +input: 456.000000000000000 +output: 0.046829290579084 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.d :: +input: 34.031250000000000 +output: 0.171419825742193 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.d :: +input: 45786.750000000000000 +output: 0.004673369189973 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.d :: +input: 1752065.000000000000000 +output: 0.000755483342260 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.d :: +input: 107.000000000000000 +output: 0.096673648904566 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.d :: +input: -45667.250000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.d :: +input: -7.000000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.d :: +input: -347856.500000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.d :: +input: 356047.500000000000000 +output: 0.001675892007021 +fcsr: 0x1010300 +roundig mode: -inf +frsqrt.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +frsqrt.d :: +input: 23.062500000000000 +output: 0.208231682518141 +fcsr: 0x1010300 +roundig mode: near +fscaleb.s :: +input: 0.000000 -4578.500000 +output: 0.000000 +fcsr: 0 +roundig mode: near +fscaleb.s :: +input: 456.250000 456.250000 +output: inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.s :: +input: 3.000000 34.031250 +output: inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.s :: +input: -1.000000 4578.750000 +output: -inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.s :: +input: 1384.500000 175.000000 +output: inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.s :: +input: -7.250000 107.000000 +output: -inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.s :: +input: 1000000000.000000 -456.250000 +output: 0.000000 +fcsr: 0x3030000 +roundig mode: near +fscaleb.s :: +input: -5786.500000 -7.250000 +output: -0.000000 +fcsr: 0x3030000 +roundig mode: near +fscaleb.s :: +input: 1752.000000 -3478.500000 +output: 0.000000 +fcsr: 0x3030000 +roundig mode: near +fscaleb.s :: +input: 0.015625 356.500000 +output: inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.s :: +input: 0.031250 -1.000000 +output: 0.000000 +fcsr: 0x3030000 +roundig mode: near +fscaleb.s :: +input: -248562.750000 23.062500 +output: -inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0 +roundig mode: near +fscaleb.s :: +input: 456.000000 456.250000 +output: inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.s :: +input: 34.031250 3.000000 +output: inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.s :: +input: 45786.750000 -1.000000 +output: 0.000000 +fcsr: 0x3030000 +roundig mode: near +fscaleb.s :: +input: 1752065.000000 1384.500000 +output: inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.s :: +input: 107.000000 -7.000000 +output: 0.000000 +fcsr: 0x3030000 +roundig mode: near +fscaleb.s :: +input: -45667.250000 100.000000 +output: -inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.s :: +input: -7.000000 -5786.500000 +output: -0.000000 +fcsr: 0x3030000 +roundig mode: near +fscaleb.s :: +input: -347856.500000 1752.000000 +output: -inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.s :: +input: 356047.500000 0.015625 +output: inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.s :: +input: -1.000000 0.031250 +output: -inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.s :: +input: 23.062500 -248562.750000 +output: 0.000000 +fcsr: 0x3030000 +roundig mode: zero +fscaleb.s :: +input: 0.000000 -4578.500000 +output: 0.000000 +fcsr: 0x100 +roundig mode: zero +fscaleb.s :: +input: 456.250000 456.250000 +output: 340282346638528859811704183484516925440.000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.s :: +input: 3.000000 34.031250 +output: 340282346638528859811704183484516925440.000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.s :: +input: -1.000000 4578.750000 +output: -340282346638528859811704183484516925440.000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.s :: +input: 1384.500000 175.000000 +output: 340282346638528859811704183484516925440.000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.s :: +input: -7.250000 107.000000 +output: -340282346638528859811704183484516925440.000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.s :: +input: 1000000000.000000 -456.250000 +output: 0.000000 +fcsr: 0x3030100 +roundig mode: zero +fscaleb.s :: +input: -5786.500000 -7.250000 +output: -0.000000 +fcsr: 0x3030100 +roundig mode: zero +fscaleb.s :: +input: 1752.000000 -3478.500000 +output: 0.000000 +fcsr: 0x3030100 +roundig mode: zero +fscaleb.s :: +input: 0.015625 356.500000 +output: 340282346638528859811704183484516925440.000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.s :: +input: 0.031250 -1.000000 +output: 0.000000 +fcsr: 0x3030100 +roundig mode: zero +fscaleb.s :: +input: -248562.750000 23.062500 +output: -340282346638528859811704183484516925440.000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0x100 +roundig mode: zero +fscaleb.s :: +input: 456.000000 456.250000 +output: 340282346638528859811704183484516925440.000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.s :: +input: 34.031250 3.000000 +output: 340282346638528859811704183484516925440.000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.s :: +input: 45786.750000 -1.000000 +output: 0.000000 +fcsr: 0x3030100 +roundig mode: zero +fscaleb.s :: +input: 1752065.000000 1384.500000 +output: 340282346638528859811704183484516925440.000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.s :: +input: 107.000000 -7.000000 +output: 0.000000 +fcsr: 0x3030100 +roundig mode: zero +fscaleb.s :: +input: -45667.250000 100.000000 +output: -340282346638528859811704183484516925440.000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.s :: +input: -7.000000 -5786.500000 +output: -0.000000 +fcsr: 0x3030100 +roundig mode: zero +fscaleb.s :: +input: -347856.500000 1752.000000 +output: -340282346638528859811704183484516925440.000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.s :: +input: 356047.500000 0.015625 +output: 340282346638528859811704183484516925440.000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.s :: +input: -1.000000 0.031250 +output: -340282346638528859811704183484516925440.000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.s :: +input: 23.062500 -248562.750000 +output: 0.000000 +fcsr: 0x3030100 +roundig mode: +inf +fscaleb.s :: +input: 0.000000 -4578.500000 +output: 0.000000 +fcsr: 0x200 +roundig mode: +inf +fscaleb.s :: +input: 456.250000 456.250000 +output: inf +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.s :: +input: 3.000000 34.031250 +output: inf +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.s :: +input: -1.000000 4578.750000 +output: -340282346638528859811704183484516925440.000000 +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.s :: +input: 1384.500000 175.000000 +output: inf +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.s :: +input: -7.250000 107.000000 +output: -340282346638528859811704183484516925440.000000 +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.s :: +input: 1000000000.000000 -456.250000 +output: 0.000001 +fcsr: 0x3030200 +roundig mode: +inf +fscaleb.s :: +input: -5786.500000 -7.250000 +output: -0.000000 +fcsr: 0x3030200 +roundig mode: +inf +fscaleb.s :: +input: 1752.000000 -3478.500000 +output: 0.000001 +fcsr: 0x3030200 +roundig mode: +inf +fscaleb.s :: +input: 0.015625 356.500000 +output: inf +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.s :: +input: 0.031250 -1.000000 +output: 0.000001 +fcsr: 0x3030200 +roundig mode: +inf +fscaleb.s :: +input: -248562.750000 23.062500 +output: -340282346638528859811704183484516925440.000000 +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0x200 +roundig mode: +inf +fscaleb.s :: +input: 456.000000 456.250000 +output: inf +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.s :: +input: 34.031250 3.000000 +output: inf +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.s :: +input: 45786.750000 -1.000000 +output: 0.000001 +fcsr: 0x3030200 +roundig mode: +inf +fscaleb.s :: +input: 1752065.000000 1384.500000 +output: inf +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.s :: +input: 107.000000 -7.000000 +output: 0.000001 +fcsr: 0x3030200 +roundig mode: +inf +fscaleb.s :: +input: -45667.250000 100.000000 +output: -340282346638528859811704183484516925440.000000 +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.s :: +input: -7.000000 -5786.500000 +output: -0.000000 +fcsr: 0x3030200 +roundig mode: +inf +fscaleb.s :: +input: -347856.500000 1752.000000 +output: -340282346638528859811704183484516925440.000000 +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.s :: +input: 356047.500000 0.015625 +output: inf +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.s :: +input: -1.000000 0.031250 +output: -340282346638528859811704183484516925440.000000 +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.s :: +input: 23.062500 -248562.750000 +output: 0.000001 +fcsr: 0x3030200 +roundig mode: -inf +fscaleb.s :: +input: 0.000000 -4578.500000 +output: 0.000000 +fcsr: 0x300 +roundig mode: -inf +fscaleb.s :: +input: 456.250000 456.250000 +output: 340282346638528859811704183484516925440.000000 +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.s :: +input: 3.000000 34.031250 +output: 340282346638528859811704183484516925440.000000 +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.s :: +input: -1.000000 4578.750000 +output: -inf +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.s :: +input: 1384.500000 175.000000 +output: 340282346638528859811704183484516925440.000000 +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.s :: +input: -7.250000 107.000000 +output: -inf +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.s :: +input: 1000000000.000000 -456.250000 +output: 0.000000 +fcsr: 0x3030300 +roundig mode: -inf +fscaleb.s :: +input: -5786.500000 -7.250000 +output: -0.000001 +fcsr: 0x3030300 +roundig mode: -inf +fscaleb.s :: +input: 1752.000000 -3478.500000 +output: 0.000000 +fcsr: 0x3030300 +roundig mode: -inf +fscaleb.s :: +input: 0.015625 356.500000 +output: 340282346638528859811704183484516925440.000000 +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.s :: +input: 0.031250 -1.000000 +output: 0.000000 +fcsr: 0x3030300 +roundig mode: -inf +fscaleb.s :: +input: -248562.750000 23.062500 +output: -inf +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.s :: +input: -45786.500000 0.000000 +output: -45786.500000 +fcsr: 0x300 +roundig mode: -inf +fscaleb.s :: +input: 456.000000 456.250000 +output: 340282346638528859811704183484516925440.000000 +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.s :: +input: 34.031250 3.000000 +output: 340282346638528859811704183484516925440.000000 +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.s :: +input: 45786.750000 -1.000000 +output: 0.000000 +fcsr: 0x3030300 +roundig mode: -inf +fscaleb.s :: +input: 1752065.000000 1384.500000 +output: 340282346638528859811704183484516925440.000000 +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.s :: +input: 107.000000 -7.000000 +output: 0.000000 +fcsr: 0x3030300 +roundig mode: -inf +fscaleb.s :: +input: -45667.250000 100.000000 +output: -inf +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.s :: +input: -7.000000 -5786.500000 +output: -0.000001 +fcsr: 0x3030300 +roundig mode: -inf +fscaleb.s :: +input: -347856.500000 1752.000000 +output: -inf +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.s :: +input: 356047.500000 0.015625 +output: 340282346638528859811704183484516925440.000000 +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.s :: +input: -1.000000 0.031250 +output: -inf +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.s :: +input: 23.062500 -248562.750000 +output: 0.000000 +fcsr: 0x3030300 +roundig mode: near +fscaleb.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0.000000000000000 +fcsr: 0 +roundig mode: near +fscaleb.d :: +input: 456.250000000000000 456.250000000000000 +output: inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.d :: +input: 3.000000000000000 34.031250000000000 +output: inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.d :: +input: -1.000000000000000 45786.750000000000000 +output: -inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.d :: +input: -7.250000000000000 107.000000000000000 +output: -inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0.000000000000000 +fcsr: 0x3030000 +roundig mode: near +fscaleb.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -0.000000000000000 +fcsr: 0x3030000 +roundig mode: near +fscaleb.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0.000000000000000 +fcsr: 0x3030000 +roundig mode: near +fscaleb.d :: +input: 0.015625000000000 356047.500000000000000 +output: inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0.000000000000000 +fcsr: 0x3030000 +roundig mode: near +fscaleb.d :: +input: -248562.750000000000000 23.062500000000000 +output: -inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0 +roundig mode: near +fscaleb.d :: +input: 456.000000000000000 456.250000000000000 +output: inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.d :: +input: 34.031250000000000 3.000000000000000 +output: inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0.000000000000000 +fcsr: 0x3030000 +roundig mode: near +fscaleb.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0.000000000000000 +fcsr: 0x3030000 +roundig mode: near +fscaleb.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -0.000000000000000 +fcsr: 0x3030000 +roundig mode: near +fscaleb.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.d :: +input: 356047.500000000000000 0.015625000000000 +output: inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.d :: +input: -1.000000000000000 0.031250000000000 +output: -inf +fcsr: 0x5050000 +roundig mode: near +fscaleb.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0.000000000000000 +fcsr: 0x3030000 +roundig mode: zero +fscaleb.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0.000000000000000 +fcsr: 0x100 +roundig mode: zero +fscaleb.d :: +input: 456.250000000000000 456.250000000000000 +output: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.d :: +input: 3.000000000000000 34.031250000000000 +output: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.d :: +input: -1.000000000000000 45786.750000000000000 +output: -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.d :: +input: -7.250000000000000 107.000000000000000 +output: -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0.000000000000000 +fcsr: 0x3030100 +roundig mode: zero +fscaleb.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -0.000000000000000 +fcsr: 0x3030100 +roundig mode: zero +fscaleb.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0.000000000000000 +fcsr: 0x3030100 +roundig mode: zero +fscaleb.d :: +input: 0.015625000000000 356047.500000000000000 +output: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0.000000000000000 +fcsr: 0x3030100 +roundig mode: zero +fscaleb.d :: +input: -248562.750000000000000 23.062500000000000 +output: -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fscaleb.d :: +input: 456.000000000000000 456.250000000000000 +output: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.d :: +input: 34.031250000000000 3.000000000000000 +output: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0.000000000000000 +fcsr: 0x3030100 +roundig mode: zero +fscaleb.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0.000000000000000 +fcsr: 0x3030100 +roundig mode: zero +fscaleb.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -0.000000000000000 +fcsr: 0x3030100 +roundig mode: zero +fscaleb.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.d :: +input: 356047.500000000000000 0.015625000000000 +output: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.d :: +input: -1.000000000000000 0.031250000000000 +output: -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050100 +roundig mode: zero +fscaleb.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0.000000000000000 +fcsr: 0x3030100 +roundig mode: +inf +fscaleb.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fscaleb.d :: +input: 456.250000000000000 456.250000000000000 +output: inf +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.d :: +input: 3.000000000000000 34.031250000000000 +output: inf +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.d :: +input: -1.000000000000000 45786.750000000000000 +output: -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: inf +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.d :: +input: -7.250000000000000 107.000000000000000 +output: -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0.000000000000001 +fcsr: 0x3030200 +roundig mode: +inf +fscaleb.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -0.000000000000000 +fcsr: 0x3030200 +roundig mode: +inf +fscaleb.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0.000000000000001 +fcsr: 0x3030200 +roundig mode: +inf +fscaleb.d :: +input: 0.015625000000000 356047.500000000000000 +output: inf +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0.000000000000001 +fcsr: 0x3030200 +roundig mode: +inf +fscaleb.d :: +input: -248562.750000000000000 23.062500000000000 +output: -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fscaleb.d :: +input: 456.000000000000000 456.250000000000000 +output: inf +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.d :: +input: 34.031250000000000 3.000000000000000 +output: inf +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0.000000000000001 +fcsr: 0x3030200 +roundig mode: +inf +fscaleb.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: inf +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0.000000000000001 +fcsr: 0x3030200 +roundig mode: +inf +fscaleb.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -0.000000000000000 +fcsr: 0x3030200 +roundig mode: +inf +fscaleb.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.d :: +input: 356047.500000000000000 0.015625000000000 +output: inf +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.d :: +input: -1.000000000000000 0.031250000000000 +output: -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050200 +roundig mode: +inf +fscaleb.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0.000000000000001 +fcsr: 0x3030200 +roundig mode: -inf +fscaleb.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fscaleb.d :: +input: 456.250000000000000 456.250000000000000 +output: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.d :: +input: 3.000000000000000 34.031250000000000 +output: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.d :: +input: -1.000000000000000 45786.750000000000000 +output: -inf +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.d :: +input: -7.250000000000000 107.000000000000000 +output: -inf +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0.000000000000000 +fcsr: 0x3030300 +roundig mode: -inf +fscaleb.d :: +input: -5786.500000000000000 -7.250000000000000 +output: -0.000000000000001 +fcsr: 0x3030300 +roundig mode: -inf +fscaleb.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0.000000000000000 +fcsr: 0x3030300 +roundig mode: -inf +fscaleb.d :: +input: 0.015625000000000 356047.500000000000000 +output: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0.000000000000000 +fcsr: 0x3030300 +roundig mode: -inf +fscaleb.d :: +input: -248562.750000000000000 23.062500000000000 +output: -inf +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.d :: +input: -45786.500000000000000 0.000000000000000 +output: -45786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fscaleb.d :: +input: 456.000000000000000 456.250000000000000 +output: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.d :: +input: 34.031250000000000 3.000000000000000 +output: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0.000000000000000 +fcsr: 0x3030300 +roundig mode: -inf +fscaleb.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0.000000000000000 +fcsr: 0x3030300 +roundig mode: -inf +fscaleb.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: -inf +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.d :: +input: -7.000000000000000 -5786.500000000000000 +output: -0.000000000000001 +fcsr: 0x3030300 +roundig mode: -inf +fscaleb.d :: +input: -347856.500000000000000 1752.000000000000000 +output: -inf +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.d :: +input: 356047.500000000000000 0.015625000000000 +output: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000000000 +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.d :: +input: -1.000000000000000 0.031250000000000 +output: -inf +fcsr: 0x5050300 +roundig mode: -inf +fscaleb.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0.000000000000000 +fcsr: 0x3030300 +roundig mode: near +flogb.s :: +input: 0.000000 +output: -inf +fcsr: 0x8080000 +roundig mode: near +flogb.s :: +input: 456.250000 +output: 8.000000 +fcsr: 0 +roundig mode: near +flogb.s :: +input: 3.000000 +output: 1.000000 +fcsr: 0 +roundig mode: near +flogb.s :: +input: -1.000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.s :: +input: 1384.500000 +output: 10.000000 +fcsr: 0 +roundig mode: near +flogb.s :: +input: -7.250000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.s :: +input: 1000000000.000000 +output: 29.000000 +fcsr: 0 +roundig mode: near +flogb.s :: +input: -5786.500000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.s :: +input: 1752.000000 +output: 10.000000 +fcsr: 0 +roundig mode: near +flogb.s :: +input: 0.015625 +output: -6.000000 +fcsr: 0 +roundig mode: near +flogb.s :: +input: 0.031250 +output: -5.000000 +fcsr: 0 +roundig mode: near +flogb.s :: +input: -248562.750000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.s :: +input: -45786.500000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.s :: +input: 456.000000 +output: 8.000000 +fcsr: 0 +roundig mode: near +flogb.s :: +input: 34.031250 +output: 5.000000 +fcsr: 0 +roundig mode: near +flogb.s :: +input: 45786.750000 +output: 15.000000 +fcsr: 0 +roundig mode: near +flogb.s :: +input: 1752065.000000 +output: 20.000000 +fcsr: 0 +roundig mode: near +flogb.s :: +input: 107.000000 +output: 6.000000 +fcsr: 0 +roundig mode: near +flogb.s :: +input: -45667.250000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.s :: +input: -7.000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.s :: +input: -347856.500000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.s :: +input: 356047.500000 +output: 18.000000 +fcsr: 0 +roundig mode: near +flogb.s :: +input: -1.000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.s :: +input: 23.062500 +output: 4.000000 +fcsr: 0 +roundig mode: zero +flogb.s :: +input: 0.000000 +output: -inf +fcsr: 0x8080100 +roundig mode: zero +flogb.s :: +input: 456.250000 +output: 8.000000 +fcsr: 0x100 +roundig mode: zero +flogb.s :: +input: 3.000000 +output: 1.000000 +fcsr: 0x100 +roundig mode: zero +flogb.s :: +input: -1.000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.s :: +input: 1384.500000 +output: 10.000000 +fcsr: 0x100 +roundig mode: zero +flogb.s :: +input: -7.250000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.s :: +input: 1000000000.000000 +output: 29.000000 +fcsr: 0x100 +roundig mode: zero +flogb.s :: +input: -5786.500000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.s :: +input: 1752.000000 +output: 10.000000 +fcsr: 0x100 +roundig mode: zero +flogb.s :: +input: 0.015625 +output: -6.000000 +fcsr: 0x100 +roundig mode: zero +flogb.s :: +input: 0.031250 +output: -5.000000 +fcsr: 0x100 +roundig mode: zero +flogb.s :: +input: -248562.750000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.s :: +input: -45786.500000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.s :: +input: 456.000000 +output: 8.000000 +fcsr: 0x100 +roundig mode: zero +flogb.s :: +input: 34.031250 +output: 5.000000 +fcsr: 0x100 +roundig mode: zero +flogb.s :: +input: 45786.750000 +output: 15.000000 +fcsr: 0x100 +roundig mode: zero +flogb.s :: +input: 1752065.000000 +output: 20.000000 +fcsr: 0x100 +roundig mode: zero +flogb.s :: +input: 107.000000 +output: 6.000000 +fcsr: 0x100 +roundig mode: zero +flogb.s :: +input: -45667.250000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.s :: +input: -7.000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.s :: +input: -347856.500000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.s :: +input: 356047.500000 +output: 18.000000 +fcsr: 0x100 +roundig mode: zero +flogb.s :: +input: -1.000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.s :: +input: 23.062500 +output: 4.000000 +fcsr: 0x100 +roundig mode: +inf +flogb.s :: +input: 0.000000 +output: -inf +fcsr: 0x8080200 +roundig mode: +inf +flogb.s :: +input: 456.250000 +output: 8.000000 +fcsr: 0x200 +roundig mode: +inf +flogb.s :: +input: 3.000000 +output: 1.000000 +fcsr: 0x200 +roundig mode: +inf +flogb.s :: +input: -1.000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.s :: +input: 1384.500000 +output: 10.000000 +fcsr: 0x200 +roundig mode: +inf +flogb.s :: +input: -7.250000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.s :: +input: 1000000000.000000 +output: 29.000000 +fcsr: 0x200 +roundig mode: +inf +flogb.s :: +input: -5786.500000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.s :: +input: 1752.000000 +output: 10.000000 +fcsr: 0x200 +roundig mode: +inf +flogb.s :: +input: 0.015625 +output: -6.000000 +fcsr: 0x200 +roundig mode: +inf +flogb.s :: +input: 0.031250 +output: -5.000000 +fcsr: 0x200 +roundig mode: +inf +flogb.s :: +input: -248562.750000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.s :: +input: -45786.500000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.s :: +input: 456.000000 +output: 8.000000 +fcsr: 0x200 +roundig mode: +inf +flogb.s :: +input: 34.031250 +output: 5.000000 +fcsr: 0x200 +roundig mode: +inf +flogb.s :: +input: 45786.750000 +output: 15.000000 +fcsr: 0x200 +roundig mode: +inf +flogb.s :: +input: 1752065.000000 +output: 20.000000 +fcsr: 0x200 +roundig mode: +inf +flogb.s :: +input: 107.000000 +output: 6.000000 +fcsr: 0x200 +roundig mode: +inf +flogb.s :: +input: -45667.250000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.s :: +input: -7.000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.s :: +input: -347856.500000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.s :: +input: 356047.500000 +output: 18.000000 +fcsr: 0x200 +roundig mode: +inf +flogb.s :: +input: -1.000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.s :: +input: 23.062500 +output: 4.000000 +fcsr: 0x200 +roundig mode: -inf +flogb.s :: +input: 0.000000 +output: -inf +fcsr: 0x8080300 +roundig mode: -inf +flogb.s :: +input: 456.250000 +output: 8.000000 +fcsr: 0x300 +roundig mode: -inf +flogb.s :: +input: 3.000000 +output: 1.000000 +fcsr: 0x300 +roundig mode: -inf +flogb.s :: +input: -1.000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.s :: +input: 1384.500000 +output: 10.000000 +fcsr: 0x300 +roundig mode: -inf +flogb.s :: +input: -7.250000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.s :: +input: 1000000000.000000 +output: 29.000000 +fcsr: 0x300 +roundig mode: -inf +flogb.s :: +input: -5786.500000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.s :: +input: 1752.000000 +output: 10.000000 +fcsr: 0x300 +roundig mode: -inf +flogb.s :: +input: 0.015625 +output: -6.000000 +fcsr: 0x300 +roundig mode: -inf +flogb.s :: +input: 0.031250 +output: -5.000000 +fcsr: 0x300 +roundig mode: -inf +flogb.s :: +input: -248562.750000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.s :: +input: -45786.500000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.s :: +input: 456.000000 +output: 8.000000 +fcsr: 0x300 +roundig mode: -inf +flogb.s :: +input: 34.031250 +output: 5.000000 +fcsr: 0x300 +roundig mode: -inf +flogb.s :: +input: 45786.750000 +output: 15.000000 +fcsr: 0x300 +roundig mode: -inf +flogb.s :: +input: 1752065.000000 +output: 20.000000 +fcsr: 0x300 +roundig mode: -inf +flogb.s :: +input: 107.000000 +output: 6.000000 +fcsr: 0x300 +roundig mode: -inf +flogb.s :: +input: -45667.250000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.s :: +input: -7.000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.s :: +input: -347856.500000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.s :: +input: 356047.500000 +output: 18.000000 +fcsr: 0x300 +roundig mode: -inf +flogb.s :: +input: -1.000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.s :: +input: 23.062500 +output: 4.000000 +fcsr: 0x300 +roundig mode: near +flogb.d :: +input: 0.000000000000000 +output: -inf +fcsr: 0x8080000 +roundig mode: near +flogb.d :: +input: 456.250000000000000 +output: 8.000000000000000 +fcsr: 0 +roundig mode: near +flogb.d :: +input: 3.000000000000000 +output: 1.000000000000000 +fcsr: 0 +roundig mode: near +flogb.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.d :: +input: 1384.500000000000000 +output: 10.000000000000000 +fcsr: 0 +roundig mode: near +flogb.d :: +input: -7.250000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.d :: +input: 1000000000.000000000000000 +output: 29.000000000000000 +fcsr: 0 +roundig mode: near +flogb.d :: +input: -5786.500000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.d :: +input: 1752.000000000000000 +output: 10.000000000000000 +fcsr: 0 +roundig mode: near +flogb.d :: +input: 0.015625000000000 +output: -6.000000000000000 +fcsr: 0 +roundig mode: near +flogb.d :: +input: 0.031250000000000 +output: -5.000000000000000 +fcsr: 0 +roundig mode: near +flogb.d :: +input: -248562.750000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.d :: +input: -45786.500000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.d :: +input: 456.000000000000000 +output: 8.000000000000000 +fcsr: 0 +roundig mode: near +flogb.d :: +input: 34.031250000000000 +output: 5.000000000000000 +fcsr: 0 +roundig mode: near +flogb.d :: +input: 45786.750000000000000 +output: 15.000000000000000 +fcsr: 0 +roundig mode: near +flogb.d :: +input: 1752065.000000000000000 +output: 20.000000000000000 +fcsr: 0 +roundig mode: near +flogb.d :: +input: 107.000000000000000 +output: 6.000000000000000 +fcsr: 0 +roundig mode: near +flogb.d :: +input: -45667.250000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.d :: +input: -7.000000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.d :: +input: -347856.500000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.d :: +input: 356047.500000000000000 +output: 18.000000000000000 +fcsr: 0 +roundig mode: near +flogb.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100000 +roundig mode: near +flogb.d :: +input: 23.062500000000000 +output: 4.000000000000000 +fcsr: 0 +roundig mode: zero +flogb.d :: +input: 0.000000000000000 +output: -inf +fcsr: 0x8080100 +roundig mode: zero +flogb.d :: +input: 456.250000000000000 +output: 8.000000000000000 +fcsr: 0x100 +roundig mode: zero +flogb.d :: +input: 3.000000000000000 +output: 1.000000000000000 +fcsr: 0x100 +roundig mode: zero +flogb.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.d :: +input: 1384.500000000000000 +output: 10.000000000000000 +fcsr: 0x100 +roundig mode: zero +flogb.d :: +input: -7.250000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.d :: +input: 1000000000.000000000000000 +output: 29.000000000000000 +fcsr: 0x100 +roundig mode: zero +flogb.d :: +input: -5786.500000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.d :: +input: 1752.000000000000000 +output: 10.000000000000000 +fcsr: 0x100 +roundig mode: zero +flogb.d :: +input: 0.015625000000000 +output: -6.000000000000000 +fcsr: 0x100 +roundig mode: zero +flogb.d :: +input: 0.031250000000000 +output: -5.000000000000000 +fcsr: 0x100 +roundig mode: zero +flogb.d :: +input: -248562.750000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.d :: +input: -45786.500000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.d :: +input: 456.000000000000000 +output: 8.000000000000000 +fcsr: 0x100 +roundig mode: zero +flogb.d :: +input: 34.031250000000000 +output: 5.000000000000000 +fcsr: 0x100 +roundig mode: zero +flogb.d :: +input: 45786.750000000000000 +output: 15.000000000000000 +fcsr: 0x100 +roundig mode: zero +flogb.d :: +input: 1752065.000000000000000 +output: 20.000000000000000 +fcsr: 0x100 +roundig mode: zero +flogb.d :: +input: 107.000000000000000 +output: 6.000000000000000 +fcsr: 0x100 +roundig mode: zero +flogb.d :: +input: -45667.250000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.d :: +input: -7.000000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.d :: +input: -347856.500000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.d :: +input: 356047.500000000000000 +output: 18.000000000000000 +fcsr: 0x100 +roundig mode: zero +flogb.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100100 +roundig mode: zero +flogb.d :: +input: 23.062500000000000 +output: 4.000000000000000 +fcsr: 0x100 +roundig mode: +inf +flogb.d :: +input: 0.000000000000000 +output: -inf +fcsr: 0x8080200 +roundig mode: +inf +flogb.d :: +input: 456.250000000000000 +output: 8.000000000000000 +fcsr: 0x200 +roundig mode: +inf +flogb.d :: +input: 3.000000000000000 +output: 1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +flogb.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.d :: +input: 1384.500000000000000 +output: 10.000000000000000 +fcsr: 0x200 +roundig mode: +inf +flogb.d :: +input: -7.250000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.d :: +input: 1000000000.000000000000000 +output: 29.000000000000000 +fcsr: 0x200 +roundig mode: +inf +flogb.d :: +input: -5786.500000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.d :: +input: 1752.000000000000000 +output: 10.000000000000000 +fcsr: 0x200 +roundig mode: +inf +flogb.d :: +input: 0.015625000000000 +output: -6.000000000000000 +fcsr: 0x200 +roundig mode: +inf +flogb.d :: +input: 0.031250000000000 +output: -5.000000000000000 +fcsr: 0x200 +roundig mode: +inf +flogb.d :: +input: -248562.750000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.d :: +input: -45786.500000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.d :: +input: 456.000000000000000 +output: 8.000000000000000 +fcsr: 0x200 +roundig mode: +inf +flogb.d :: +input: 34.031250000000000 +output: 5.000000000000000 +fcsr: 0x200 +roundig mode: +inf +flogb.d :: +input: 45786.750000000000000 +output: 15.000000000000000 +fcsr: 0x200 +roundig mode: +inf +flogb.d :: +input: 1752065.000000000000000 +output: 20.000000000000000 +fcsr: 0x200 +roundig mode: +inf +flogb.d :: +input: 107.000000000000000 +output: 6.000000000000000 +fcsr: 0x200 +roundig mode: +inf +flogb.d :: +input: -45667.250000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.d :: +input: -7.000000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.d :: +input: -347856.500000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.d :: +input: 356047.500000000000000 +output: 18.000000000000000 +fcsr: 0x200 +roundig mode: +inf +flogb.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100200 +roundig mode: +inf +flogb.d :: +input: 23.062500000000000 +output: 4.000000000000000 +fcsr: 0x200 +roundig mode: -inf +flogb.d :: +input: 0.000000000000000 +output: -inf +fcsr: 0x8080300 +roundig mode: -inf +flogb.d :: +input: 456.250000000000000 +output: 8.000000000000000 +fcsr: 0x300 +roundig mode: -inf +flogb.d :: +input: 3.000000000000000 +output: 1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +flogb.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.d :: +input: 1384.500000000000000 +output: 10.000000000000000 +fcsr: 0x300 +roundig mode: -inf +flogb.d :: +input: -7.250000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.d :: +input: 1000000000.000000000000000 +output: 29.000000000000000 +fcsr: 0x300 +roundig mode: -inf +flogb.d :: +input: -5786.500000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.d :: +input: 1752.000000000000000 +output: 10.000000000000000 +fcsr: 0x300 +roundig mode: -inf +flogb.d :: +input: 0.015625000000000 +output: -6.000000000000000 +fcsr: 0x300 +roundig mode: -inf +flogb.d :: +input: 0.031250000000000 +output: -5.000000000000000 +fcsr: 0x300 +roundig mode: -inf +flogb.d :: +input: -248562.750000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.d :: +input: -45786.500000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.d :: +input: 456.000000000000000 +output: 8.000000000000000 +fcsr: 0x300 +roundig mode: -inf +flogb.d :: +input: 34.031250000000000 +output: 5.000000000000000 +fcsr: 0x300 +roundig mode: -inf +flogb.d :: +input: 45786.750000000000000 +output: 15.000000000000000 +fcsr: 0x300 +roundig mode: -inf +flogb.d :: +input: 1752065.000000000000000 +output: 20.000000000000000 +fcsr: 0x300 +roundig mode: -inf +flogb.d :: +input: 107.000000000000000 +output: 6.000000000000000 +fcsr: 0x300 +roundig mode: -inf +flogb.d :: +input: -45667.250000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.d :: +input: -7.000000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.d :: +input: -347856.500000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.d :: +input: 356047.500000000000000 +output: 18.000000000000000 +fcsr: 0x300 +roundig mode: -inf +flogb.d :: +input: -1.000000000000000 +output: nan +fcsr: 0x10100300 +roundig mode: -inf +flogb.d :: +input: 23.062500000000000 +output: 4.000000000000000 +fcsr: 0x300 +roundig mode: near +fcvt.s.d :: +input: 0.000000000000000 +output: 0.000000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: 456.250000000000000 +output: 456.250000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: 3.000000000000000 +output: 3.000000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: -1.000000000000000 +output: -1.000000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: 1384.500000000000000 +output: 1384.500000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: -7.250000000000000 +output: -7.250000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: 1000000000.000000000000000 +output: 1000000000.000000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: -5786.500000000000000 +output: -5786.500000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: 1752.000000000000000 +output: 1752.000000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: 0.015625000000000 +output: 0.015625 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: 0.031250000000000 +output: 0.031250 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: -248562.750000000000000 +output: -248562.750000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: -45786.500000000000000 +output: -45786.500000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: 456.000000000000000 +output: 456.000000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: 34.031250000000000 +output: 34.031250 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: 45786.750000000000000 +output: 45786.750000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: 1752065.000000000000000 +output: 1752065.000000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: 107.000000000000000 +output: 107.000000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: -45667.250000000000000 +output: -45667.250000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: -7.000000000000000 +output: -7.000000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: -347856.500000000000000 +output: -347856.500000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: 356047.500000000000000 +output: 356047.500000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: -1.000000000000000 +output: -1.000000 +fcsr: 0 +roundig mode: near +fcvt.s.d :: +input: 23.062500000000000 +output: 23.062500 +fcsr: 0 +roundig mode: zero +fcvt.s.d :: +input: 0.000000000000000 +output: 0.000000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: 456.250000000000000 +output: 456.250000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: 3.000000000000000 +output: 3.000000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: -1.000000000000000 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: 1384.500000000000000 +output: 1384.500000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: -7.250000000000000 +output: -7.250000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: 1000000000.000000000000000 +output: 1000000000.000000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: -5786.500000000000000 +output: -5786.500000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: 1752.000000000000000 +output: 1752.000000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: 0.015625000000000 +output: 0.015625 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: 0.031250000000000 +output: 0.031250 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: -248562.750000000000000 +output: -248562.750000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: -45786.500000000000000 +output: -45786.500000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: 456.000000000000000 +output: 456.000000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: 34.031250000000000 +output: 34.031250 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: 45786.750000000000000 +output: 45786.750000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: 1752065.000000000000000 +output: 1752065.000000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: 107.000000000000000 +output: 107.000000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: -45667.250000000000000 +output: -45667.250000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: -7.000000000000000 +output: -7.000000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: -347856.500000000000000 +output: -347856.500000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: 356047.500000000000000 +output: 356047.500000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: -1.000000000000000 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +fcvt.s.d :: +input: 23.062500000000000 +output: 23.062500 +fcsr: 0x100 +roundig mode: +inf +fcvt.s.d :: +input: 0.000000000000000 +output: 0.000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: 456.250000000000000 +output: 456.250000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: 3.000000000000000 +output: 3.000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: -1.000000000000000 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: 1384.500000000000000 +output: 1384.500000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: -7.250000000000000 +output: -7.250000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: 1000000000.000000000000000 +output: 1000000000.000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: -5786.500000000000000 +output: -5786.500000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: 1752.000000000000000 +output: 1752.000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: 0.015625000000000 +output: 0.015625 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: 0.031250000000000 +output: 0.031250 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: -248562.750000000000000 +output: -248562.750000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: -45786.500000000000000 +output: -45786.500000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: 456.000000000000000 +output: 456.000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: 34.031250000000000 +output: 34.031250 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: 45786.750000000000000 +output: 45786.750000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: 1752065.000000000000000 +output: 1752065.000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: 107.000000000000000 +output: 107.000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: -45667.250000000000000 +output: -45667.250000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: -7.000000000000000 +output: -7.000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: -347856.500000000000000 +output: -347856.500000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: 356047.500000000000000 +output: 356047.500000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: -1.000000000000000 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.s.d :: +input: 23.062500000000000 +output: 23.062500 +fcsr: 0x200 +roundig mode: -inf +fcvt.s.d :: +input: 0.000000000000000 +output: 0.000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: 456.250000000000000 +output: 456.250000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: 3.000000000000000 +output: 3.000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: -1.000000000000000 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: 1384.500000000000000 +output: 1384.500000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: -7.250000000000000 +output: -7.250000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: 1000000000.000000000000000 +output: 1000000000.000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: -5786.500000000000000 +output: -5786.500000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: 1752.000000000000000 +output: 1752.000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: 0.015625000000000 +output: 0.015625 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: 0.031250000000000 +output: 0.031250 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: -248562.750000000000000 +output: -248562.750000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: -45786.500000000000000 +output: -45786.500000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: 456.000000000000000 +output: 456.000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: 34.031250000000000 +output: 34.031250 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: 45786.750000000000000 +output: 45786.750000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: 1752065.000000000000000 +output: 1752065.000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: 107.000000000000000 +output: 107.000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: -45667.250000000000000 +output: -45667.250000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: -7.000000000000000 +output: -7.000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: -347856.500000000000000 +output: -347856.500000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: 356047.500000000000000 +output: 356047.500000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: -1.000000000000000 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.s.d :: +input: 23.062500000000000 +output: 23.062500 +fcsr: 0x300 +roundig mode: near +fcvt.d.s :: +input: 0.000000 +output: 0.000000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: 456.250000 +output: 456.250000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: 3.000000 +output: 3.000000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: -1.000000 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: 1384.500000 +output: 1384.500000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: -7.250000 +output: -7.250000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: 1000000000.000000 +output: 1000000000.000000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: -5786.500000 +output: -5786.500000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: 1752.000000 +output: 1752.000000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: 0.015625 +output: 0.015625000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: 0.031250 +output: 0.031250000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: -248562.750000 +output: -248562.750000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: -45786.500000 +output: -45786.500000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: 456.000000 +output: 456.000000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: 34.031250 +output: 34.031250000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: 45786.750000 +output: 45786.750000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: 1752065.000000 +output: 1752065.000000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: 107.000000 +output: 107.000000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: -45667.250000 +output: -45667.250000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: -7.000000 +output: -7.000000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: -347856.500000 +output: -347856.500000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: 356047.500000 +output: 356047.500000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: -1.000000 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +fcvt.d.s :: +input: 23.062500 +output: 23.062500000000000 +fcsr: 0 +roundig mode: zero +fcvt.d.s :: +input: 0.000000 +output: 0.000000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: 456.250000 +output: 456.250000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: 3.000000 +output: 3.000000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: -1.000000 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: 1384.500000 +output: 1384.500000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: -7.250000 +output: -7.250000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: 1000000000.000000 +output: 1000000000.000000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: -5786.500000 +output: -5786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: 1752.000000 +output: 1752.000000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: 0.015625 +output: 0.015625000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: 0.031250 +output: 0.031250000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: -248562.750000 +output: -248562.750000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: -45786.500000 +output: -45786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: 456.000000 +output: 456.000000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: 34.031250 +output: 34.031250000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: 45786.750000 +output: 45786.750000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: 1752065.000000 +output: 1752065.000000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: 107.000000 +output: 107.000000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: -45667.250000 +output: -45667.250000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: -7.000000 +output: -7.000000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: -347856.500000 +output: -347856.500000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: 356047.500000 +output: 356047.500000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: -1.000000 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fcvt.d.s :: +input: 23.062500 +output: 23.062500000000000 +fcsr: 0x100 +roundig mode: +inf +fcvt.d.s :: +input: 0.000000 +output: 0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: 456.250000 +output: 456.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: 3.000000 +output: 3.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: -1.000000 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: 1384.500000 +output: 1384.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: -7.250000 +output: -7.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: 1000000000.000000 +output: 1000000000.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: -5786.500000 +output: -5786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: 1752.000000 +output: 1752.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: 0.015625 +output: 0.015625000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: 0.031250 +output: 0.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: -248562.750000 +output: -248562.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: -45786.500000 +output: -45786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: 456.000000 +output: 456.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: 34.031250 +output: 34.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: 45786.750000 +output: 45786.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: 1752065.000000 +output: 1752065.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: 107.000000 +output: 107.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: -45667.250000 +output: -45667.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: -7.000000 +output: -7.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: -347856.500000 +output: -347856.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: 356047.500000 +output: 356047.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: -1.000000 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fcvt.d.s :: +input: 23.062500 +output: 23.062500000000000 +fcsr: 0x200 +roundig mode: -inf +fcvt.d.s :: +input: 0.000000 +output: 0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: 456.250000 +output: 456.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: 3.000000 +output: 3.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: -1.000000 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: 1384.500000 +output: 1384.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: -7.250000 +output: -7.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: 1000000000.000000 +output: 1000000000.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: -5786.500000 +output: -5786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: 1752.000000 +output: 1752.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: 0.015625 +output: 0.015625000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: 0.031250 +output: 0.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: -248562.750000 +output: -248562.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: -45786.500000 +output: -45786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: 456.000000 +output: 456.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: 34.031250 +output: 34.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: 45786.750000 +output: 45786.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: 1752065.000000 +output: 1752065.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: 107.000000 +output: 107.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: -45667.250000 +output: -45667.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: -7.000000 +output: -7.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: -347856.500000 +output: -347856.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: 356047.500000 +output: 356047.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: -1.000000 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fcvt.d.s :: +input: 23.062500 +output: 23.062500000000000 +fcsr: 0x300 +roundig mode: near +ftintrm.w.s :: +input: 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +ftintrm.w.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.s :: +input: 3.000000 +output: 3 +fcsr: 0 +roundig mode: near +ftintrm.w.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrm.w.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.s :: +input: -7.250000 +output: -8 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftintrm.w.s :: +input: -5786.500000 +output: -5787 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftintrm.w.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.s :: +input: -45786.500000 +output: -45787 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.s :: +input: 456.000000 +output: 456 +fcsr: 0 +roundig mode: near +ftintrm.w.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftintrm.w.s :: +input: 107.000000 +output: 107 +fcsr: 0 +roundig mode: near +ftintrm.w.s :: +input: -45667.250000 +output: -45668 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.s :: +input: -7.000000 +output: -7 +fcsr: 0 +roundig mode: near +ftintrm.w.s :: +input: -347856.500000 +output: -347857 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrm.w.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010000 +roundig mode: zero +ftintrm.w.s :: +input: 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.s :: +input: 3.000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.s :: +input: -7.250000 +output: -8 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.s :: +input: -5786.500000 +output: -5787 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.s :: +input: -45786.500000 +output: -45787 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.s :: +input: 456.000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.s :: +input: 107.000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.s :: +input: -45667.250000 +output: -45668 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.s :: +input: -7.000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.s :: +input: -347856.500000 +output: -347857 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010100 +roundig mode: +inf +ftintrm.w.s :: +input: 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.s :: +input: 3.000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.s :: +input: -7.250000 +output: -8 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.s :: +input: -5786.500000 +output: -5787 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.s :: +input: -45786.500000 +output: -45787 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.s :: +input: 456.000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.s :: +input: 107.000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.s :: +input: -45667.250000 +output: -45668 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.s :: +input: -7.000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.s :: +input: -347856.500000 +output: -347857 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010200 +roundig mode: -inf +ftintrm.w.s :: +input: 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.s :: +input: 3.000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.s :: +input: -7.250000 +output: -8 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.s :: +input: -5786.500000 +output: -5787 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.s :: +input: -45786.500000 +output: -45787 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.s :: +input: 456.000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.s :: +input: 107.000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.s :: +input: -45667.250000 +output: -45668 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.s :: +input: -7.000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.s :: +input: -347856.500000 +output: -347857 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010300 +roundig mode: near +ftintrm.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +ftintrm.w.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0 +roundig mode: near +ftintrm.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrm.w.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.d :: +input: -7.250000000000000 +output: -8 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftintrm.w.d :: +input: -5786.500000000000000 +output: -5787 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftintrm.w.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.d :: +input: -45786.500000000000000 +output: -45787 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0 +roundig mode: near +ftintrm.w.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftintrm.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0 +roundig mode: near +ftintrm.w.d :: +input: -45667.250000000000000 +output: -45668 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0 +roundig mode: near +ftintrm.w.d :: +input: -347856.500000000000000 +output: -347857 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010000 +roundig mode: near +ftintrm.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrm.w.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010000 +roundig mode: zero +ftintrm.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.d :: +input: -7.250000000000000 +output: -8 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.d :: +input: -5786.500000000000000 +output: -5787 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.d :: +input: -45786.500000000000000 +output: -45787 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.d :: +input: -45667.250000000000000 +output: -45668 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.d :: +input: -347856.500000000000000 +output: -347857 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrm.w.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010100 +roundig mode: +inf +ftintrm.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.d :: +input: -7.250000000000000 +output: -8 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.d :: +input: -5786.500000000000000 +output: -5787 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.d :: +input: -45786.500000000000000 +output: -45787 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.d :: +input: -45667.250000000000000 +output: -45668 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.d :: +input: -347856.500000000000000 +output: -347857 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrm.w.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010200 +roundig mode: -inf +ftintrm.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.d :: +input: -7.250000000000000 +output: -8 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.d :: +input: -5786.500000000000000 +output: -5787 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.d :: +input: -45786.500000000000000 +output: -45787 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.d :: +input: -45667.250000000000000 +output: -45668 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.d :: +input: -347856.500000000000000 +output: -347857 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrm.w.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010300 +roundig mode: near +ftintrm.l.s :: +input: 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +ftintrm.l.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.s :: +input: 3.000000 +output: 3 +fcsr: 0 +roundig mode: near +ftintrm.l.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrm.l.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.s :: +input: -7.250000 +output: -8 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftintrm.l.s :: +input: -5786.500000 +output: -5787 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftintrm.l.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.s :: +input: -45786.500000 +output: -45787 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.s :: +input: 456.000000 +output: 456 +fcsr: 0 +roundig mode: near +ftintrm.l.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftintrm.l.s :: +input: 107.000000 +output: 107 +fcsr: 0 +roundig mode: near +ftintrm.l.s :: +input: -45667.250000 +output: -45668 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.s :: +input: -7.000000 +output: -7 +fcsr: 0 +roundig mode: near +ftintrm.l.s :: +input: -347856.500000 +output: -347857 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrm.l.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010000 +roundig mode: zero +ftintrm.l.s :: +input: 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.s :: +input: 3.000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.s :: +input: -7.250000 +output: -8 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.s :: +input: -5786.500000 +output: -5787 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.s :: +input: -45786.500000 +output: -45787 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.s :: +input: 456.000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.s :: +input: 107.000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.s :: +input: -45667.250000 +output: -45668 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.s :: +input: -7.000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.s :: +input: -347856.500000 +output: -347857 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010100 +roundig mode: +inf +ftintrm.l.s :: +input: 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.s :: +input: 3.000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.s :: +input: -7.250000 +output: -8 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.s :: +input: -5786.500000 +output: -5787 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.s :: +input: -45786.500000 +output: -45787 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.s :: +input: 456.000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.s :: +input: 107.000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.s :: +input: -45667.250000 +output: -45668 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.s :: +input: -7.000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.s :: +input: -347856.500000 +output: -347857 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010200 +roundig mode: -inf +ftintrm.l.s :: +input: 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.s :: +input: 3.000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.s :: +input: -7.250000 +output: -8 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.s :: +input: -5786.500000 +output: -5787 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.s :: +input: -45786.500000 +output: -45787 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.s :: +input: 456.000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.s :: +input: 107.000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.s :: +input: -45667.250000 +output: -45668 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.s :: +input: -7.000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.s :: +input: -347856.500000 +output: -347857 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010300 +roundig mode: near +ftintrm.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +ftintrm.l.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0 +roundig mode: near +ftintrm.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrm.l.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.d :: +input: -7.250000000000000 +output: -8 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftintrm.l.d :: +input: -5786.500000000000000 +output: -5787 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftintrm.l.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.d :: +input: -45786.500000000000000 +output: -45787 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0 +roundig mode: near +ftintrm.l.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftintrm.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0 +roundig mode: near +ftintrm.l.d :: +input: -45667.250000000000000 +output: -45668 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0 +roundig mode: near +ftintrm.l.d :: +input: -347856.500000000000000 +output: -347857 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010000 +roundig mode: near +ftintrm.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrm.l.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010000 +roundig mode: zero +ftintrm.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.d :: +input: -7.250000000000000 +output: -8 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.d :: +input: -5786.500000000000000 +output: -5787 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.d :: +input: -45786.500000000000000 +output: -45787 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.d :: +input: -45667.250000000000000 +output: -45668 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.d :: +input: -347856.500000000000000 +output: -347857 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010100 +roundig mode: zero +ftintrm.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrm.l.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010100 +roundig mode: +inf +ftintrm.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.d :: +input: -7.250000000000000 +output: -8 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.d :: +input: -5786.500000000000000 +output: -5787 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.d :: +input: -45786.500000000000000 +output: -45787 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.d :: +input: -45667.250000000000000 +output: -45668 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.d :: +input: -347856.500000000000000 +output: -347857 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010200 +roundig mode: +inf +ftintrm.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrm.l.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010200 +roundig mode: -inf +ftintrm.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.d :: +input: -7.250000000000000 +output: -8 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.d :: +input: -5786.500000000000000 +output: -5787 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.d :: +input: -45786.500000000000000 +output: -45787 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.d :: +input: -45667.250000000000000 +output: -45668 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.d :: +input: -347856.500000000000000 +output: -347857 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010300 +roundig mode: -inf +ftintrm.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrm.l.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010300 +roundig mode: near +ftintrp.w.s :: +input: 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +ftintrp.w.s :: +input: 456.250000 +output: 457 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.s :: +input: 3.000000 +output: 3 +fcsr: 0 +roundig mode: near +ftintrp.w.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrp.w.s :: +input: 1384.500000 +output: 1385 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftintrp.w.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftintrp.w.s :: +input: 0.015625 +output: 1 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.s :: +input: 0.031250 +output: 1 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.s :: +input: 456.000000 +output: 456 +fcsr: 0 +roundig mode: near +ftintrp.w.s :: +input: 34.031250 +output: 35 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftintrp.w.s :: +input: 107.000000 +output: 107 +fcsr: 0 +roundig mode: near +ftintrp.w.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.s :: +input: -7.000000 +output: -7 +fcsr: 0 +roundig mode: near +ftintrp.w.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrp.w.s :: +input: 23.062500 +output: 24 +fcsr: 0x1010000 +roundig mode: zero +ftintrp.w.s :: +input: 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.s :: +input: 456.250000 +output: 457 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.s :: +input: 3.000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.s :: +input: 1384.500000 +output: 1385 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.s :: +input: 0.015625 +output: 1 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.s :: +input: 0.031250 +output: 1 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.s :: +input: 456.000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.s :: +input: 34.031250 +output: 35 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.s :: +input: 107.000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.s :: +input: -7.000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.s :: +input: 23.062500 +output: 24 +fcsr: 0x1010100 +roundig mode: +inf +ftintrp.w.s :: +input: 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.s :: +input: 456.250000 +output: 457 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.s :: +input: 3.000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.s :: +input: 1384.500000 +output: 1385 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.s :: +input: 0.015625 +output: 1 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.s :: +input: 0.031250 +output: 1 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.s :: +input: 456.000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.s :: +input: 34.031250 +output: 35 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.s :: +input: 107.000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.s :: +input: -7.000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.s :: +input: 23.062500 +output: 24 +fcsr: 0x1010200 +roundig mode: -inf +ftintrp.w.s :: +input: 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.s :: +input: 456.250000 +output: 457 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.s :: +input: 3.000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.s :: +input: 1384.500000 +output: 1385 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.s :: +input: 0.015625 +output: 1 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.s :: +input: 0.031250 +output: 1 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.s :: +input: 456.000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.s :: +input: 34.031250 +output: 35 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.s :: +input: 107.000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.s :: +input: -7.000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.s :: +input: 23.062500 +output: 24 +fcsr: 0x1010300 +roundig mode: near +ftintrp.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +ftintrp.w.d :: +input: 456.250000000000000 +output: 457 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0 +roundig mode: near +ftintrp.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrp.w.d :: +input: 1384.500000000000000 +output: 1385 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftintrp.w.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftintrp.w.d :: +input: 0.015625000000000 +output: 1 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.d :: +input: 0.031250000000000 +output: 1 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0 +roundig mode: near +ftintrp.w.d :: +input: 34.031250000000000 +output: 35 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftintrp.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0 +roundig mode: near +ftintrp.w.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0 +roundig mode: near +ftintrp.w.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010000 +roundig mode: near +ftintrp.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrp.w.d :: +input: 23.062500000000000 +output: 24 +fcsr: 0x1010000 +roundig mode: zero +ftintrp.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.d :: +input: 456.250000000000000 +output: 457 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.d :: +input: 1384.500000000000000 +output: 1385 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.d :: +input: 0.015625000000000 +output: 1 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.d :: +input: 0.031250000000000 +output: 1 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.d :: +input: 34.031250000000000 +output: 35 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrp.w.d :: +input: 23.062500000000000 +output: 24 +fcsr: 0x1010100 +roundig mode: +inf +ftintrp.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.d :: +input: 456.250000000000000 +output: 457 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.d :: +input: 1384.500000000000000 +output: 1385 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.d :: +input: 0.015625000000000 +output: 1 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.d :: +input: 0.031250000000000 +output: 1 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.d :: +input: 34.031250000000000 +output: 35 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrp.w.d :: +input: 23.062500000000000 +output: 24 +fcsr: 0x1010200 +roundig mode: -inf +ftintrp.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.d :: +input: 456.250000000000000 +output: 457 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.d :: +input: 1384.500000000000000 +output: 1385 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.d :: +input: 0.015625000000000 +output: 1 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.d :: +input: 0.031250000000000 +output: 1 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.d :: +input: 34.031250000000000 +output: 35 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrp.w.d :: +input: 23.062500000000000 +output: 24 +fcsr: 0x1010300 +roundig mode: near +ftintrp.l.s :: +input: 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +ftintrp.l.s :: +input: 456.250000 +output: 457 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.s :: +input: 3.000000 +output: 3 +fcsr: 0 +roundig mode: near +ftintrp.l.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrp.l.s :: +input: 1384.500000 +output: 1385 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftintrp.l.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftintrp.l.s :: +input: 0.015625 +output: 1 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.s :: +input: 0.031250 +output: 1 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.s :: +input: 456.000000 +output: 456 +fcsr: 0 +roundig mode: near +ftintrp.l.s :: +input: 34.031250 +output: 35 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftintrp.l.s :: +input: 107.000000 +output: 107 +fcsr: 0 +roundig mode: near +ftintrp.l.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.s :: +input: -7.000000 +output: -7 +fcsr: 0 +roundig mode: near +ftintrp.l.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrp.l.s :: +input: 23.062500 +output: 24 +fcsr: 0x1010000 +roundig mode: zero +ftintrp.l.s :: +input: 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.s :: +input: 456.250000 +output: 457 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.s :: +input: 3.000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.s :: +input: 1384.500000 +output: 1385 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.s :: +input: 0.015625 +output: 1 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.s :: +input: 0.031250 +output: 1 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.s :: +input: 456.000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.s :: +input: 34.031250 +output: 35 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.s :: +input: 107.000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.s :: +input: -7.000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.s :: +input: 23.062500 +output: 24 +fcsr: 0x1010100 +roundig mode: +inf +ftintrp.l.s :: +input: 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.s :: +input: 456.250000 +output: 457 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.s :: +input: 3.000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.s :: +input: 1384.500000 +output: 1385 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.s :: +input: 0.015625 +output: 1 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.s :: +input: 0.031250 +output: 1 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.s :: +input: 456.000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.s :: +input: 34.031250 +output: 35 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.s :: +input: 107.000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.s :: +input: -7.000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.s :: +input: 23.062500 +output: 24 +fcsr: 0x1010200 +roundig mode: -inf +ftintrp.l.s :: +input: 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.s :: +input: 456.250000 +output: 457 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.s :: +input: 3.000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.s :: +input: 1384.500000 +output: 1385 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.s :: +input: 0.015625 +output: 1 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.s :: +input: 0.031250 +output: 1 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.s :: +input: 456.000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.s :: +input: 34.031250 +output: 35 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.s :: +input: 107.000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.s :: +input: -7.000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.s :: +input: 23.062500 +output: 24 +fcsr: 0x1010300 +roundig mode: near +ftintrp.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +ftintrp.l.d :: +input: 456.250000000000000 +output: 457 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0 +roundig mode: near +ftintrp.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrp.l.d :: +input: 1384.500000000000000 +output: 1385 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftintrp.l.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftintrp.l.d :: +input: 0.015625000000000 +output: 1 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.d :: +input: 0.031250000000000 +output: 1 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0 +roundig mode: near +ftintrp.l.d :: +input: 34.031250000000000 +output: 35 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftintrp.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0 +roundig mode: near +ftintrp.l.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0 +roundig mode: near +ftintrp.l.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010000 +roundig mode: near +ftintrp.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrp.l.d :: +input: 23.062500000000000 +output: 24 +fcsr: 0x1010000 +roundig mode: zero +ftintrp.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.d :: +input: 456.250000000000000 +output: 457 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.d :: +input: 1384.500000000000000 +output: 1385 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.d :: +input: 0.015625000000000 +output: 1 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.d :: +input: 0.031250000000000 +output: 1 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.d :: +input: 34.031250000000000 +output: 35 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010100 +roundig mode: zero +ftintrp.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrp.l.d :: +input: 23.062500000000000 +output: 24 +fcsr: 0x1010100 +roundig mode: +inf +ftintrp.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.d :: +input: 456.250000000000000 +output: 457 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.d :: +input: 1384.500000000000000 +output: 1385 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.d :: +input: 0.015625000000000 +output: 1 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.d :: +input: 0.031250000000000 +output: 1 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.d :: +input: 34.031250000000000 +output: 35 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010200 +roundig mode: +inf +ftintrp.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrp.l.d :: +input: 23.062500000000000 +output: 24 +fcsr: 0x1010200 +roundig mode: -inf +ftintrp.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.d :: +input: 456.250000000000000 +output: 457 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.d :: +input: 1384.500000000000000 +output: 1385 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.d :: +input: 0.015625000000000 +output: 1 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.d :: +input: 0.031250000000000 +output: 1 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.d :: +input: 34.031250000000000 +output: 35 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010300 +roundig mode: -inf +ftintrp.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrp.l.d :: +input: 23.062500000000000 +output: 24 +fcsr: 0x1010300 +roundig mode: near +ftintrz.w.s :: +input: 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +ftintrz.w.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.s :: +input: 3.000000 +output: 3 +fcsr: 0 +roundig mode: near +ftintrz.w.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrz.w.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftintrz.w.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftintrz.w.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.s :: +input: 456.000000 +output: 456 +fcsr: 0 +roundig mode: near +ftintrz.w.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftintrz.w.s :: +input: 107.000000 +output: 107 +fcsr: 0 +roundig mode: near +ftintrz.w.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.s :: +input: -7.000000 +output: -7 +fcsr: 0 +roundig mode: near +ftintrz.w.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrz.w.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010000 +roundig mode: zero +ftintrz.w.s :: +input: 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.s :: +input: 3.000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.s :: +input: 456.000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.s :: +input: 107.000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.s :: +input: -7.000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010100 +roundig mode: +inf +ftintrz.w.s :: +input: 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.s :: +input: 3.000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.s :: +input: 456.000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.s :: +input: 107.000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.s :: +input: -7.000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010200 +roundig mode: -inf +ftintrz.w.s :: +input: 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.s :: +input: 3.000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.s :: +input: 456.000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.s :: +input: 107.000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.s :: +input: -7.000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010300 +roundig mode: near +ftintrz.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +ftintrz.w.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0 +roundig mode: near +ftintrz.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrz.w.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftintrz.w.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftintrz.w.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0 +roundig mode: near +ftintrz.w.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftintrz.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0 +roundig mode: near +ftintrz.w.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0 +roundig mode: near +ftintrz.w.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010000 +roundig mode: near +ftintrz.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrz.w.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010000 +roundig mode: zero +ftintrz.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrz.w.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010100 +roundig mode: +inf +ftintrz.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrz.w.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010200 +roundig mode: -inf +ftintrz.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrz.w.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010300 +roundig mode: near +ftintrz.l.s :: +input: 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +ftintrz.l.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.s :: +input: 3.000000 +output: 3 +fcsr: 0 +roundig mode: near +ftintrz.l.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrz.l.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftintrz.l.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftintrz.l.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.s :: +input: 456.000000 +output: 456 +fcsr: 0 +roundig mode: near +ftintrz.l.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftintrz.l.s :: +input: 107.000000 +output: 107 +fcsr: 0 +roundig mode: near +ftintrz.l.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.s :: +input: -7.000000 +output: -7 +fcsr: 0 +roundig mode: near +ftintrz.l.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrz.l.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010000 +roundig mode: zero +ftintrz.l.s :: +input: 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.s :: +input: 3.000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.s :: +input: 456.000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.s :: +input: 107.000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.s :: +input: -7.000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010100 +roundig mode: +inf +ftintrz.l.s :: +input: 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.s :: +input: 3.000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.s :: +input: 456.000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.s :: +input: 107.000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.s :: +input: -7.000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010200 +roundig mode: -inf +ftintrz.l.s :: +input: 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.s :: +input: 3.000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.s :: +input: 456.000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.s :: +input: 107.000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.s :: +input: -7.000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010300 +roundig mode: near +ftintrz.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +ftintrz.l.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0 +roundig mode: near +ftintrz.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrz.l.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftintrz.l.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftintrz.l.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0 +roundig mode: near +ftintrz.l.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftintrz.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0 +roundig mode: near +ftintrz.l.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0 +roundig mode: near +ftintrz.l.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010000 +roundig mode: near +ftintrz.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrz.l.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010000 +roundig mode: zero +ftintrz.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010100 +roundig mode: zero +ftintrz.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrz.l.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010100 +roundig mode: +inf +ftintrz.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010200 +roundig mode: +inf +ftintrz.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrz.l.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010200 +roundig mode: -inf +ftintrz.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010300 +roundig mode: -inf +ftintrz.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrz.l.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010300 +roundig mode: near +ftintrne.w.s :: +input: 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +ftintrne.w.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.s :: +input: 3.000000 +output: 3 +fcsr: 0 +roundig mode: near +ftintrne.w.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrne.w.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftintrne.w.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftintrne.w.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.s :: +input: 456.000000 +output: 456 +fcsr: 0 +roundig mode: near +ftintrne.w.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftintrne.w.s :: +input: 107.000000 +output: 107 +fcsr: 0 +roundig mode: near +ftintrne.w.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.s :: +input: -7.000000 +output: -7 +fcsr: 0 +roundig mode: near +ftintrne.w.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrne.w.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010000 +roundig mode: zero +ftintrne.w.s :: +input: 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.s :: +input: 3.000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.s :: +input: 456.000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.s :: +input: 107.000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.s :: +input: -7.000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010100 +roundig mode: +inf +ftintrne.w.s :: +input: 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.s :: +input: 3.000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.s :: +input: 456.000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.s :: +input: 107.000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.s :: +input: -7.000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010200 +roundig mode: -inf +ftintrne.w.s :: +input: 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.s :: +input: 3.000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.s :: +input: 456.000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.s :: +input: 107.000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.s :: +input: -7.000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010300 +roundig mode: near +ftintrne.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +ftintrne.w.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0 +roundig mode: near +ftintrne.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrne.w.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftintrne.w.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftintrne.w.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0 +roundig mode: near +ftintrne.w.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftintrne.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0 +roundig mode: near +ftintrne.w.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0 +roundig mode: near +ftintrne.w.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010000 +roundig mode: near +ftintrne.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrne.w.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010000 +roundig mode: zero +ftintrne.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrne.w.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010100 +roundig mode: +inf +ftintrne.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrne.w.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010200 +roundig mode: -inf +ftintrne.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrne.w.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010300 +roundig mode: near +ftintrne.l.s :: +input: 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +ftintrne.l.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.s :: +input: 3.000000 +output: 3 +fcsr: 0 +roundig mode: near +ftintrne.l.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrne.l.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftintrne.l.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftintrne.l.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.s :: +input: 456.000000 +output: 456 +fcsr: 0 +roundig mode: near +ftintrne.l.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftintrne.l.s :: +input: 107.000000 +output: 107 +fcsr: 0 +roundig mode: near +ftintrne.l.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.s :: +input: -7.000000 +output: -7 +fcsr: 0 +roundig mode: near +ftintrne.l.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrne.l.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010000 +roundig mode: zero +ftintrne.l.s :: +input: 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.s :: +input: 3.000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.s :: +input: 456.000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.s :: +input: 107.000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.s :: +input: -7.000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010100 +roundig mode: +inf +ftintrne.l.s :: +input: 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.s :: +input: 3.000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.s :: +input: 456.000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.s :: +input: 107.000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.s :: +input: -7.000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010200 +roundig mode: -inf +ftintrne.l.s :: +input: 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.s :: +input: 3.000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.s :: +input: 456.000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.s :: +input: 107.000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.s :: +input: -7.000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010300 +roundig mode: near +ftintrne.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +ftintrne.l.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0 +roundig mode: near +ftintrne.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrne.l.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftintrne.l.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftintrne.l.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0 +roundig mode: near +ftintrne.l.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftintrne.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0 +roundig mode: near +ftintrne.l.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0 +roundig mode: near +ftintrne.l.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010000 +roundig mode: near +ftintrne.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftintrne.l.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010000 +roundig mode: zero +ftintrne.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010100 +roundig mode: zero +ftintrne.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftintrne.l.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010100 +roundig mode: +inf +ftintrne.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010200 +roundig mode: +inf +ftintrne.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftintrne.l.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010200 +roundig mode: -inf +ftintrne.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010300 +roundig mode: -inf +ftintrne.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftintrne.l.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010300 +roundig mode: near +ftint.w.s :: +input: 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +ftint.w.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010000 +roundig mode: near +ftint.w.s :: +input: 3.000000 +output: 3 +fcsr: 0 +roundig mode: near +ftint.w.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftint.w.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010000 +roundig mode: near +ftint.w.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010000 +roundig mode: near +ftint.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftint.w.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010000 +roundig mode: near +ftint.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftint.w.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftint.w.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftint.w.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010000 +roundig mode: near +ftint.w.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010000 +roundig mode: near +ftint.w.s :: +input: 456.000000 +output: 456 +fcsr: 0 +roundig mode: near +ftint.w.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010000 +roundig mode: near +ftint.w.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010000 +roundig mode: near +ftint.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftint.w.s :: +input: 107.000000 +output: 107 +fcsr: 0 +roundig mode: near +ftint.w.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010000 +roundig mode: near +ftint.w.s :: +input: -7.000000 +output: -7 +fcsr: 0 +roundig mode: near +ftint.w.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010000 +roundig mode: near +ftint.w.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010000 +roundig mode: near +ftint.w.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftint.w.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010000 +roundig mode: zero +ftint.w.s :: +input: 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftint.w.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.s :: +input: 3.000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftint.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftint.w.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftint.w.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftint.w.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.s :: +input: 456.000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftint.w.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftint.w.s :: +input: 107.000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftint.w.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.s :: +input: -7.000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftint.w.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftint.w.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010100 +roundig mode: +inf +ftint.w.s :: +input: 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftint.w.s :: +input: 456.250000 +output: 457 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.s :: +input: 3.000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftint.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftint.w.s :: +input: 1384.500000 +output: 1385 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftint.w.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftint.w.s :: +input: 0.015625 +output: 1 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.s :: +input: 0.031250 +output: 1 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.s :: +input: 456.000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftint.w.s :: +input: 34.031250 +output: 35 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftint.w.s :: +input: 107.000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftint.w.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.s :: +input: -7.000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftint.w.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftint.w.s :: +input: 23.062500 +output: 24 +fcsr: 0x1010200 +roundig mode: -inf +ftint.w.s :: +input: 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftint.w.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.s :: +input: 3.000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftint.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftint.w.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.s :: +input: -7.250000 +output: -8 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftint.w.s :: +input: -5786.500000 +output: -5787 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftint.w.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.s :: +input: -45786.500000 +output: -45787 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.s :: +input: 456.000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftint.w.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftint.w.s :: +input: 107.000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftint.w.s :: +input: -45667.250000 +output: -45668 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.s :: +input: -7.000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftint.w.s :: +input: -347856.500000 +output: -347857 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftint.w.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010300 +roundig mode: near +ftint.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +ftint.w.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010000 +roundig mode: near +ftint.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0 +roundig mode: near +ftint.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftint.w.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010000 +roundig mode: near +ftint.w.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010000 +roundig mode: near +ftint.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftint.w.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010000 +roundig mode: near +ftint.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftint.w.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftint.w.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftint.w.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010000 +roundig mode: near +ftint.w.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010000 +roundig mode: near +ftint.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0 +roundig mode: near +ftint.w.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010000 +roundig mode: near +ftint.w.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010000 +roundig mode: near +ftint.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftint.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0 +roundig mode: near +ftint.w.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010000 +roundig mode: near +ftint.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0 +roundig mode: near +ftint.w.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010000 +roundig mode: near +ftint.w.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010000 +roundig mode: near +ftint.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftint.w.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010000 +roundig mode: zero +ftint.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftint.w.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftint.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftint.w.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftint.w.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftint.w.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftint.w.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftint.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftint.w.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftint.w.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010100 +roundig mode: zero +ftint.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftint.w.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010100 +roundig mode: +inf +ftint.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftint.w.d :: +input: 456.250000000000000 +output: 457 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftint.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftint.w.d :: +input: 1384.500000000000000 +output: 1385 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftint.w.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftint.w.d :: +input: 0.015625000000000 +output: 1 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.d :: +input: 0.031250000000000 +output: 1 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftint.w.d :: +input: 34.031250000000000 +output: 35 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftint.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftint.w.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftint.w.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010200 +roundig mode: +inf +ftint.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftint.w.d :: +input: 23.062500000000000 +output: 24 +fcsr: 0x1010200 +roundig mode: -inf +ftint.w.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftint.w.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftint.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftint.w.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.d :: +input: -7.250000000000000 +output: -8 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftint.w.d :: +input: -5786.500000000000000 +output: -5787 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftint.w.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.d :: +input: -45786.500000000000000 +output: -45787 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftint.w.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftint.w.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftint.w.d :: +input: -45667.250000000000000 +output: -45668 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftint.w.d :: +input: -347856.500000000000000 +output: -347857 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010300 +roundig mode: -inf +ftint.w.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftint.w.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010300 +roundig mode: near +ftint.l.s :: +input: 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +ftint.l.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010000 +roundig mode: near +ftint.l.s :: +input: 3.000000 +output: 3 +fcsr: 0 +roundig mode: near +ftint.l.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftint.l.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010000 +roundig mode: near +ftint.l.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010000 +roundig mode: near +ftint.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftint.l.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010000 +roundig mode: near +ftint.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftint.l.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftint.l.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftint.l.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010000 +roundig mode: near +ftint.l.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010000 +roundig mode: near +ftint.l.s :: +input: 456.000000 +output: 456 +fcsr: 0 +roundig mode: near +ftint.l.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010000 +roundig mode: near +ftint.l.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010000 +roundig mode: near +ftint.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftint.l.s :: +input: 107.000000 +output: 107 +fcsr: 0 +roundig mode: near +ftint.l.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010000 +roundig mode: near +ftint.l.s :: +input: -7.000000 +output: -7 +fcsr: 0 +roundig mode: near +ftint.l.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010000 +roundig mode: near +ftint.l.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010000 +roundig mode: near +ftint.l.s :: +input: -1.000000 +output: -1 +fcsr: 0 +roundig mode: near +ftint.l.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010000 +roundig mode: zero +ftint.l.s :: +input: 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftint.l.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.s :: +input: 3.000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftint.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftint.l.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftint.l.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftint.l.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.s :: +input: 456.000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftint.l.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftint.l.s :: +input: 107.000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftint.l.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.s :: +input: -7.000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftint.l.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftint.l.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010100 +roundig mode: +inf +ftint.l.s :: +input: 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftint.l.s :: +input: 456.250000 +output: 457 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.s :: +input: 3.000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftint.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftint.l.s :: +input: 1384.500000 +output: 1385 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.s :: +input: -7.250000 +output: -7 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftint.l.s :: +input: -5786.500000 +output: -5786 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftint.l.s :: +input: 0.015625 +output: 1 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.s :: +input: 0.031250 +output: 1 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.s :: +input: -248562.750000 +output: -248562 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.s :: +input: -45786.500000 +output: -45786 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.s :: +input: 456.000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftint.l.s :: +input: 34.031250 +output: 35 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.s :: +input: 45786.750000 +output: 45787 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftint.l.s :: +input: 107.000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftint.l.s :: +input: -45667.250000 +output: -45667 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.s :: +input: -7.000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftint.l.s :: +input: -347856.500000 +output: -347856 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.s :: +input: 356047.500000 +output: 356048 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftint.l.s :: +input: 23.062500 +output: 24 +fcsr: 0x1010200 +roundig mode: -inf +ftint.l.s :: +input: 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftint.l.s :: +input: 456.250000 +output: 456 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.s :: +input: 3.000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftint.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftint.l.s :: +input: 1384.500000 +output: 1384 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.s :: +input: -7.250000 +output: -8 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.s :: +input: 1000000000.000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftint.l.s :: +input: -5786.500000 +output: -5787 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.s :: +input: 1752.000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftint.l.s :: +input: 0.015625 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.s :: +input: 0.031250 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.s :: +input: -248562.750000 +output: -248563 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.s :: +input: -45786.500000 +output: -45787 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.s :: +input: 456.000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftint.l.s :: +input: 34.031250 +output: 34 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.s :: +input: 45786.750000 +output: 45786 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.s :: +input: 1752065.000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftint.l.s :: +input: 107.000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftint.l.s :: +input: -45667.250000 +output: -45668 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.s :: +input: -7.000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftint.l.s :: +input: -347856.500000 +output: -347857 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.s :: +input: 356047.500000 +output: 356047 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.s :: +input: -1.000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftint.l.s :: +input: 23.062500 +output: 23 +fcsr: 0x1010300 +roundig mode: near +ftint.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +ftint.l.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010000 +roundig mode: near +ftint.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0 +roundig mode: near +ftint.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftint.l.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010000 +roundig mode: near +ftint.l.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010000 +roundig mode: near +ftint.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0 +roundig mode: near +ftint.l.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010000 +roundig mode: near +ftint.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0 +roundig mode: near +ftint.l.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftint.l.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010000 +roundig mode: near +ftint.l.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010000 +roundig mode: near +ftint.l.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010000 +roundig mode: near +ftint.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0 +roundig mode: near +ftint.l.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010000 +roundig mode: near +ftint.l.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010000 +roundig mode: near +ftint.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0 +roundig mode: near +ftint.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0 +roundig mode: near +ftint.l.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010000 +roundig mode: near +ftint.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0 +roundig mode: near +ftint.l.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010000 +roundig mode: near +ftint.l.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010000 +roundig mode: near +ftint.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0 +roundig mode: near +ftint.l.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010000 +roundig mode: zero +ftint.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +ftint.l.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x100 +roundig mode: zero +ftint.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftint.l.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x100 +roundig mode: zero +ftint.l.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x100 +roundig mode: zero +ftint.l.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x100 +roundig mode: zero +ftint.l.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x100 +roundig mode: zero +ftint.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x100 +roundig mode: zero +ftint.l.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x100 +roundig mode: zero +ftint.l.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010100 +roundig mode: zero +ftint.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x100 +roundig mode: zero +ftint.l.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010100 +roundig mode: +inf +ftint.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +ftint.l.d :: +input: 456.250000000000000 +output: 457 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x200 +roundig mode: +inf +ftint.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftint.l.d :: +input: 1384.500000000000000 +output: 1385 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.d :: +input: -7.250000000000000 +output: -7 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x200 +roundig mode: +inf +ftint.l.d :: +input: -5786.500000000000000 +output: -5786 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x200 +roundig mode: +inf +ftint.l.d :: +input: 0.015625000000000 +output: 1 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.d :: +input: 0.031250000000000 +output: 1 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.d :: +input: -248562.750000000000000 +output: -248562 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.d :: +input: -45786.500000000000000 +output: -45786 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x200 +roundig mode: +inf +ftint.l.d :: +input: 34.031250000000000 +output: 35 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.d :: +input: 45786.750000000000000 +output: 45787 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x200 +roundig mode: +inf +ftint.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x200 +roundig mode: +inf +ftint.l.d :: +input: -45667.250000000000000 +output: -45667 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x200 +roundig mode: +inf +ftint.l.d :: +input: -347856.500000000000000 +output: -347856 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.d :: +input: 356047.500000000000000 +output: 356048 +fcsr: 0x1010200 +roundig mode: +inf +ftint.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x200 +roundig mode: +inf +ftint.l.d :: +input: 23.062500000000000 +output: 24 +fcsr: 0x1010200 +roundig mode: -inf +ftint.l.d :: +input: 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +ftint.l.d :: +input: 456.250000000000000 +output: 456 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.d :: +input: 3.000000000000000 +output: 3 +fcsr: 0x300 +roundig mode: -inf +ftint.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftint.l.d :: +input: 1384.500000000000000 +output: 1384 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.d :: +input: -7.250000000000000 +output: -8 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.d :: +input: 1000000000.000000000000000 +output: 1000000000 +fcsr: 0x300 +roundig mode: -inf +ftint.l.d :: +input: -5786.500000000000000 +output: -5787 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.d :: +input: 1752.000000000000000 +output: 1752 +fcsr: 0x300 +roundig mode: -inf +ftint.l.d :: +input: 0.015625000000000 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.d :: +input: 0.031250000000000 +output: 0 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.d :: +input: -248562.750000000000000 +output: -248563 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.d :: +input: -45786.500000000000000 +output: -45787 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.d :: +input: 456.000000000000000 +output: 456 +fcsr: 0x300 +roundig mode: -inf +ftint.l.d :: +input: 34.031250000000000 +output: 34 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.d :: +input: 45786.750000000000000 +output: 45786 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.d :: +input: 1752065.000000000000000 +output: 1752065 +fcsr: 0x300 +roundig mode: -inf +ftint.l.d :: +input: 107.000000000000000 +output: 107 +fcsr: 0x300 +roundig mode: -inf +ftint.l.d :: +input: -45667.250000000000000 +output: -45668 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.d :: +input: -7.000000000000000 +output: -7 +fcsr: 0x300 +roundig mode: -inf +ftint.l.d :: +input: -347856.500000000000000 +output: -347857 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.d :: +input: 356047.500000000000000 +output: 356047 +fcsr: 0x1010300 +roundig mode: -inf +ftint.l.d :: +input: -1.000000000000000 +output: -1 +fcsr: 0x300 +roundig mode: -inf +ftint.l.d :: +input: 23.062500000000000 +output: 23 +fcsr: 0x1010300 +roundig mode: near +ffint.s.w :: +input: 0 +output: 0.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: 456 +output: 456.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: 3 +output: 3.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: -1 +output: -1.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: -1 +output: -1.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: 356 +output: 356.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: 1000000000 +output: 1000000000.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: -5786 +output: -5786.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: 1752 +output: 1752.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: 24575 +output: 24575.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: 10 +output: 10.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: -248562 +output: -248562.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: -45786 +output: -45786.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: 456 +output: 456.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: 34 +output: 34.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: 45786 +output: 45786.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: 1752065 +output: 1752065.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: 107 +output: 107.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: -45667 +output: -45667.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: -7 +output: -7.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: -347856 +output: -347856.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: -2147483648 +output: -2147483648.000000 +fcsr: 0 +roundig mode: near +ffint.s.w :: +input: 268435455 +output: 268435456.000000 +fcsr: 0x1010000 +roundig mode: near +ffint.s.w :: +input: 23 +output: 23.000000 +fcsr: 0 +roundig mode: zero +ffint.s.w :: +input: 0 +output: 0.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: 456 +output: 456.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: 3 +output: 3.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: -1 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: -1 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: 356 +output: 356.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: 1000000000 +output: 1000000000.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: -5786 +output: -5786.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: 1752 +output: 1752.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: 24575 +output: 24575.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: 10 +output: 10.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: -248562 +output: -248562.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: -45786 +output: -45786.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: 456 +output: 456.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: 34 +output: 34.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: 45786 +output: 45786.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: 1752065 +output: 1752065.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: 107 +output: 107.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: -45667 +output: -45667.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: -7 +output: -7.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: -347856 +output: -347856.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: -2147483648 +output: -2147483648.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.w :: +input: 268435455 +output: 268435440.000000 +fcsr: 0x1010100 +roundig mode: zero +ffint.s.w :: +input: 23 +output: 23.000000 +fcsr: 0x100 +roundig mode: +inf +ffint.s.w :: +input: 0 +output: 0.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: 456 +output: 456.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: 3 +output: 3.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: -1 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: -1 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: 356 +output: 356.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: 1000000000 +output: 1000000000.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: -5786 +output: -5786.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: 1752 +output: 1752.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: 24575 +output: 24575.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: 10 +output: 10.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: -248562 +output: -248562.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: -45786 +output: -45786.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: 456 +output: 456.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: 34 +output: 34.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: 45786 +output: 45786.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: 1752065 +output: 1752065.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: 107 +output: 107.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: -45667 +output: -45667.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: -7 +output: -7.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: -347856 +output: -347856.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: -2147483648 +output: -2147483648.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.w :: +input: 268435455 +output: 268435456.000000 +fcsr: 0x1010200 +roundig mode: +inf +ffint.s.w :: +input: 23 +output: 23.000000 +fcsr: 0x200 +roundig mode: -inf +ffint.s.w :: +input: 0 +output: 0.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: 456 +output: 456.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: 3 +output: 3.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: -1 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: -1 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: 356 +output: 356.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: 1000000000 +output: 1000000000.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: -5786 +output: -5786.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: 1752 +output: 1752.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: 24575 +output: 24575.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: 10 +output: 10.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: -248562 +output: -248562.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: -45786 +output: -45786.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: 456 +output: 456.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: 34 +output: 34.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: 45786 +output: 45786.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: 1752065 +output: 1752065.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: 107 +output: 107.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: -45667 +output: -45667.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: -7 +output: -7.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: -347856 +output: -347856.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: -2147483648 +output: -2147483648.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.w :: +input: 268435455 +output: 268435440.000000 +fcsr: 0x1010300 +roundig mode: -inf +ffint.s.w :: +input: 23 +output: 23.000000 +fcsr: 0x300 +roundig mode: near +ffint.s.l :: +input: 18 +output: 18.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: 25 +output: 25.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: 3 +output: 3.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: -1 +output: -1.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: 4294967295 +output: 4294967296.000000 +fcsr: 0x1010000 +roundig mode: near +ffint.s.l :: +input: 356 +output: 356.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: 1000000 +output: 1000000.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: -5786 +output: -5786.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: -1 +output: -1.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: 24575 +output: 24575.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: 10 +output: 10.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: -125458 +output: -125458.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: -486 +output: -486.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: 456 +output: 456.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: 34 +output: 34.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: 45786 +output: 45786.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: 0 +output: 0.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: 1700000 +output: 1700000.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: -45667 +output: -45667.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: -7 +output: -7.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: -347856 +output: -347856.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: 2147483648 +output: 2147483648.000000 +fcsr: 0 +roundig mode: near +ffint.s.l :: +input: 268435455 +output: 268435456.000000 +fcsr: 0x1010000 +roundig mode: near +ffint.s.l :: +input: 23 +output: 23.000000 +fcsr: 0 +roundig mode: zero +ffint.s.l :: +input: 18 +output: 18.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: 25 +output: 25.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: 3 +output: 3.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: -1 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: 4294967295 +output: 4294967040.000000 +fcsr: 0x1010100 +roundig mode: zero +ffint.s.l :: +input: 356 +output: 356.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: 1000000 +output: 1000000.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: -5786 +output: -5786.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: -1 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: 24575 +output: 24575.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: 10 +output: 10.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: -125458 +output: -125458.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: -486 +output: -486.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: 456 +output: 456.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: 34 +output: 34.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: 45786 +output: 45786.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: 0 +output: 0.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: 1700000 +output: 1700000.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: -45667 +output: -45667.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: -7 +output: -7.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: -347856 +output: -347856.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: 2147483648 +output: 2147483648.000000 +fcsr: 0x100 +roundig mode: zero +ffint.s.l :: +input: 268435455 +output: 268435440.000000 +fcsr: 0x1010100 +roundig mode: zero +ffint.s.l :: +input: 23 +output: 23.000000 +fcsr: 0x100 +roundig mode: +inf +ffint.s.l :: +input: 18 +output: 18.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: 25 +output: 25.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: 3 +output: 3.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: -1 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: 4294967295 +output: 4294967296.000000 +fcsr: 0x1010200 +roundig mode: +inf +ffint.s.l :: +input: 356 +output: 356.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: 1000000 +output: 1000000.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: -5786 +output: -5786.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: -1 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: 24575 +output: 24575.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: 10 +output: 10.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: -125458 +output: -125458.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: -486 +output: -486.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: 456 +output: 456.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: 34 +output: 34.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: 45786 +output: 45786.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: 0 +output: 0.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: 1700000 +output: 1700000.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: -45667 +output: -45667.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: -7 +output: -7.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: -347856 +output: -347856.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: 2147483648 +output: 2147483648.000000 +fcsr: 0x200 +roundig mode: +inf +ffint.s.l :: +input: 268435455 +output: 268435456.000000 +fcsr: 0x1010200 +roundig mode: +inf +ffint.s.l :: +input: 23 +output: 23.000000 +fcsr: 0x200 +roundig mode: -inf +ffint.s.l :: +input: 18 +output: 18.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: 25 +output: 25.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: 3 +output: 3.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: -1 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: 4294967295 +output: 4294967040.000000 +fcsr: 0x1010300 +roundig mode: -inf +ffint.s.l :: +input: 356 +output: 356.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: 1000000 +output: 1000000.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: -5786 +output: -5786.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: -1 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: 24575 +output: 24575.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: 10 +output: 10.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: -125458 +output: -125458.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: -486 +output: -486.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: 456 +output: 456.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: 34 +output: 34.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: 45786 +output: 45786.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: 0 +output: 0.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: 1700000 +output: 1700000.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: -45667 +output: -45667.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: -7 +output: -7.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: -347856 +output: -347856.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: 2147483648 +output: 2147483648.000000 +fcsr: 0x300 +roundig mode: -inf +ffint.s.l :: +input: 268435455 +output: 268435440.000000 +fcsr: 0x1010300 +roundig mode: -inf +ffint.s.l :: +input: 23 +output: 23.000000 +fcsr: 0x300 +roundig mode: near +ffint.d.w :: +input: 0 +output: 0.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: 456 +output: 456.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: 3 +output: 3.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: -1 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: -1 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: 356 +output: 356.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: 1000000000 +output: 1000000000.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: -5786 +output: -5786.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: 1752 +output: 1752.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: 24575 +output: 24575.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: 10 +output: 10.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: -248562 +output: -248562.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: -45786 +output: -45786.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: 456 +output: 456.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: 34 +output: 34.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: 45786 +output: 45786.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: 1752065 +output: 1752065.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: 107 +output: 107.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: -45667 +output: -45667.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: -7 +output: -7.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: -347856 +output: -347856.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: -2147483648 +output: -2147483648.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: 268435455 +output: 268435455.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.w :: +input: 23 +output: 23.000000000000000 +fcsr: 0 +roundig mode: zero +ffint.d.w :: +input: 0 +output: 0.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: 456 +output: 456.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: 3 +output: 3.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: -1 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: -1 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: 356 +output: 356.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: 1000000000 +output: 1000000000.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: -5786 +output: -5786.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: 1752 +output: 1752.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: 24575 +output: 24575.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: 10 +output: 10.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: -248562 +output: -248562.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: -45786 +output: -45786.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: 456 +output: 456.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: 34 +output: 34.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: 45786 +output: 45786.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: 1752065 +output: 1752065.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: 107 +output: 107.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: -45667 +output: -45667.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: -7 +output: -7.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: -347856 +output: -347856.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: -2147483648 +output: -2147483648.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: 268435455 +output: 268435455.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.w :: +input: 23 +output: 23.000000000000000 +fcsr: 0x100 +roundig mode: +inf +ffint.d.w :: +input: 0 +output: 0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: 456 +output: 456.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: 3 +output: 3.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: -1 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: -1 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: 356 +output: 356.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: 1000000000 +output: 1000000000.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: -5786 +output: -5786.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: 1752 +output: 1752.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: 24575 +output: 24575.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: 10 +output: 10.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: -248562 +output: -248562.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: -45786 +output: -45786.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: 456 +output: 456.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: 34 +output: 34.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: 45786 +output: 45786.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: 1752065 +output: 1752065.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: 107 +output: 107.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: -45667 +output: -45667.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: -7 +output: -7.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: -347856 +output: -347856.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: -2147483648 +output: -2147483648.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: 268435455 +output: 268435455.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.w :: +input: 23 +output: 23.000000000000000 +fcsr: 0x200 +roundig mode: -inf +ffint.d.w :: +input: 0 +output: 0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: 456 +output: 456.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: 3 +output: 3.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: -1 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: -1 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: 356 +output: 356.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: 1000000000 +output: 1000000000.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: -5786 +output: -5786.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: 1752 +output: 1752.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: 24575 +output: 24575.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: 10 +output: 10.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: -248562 +output: -248562.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: -45786 +output: -45786.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: 456 +output: 456.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: 34 +output: 34.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: 45786 +output: 45786.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: 1752065 +output: 1752065.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: 107 +output: 107.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: -45667 +output: -45667.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: -7 +output: -7.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: -347856 +output: -347856.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: -2147483648 +output: -2147483648.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: 268435455 +output: 268435455.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.w :: +input: 23 +output: 23.000000000000000 +fcsr: 0x300 +roundig mode: near +ffint.d.l :: +input: 18 +output: 18.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: 25 +output: 25.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: 3 +output: 3.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: -1 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: 4294967295 +output: 4294967295.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: 356 +output: 356.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: 1000000 +output: 1000000.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: -5786 +output: -5786.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: -1 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: 24575 +output: 24575.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: 10 +output: 10.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: -125458 +output: -125458.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: -486 +output: -486.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: 456 +output: 456.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: 34 +output: 34.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: 45786 +output: 45786.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: 0 +output: 0.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: 1700000 +output: 1700000.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: -45667 +output: -45667.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: -7 +output: -7.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: -347856 +output: -347856.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: 2147483648 +output: 2147483648.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: 268435455 +output: 268435455.000000000000000 +fcsr: 0 +roundig mode: near +ffint.d.l :: +input: 23 +output: 23.000000000000000 +fcsr: 0 +roundig mode: zero +ffint.d.l :: +input: 18 +output: 18.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: 25 +output: 25.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: 3 +output: 3.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: -1 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: 4294967295 +output: 4294967295.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: 356 +output: 356.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: 1000000 +output: 1000000.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: -5786 +output: -5786.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: -1 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: 24575 +output: 24575.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: 10 +output: 10.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: -125458 +output: -125458.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: -486 +output: -486.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: 456 +output: 456.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: 34 +output: 34.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: 45786 +output: 45786.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: 0 +output: 0.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: 1700000 +output: 1700000.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: -45667 +output: -45667.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: -7 +output: -7.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: -347856 +output: -347856.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: 2147483648 +output: 2147483648.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: 268435455 +output: 268435455.000000000000000 +fcsr: 0x100 +roundig mode: zero +ffint.d.l :: +input: 23 +output: 23.000000000000000 +fcsr: 0x100 +roundig mode: +inf +ffint.d.l :: +input: 18 +output: 18.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: 25 +output: 25.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: 3 +output: 3.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: -1 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: 4294967295 +output: 4294967295.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: 356 +output: 356.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: 1000000 +output: 1000000.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: -5786 +output: -5786.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: -1 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: 24575 +output: 24575.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: 10 +output: 10.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: -125458 +output: -125458.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: -486 +output: -486.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: 456 +output: 456.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: 34 +output: 34.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: 45786 +output: 45786.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: 0 +output: 0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: 1700000 +output: 1700000.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: -45667 +output: -45667.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: -7 +output: -7.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: -347856 +output: -347856.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: 2147483648 +output: 2147483648.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: 268435455 +output: 268435455.000000000000000 +fcsr: 0x200 +roundig mode: +inf +ffint.d.l :: +input: 23 +output: 23.000000000000000 +fcsr: 0x200 +roundig mode: -inf +ffint.d.l :: +input: 18 +output: 18.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: 25 +output: 25.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: 3 +output: 3.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: -1 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: 4294967295 +output: 4294967295.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: 356 +output: 356.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: 1000000 +output: 1000000.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: -5786 +output: -5786.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: -1 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: 24575 +output: 24575.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: 10 +output: 10.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: -125458 +output: -125458.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: -486 +output: -486.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: 456 +output: 456.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: 34 +output: 34.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: 45786 +output: 45786.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: 0 +output: 0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: 1700000 +output: 1700000.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: -45667 +output: -45667.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: -7 +output: -7.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: -347856 +output: -347856.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: 2147483648 +output: 2147483648.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: 268435455 +output: 268435455.000000000000000 +fcsr: 0x300 +roundig mode: -inf +ffint.d.l :: +input: 23 +output: 23.000000000000000 +fcsr: 0x300 +roundig mode: near +frint.s :: +input: 0.000000 +output: 0.000000 +fcsr: 0 +roundig mode: near +frint.s :: +input: 456.250000 +output: 456.000000 +fcsr: 0x1010000 +roundig mode: near +frint.s :: +input: 3.000000 +output: 3.000000 +fcsr: 0 +roundig mode: near +frint.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0 +roundig mode: near +frint.s :: +input: 1384.500000 +output: 1384.000000 +fcsr: 0x1010000 +roundig mode: near +frint.s :: +input: -7.250000 +output: -7.000000 +fcsr: 0x1010000 +roundig mode: near +frint.s :: +input: 1000000000.000000 +output: 1000000000.000000 +fcsr: 0 +roundig mode: near +frint.s :: +input: -5786.500000 +output: -5786.000000 +fcsr: 0x1010000 +roundig mode: near +frint.s :: +input: 1752.000000 +output: 1752.000000 +fcsr: 0 +roundig mode: near +frint.s :: +input: 0.015625 +output: 0.000000 +fcsr: 0x1010000 +roundig mode: near +frint.s :: +input: 0.031250 +output: 0.000000 +fcsr: 0x1010000 +roundig mode: near +frint.s :: +input: -248562.750000 +output: -248563.000000 +fcsr: 0x1010000 +roundig mode: near +frint.s :: +input: -45786.500000 +output: -45786.000000 +fcsr: 0x1010000 +roundig mode: near +frint.s :: +input: 456.000000 +output: 456.000000 +fcsr: 0 +roundig mode: near +frint.s :: +input: 34.031250 +output: 34.000000 +fcsr: 0x1010000 +roundig mode: near +frint.s :: +input: 45786.750000 +output: 45787.000000 +fcsr: 0x1010000 +roundig mode: near +frint.s :: +input: 1752065.000000 +output: 1752065.000000 +fcsr: 0 +roundig mode: near +frint.s :: +input: 107.000000 +output: 107.000000 +fcsr: 0 +roundig mode: near +frint.s :: +input: -45667.250000 +output: -45667.000000 +fcsr: 0x1010000 +roundig mode: near +frint.s :: +input: -7.000000 +output: -7.000000 +fcsr: 0 +roundig mode: near +frint.s :: +input: -347856.500000 +output: -347856.000000 +fcsr: 0x1010000 +roundig mode: near +frint.s :: +input: 356047.500000 +output: 356048.000000 +fcsr: 0x1010000 +roundig mode: near +frint.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0 +roundig mode: near +frint.s :: +input: 23.062500 +output: 23.000000 +fcsr: 0x1010000 +roundig mode: zero +frint.s :: +input: 0.000000 +output: 0.000000 +fcsr: 0x100 +roundig mode: zero +frint.s :: +input: 456.250000 +output: 456.000000 +fcsr: 0x1010100 +roundig mode: zero +frint.s :: +input: 3.000000 +output: 3.000000 +fcsr: 0x100 +roundig mode: zero +frint.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +frint.s :: +input: 1384.500000 +output: 1384.000000 +fcsr: 0x1010100 +roundig mode: zero +frint.s :: +input: -7.250000 +output: -7.000000 +fcsr: 0x1010100 +roundig mode: zero +frint.s :: +input: 1000000000.000000 +output: 1000000000.000000 +fcsr: 0x100 +roundig mode: zero +frint.s :: +input: -5786.500000 +output: -5786.000000 +fcsr: 0x1010100 +roundig mode: zero +frint.s :: +input: 1752.000000 +output: 1752.000000 +fcsr: 0x100 +roundig mode: zero +frint.s :: +input: 0.015625 +output: 0.000000 +fcsr: 0x1010100 +roundig mode: zero +frint.s :: +input: 0.031250 +output: 0.000000 +fcsr: 0x1010100 +roundig mode: zero +frint.s :: +input: -248562.750000 +output: -248562.000000 +fcsr: 0x1010100 +roundig mode: zero +frint.s :: +input: -45786.500000 +output: -45786.000000 +fcsr: 0x1010100 +roundig mode: zero +frint.s :: +input: 456.000000 +output: 456.000000 +fcsr: 0x100 +roundig mode: zero +frint.s :: +input: 34.031250 +output: 34.000000 +fcsr: 0x1010100 +roundig mode: zero +frint.s :: +input: 45786.750000 +output: 45786.000000 +fcsr: 0x1010100 +roundig mode: zero +frint.s :: +input: 1752065.000000 +output: 1752065.000000 +fcsr: 0x100 +roundig mode: zero +frint.s :: +input: 107.000000 +output: 107.000000 +fcsr: 0x100 +roundig mode: zero +frint.s :: +input: -45667.250000 +output: -45667.000000 +fcsr: 0x1010100 +roundig mode: zero +frint.s :: +input: -7.000000 +output: -7.000000 +fcsr: 0x100 +roundig mode: zero +frint.s :: +input: -347856.500000 +output: -347856.000000 +fcsr: 0x1010100 +roundig mode: zero +frint.s :: +input: 356047.500000 +output: 356047.000000 +fcsr: 0x1010100 +roundig mode: zero +frint.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +frint.s :: +input: 23.062500 +output: 23.000000 +fcsr: 0x1010100 +roundig mode: +inf +frint.s :: +input: 0.000000 +output: 0.000000 +fcsr: 0x200 +roundig mode: +inf +frint.s :: +input: 456.250000 +output: 457.000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.s :: +input: 3.000000 +output: 3.000000 +fcsr: 0x200 +roundig mode: +inf +frint.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +frint.s :: +input: 1384.500000 +output: 1385.000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.s :: +input: -7.250000 +output: -7.000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.s :: +input: 1000000000.000000 +output: 1000000000.000000 +fcsr: 0x200 +roundig mode: +inf +frint.s :: +input: -5786.500000 +output: -5786.000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.s :: +input: 1752.000000 +output: 1752.000000 +fcsr: 0x200 +roundig mode: +inf +frint.s :: +input: 0.015625 +output: 1.000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.s :: +input: 0.031250 +output: 1.000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.s :: +input: -248562.750000 +output: -248562.000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.s :: +input: -45786.500000 +output: -45786.000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.s :: +input: 456.000000 +output: 456.000000 +fcsr: 0x200 +roundig mode: +inf +frint.s :: +input: 34.031250 +output: 35.000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.s :: +input: 45786.750000 +output: 45787.000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.s :: +input: 1752065.000000 +output: 1752065.000000 +fcsr: 0x200 +roundig mode: +inf +frint.s :: +input: 107.000000 +output: 107.000000 +fcsr: 0x200 +roundig mode: +inf +frint.s :: +input: -45667.250000 +output: -45667.000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.s :: +input: -7.000000 +output: -7.000000 +fcsr: 0x200 +roundig mode: +inf +frint.s :: +input: -347856.500000 +output: -347856.000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.s :: +input: 356047.500000 +output: 356048.000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +frint.s :: +input: 23.062500 +output: 24.000000 +fcsr: 0x1010200 +roundig mode: -inf +frint.s :: +input: 0.000000 +output: 0.000000 +fcsr: 0x300 +roundig mode: -inf +frint.s :: +input: 456.250000 +output: 456.000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.s :: +input: 3.000000 +output: 3.000000 +fcsr: 0x300 +roundig mode: -inf +frint.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +frint.s :: +input: 1384.500000 +output: 1384.000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.s :: +input: -7.250000 +output: -8.000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.s :: +input: 1000000000.000000 +output: 1000000000.000000 +fcsr: 0x300 +roundig mode: -inf +frint.s :: +input: -5786.500000 +output: -5787.000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.s :: +input: 1752.000000 +output: 1752.000000 +fcsr: 0x300 +roundig mode: -inf +frint.s :: +input: 0.015625 +output: 0.000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.s :: +input: 0.031250 +output: 0.000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.s :: +input: -248562.750000 +output: -248563.000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.s :: +input: -45786.500000 +output: -45787.000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.s :: +input: 456.000000 +output: 456.000000 +fcsr: 0x300 +roundig mode: -inf +frint.s :: +input: 34.031250 +output: 34.000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.s :: +input: 45786.750000 +output: 45786.000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.s :: +input: 1752065.000000 +output: 1752065.000000 +fcsr: 0x300 +roundig mode: -inf +frint.s :: +input: 107.000000 +output: 107.000000 +fcsr: 0x300 +roundig mode: -inf +frint.s :: +input: -45667.250000 +output: -45668.000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.s :: +input: -7.000000 +output: -7.000000 +fcsr: 0x300 +roundig mode: -inf +frint.s :: +input: -347856.500000 +output: -347857.000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.s :: +input: 356047.500000 +output: 356047.000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +frint.s :: +input: 23.062500 +output: 23.000000 +fcsr: 0x1010300 +roundig mode: near +frint.d :: +input: 0.000000000000000 +output: 0.000000000000000 +fcsr: 0 +roundig mode: near +frint.d :: +input: 456.250000000000000 +output: 456.000000000000000 +fcsr: 0x1010000 +roundig mode: near +frint.d :: +input: 3.000000000000000 +output: 3.000000000000000 +fcsr: 0 +roundig mode: near +frint.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +frint.d :: +input: 1384.500000000000000 +output: 1384.000000000000000 +fcsr: 0x1010000 +roundig mode: near +frint.d :: +input: -7.250000000000000 +output: -7.000000000000000 +fcsr: 0x1010000 +roundig mode: near +frint.d :: +input: 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0 +roundig mode: near +frint.d :: +input: -5786.500000000000000 +output: -5786.000000000000000 +fcsr: 0x1010000 +roundig mode: near +frint.d :: +input: 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0 +roundig mode: near +frint.d :: +input: 0.015625000000000 +output: 0.000000000000000 +fcsr: 0x1010000 +roundig mode: near +frint.d :: +input: 0.031250000000000 +output: 0.000000000000000 +fcsr: 0x1010000 +roundig mode: near +frint.d :: +input: -248562.750000000000000 +output: -248563.000000000000000 +fcsr: 0x1010000 +roundig mode: near +frint.d :: +input: -45786.500000000000000 +output: -45786.000000000000000 +fcsr: 0x1010000 +roundig mode: near +frint.d :: +input: 456.000000000000000 +output: 456.000000000000000 +fcsr: 0 +roundig mode: near +frint.d :: +input: 34.031250000000000 +output: 34.000000000000000 +fcsr: 0x1010000 +roundig mode: near +frint.d :: +input: 45786.750000000000000 +output: 45787.000000000000000 +fcsr: 0x1010000 +roundig mode: near +frint.d :: +input: 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0 +roundig mode: near +frint.d :: +input: 107.000000000000000 +output: 107.000000000000000 +fcsr: 0 +roundig mode: near +frint.d :: +input: -45667.250000000000000 +output: -45667.000000000000000 +fcsr: 0x1010000 +roundig mode: near +frint.d :: +input: -7.000000000000000 +output: -7.000000000000000 +fcsr: 0 +roundig mode: near +frint.d :: +input: -347856.500000000000000 +output: -347856.000000000000000 +fcsr: 0x1010000 +roundig mode: near +frint.d :: +input: 356047.500000000000000 +output: 356048.000000000000000 +fcsr: 0x1010000 +roundig mode: near +frint.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +frint.d :: +input: 23.062500000000000 +output: 23.000000000000000 +fcsr: 0x1010000 +roundig mode: zero +frint.d :: +input: 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x100 +roundig mode: zero +frint.d :: +input: 456.250000000000000 +output: 456.000000000000000 +fcsr: 0x1010100 +roundig mode: zero +frint.d :: +input: 3.000000000000000 +output: 3.000000000000000 +fcsr: 0x100 +roundig mode: zero +frint.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +frint.d :: +input: 1384.500000000000000 +output: 1384.000000000000000 +fcsr: 0x1010100 +roundig mode: zero +frint.d :: +input: -7.250000000000000 +output: -7.000000000000000 +fcsr: 0x1010100 +roundig mode: zero +frint.d :: +input: 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0x100 +roundig mode: zero +frint.d :: +input: -5786.500000000000000 +output: -5786.000000000000000 +fcsr: 0x1010100 +roundig mode: zero +frint.d :: +input: 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0x100 +roundig mode: zero +frint.d :: +input: 0.015625000000000 +output: 0.000000000000000 +fcsr: 0x1010100 +roundig mode: zero +frint.d :: +input: 0.031250000000000 +output: 0.000000000000000 +fcsr: 0x1010100 +roundig mode: zero +frint.d :: +input: -248562.750000000000000 +output: -248562.000000000000000 +fcsr: 0x1010100 +roundig mode: zero +frint.d :: +input: -45786.500000000000000 +output: -45786.000000000000000 +fcsr: 0x1010100 +roundig mode: zero +frint.d :: +input: 456.000000000000000 +output: 456.000000000000000 +fcsr: 0x100 +roundig mode: zero +frint.d :: +input: 34.031250000000000 +output: 34.000000000000000 +fcsr: 0x1010100 +roundig mode: zero +frint.d :: +input: 45786.750000000000000 +output: 45786.000000000000000 +fcsr: 0x1010100 +roundig mode: zero +frint.d :: +input: 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0x100 +roundig mode: zero +frint.d :: +input: 107.000000000000000 +output: 107.000000000000000 +fcsr: 0x100 +roundig mode: zero +frint.d :: +input: -45667.250000000000000 +output: -45667.000000000000000 +fcsr: 0x1010100 +roundig mode: zero +frint.d :: +input: -7.000000000000000 +output: -7.000000000000000 +fcsr: 0x100 +roundig mode: zero +frint.d :: +input: -347856.500000000000000 +output: -347856.000000000000000 +fcsr: 0x1010100 +roundig mode: zero +frint.d :: +input: 356047.500000000000000 +output: 356047.000000000000000 +fcsr: 0x1010100 +roundig mode: zero +frint.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +frint.d :: +input: 23.062500000000000 +output: 23.000000000000000 +fcsr: 0x1010100 +roundig mode: +inf +frint.d :: +input: 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +frint.d :: +input: 456.250000000000000 +output: 457.000000000000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.d :: +input: 3.000000000000000 +output: 3.000000000000000 +fcsr: 0x200 +roundig mode: +inf +frint.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +frint.d :: +input: 1384.500000000000000 +output: 1385.000000000000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.d :: +input: -7.250000000000000 +output: -7.000000000000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.d :: +input: 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0x200 +roundig mode: +inf +frint.d :: +input: -5786.500000000000000 +output: -5786.000000000000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.d :: +input: 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0x200 +roundig mode: +inf +frint.d :: +input: 0.015625000000000 +output: 1.000000000000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.d :: +input: 0.031250000000000 +output: 1.000000000000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.d :: +input: -248562.750000000000000 +output: -248562.000000000000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.d :: +input: -45786.500000000000000 +output: -45786.000000000000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.d :: +input: 456.000000000000000 +output: 456.000000000000000 +fcsr: 0x200 +roundig mode: +inf +frint.d :: +input: 34.031250000000000 +output: 35.000000000000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.d :: +input: 45786.750000000000000 +output: 45787.000000000000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.d :: +input: 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0x200 +roundig mode: +inf +frint.d :: +input: 107.000000000000000 +output: 107.000000000000000 +fcsr: 0x200 +roundig mode: +inf +frint.d :: +input: -45667.250000000000000 +output: -45667.000000000000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.d :: +input: -7.000000000000000 +output: -7.000000000000000 +fcsr: 0x200 +roundig mode: +inf +frint.d :: +input: -347856.500000000000000 +output: -347856.000000000000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.d :: +input: 356047.500000000000000 +output: 356048.000000000000000 +fcsr: 0x1010200 +roundig mode: +inf +frint.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +frint.d :: +input: 23.062500000000000 +output: 24.000000000000000 +fcsr: 0x1010200 +roundig mode: -inf +frint.d :: +input: 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +frint.d :: +input: 456.250000000000000 +output: 456.000000000000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.d :: +input: 3.000000000000000 +output: 3.000000000000000 +fcsr: 0x300 +roundig mode: -inf +frint.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +frint.d :: +input: 1384.500000000000000 +output: 1384.000000000000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.d :: +input: -7.250000000000000 +output: -8.000000000000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.d :: +input: 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0x300 +roundig mode: -inf +frint.d :: +input: -5786.500000000000000 +output: -5787.000000000000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.d :: +input: 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0x300 +roundig mode: -inf +frint.d :: +input: 0.015625000000000 +output: 0.000000000000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.d :: +input: 0.031250000000000 +output: 0.000000000000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.d :: +input: -248562.750000000000000 +output: -248563.000000000000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.d :: +input: -45786.500000000000000 +output: -45787.000000000000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.d :: +input: 456.000000000000000 +output: 456.000000000000000 +fcsr: 0x300 +roundig mode: -inf +frint.d :: +input: 34.031250000000000 +output: 34.000000000000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.d :: +input: 45786.750000000000000 +output: 45786.000000000000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.d :: +input: 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0x300 +roundig mode: -inf +frint.d :: +input: 107.000000000000000 +output: 107.000000000000000 +fcsr: 0x300 +roundig mode: -inf +frint.d :: +input: -45667.250000000000000 +output: -45668.000000000000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.d :: +input: -7.000000000000000 +output: -7.000000000000000 +fcsr: 0x300 +roundig mode: -inf +frint.d :: +input: -347856.500000000000000 +output: -347857.000000000000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.d :: +input: 356047.500000000000000 +output: 356047.000000000000000 +fcsr: 0x1010300 +roundig mode: -inf +frint.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +frint.d :: +input: 23.062500000000000 +output: 23.000000000000000 +fcsr: 0x1010300 +roundig mode: near +fcmp.caf.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.caf.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.caf.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.caf.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.caf.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.caf.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.caf.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.caf.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.caf.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.caf.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.caf.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.caf.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.saf.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.saf.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.saf.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.saf.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.saf.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.saf.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.saf.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.saf.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.saf.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.saf.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.saf.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.saf.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.clt.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.clt.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.clt.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.clt.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.clt.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.clt.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.clt.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.clt.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.clt.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.clt.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.clt.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.clt.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.slt.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.slt.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.slt.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.slt.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.slt.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.slt.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.slt.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.slt.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.slt.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.slt.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.slt.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.slt.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.ceq.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.ceq.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.ceq.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.ceq.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.ceq.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.ceq.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.ceq.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.ceq.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.ceq.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.ceq.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.ceq.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.ceq.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.seq.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.seq.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.seq.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.seq.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.seq.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.seq.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.seq.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.seq.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.seq.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.seq.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.seq.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.seq.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.cle.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.cle.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.cle.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.cle.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.cle.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cle.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.cle.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cle.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.cle.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cle.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.cle.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cle.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.sle.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.sle.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.sle.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.sle.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.sle.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sle.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.sle.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sle.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.sle.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sle.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.sle.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sle.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.cun.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.cun.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.cun.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.cun.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.cun.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cun.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.cun.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cun.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.cun.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cun.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.cun.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cun.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.sun.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.sun.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.sun.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.sun.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.sun.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sun.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.sun.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sun.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.sun.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sun.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.sun.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sun.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.cult.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.cult.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.cult.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.cult.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.cult.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cult.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.cult.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cult.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.cult.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cult.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.cult.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cult.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.sult.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.sult.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.sult.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.sult.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.sult.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sult.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.sult.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sult.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.sult.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sult.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.sult.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sult.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.cueq.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.cueq.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.cueq.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.cueq.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.cueq.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cueq.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.cueq.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cueq.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.cueq.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cueq.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.cueq.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cueq.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.sueq.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.sueq.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.sueq.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.sueq.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: 3.000000 34.031250 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: -1.000000 4578.750000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: -7.250000 107.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: -5786.500000 -7.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: 0.015625 356.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: -248562.750000 23.062500 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: -45786.500000 0.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: 456.000000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: -45667.250000 100.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: -347856.500000 1752.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: -1.000000 0.031250 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.sueq.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sueq.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.sueq.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sueq.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.sueq.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sueq.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.sueq.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: 3.000000000000000 34.031250000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: -1.000000000000000 45786.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: -7.250000000000000 107.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: 0.015625000000000 356047.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: -248562.750000000000000 23.062500000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: -45786.500000000000000 0.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: 456.000000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: -1.000000000000000 0.031250000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sueq.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.cule.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.cule.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.cule.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.cule.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.cule.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cule.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.cule.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cule.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.cule.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cule.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.cule.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cule.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.sule.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.sule.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.sule.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.sule.s :: +input: 0.000000 -4578.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: 1384.500000 175.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: 1000000000.000000 -456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: 1752.000000 -3478.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: 0.031250 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: 34.031250 3.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: 45786.750000 -1.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: 1752065.000000 1384.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: 107.000000 -7.000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: -7.000000 -5786.500000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: 356047.500000 0.015625 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.s :: +input: 23.062500 -248562.750000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.sule.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sule.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0 +roundig mode: zero +fcmp.sule.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sule.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x100 +roundig mode: +inf +fcmp.sule.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sule.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x200 +roundig mode: -inf +fcmp.sule.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: 0.031250000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: 34.031250000000000 3.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: 107.000000000000000 -7.000000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: 356047.500000000000000 0.015625000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sule.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 0 +fcsr: 0x300 +roundig mode: near +fcmp.cne.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0 +roundig mode: zero +fcmp.cne.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x100 +roundig mode: +inf +fcmp.cne.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x200 +roundig mode: -inf +fcmp.cne.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x300 +roundig mode: near +fcmp.cne.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cne.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0 +roundig mode: zero +fcmp.cne.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cne.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: +inf +fcmp.cne.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cne.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: -inf +fcmp.cne.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cne.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: near +fcmp.sne.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0 +roundig mode: zero +fcmp.sne.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x100 +roundig mode: +inf +fcmp.sne.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x200 +roundig mode: -inf +fcmp.sne.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x300 +roundig mode: near +fcmp.sne.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sne.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0 +roundig mode: zero +fcmp.sne.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sne.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: +inf +fcmp.sne.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sne.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: -inf +fcmp.sne.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sne.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: near +fcmp.cor.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0 +roundig mode: zero +fcmp.cor.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x100 +roundig mode: +inf +fcmp.cor.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x200 +roundig mode: -inf +fcmp.cor.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x300 +roundig mode: near +fcmp.cor.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cor.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0 +roundig mode: zero +fcmp.cor.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cor.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: +inf +fcmp.cor.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cor.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: -inf +fcmp.cor.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cor.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: near +fcmp.sor.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0 +roundig mode: zero +fcmp.sor.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x100 +roundig mode: +inf +fcmp.sor.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x200 +roundig mode: -inf +fcmp.sor.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: 456.250000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x300 +roundig mode: near +fcmp.sor.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sor.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0 +roundig mode: zero +fcmp.sor.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sor.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: +inf +fcmp.sor.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sor.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: -inf +fcmp.sor.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: 456.250000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sor.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: near +fcmp.cune.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0 +roundig mode: zero +fcmp.cune.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x100 +roundig mode: +inf +fcmp.cune.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x200 +roundig mode: -inf +fcmp.cune.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x300 +roundig mode: near +fcmp.cune.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.cune.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0 +roundig mode: zero +fcmp.cune.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.cune.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: +inf +fcmp.cune.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.cune.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: -inf +fcmp.cune.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.cune.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: near +fcmp.sune.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0 +roundig mode: zero +fcmp.sune.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x100 +roundig mode: +inf +fcmp.sune.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x200 +roundig mode: -inf +fcmp.sune.s :: +input: 0.000000 -4578.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: 456.250000 456.250000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: 3.000000 34.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: -1.000000 4578.750000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: 1384.500000 175.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: -7.250000 107.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: 1000000000.000000 -456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: -5786.500000 -7.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: 1752.000000 -3478.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: 0.015625 356.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: 0.031250 -1.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: -248562.750000 23.062500 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: -45786.500000 0.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: 456.000000 456.250000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: 34.031250 3.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: 45786.750000 -1.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: 1752065.000000 1384.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: 107.000000 -7.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: -45667.250000 100.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: -7.000000 -5786.500000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: -347856.500000 1752.000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: 356047.500000 0.015625 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: -1.000000 0.031250 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.s :: +input: 23.062500 -248562.750000 +output: 1 +fcsr: 0x300 +roundig mode: near +fcmp.sune.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0 +roundig mode: near +fcmp.sune.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0 +roundig mode: zero +fcmp.sune.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x100 +roundig mode: zero +fcmp.sune.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x100 +roundig mode: +inf +fcmp.sune.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x200 +roundig mode: +inf +fcmp.sune.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x200 +roundig mode: -inf +fcmp.sune.d :: +input: 0.000000000000000 -45786.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: 456.250000000000000 456.250000000000000 +output: 0 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: 3.000000000000000 34.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: -1.000000000000000 45786.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: 1384.500000000000000 1752065.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: -7.250000000000000 107.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: 1000000000.000000000000000 -45667.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: -5786.500000000000000 -7.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: 1752.000000000000000 -347856.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: 0.015625000000000 356047.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: 0.031250000000000 -1.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: -248562.750000000000000 23.062500000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: -45786.500000000000000 0.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: 456.000000000000000 456.250000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: 34.031250000000000 3.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: 45786.750000000000000 -1.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: 1752065.000000000000000 1384.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: 107.000000000000000 -7.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: -45667.250000000000000 1000000000.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: -7.000000000000000 -5786.500000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: -347856.500000000000000 1752.000000000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: 356047.500000000000000 0.015625000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: -1.000000000000000 0.031250000000000 +output: 1 +fcsr: 0x300 +roundig mode: -inf +fcmp.sune.d :: +input: 23.062500000000000 -248562.750000000000000 +output: 1 +fcsr: 0x300 +roundig mode: near +fsel :: +input: 0.000000000000000 -45786.500000000000000 0 +output: 0.000000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: 456.250000000000000 456.250000000000000 1 +output: 456.250000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: 3.000000000000000 34.031250000000000 0 +output: 3.000000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: -1.000000000000000 45786.750000000000000 1 +output: 45786.750000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: 1384.500000000000000 1752065.000000000000000 1 +output: 1752065.000000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: -7.250000000000000 107.000000000000000 0 +output: -7.250000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: 1000000000.000000000000000 -45667.250000000000000 1 +output: -45667.250000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: -5786.500000000000000 -7.250000000000000 0 +output: -5786.500000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: 1752.000000000000000 -347856.500000000000000 0 +output: 1752.000000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: 0.015625000000000 356047.500000000000000 0 +output: 0.015625000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: 0.031250000000000 -1.000000000000000 1 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: -248562.750000000000000 23.062500000000000 1 +output: 23.062500000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: -45786.500000000000000 0.000000000000000 1 +output: 0.000000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: 456.000000000000000 456.250000000000000 1 +output: 456.250000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: 34.031250000000000 3.000000000000000 0 +output: 34.031250000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: 45786.750000000000000 -1.000000000000000 0 +output: 45786.750000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: 1752065.000000000000000 1384.500000000000000 0 +output: 1752065.000000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: 107.000000000000000 -7.000000000000000 0 +output: 107.000000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: -45667.250000000000000 1000000000.000000000000000 0 +output: -45667.250000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: -7.000000000000000 -5786.500000000000000 0 +output: -7.000000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: -347856.500000000000000 1752.000000000000000 1 +output: 1752.000000000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: 356047.500000000000000 0.015625000000000 1 +output: 0.015625000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: -1.000000000000000 0.031250000000000 1 +output: 0.031250000000000 +fcsr: 0 +roundig mode: near +fsel :: +input: 23.062500000000000 -248562.750000000000000 1 +output: -248562.750000000000000 +fcsr: 0 +roundig mode: zero +fsel :: +input: 0.000000000000000 -45786.500000000000000 0 +output: 0.000000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: 456.250000000000000 456.250000000000000 1 +output: 456.250000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: 3.000000000000000 34.031250000000000 0 +output: 3.000000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: -1.000000000000000 45786.750000000000000 1 +output: 45786.750000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: 1384.500000000000000 1752065.000000000000000 1 +output: 1752065.000000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: -7.250000000000000 107.000000000000000 0 +output: -7.250000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: 1000000000.000000000000000 -45667.250000000000000 1 +output: -45667.250000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: -5786.500000000000000 -7.250000000000000 0 +output: -5786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: 1752.000000000000000 -347856.500000000000000 0 +output: 1752.000000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: 0.015625000000000 356047.500000000000000 0 +output: 0.015625000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: 0.031250000000000 -1.000000000000000 1 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: -248562.750000000000000 23.062500000000000 1 +output: 23.062500000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: -45786.500000000000000 0.000000000000000 1 +output: 0.000000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: 456.000000000000000 456.250000000000000 1 +output: 456.250000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: 34.031250000000000 3.000000000000000 0 +output: 34.031250000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: 45786.750000000000000 -1.000000000000000 0 +output: 45786.750000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: 1752065.000000000000000 1384.500000000000000 0 +output: 1752065.000000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: 107.000000000000000 -7.000000000000000 0 +output: 107.000000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: -45667.250000000000000 1000000000.000000000000000 0 +output: -45667.250000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: -7.000000000000000 -5786.500000000000000 0 +output: -7.000000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: -347856.500000000000000 1752.000000000000000 1 +output: 1752.000000000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: 356047.500000000000000 0.015625000000000 1 +output: 0.015625000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: -1.000000000000000 0.031250000000000 1 +output: 0.031250000000000 +fcsr: 0x100 +roundig mode: zero +fsel :: +input: 23.062500000000000 -248562.750000000000000 1 +output: -248562.750000000000000 +fcsr: 0x100 +roundig mode: +inf +fsel :: +input: 0.000000000000000 -45786.500000000000000 0 +output: 0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: 456.250000000000000 456.250000000000000 1 +output: 456.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: 3.000000000000000 34.031250000000000 0 +output: 3.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: -1.000000000000000 45786.750000000000000 1 +output: 45786.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: 1384.500000000000000 1752065.000000000000000 1 +output: 1752065.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: -7.250000000000000 107.000000000000000 0 +output: -7.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: 1000000000.000000000000000 -45667.250000000000000 1 +output: -45667.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: -5786.500000000000000 -7.250000000000000 0 +output: -5786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: 1752.000000000000000 -347856.500000000000000 0 +output: 1752.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: 0.015625000000000 356047.500000000000000 0 +output: 0.015625000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: 0.031250000000000 -1.000000000000000 1 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: -248562.750000000000000 23.062500000000000 1 +output: 23.062500000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: -45786.500000000000000 0.000000000000000 1 +output: 0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: 456.000000000000000 456.250000000000000 1 +output: 456.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: 34.031250000000000 3.000000000000000 0 +output: 34.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: 45786.750000000000000 -1.000000000000000 0 +output: 45786.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: 1752065.000000000000000 1384.500000000000000 0 +output: 1752065.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: 107.000000000000000 -7.000000000000000 0 +output: 107.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: -45667.250000000000000 1000000000.000000000000000 0 +output: -45667.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: -7.000000000000000 -5786.500000000000000 0 +output: -7.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: -347856.500000000000000 1752.000000000000000 1 +output: 1752.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: 356047.500000000000000 0.015625000000000 1 +output: 0.015625000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: -1.000000000000000 0.031250000000000 1 +output: 0.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fsel :: +input: 23.062500000000000 -248562.750000000000000 1 +output: -248562.750000000000000 +fcsr: 0x200 +roundig mode: -inf +fsel :: +input: 0.000000000000000 -45786.500000000000000 0 +output: 0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: 456.250000000000000 456.250000000000000 1 +output: 456.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: 3.000000000000000 34.031250000000000 0 +output: 3.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: -1.000000000000000 45786.750000000000000 1 +output: 45786.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: 1384.500000000000000 1752065.000000000000000 1 +output: 1752065.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: -7.250000000000000 107.000000000000000 0 +output: -7.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: 1000000000.000000000000000 -45667.250000000000000 1 +output: -45667.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: -5786.500000000000000 -7.250000000000000 0 +output: -5786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: 1752.000000000000000 -347856.500000000000000 0 +output: 1752.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: 0.015625000000000 356047.500000000000000 0 +output: 0.015625000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: 0.031250000000000 -1.000000000000000 1 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: -248562.750000000000000 23.062500000000000 1 +output: 23.062500000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: -45786.500000000000000 0.000000000000000 1 +output: 0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: 456.000000000000000 456.250000000000000 1 +output: 456.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: 34.031250000000000 3.000000000000000 0 +output: 34.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: 45786.750000000000000 -1.000000000000000 0 +output: 45786.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: 1752065.000000000000000 1384.500000000000000 0 +output: 1752065.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: 107.000000000000000 -7.000000000000000 0 +output: 107.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: -45667.250000000000000 1000000000.000000000000000 0 +output: -45667.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: -7.000000000000000 -5786.500000000000000 0 +output: -7.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: -347856.500000000000000 1752.000000000000000 1 +output: 1752.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: 356047.500000000000000 0.015625000000000 1 +output: 0.015625000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: -1.000000000000000 0.031250000000000 1 +output: 0.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fsel :: +input: 23.062500000000000 -248562.750000000000000 1 +output: -248562.750000000000000 +fcsr: 0x300 +roundig mode: near +fmov.s :: +input: 0.000000 +output: 0.000000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: 456.250000 +output: 456.250000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: 3.000000 +output: 3.000000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: 1384.500000 +output: 1384.500000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: -7.250000 +output: -7.250000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: 1000000000.000000 +output: 1000000000.000000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: -5786.500000 +output: -5786.500000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: 1752.000000 +output: 1752.000000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: 0.015625 +output: 0.015625 +fcsr: 0 +roundig mode: near +fmov.s :: +input: 0.031250 +output: 0.031250 +fcsr: 0 +roundig mode: near +fmov.s :: +input: -248562.750000 +output: -248562.750000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: -45786.500000 +output: -45786.500000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: 456.000000 +output: 456.000000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: 34.031250 +output: 34.031250 +fcsr: 0 +roundig mode: near +fmov.s :: +input: 45786.750000 +output: 45786.750000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: 1752065.000000 +output: 1752065.000000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: 107.000000 +output: 107.000000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: -45667.250000 +output: -45667.250000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: -7.000000 +output: -7.000000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: -347856.500000 +output: -347856.500000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: 356047.500000 +output: 356047.500000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0 +roundig mode: near +fmov.s :: +input: 23.062500 +output: 23.062500 +fcsr: 0 +roundig mode: zero +fmov.s :: +input: 0.000000 +output: 0.000000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: 456.250000 +output: 456.250000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: 3.000000 +output: 3.000000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: 1384.500000 +output: 1384.500000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: -7.250000 +output: -7.250000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: 1000000000.000000 +output: 1000000000.000000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: -5786.500000 +output: -5786.500000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: 1752.000000 +output: 1752.000000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: 0.015625 +output: 0.015625 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: 0.031250 +output: 0.031250 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: -248562.750000 +output: -248562.750000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: -45786.500000 +output: -45786.500000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: 456.000000 +output: 456.000000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: 34.031250 +output: 34.031250 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: 45786.750000 +output: 45786.750000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: 1752065.000000 +output: 1752065.000000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: 107.000000 +output: 107.000000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: -45667.250000 +output: -45667.250000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: -7.000000 +output: -7.000000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: -347856.500000 +output: -347856.500000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: 356047.500000 +output: 356047.500000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x100 +roundig mode: zero +fmov.s :: +input: 23.062500 +output: 23.062500 +fcsr: 0x100 +roundig mode: +inf +fmov.s :: +input: 0.000000 +output: 0.000000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: 456.250000 +output: 456.250000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: 3.000000 +output: 3.000000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: 1384.500000 +output: 1384.500000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: -7.250000 +output: -7.250000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: 1000000000.000000 +output: 1000000000.000000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: -5786.500000 +output: -5786.500000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: 1752.000000 +output: 1752.000000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: 0.015625 +output: 0.015625 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: 0.031250 +output: 0.031250 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: -248562.750000 +output: -248562.750000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: -45786.500000 +output: -45786.500000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: 456.000000 +output: 456.000000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: 34.031250 +output: 34.031250 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: 45786.750000 +output: 45786.750000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: 1752065.000000 +output: 1752065.000000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: 107.000000 +output: 107.000000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: -45667.250000 +output: -45667.250000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: -7.000000 +output: -7.000000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: -347856.500000 +output: -347856.500000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: 356047.500000 +output: 356047.500000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x200 +roundig mode: +inf +fmov.s :: +input: 23.062500 +output: 23.062500 +fcsr: 0x200 +roundig mode: -inf +fmov.s :: +input: 0.000000 +output: 0.000000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: 456.250000 +output: 456.250000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: 3.000000 +output: 3.000000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: 1384.500000 +output: 1384.500000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: -7.250000 +output: -7.250000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: 1000000000.000000 +output: 1000000000.000000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: -5786.500000 +output: -5786.500000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: 1752.000000 +output: 1752.000000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: 0.015625 +output: 0.015625 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: 0.031250 +output: 0.031250 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: -248562.750000 +output: -248562.750000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: -45786.500000 +output: -45786.500000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: 456.000000 +output: 456.000000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: 34.031250 +output: 34.031250 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: 45786.750000 +output: 45786.750000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: 1752065.000000 +output: 1752065.000000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: 107.000000 +output: 107.000000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: -45667.250000 +output: -45667.250000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: -7.000000 +output: -7.000000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: -347856.500000 +output: -347856.500000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: 356047.500000 +output: 356047.500000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: -1.000000 +output: -1.000000 +fcsr: 0x300 +roundig mode: -inf +fmov.s :: +input: 23.062500 +output: 23.062500 +fcsr: 0x300 +roundig mode: near +fmov.d :: +input: 0.000000000000000 +output: 0.000000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: 456.250000000000000 +output: 456.250000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: 3.000000000000000 +output: 3.000000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: 1384.500000000000000 +output: 1384.500000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: -7.250000000000000 +output: -7.250000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: -5786.500000000000000 +output: -5786.500000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: 0.015625000000000 +output: 0.015625000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: 0.031250000000000 +output: 0.031250000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: -248562.750000000000000 +output: -248562.750000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: -45786.500000000000000 +output: -45786.500000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: 456.000000000000000 +output: 456.000000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: 34.031250000000000 +output: 34.031250000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: 45786.750000000000000 +output: 45786.750000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: 107.000000000000000 +output: 107.000000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: -45667.250000000000000 +output: -45667.250000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: -7.000000000000000 +output: -7.000000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: 356047.500000000000000 +output: 356047.500000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0 +roundig mode: near +fmov.d :: +input: 23.062500000000000 +output: 23.062500000000000 +fcsr: 0 +roundig mode: zero +fmov.d :: +input: 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: 3.000000000000000 +output: 3.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: 1384.500000000000000 +output: 1384.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: -7.250000000000000 +output: -7.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: -5786.500000000000000 +output: -5786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: 0.015625000000000 +output: 0.015625000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: 0.031250000000000 +output: 0.031250000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: -248562.750000000000000 +output: -248562.750000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: -45786.500000000000000 +output: -45786.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: 456.000000000000000 +output: 456.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: 34.031250000000000 +output: 34.031250000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: 45786.750000000000000 +output: 45786.750000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: 107.000000000000000 +output: 107.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: -45667.250000000000000 +output: -45667.250000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: -7.000000000000000 +output: -7.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: 356047.500000000000000 +output: 356047.500000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x100 +roundig mode: zero +fmov.d :: +input: 23.062500000000000 +output: 23.062500000000000 +fcsr: 0x100 +roundig mode: +inf +fmov.d :: +input: 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: 3.000000000000000 +output: 3.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: 1384.500000000000000 +output: 1384.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: -7.250000000000000 +output: -7.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: -5786.500000000000000 +output: -5786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: 0.015625000000000 +output: 0.015625000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: 0.031250000000000 +output: 0.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: -248562.750000000000000 +output: -248562.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: -45786.500000000000000 +output: -45786.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: 456.000000000000000 +output: 456.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: 34.031250000000000 +output: 34.031250000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: 45786.750000000000000 +output: 45786.750000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: 107.000000000000000 +output: 107.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: -45667.250000000000000 +output: -45667.250000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: -7.000000000000000 +output: -7.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: 356047.500000000000000 +output: 356047.500000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x200 +roundig mode: +inf +fmov.d :: +input: 23.062500000000000 +output: 23.062500000000000 +fcsr: 0x200 +roundig mode: -inf +fmov.d :: +input: 0.000000000000000 +output: 0.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: 456.250000000000000 +output: 456.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: 3.000000000000000 +output: 3.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: 1384.500000000000000 +output: 1384.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: -7.250000000000000 +output: -7.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: 1000000000.000000000000000 +output: 1000000000.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: -5786.500000000000000 +output: -5786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: 1752.000000000000000 +output: 1752.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: 0.015625000000000 +output: 0.015625000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: 0.031250000000000 +output: 0.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: -248562.750000000000000 +output: -248562.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: -45786.500000000000000 +output: -45786.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: 456.000000000000000 +output: 456.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: 34.031250000000000 +output: 34.031250000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: 45786.750000000000000 +output: 45786.750000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: 1752065.000000000000000 +output: 1752065.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: 107.000000000000000 +output: 107.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: -45667.250000000000000 +output: -45667.250000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: -7.000000000000000 +output: -7.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: -347856.500000000000000 +output: -347856.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: 356047.500000000000000 +output: 356047.500000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: -1.000000000000000 +output: -1.000000000000000 +fcsr: 0x300 +roundig mode: -inf +fmov.d :: +input: 23.062500000000000 +output: 23.062500000000000 +fcsr: 0x300 diff --git a/none/tests/loongarch64/float.vgtest b/none/tests/loongarch64/float.vgtest new file mode 100644 index 0000000..e65d969 --- /dev/null +++ b/none/tests/loongarch64/float.vgtest @@ -0,0 +1,3 @@ +prereq: ../../../tests/loongarch64_features fpu +prog: float +vgopts: -q diff --git a/none/tests/loongarch64/integer.c b/none/tests/loongarch64/integer.c new file mode 100644 index 0000000..369d628 --- /dev/null +++ b/none/tests/loongarch64/integer.c @@ -0,0 +1,1311 @@ +#include +#include + +typedef enum { + SA2, SA2_1 /* for alsl */, SA3, + MSBW, LSBW, MSBD, LSBD, + UI5, UI6, UI12, + SI12, SI14, SI16, SI20 +} imm_t; + +static inline void showImm (unsigned int i, imm_t ty) +{ + switch (ty) { + case SA2: + assert(i < (1 << 2)); + break; + case SA2_1: + assert(i < (1 << 3)); + break; + case SA3: + assert(i < (1 << 3)); + break; + case MSBW: + assert(i < (1 << 5)); + break; + case LSBW: + assert(i < (1 << 5)); + break; + case MSBD: + assert(i < (1 << 6)); + break; + case LSBD: + assert(i < (1 << 6)); + break; + case UI5: + assert(i < (1 << 5)); + break; + case UI6: + assert(i < (1 << 6)); + break; + case UI12: + assert(i < (1 << 12)); + break; + case SI12: + assert(i < (1 << 12) || (i >> 12) == 0xfffff); + break; + case SI14: + assert(i < (1 << 14) || (i >> 14) == 0x3ffff); + break; + case SI16: + assert(i < (1 << 16) || (i >> 16) == 0xffff); + break; + case SI20: + assert(i < (1 << 20) || (i >> 20) == 0xfff); + break; + default: + assert(0); + break; + } + printf("%d", i); +} + +#define TESTINST_RR(insn, rd, rj, v1, v2) \ + { \ + unsigned long res1, res2; \ + unsigned long val1 = (unsigned long)v1; \ + unsigned long val2 = (unsigned long)v2; \ + __asm__ __volatile__( \ + "move " rd ", %2 \n\t" \ + "move " rj ", %3 \n\t" \ + insn " " rd ", " rj " \n\t" \ + "move %0, " rd " \n\t" \ + "move %1, " rj " \n\t" \ + : "=r" (res1), "=r" (res2) \ + : "r" (val1), "r" (val2) \ + : rd, rj, "memory"); \ + printf("%s %s, %s ::\n", insn, rd, rj); \ + printf("before: %s=%#018lx, %s=%#018lx\n", \ + rd, val1, rj, val2); \ + printf("after: %s=%#018lx, %s=%#018lx\n", \ + rd, res1, rj, res2); \ + } + +#define TESTINST_RI(insn, rd, type, v1, imm) \ + { \ + unsigned long res1; \ + unsigned long val1 = (unsigned long)v1; \ + __asm__ __volatile__( \ + "move " rd ", %1 \n\t" \ + insn " " rd ", " #imm "\n\t" \ + "move %0, " rd " \n\t" \ + : "=r" (res1) \ + : "r" (val1) \ + : rd, "memory"); \ + printf("%s %s, ", insn, rd); \ + showImm(imm, type); \ + printf(" ::\n"); \ + printf("before: %s=%#018lx\n", rd, val1); \ + printf("after: %s=%#018lx\n", rd, res1); \ + } + +#define TESTINST_RRRI(insn, rd, rj, rk, type, v1, v2, v3, imm) \ + { \ + unsigned long res1, res2, res3; \ + unsigned long val1 = (unsigned long)v1; \ + unsigned long val2 = (unsigned long)v2; \ + unsigned long val3 = (unsigned long)v3; \ + __asm__ __volatile__( \ + "move " rd ", %3 \n\t" \ + "move " rj ", %4 \n\t" \ + "move " rk ", %5 \n\t" \ + insn " " rd ", " rj ", " rk ", " #imm "\n\t" \ + "move %0, " rd " \n\t" \ + "move %1, " rj " \n\t" \ + "move %2, " rk " \n\t" \ + : "=r" (res1), "=r" (res2), "=r" (res3) \ + : "r" (val1), "r" (val2), "r" (val3) \ + : rd, rj, rk, "memory"); \ + printf("%s %s, %s, %s, ", insn, rd, rj, rk); \ + showImm(imm, type); \ + printf(" ::\n"); \ + printf("before: %s=%#018lx, %s=%#018lx, %s=%#018lx\n", \ + rd, val1, rj, val2, rk, val3); \ + printf("after: %s=%#018lx, %s=%#018lx, %s=%#018lx\n", \ + rd, res1, rj, res2, rk, res3); \ + } + +#define TESTINST_RRR(insn, rd, rj, rk, v1, v2, v3) \ + { \ + unsigned long res1, res2, res3; \ + unsigned long val1 = (unsigned long)v1; \ + unsigned long val2 = (unsigned long)v2; \ + unsigned long val3 = (unsigned long)v3; \ + __asm__ __volatile__( \ + "move " rd ", %3 \n\t" \ + "move " rj ", %4 \n\t" \ + "move " rk ", %5 \n\t" \ + insn " " rd ", " rj ", " rk "\n\t" \ + "move %0, " rd " \n\t" \ + "move %1, " rj " \n\t" \ + "move %2, " rk " \n\t" \ + : "=r" (res1), "=r" (res2), "=r" (res3) \ + : "r" (val1), "r" (val2), "r" (val3) \ + : rd, rj, rk, "memory"); \ + printf("%s %s, %s, %s ::\n", insn, rd, rj, rk); \ + printf("before: %s=%#018lx, %s=%#018lx, %s=%#018lx\n", \ + rd, val1, rj, val2, rk, val3); \ + printf("after: %s=%#018lx, %s=%#018lx, %s=%#018lx\n", \ + rd, res1, rj, res2, rk, res3); \ + } + +#define TESTINST_RRI(insn, rd, rj, type, v1, v2, imm) \ + { \ + unsigned long res1, res2; \ + unsigned long val1 = (unsigned long)v1; \ + unsigned long val2 = (unsigned long)v2; \ + __asm__ __volatile__( \ + "move " rd ", %2 \n\t" \ + "move " rj ", %3 \n\t" \ + insn " " rd ", " rj ", " #imm "\n\t" \ + "move %0, " rd " \n\t" \ + "move %1, " rj " \n\t" \ + : "=r" (res1), "=r" (res2) \ + : "r" (val1), "r" (val2) \ + : rd, rj, "memory"); \ + printf("%s %s, %s, ", insn, rd, rj); \ + showImm(imm, type); \ + printf(" ::\n"); \ + printf("before: %s=%#018lx, %s=%#018lx\n", \ + rd, val1, rj, val2); \ + printf("after: %s=%#018lx, %s=%#018lx\n", \ + rd, res1, rj, res2); \ + } + +#define TESTINST_RRII(insn, rd, rj, type1, type2, v1, v2, imm1, imm2) \ + { \ + unsigned long res1, res2; \ + unsigned long val1 = (unsigned long)v1; \ + unsigned long val2 = (unsigned long)v2; \ + __asm__ __volatile__( \ + "move " rd ", %2 \n\t" \ + "move " rj ", %3 \n\t" \ + insn " " rd ", " rj ", " #imm1 ", " #imm2 "\n\t" \ + "move %0, " rd " \n\t" \ + "move %1, " rj " \n\t" \ + : "=r" (res1), "=r" (res2) \ + : "r" (val1), "r" (val2) \ + : rd, rj, "memory"); \ + printf("%s %s, %s, ", insn, rd, rj); \ + showImm(imm1, type1); \ + printf(", "); \ + showImm(imm2, type2); \ + printf(" ::\n"); \ + printf("before: %s=%#018lx, %s=%#018lx\n", \ + rd, val1, rj, val2); \ + printf("after: %s=%#018lx, %s=%#018lx\n", \ + rd, res1, rj, res2); \ + } + +void test(void) +{ + /* ---------------- add.w rd, rj, rk ---------------- */ + TESTINST_RRR("add.w", "$r19", "$r20", "$r25", 0xf7f01ffbc9696094UL, 0xb664b1ce21c8c7fcUL, 0xd0a02b79ace85cfUL); + TESTINST_RRR("add.w", "$r29", "$r9", "$r12", 0x5418cd6f6b640953UL, 0x6465907ca2dac58cUL, 0xefea76d0d526df3aUL); + TESTINST_RRR("add.w", "$r23", "$r15", "$r28", 0x6ae34fbc6f2f7a9aUL, 0xbf21c48ab5c2edccUL, 0x24824ebd458ed20eUL); + TESTINST_RRR("add.w", "$r27", "$r14", "$r26", 0x9f33e38db05616ccUL, 0xf12ee0c276c52c78UL, 0xc3054d65ecec3fe6UL); + TESTINST_RRR("add.w", "$r14", "$r23", "$r27", 0x17eaa07c4607901fUL, 0xa5fa9d0c8472848eUL, 0xa34301227bb57f76UL); + TESTINST_RRR("add.w", "$r19", "$r19", "$r4", 0xd2e0644d9532b5eaUL, 0x2957c6f0638238bcUL, 0xf01566d0031ee917UL); + TESTINST_RRR("add.w", "$r19", "$r26", "$r13", 0x7b39b3f2ccbdaf79UL, 0xee877221beef9d45UL, 0x4a743034eefe075dUL); + TESTINST_RRR("add.w", "$r29", "$r18", "$r14", 0x95214c4de7e6d3baUL, 0x26502eb481799cd1UL, 0x34d57b775083fb91UL); + TESTINST_RRR("add.w", "$r16", "$r26", "$r8", 0xb66b18865bbb3036UL, 0x8881ccbe1e31aa8dUL, 0xffe0d2dde8325edcUL); + TESTINST_RRR("add.w", "$r26", "$r5", "$r8", 0xc367af71c905540cUL, 0xcdcbe4860d983fe3UL, 0x6687aa19ee1fc503UL); + + /* ---------------- add.d rd, rj, rk ---------------- */ + TESTINST_RRR("add.d", "$r16", "$r18", "$r8", 0xbe5505b409ce995cUL, 0x561a85fd57e87226UL, 0x923f3293987edab0UL); + TESTINST_RRR("add.d", "$r12", "$r7", "$r29", 0xff2682151edc3476UL, 0x90beb037eacfe3dbUL, 0xa4017082880f1151UL); + TESTINST_RRR("add.d", "$r31", "$r31", "$r5", 0x81e38385e39d9f16UL, 0xedb2ffa50c0c8b5fUL, 0x8776f30d75fc97c2UL); + TESTINST_RRR("add.d", "$r31", "$r6", "$r26", 0x64ff385d97b60dc2UL, 0x80f903f206f08f60UL, 0x4f5b589532e85398UL); + TESTINST_RRR("add.d", "$r25", "$r10", "$r20", 0xdd8973d6b99634caUL, 0x34c0fe5a72dd43d9UL, 0x2494af03cf5878e7UL); + TESTINST_RRR("add.d", "$r5", "$r10", "$r4", 0x94b272b05ffe39c8UL, 0x152d15efbbc54c04UL, 0x25afc06cf151ab29UL); + TESTINST_RRR("add.d", "$r19", "$r30", "$r18", 0xa6e14d42459cadf6UL, 0x558620ff616141b1UL, 0x1978905697120747UL); + TESTINST_RRR("add.d", "$r7", "$r8", "$r20", 0x2ea6f88031a29aeUL, 0x6a08c12301e00d49UL, 0xdd533acf17f59142UL); + TESTINST_RRR("add.d", "$r24", "$r14", "$r26", 0xb88df6b8315eb7a6UL, 0x137d04f7f6fe285UL, 0x2ccb253ff7ea93d6UL); + TESTINST_RRR("add.d", "$r7", "$r19", "$r23", 0xad464722c0967f28UL, 0x30295c1fd85ae029UL, 0x2c69edb227e01d94UL); + + /* ---------------- sub.w rd, rj, rk ---------------- */ + TESTINST_RRR("sub.w", "$r16", "$r28", "$r17", 0x8b0ba4ef20207fddUL, 0x90493cb39ff734a2UL, 0x519842bab5cc1208UL); + TESTINST_RRR("sub.w", "$r6", "$r13", "$r15", 0x13af983aafc53691UL, 0x27bc6a037865e47fUL, 0xe20df003930575d5UL); + TESTINST_RRR("sub.w", "$r8", "$r19", "$r23", 0x4177aec74585d42dUL, 0xba89b6aa9b7728acUL, 0xe6a089b8eaf43feUL); + TESTINST_RRR("sub.w", "$r7", "$r10", "$r23", 0xca1b83a7ab88912UL, 0xd5e2759ea82c2c80UL, 0x76e9d6f88c2624ffUL); + TESTINST_RRR("sub.w", "$r19", "$r24", "$r24", 0x99d63505ea0474b3UL, 0x1b53c4c34957af8eUL, 0x6146da47b731d3edUL); + TESTINST_RRR("sub.w", "$r26", "$r31", "$r7", 0x8eca560d8234ff55UL, 0x5beb18985c3f451eUL, 0x9c9634dfaa7b9313UL); + TESTINST_RRR("sub.w", "$r29", "$r16", "$r6", 0x229544d2cb1d5a64UL, 0xd23751d515597128UL, 0xa09dd29330aa8d15UL); + TESTINST_RRR("sub.w", "$r12", "$r16", "$r4", 0x229f5aefe9fb7fb7UL, 0x740ed49b5e95faeUL, 0xbc6304a0df442807UL); + TESTINST_RRR("sub.w", "$r30", "$r29", "$r26", 0x94f3a67d188df281UL, 0x48e066cdad20ac2UL, 0x1e032e60568554a7UL); + TESTINST_RRR("sub.w", "$r18", "$r23", "$r25", 0xedb4f44fb338ba4fUL, 0xf06e698cd08c8e7bUL, 0xa22b91e88b77d4d8UL); + + /* ---------------- sub.d rd, rj, rk ---------------- */ + TESTINST_RRR("sub.d", "$r18", "$r10", "$r27", 0x68647aa06a23c8f9UL, 0xd001cb46cb78fc4fUL, 0x460cc8702b1761f9UL); + TESTINST_RRR("sub.d", "$r7", "$r24", "$r18", 0x8d18e952fb747f43UL, 0x1e7d1a019fb96490UL, 0xb466fb9891e8c151UL); + TESTINST_RRR("sub.d", "$r4", "$r16", "$r27", 0x5f6647277ca4c99dUL, 0xa1156b863ec98e1dUL, 0xc15612f3ce819d64UL); + TESTINST_RRR("sub.d", "$r4", "$r25", "$r9", 0xe67b33778df480b4UL, 0xc24b2711be7e4ef1UL, 0xd940ca25b956100fUL); + TESTINST_RRR("sub.d", "$r5", "$r12", "$r18", 0x258ae461ef798ce7UL, 0x3f4984ea3f5692deUL, 0x99fa673f30e69019UL); + TESTINST_RRR("sub.d", "$r13", "$r10", "$r9", 0xdafb48debea5211eUL, 0xeac1d3b25f6bf8dbUL, 0x297d671b1c96e48fUL); + TESTINST_RRR("sub.d", "$r7", "$r15", "$r23", 0xc6b03274ff37baf6UL, 0x5b37ffc2c84aec9UL, 0x74d62a52cbaaec15UL); + TESTINST_RRR("sub.d", "$r26", "$r18", "$r26", 0x35c71e0956ffcd43UL, 0xad703a4e8078070bUL, 0x634924e8a9fdbb9eUL); + TESTINST_RRR("sub.d", "$r16", "$r29", "$r5", 0x18bf961cba922928UL, 0x54ed9198405f8983UL, 0x977f5b65e5f86b4aUL); + TESTINST_RRR("sub.d", "$r31", "$r28", "$r14", 0xa38a1e8cb3c7ba00UL, 0xd220d1ef3cf8f3f7UL, 0xc972df2ace170d61UL); + + /* ---------------- slt rd, rj, rk ---------------- */ + TESTINST_RRR("slt", "$r12", "$r17", "$r18", 0xd7a0e65c279e1082UL, 0x819edf00a849ba44UL, 0x41a0b2fe37d44db2UL); + TESTINST_RRR("slt", "$r31", "$r13", "$r18", 0x2ef00a5cfd100f71UL, 0x4792cd9f9abf36d3UL, 0x2c117902110ef9a8UL); + TESTINST_RRR("slt", "$r4", "$r30", "$r29", 0x6d8be2fb73e2c006UL, 0xf76ce97d7658995eUL, 0x3856e09bfe39df6eUL); + TESTINST_RRR("slt", "$r4", "$r18", "$r10", 0xeddcb9dcf092c3f5UL, 0xe57b7c25d13dea8UL, 0x761d86b48cb5ce21UL); + TESTINST_RRR("slt", "$r16", "$r18", "$r16", 0xcddd92e2340cd593UL, 0xc9a30f4707743f80UL, 0x3ff7d36f17396d3aUL); + TESTINST_RRR("slt", "$r6", "$r14", "$r10", 0xa9e71c6376093499UL, 0x26bb3955b588461fUL, 0xfae7e7a950447826UL); + TESTINST_RRR("slt", "$r19", "$r4", "$r17", 0x35bb27f64ebd7d62UL, 0x4a7d3941ebf88bc1UL, 0xcda32e4b1c1d5c4UL); + TESTINST_RRR("slt", "$r19", "$r28", "$r15", 0x29419b8261e40b99UL, 0xe7e9b059033afa7dUL, 0x1ea916293b1cc3ddUL); + TESTINST_RRR("slt", "$r31", "$r16", "$r16", 0xe0fb75047bc62c9aUL, 0xa634f6174dcced7dUL, 0xcca5a9d25b670e70UL); + TESTINST_RRR("slt", "$r4", "$r4", "$r10", 0x724ee03fb3fcdec8UL, 0xae2587f097065e2cUL, 0x65c69548f83dd0dfUL); + + /* ---------------- sltu rd, rj, rk ---------------- */ + TESTINST_RRR("sltu", "$r14", "$r10", "$r13", 0x1956e5498db3fb6eUL, 0x2d909abfec4490bdUL, 0xa7d554ebe591d5ccUL); + TESTINST_RRR("sltu", "$r6", "$r5", "$r18", 0xc34214447a064eb8UL, 0xad4413e45f0a226aUL, 0x4b09aab500b04bffUL); + TESTINST_RRR("sltu", "$r31", "$r17", "$r17", 0x86e16a1618a639c4UL, 0x87917b281cef8df0UL, 0xd543115a56dee48UL); + TESTINST_RRR("sltu", "$r20", "$r6", "$r25", 0x164fff47b8b23752UL, 0x9ad830d46b1660f6UL, 0xc5d72c146f4aba72UL); + TESTINST_RRR("sltu", "$r6", "$r26", "$r7", 0x1428360430b7c9b5UL, 0xc2052dc6eea5a53cUL, 0xda1a8e35dd060adfUL); + TESTINST_RRR("sltu", "$r19", "$r15", "$r26", 0xdfc9984966167604UL, 0xa9ea12b5a37dd492UL, 0x7a24be9fcf349afcUL); + TESTINST_RRR("sltu", "$r29", "$r26", "$r29", 0x5a3822db2cc26fc5UL, 0x5985f02e77511d80UL, 0x370f15cc98f2a6c1UL); + TESTINST_RRR("sltu", "$r7", "$r28", "$r16", 0xe4594ee2cc8c6d7UL, 0x177ac0014f5dd20UL, 0xde1724c7590a4908UL); + TESTINST_RRR("sltu", "$r8", "$r12", "$r4", 0x1df979e50aa0ed18UL, 0x5b410cd0985fce18UL, 0x9d3c39d61e29025dUL); + TESTINST_RRR("sltu", "$r30", "$r23", "$r25", 0x1cba022788d49d13UL, 0xd2b40941478ee865UL, 0xa503a74e41535830UL); + + /* ---------------- slti rd, rj, si12 ---------------- */ + TESTINST_RRI("slti", "$r15", "$r27", SI12, 0xe24c4ca567d1d5f4UL, 0xfef05a88adf4b892UL, 1913); + TESTINST_RRI("slti", "$r8", "$r31", SI12, 0xfba7284a8ab83b2dUL, 0xff63b80173f1e368UL, -738); + TESTINST_RRI("slti", "$r31", "$r31", SI12, 0xb4599a9fa734365aUL, 0x4327139de75dde1eUL, -1544); + TESTINST_RRI("slti", "$r5", "$r4", SI12, 0xa5572272e0c04a20UL, 0x87657c1b1699936bUL, 1529); + TESTINST_RRI("slti", "$r10", "$r28", SI12, 0x1260731618214410UL, 0xd0de0dfbafb7960aUL, 557); + TESTINST_RRI("slti", "$r5", "$r12", SI12, 0x4c6317772a4b06b0UL, 0x7a1d4eeb507d649bUL, -222); + TESTINST_RRI("slti", "$r4", "$r31", SI12, 0x23b4d62a21994afbUL, 0x85304cc393f6506bUL, 717); + TESTINST_RRI("slti", "$r18", "$r26", SI12, 0x67b6f5dbf6a0c55dUL, 0x451013f9a2337f9fUL, 730); + TESTINST_RRI("slti", "$r25", "$r8", SI12, 0xdb278cca57f1ad7bUL, 0x7371a60f5af6334bUL, 1193); + TESTINST_RRI("slti", "$r17", "$r24", SI12, 0xffa3ed31f9ea3a29UL, 0x1138e06e1a45c4f3UL, 329); + + /* ---------------- sltui rd, rj, si12 ---------------- */ + TESTINST_RRI("sltui", "$r13", "$r26", SI12, 0x62677116040aebffUL, 0xeedd6ccd0e5e2771UL, -462); + TESTINST_RRI("sltui", "$r24", "$r28", SI12, 0xef9500b68a87984aUL, 0xaf5922683f40599dUL, 1890); + TESTINST_RRI("sltui", "$r9", "$r6", SI12, 0x9996aa21d2b51922UL, 0xd5214fb275e738dcUL, -1538); + TESTINST_RRI("sltui", "$r19", "$r26", SI12, 0x3eb2777655f0f1c5UL, 0x98ed915860f0eb26UL, -215); + TESTINST_RRI("sltui", "$r8", "$r19", SI12, 0x5c44b5807c43724cUL, 0x63a068026b529b03UL, -780); + TESTINST_RRI("sltui", "$r19", "$r17", SI12, 0xf6926016cdbfacc1UL, 0xec04a9bcc8d1192aUL, -1041); + TESTINST_RRI("sltui", "$r26", "$r14", SI12, 0x542f05c795aa07c2UL, 0xb634bf537df4c4ceUL, 1653); + TESTINST_RRI("sltui", "$r8", "$r5", SI12, 0x371daf74e330ee8bUL, 0xedb0321c888ae22eUL, 441); + TESTINST_RRI("sltui", "$r25", "$r4", SI12, 0xba813c7acc8f5621UL, 0x8d5ce4750fe7603bUL, 678); + TESTINST_RRI("sltui", "$r17", "$r15", SI12, 0x199b641cefe0a0e2UL, 0x7ea0508a3fed3453UL, 2019); + + /* ---------------- nor rd, rj, rk ---------------- */ + TESTINST_RRR("nor", "$r14", "$r28", "$r9", 0xccf23cf02a48844dUL, 0x2608ea0069c4e9ddUL, 0x1c7a04255a2d13f8UL); + TESTINST_RRR("nor", "$r6", "$r30", "$r4", 0xbfcc3de6da2483beUL, 0xd24e9abca28d6cb5UL, 0xbb01b508523673c6UL); + TESTINST_RRR("nor", "$r6", "$r28", "$r13", 0x28dacd828d5736d7UL, 0xb365ff31474f736cUL, 0x593621c0f82b445cUL); + TESTINST_RRR("nor", "$r24", "$r16", "$r31", 0x5898010a4c6cf1bbUL, 0xecac6e093ba6146aUL, 0x50e6093f19b1194UL); + TESTINST_RRR("nor", "$r15", "$r7", "$r20", 0x2ddb1dea334fd92aUL, 0x401d7a663be0b31aUL, 0xb6c008973a85f779UL); + TESTINST_RRR("nor", "$r18", "$r31", "$r29", 0xc987982e1d91684UL, 0x181f20f581ed38f4UL, 0xefaa786e00a2e5b9UL); + TESTINST_RRR("nor", "$r19", "$r31", "$r13", 0x39e476d555cd20bcUL, 0xfb8fab5d35576d50UL, 0x71a92a8377c0f729UL); + TESTINST_RRR("nor", "$r25", "$r7", "$r5", 0x7f36d0c6d173e8c8UL, 0x181763a9f9350680UL, 0x5ec5099605d7d418UL); + TESTINST_RRR("nor", "$r30", "$r23", "$r23", 0x688e1d04976ac8dbUL, 0xd37b6d6a1c510287UL, 0x8670301ee2a715dfUL); + TESTINST_RRR("nor", "$r5", "$r23", "$r14", 0x71c4a211dd9262f4UL, 0xcb8a4aebc2c6c4f2UL, 0x84d79a5254447c9UL); + + /* ---------------- and rd, rj, rk ---------------- */ + TESTINST_RRR("and", "$r8", "$r14", "$r31", 0xbddf22c4109e20b5UL, 0xb2d25973efd1a8ffUL, 0x28b78b59dfe641e9UL); + TESTINST_RRR("and", "$r19", "$r23", "$r17", 0xb25e185c549f6661UL, 0xb6ccc215c2f17718UL, 0xf20669c51aee8ffeUL); + TESTINST_RRR("and", "$r30", "$r27", "$r23", 0xa7f4ad796393e12bUL, 0xefbcf405df3e7affUL, 0x548a0141e9fe1700UL); + TESTINST_RRR("and", "$r18", "$r31", "$r29", 0xa399c7f46c61d974UL, 0xe0fe8cca1cbab773UL, 0x49e680ddee7f666bUL); + TESTINST_RRR("and", "$r5", "$r26", "$r25", 0x1682ca17c11f90acUL, 0x4e9706cb2c885742UL, 0x250ff6304dd87d57UL); + TESTINST_RRR("and", "$r28", "$r14", "$r8", 0xcacf15e6ffad256fUL, 0x99527f4fa2aa8fb1UL, 0xcff546a883b63cfbUL); + TESTINST_RRR("and", "$r28", "$r9", "$r28", 0xc60423b9cf70d112UL, 0x2fb0db47f1d8f166UL, 0x1e9cec9d13e85210UL); + TESTINST_RRR("and", "$r18", "$r28", "$r5", 0x5059c37ee38d2f25UL, 0x74bf57d85d90af3aUL, 0x35479df0ebec9209UL); + TESTINST_RRR("and", "$r23", "$r25", "$r12", 0x18742ef4c73416beUL, 0x8b93e775860ef52bUL, 0xa909915f60a546d2UL); + TESTINST_RRR("and", "$r18", "$r17", "$r24", 0xadb2cc6aec909946UL, 0x3068f8b21d583e4cUL, 0xcf8aae1918f3a88eUL); + + /* ---------------- or rd, rj, rk ---------------- */ + TESTINST_RRR("or", "$r19", "$r28", "$r25", 0x46819825f87044c2UL, 0x65cb2cc7e5f5a720UL, 0x1fc0130146f13f76UL); + TESTINST_RRR("or", "$r8", "$r25", "$r4", 0x45083dd59c60e6feUL, 0x936ecfaeb4d51c95UL, 0xdc37c27c69024f6eUL); + TESTINST_RRR("or", "$r15", "$r16", "$r8", 0x516659e51cf19b26UL, 0x7589da0802d59510UL, 0x6b713c60390f3fbfUL); + TESTINST_RRR("or", "$r9", "$r15", "$r6", 0x1646568625c40022UL, 0xa68db9141a88850cUL, 0x756d912fbefef973UL); + TESTINST_RRR("or", "$r24", "$r9", "$r25", 0xda34c24d14fce443UL, 0x6ad9bf24481630b0UL, 0x2aefcdfa652395bUL); + TESTINST_RRR("or", "$r13", "$r9", "$r14", 0x900358ad1e848728UL, 0xa0e361b5b891a62eUL, 0xddfa0c1377ce01acUL); + TESTINST_RRR("or", "$r23", "$r16", "$r15", 0x27a55515d39aded9UL, 0xd0daf17f9cb0bf5aUL, 0xf44c4372982c4d74UL); + TESTINST_RRR("or", "$r20", "$r16", "$r16", 0x7045887bb8325d6fUL, 0xbac771cbb78dae04UL, 0x23f4928023125a5cUL); + TESTINST_RRR("or", "$r30", "$r5", "$r7", 0xcf609aa2057d1b98UL, 0x379641544fd1cd48UL, 0x5275ef34f265f01aUL); + TESTINST_RRR("or", "$r23", "$r4", "$r30", 0xc43fc1c750887406UL, 0x44a3229c33d1cd65UL, 0xceaa00084fc04912UL); + + /* ---------------- xor rd, rj, rk ---------------- */ + TESTINST_RRR("xor", "$r6", "$r19", "$r31", 0x18522418b59bf8aUL, 0x270a2ec823f26e39UL, 0x99ef76e6d4495ae3UL); + TESTINST_RRR("xor", "$r28", "$r20", "$r27", 0x57de83cac9dade15UL, 0xd39fdecdfd4ccb08UL, 0xc97b854adacdb4UL); + TESTINST_RRR("xor", "$r4", "$r29", "$r5", 0x9f7356fff2445f77UL, 0xc3c3a34d2c226b5aUL, 0x51abdd266816b94fUL); + TESTINST_RRR("xor", "$r14", "$r6", "$r28", 0xdd5ca0b5c6c45804UL, 0xa0ba047990ec0798UL, 0x89e6efd43651c28UL); + TESTINST_RRR("xor", "$r8", "$r19", "$r23", 0xc3e35cd44af166faUL, 0x6affcfe12104ccc7UL, 0x4adbb3601a07a1d9UL); + TESTINST_RRR("xor", "$r16", "$r5", "$r18", 0x685cdc5ca969c8e1UL, 0xd88d0e2a9900b8ebUL, 0xdd4dfbba723cde28UL); + TESTINST_RRR("xor", "$r20", "$r18", "$r24", 0x2362838018fa39beUL, 0xbbc8d438b24c037aUL, 0xe020a8456a45b667UL); + TESTINST_RRR("xor", "$r19", "$r23", "$r19", 0x637cae50fc0a1c95UL, 0x514b81a7227dd07eUL, 0x59a27a7f9c8481c3UL); + TESTINST_RRR("xor", "$r20", "$r16", "$r18", 0xb728dd7a443bcc8fUL, 0xe2de9bf67cdbdc0cUL, 0x26687435fbe4dbf6UL); + TESTINST_RRR("xor", "$r23", "$r14", "$r6", 0x744915919b52e27eUL, 0x16863c1d3e1cded7UL, 0x40ce8607349c380UL); + + /* ---------------- orn rd, rj, rk ---------------- */ + TESTINST_RRR("orn", "$r24", "$r9", "$r15", 0x39320ce9aa25fb73UL, 0xaaec06dc1b47cf43UL, 0x5fa36a558c884a69UL); + TESTINST_RRR("orn", "$r12", "$r4", "$r26", 0xa9c2abcbc14e3f3cUL, 0x7c87d633528d97b0UL, 0xe383c14e72ab8677UL); + TESTINST_RRR("orn", "$r20", "$r24", "$r28", 0xb117d8b0280738a2UL, 0x318fd949c3ba430fUL, 0xc9edab5116dc1582UL); + TESTINST_RRR("orn", "$r8", "$r25", "$r25", 0xb140441a36f8ededUL, 0xa26782a5e34d7addUL, 0x61bdd5b78d019958UL); + TESTINST_RRR("orn", "$r16", "$r18", "$r25", 0xcda0e2c1bce1eeecUL, 0xa4486eefd2c444d9UL, 0xbd007605c829cadcUL); + TESTINST_RRR("orn", "$r5", "$r28", "$r19", 0x8196fca50795a2aaUL, 0xec7f689a0d676560UL, 0xb4450418c4e1b333UL); + TESTINST_RRR("orn", "$r15", "$r14", "$r8", 0xaf1e2a9fe35ba4edUL, 0xd2207f86d89b890aUL, 0xfb31b9e37313a94dUL); + TESTINST_RRR("orn", "$r27", "$r14", "$r14", 0x1f24566bfa353160UL, 0xc4e17319c4766becUL, 0x29a3bbaaf6b49218UL); + TESTINST_RRR("orn", "$r17", "$r12", "$r31", 0xf5195a72c175fed7UL, 0x7aa8d4840359cbf6UL, 0xa1a42af83c82215bUL); + TESTINST_RRR("orn", "$r16", "$r20", "$r20", 0x76bb09b5b50705e2UL, 0x613fdcbd8c1eba2aUL, 0xfb1e04641f5da4ffUL); + + /* ---------------- andn rd, rj, rk ---------------- */ + TESTINST_RRR("andn", "$r19", "$r31", "$r17", 0xbcc81a9b2e349626UL, 0x5a38a8ef9c7e30e4UL, 0xcb490976d0652986UL); + TESTINST_RRR("andn", "$r10", "$r4", "$r10", 0x9acfa0cd6ea107fdUL, 0x1d9b572e8f6bedb7UL, 0x768fe778d2a543eaUL); + TESTINST_RRR("andn", "$r6", "$r12", "$r26", 0x949e36cff3b5decbUL, 0x56723f7285834fc9UL, 0xf6fa544d6cd57fa8UL); + TESTINST_RRR("andn", "$r16", "$r6", "$r4", 0x44a39d85132d6513UL, 0x3ca7f972b865b7ceUL, 0xf18819e4740308bcUL); + TESTINST_RRR("andn", "$r19", "$r26", "$r15", 0x856d1e3162c8fa2dUL, 0xc1ef79456be3885UL, 0x3c089064e60da1dUL); + TESTINST_RRR("andn", "$r17", "$r28", "$r9", 0x512a518c554f4b0aUL, 0x43454425b8b7755UL, 0xdc5dca386b49bdd7UL); + TESTINST_RRR("andn", "$r16", "$r16", "$r14", 0xa9c14796fec54f89UL, 0xe31928f90d2723a4UL, 0xcf2deaf4af11410aUL); + TESTINST_RRR("andn", "$r9", "$r4", "$r20", 0x51d79964a699ec8dUL, 0xe82135537ca93e7fUL, 0xcbadcb1dc4dd0ed0UL); + TESTINST_RRR("andn", "$r18", "$r25", "$r25", 0xeb546ce75bcba3f5UL, 0x953d86e2bd6b136dUL, 0x4914dbeee506d8adUL); + TESTINST_RRR("andn", "$r27", "$r15", "$r14", 0xc8b599a43b0b4683UL, 0x509638630676b88UL, 0x3d278ed22a112a89UL); + + /* ---------------- mul.w rd, rj, rk ---------------- */ + TESTINST_RRR("mul.w", "$r28", "$r12", "$r10", 0xf6fcce3e1c5b1598UL, 0xef2747013f911fe8UL, 0x14a216fd69537967UL); + TESTINST_RRR("mul.w", "$r13", "$r18", "$r24", 0x5e8a32c1e1e12aa4UL, 0x30e007bb8dd185faUL, 0x1a74dd893af9fb5aUL); + TESTINST_RRR("mul.w", "$r10", "$r20", "$r4", 0xf06f4af61b0e0c24UL, 0x1b3624a77f26275fUL, 0x653052ae3a1347dfUL); + TESTINST_RRR("mul.w", "$r23", "$r19", "$r10", 0xccb5485ae4605cddUL, 0x67c67c647eaf9e6cUL, 0xfb9b6c7b49ec10cfUL); + TESTINST_RRR("mul.w", "$r12", "$r30", "$r7", 0xc1f45aaf98ffcb39UL, 0x906f0c08c0bae02eUL, 0xdf6cf5c05b5f2d34UL); + TESTINST_RRR("mul.w", "$r27", "$r12", "$r12", 0x9545c6d9f812c0d9UL, 0xacd016cb69e028b3UL, 0x2b68e3a280d9c0b6UL); + TESTINST_RRR("mul.w", "$r28", "$r7", "$r19", 0x4cf68a9590da3da5UL, 0x70ed8b9b03a6325dUL, 0x1125383d12dad118UL); + TESTINST_RRR("mul.w", "$r20", "$r12", "$r20", 0x10683d31408fb4c5UL, 0x9ef4ea79672ce58dUL, 0x960a13776923d3e4UL); + TESTINST_RRR("mul.w", "$r26", "$r19", "$r28", 0xbf8a20b69fa4357bUL, 0xf3e9b53a654e3cbfUL, 0x20afdeb5a4b4e1c9UL); + TESTINST_RRR("mul.w", "$r13", "$r26", "$r25", 0x78f637d350c666bfUL, 0xff742d96dc73e9e9UL, 0x94a3289b55744707UL); + + /* ---------------- mulh.w rd, rj, rk ---------------- */ + TESTINST_RRR("mulh.w", "$r18", "$r25", "$r14", 0xa988161162710d96UL, 0x37443c6f5d0625eaUL, 0x94da379219de8576UL); + TESTINST_RRR("mulh.w", "$r13", "$r16", "$r18", 0x246298a54a25030aUL, 0x33643ceed35cff64UL, 0xc25702631b42c849UL); + TESTINST_RRR("mulh.w", "$r20", "$r5", "$r15", 0x3b606ea986dcf13eUL, 0x269dcd16567786d2UL, 0x96c0983df45d5c03UL); + TESTINST_RRR("mulh.w", "$r19", "$r19", "$r25", 0xab8fc1c922ba3e7aUL, 0xdec5bddca513d198UL, 0xf05e814d67d43f5aUL); + TESTINST_RRR("mulh.w", "$r15", "$r28", "$r16", 0x82fcfa24449231baUL, 0xf37548fee13133f3UL, 0x256188ef96bb3d23UL); + TESTINST_RRR("mulh.w", "$r24", "$r9", "$r27", 0x858ddeb68e948058UL, 0xffb64d62e202462UL, 0xe07a6dae07f46c11UL); + TESTINST_RRR("mulh.w", "$r23", "$r20", "$r14", 0x7713930e419350ffUL, 0xd5d72e6efb86e428UL, 0x49f87e78ddcc8400UL); + TESTINST_RRR("mulh.w", "$r28", "$r20", "$r25", 0x552a9b7f3fa0c48aUL, 0xd616afd20f193287UL, 0xbcd2ae680b131cd2UL); + TESTINST_RRR("mulh.w", "$r16", "$r19", "$r12", 0x94b154fc890497c3UL, 0xd8217f47e4257a7cUL, 0xb47bb0e4cff83cbfUL); + TESTINST_RRR("mulh.w", "$r23", "$r23", "$r6", 0xafb7fddb344318fUL, 0xaafee418c4267e18UL, 0x1763f686cd41d46eUL); + + /* ---------------- mulh.wu rd, rj, rk ---------------- */ + TESTINST_RRR("mulh.wu", "$r18", "$r17", "$r8", 0xa92fa2817b19786cUL, 0xaf23e3d2092f080cUL, 0x771c36ac19259f2aUL); + TESTINST_RRR("mulh.wu", "$r16", "$r13", "$r8", 0xf4a7b7abe5f3831aUL, 0xe8beff7f8f4330cdUL, 0x38cebbe3d1af354dUL); + TESTINST_RRR("mulh.wu", "$r8", "$r23", "$r29", 0x6ca8c7d8ec316750UL, 0xc3a59754c752c3a5UL, 0x4b77e251de7f45f1UL); + TESTINST_RRR("mulh.wu", "$r20", "$r25", "$r30", 0x6faa5d1372250132UL, 0x68734123142c820aUL, 0xf7b4bdf342e2017UL); + TESTINST_RRR("mulh.wu", "$r31", "$r18", "$r19", 0x8cfa67422c1c5d5UL, 0xb48ac9531206cef2UL, 0x9f9f5d925c5cf738UL); + TESTINST_RRR("mulh.wu", "$r25", "$r7", "$r27", 0x85aa17ff1b3699baUL, 0x9a7aeabb800edb53UL, 0x4eb1ec754c7cdb59UL); + TESTINST_RRR("mulh.wu", "$r19", "$r4", "$r28", 0x821038d7fb43149cUL, 0x44cd20261f5ae87eUL, 0xf9d8916e8eb4ecb1UL); + TESTINST_RRR("mulh.wu", "$r30", "$r23", "$r28", 0xef34433557594fb3UL, 0x2f9401c8064c8ca0UL, 0x5de6287c2a56e507UL); + TESTINST_RRR("mulh.wu", "$r13", "$r6", "$r17", 0xd6b38c427ad5f669UL, 0xbe04ea8987b20188UL, 0x52cee1d144e3c134UL); + TESTINST_RRR("mulh.wu", "$r26", "$r19", "$r17", 0x2ea15eee9429b8a0UL, 0x43598be92000d9f7UL, 0x6364cfeb707aba6cUL); + + /* ---------------- mul.d rd, rj, rk ---------------- */ + TESTINST_RRR("mul.d", "$r19", "$r4", "$r10", 0xf0235819cf1bab1fUL, 0xdc7a0086353cfddfUL, 0x6f18aec465b5af87UL); + TESTINST_RRR("mul.d", "$r19", "$r31", "$r20", 0x24d7526c5e4669e3UL, 0xaab7dd46e5af2493UL, 0xd5df6eea42205e25UL); + TESTINST_RRR("mul.d", "$r15", "$r20", "$r4", 0x3740ba48d64cc478UL, 0xcfeffb7c35a98382UL, 0xeab050fc9bdb3c52UL); + TESTINST_RRR("mul.d", "$r29", "$r7", "$r25", 0xe8858552c0e8eac8UL, 0xb65ed231c27efb70UL, 0xbb753de59e4ca3d1UL); + TESTINST_RRR("mul.d", "$r5", "$r30", "$r4", 0xc4f17df5c983317dUL, 0xb2af9e86d443d8ceUL, 0xf9e3c6d18372d0d3UL); + TESTINST_RRR("mul.d", "$r25", "$r17", "$r29", 0xa09d11d50056b350UL, 0x6609b14ca65f9affUL, 0x692def5a14a3278cUL); + TESTINST_RRR("mul.d", "$r13", "$r15", "$r26", 0xd528ed047af75775UL, 0x896658fe826a0817UL, 0xa456f53d5f2760b1UL); + TESTINST_RRR("mul.d", "$r23", "$r9", "$r7", 0x5d33f63ce8637a69UL, 0xad38922264c721ffUL, 0xe0514fea4ee52acaUL); + TESTINST_RRR("mul.d", "$r25", "$r23", "$r30", 0x5d74125f059662f3UL, 0xa708100731e88710UL, 0x739e4de71fec92e0UL); + TESTINST_RRR("mul.d", "$r26", "$r18", "$r30", 0x110a94ffa2e12f32UL, 0x1b770d6c423d4f8UL, 0x38bf04d66f91531aUL); + + /* ---------------- mulh.d rd, rj, rk ---------------- */ + TESTINST_RRR("mulh.d", "$r5", "$r15", "$r12", 0xd72f46d42ca4db6bUL, 0xe1771af0e69e49a6UL, 0xd796f52fbd01a4bbUL); + TESTINST_RRR("mulh.d", "$r28", "$r18", "$r14", 0x904e699bcbe32b08UL, 0x9b5b69b4d817779cUL, 0xa02ca97cc4e37f13UL); + TESTINST_RRR("mulh.d", "$r6", "$r12", "$r7", 0xc75e1065b8dbcd34UL, 0xec7d8ae6a65f2fd3UL, 0xb7e32b52f40bc8efUL); + TESTINST_RRR("mulh.d", "$r5", "$r25", "$r19", 0x7b2e04c0c2f95e4fUL, 0x9a5037ff200e982aUL, 0xf862c0c6425ff2bcUL); + TESTINST_RRR("mulh.d", "$r14", "$r8", "$r23", 0x5fd7ae31ad151daaUL, 0x444243172f499ec0UL, 0x9003c8aeabc39884UL); + TESTINST_RRR("mulh.d", "$r7", "$r23", "$r13", 0xbc21ca397041a2bUL, 0xe886455c8737b2caUL, 0xd5ccec2f631a1d60UL); + TESTINST_RRR("mulh.d", "$r26", "$r16", "$r13", 0xd3894783f187ee9cUL, 0xa7a6c4abeda9a22cUL, 0x4375f7e49ed91384UL); + TESTINST_RRR("mulh.d", "$r17", "$r31", "$r16", 0xa93bd0cf9137745eUL, 0x3a1b2b922b7645f1UL, 0x7e33f64c19972ae3UL); + TESTINST_RRR("mulh.d", "$r20", "$r19", "$r8", 0xda9224c9ab488939UL, 0xb7f5978bf509641dUL, 0xf6fcd615333c30c0UL); + TESTINST_RRR("mulh.d", "$r12", "$r17", "$r20", 0xcdbd51e35d5c1df3UL, 0x254bd8eaadc946feUL, 0x9de163435088598bUL); + + /* ---------------- mulh.du rd, rj, rk ---------------- */ + TESTINST_RRR("mulh.du", "$r25", "$r28", "$r29", 0xf7ef0dbf1bf7938aUL, 0xd267d11ae422f604UL, 0x89d6fd68226e13dUL); + TESTINST_RRR("mulh.du", "$r7", "$r28", "$r24", 0xe568cf4a6d6bc199UL, 0x6efedad6fbe95f2aUL, 0xdf55853ed22d024eUL); + TESTINST_RRR("mulh.du", "$r25", "$r8", "$r9", 0xbf7c0226b0c2072UL, 0x794fd44a65c65ebbUL, 0xa0391c3fa3cf1e5cUL); + TESTINST_RRR("mulh.du", "$r30", "$r16", "$r7", 0x3df3f3b3ff17f61aUL, 0xcadd1f7e7150ad7bUL, 0xbdc63d3f762cf02dUL); + TESTINST_RRR("mulh.du", "$r6", "$r10", "$r19", 0x6601e05fc5f801cbUL, 0xbc10a70104969251UL, 0x2f50a00036fb7821UL); + TESTINST_RRR("mulh.du", "$r17", "$r9", "$r5", 0xffabc0cbdc8aa7b0UL, 0x5288bc60da558afbUL, 0x2795644a58b2668fUL); + TESTINST_RRR("mulh.du", "$r26", "$r8", "$r15", 0x68b64c997f561b59UL, 0xe2ed2375e64b1bf3UL, 0xe1033e583092ad96UL); + TESTINST_RRR("mulh.du", "$r10", "$r13", "$r30", 0x6450ec488eb4753bUL, 0x4287b82860366cf8UL, 0x1c15ed3f051fe8cUL); + TESTINST_RRR("mulh.du", "$r24", "$r13", "$r15", 0x1169fa9dd6f8273dUL, 0x6fd2cdb39e5d1fa3UL, 0xff0526e206880684UL); + TESTINST_RRR("mulh.du", "$r8", "$r9", "$r10", 0xe9cb6416a1492fbfUL, 0xaf89960e18913df0UL, 0x76b4251409ff9830UL); + + /* ---------------- mulw.d.w rd, rj, rk ---------------- */ + TESTINST_RRR("mulw.d.w", "$r6", "$r31", "$r7", 0x50ce021eb3b3f3a4UL, 0xb859e7514e4c4d7cUL, 0x372cb1e2b3200f36UL); + TESTINST_RRR("mulw.d.w", "$r31", "$r7", "$r28", 0x925642fa7e2de9abUL, 0x61404b6550238cebUL, 0x75ed502242ed0430UL); + TESTINST_RRR("mulw.d.w", "$r19", "$r16", "$r10", 0xef82de697f7239fUL, 0xdf1c56dfe5c0e48dUL, 0xbc7e740fe1b1dc25UL); + TESTINST_RRR("mulw.d.w", "$r29", "$r12", "$r27", 0xc104a400fa0d1dbfUL, 0x2aa34e8a5fad6c6fUL, 0x7f8e4d23644b0d4dUL); + TESTINST_RRR("mulw.d.w", "$r25", "$r16", "$r25", 0x5b8ff9172c849fb9UL, 0x843f90380af6f2afUL, 0x12f7f8780cb8bfe0UL); + TESTINST_RRR("mulw.d.w", "$r13", "$r13", "$r7", 0x6bba79a88056d891UL, 0x6757a43d403285abUL, 0x2d2ea385888c2664UL); + TESTINST_RRR("mulw.d.w", "$r12", "$r8", "$r23", 0x5c96927dcf1fb14eUL, 0x2b3767b9e9029d4bUL, 0x252bbcc66b5d834bUL); + TESTINST_RRR("mulw.d.w", "$r6", "$r13", "$r10", 0x5fa5a8b36e8ec3e0UL, 0xcbca4b4d518b9466UL, 0xabdf2ec674f70c5bUL); + TESTINST_RRR("mulw.d.w", "$r16", "$r15", "$r23", 0x5b94eeb9c3c9fa01UL, 0x5c4ebef486f83b43UL, 0x73f3781c3a1e9216UL); + TESTINST_RRR("mulw.d.w", "$r6", "$r31", "$r7", 0xbc263312a123caedUL, 0xe9aa8545d3a99a97UL, 0x71b5dbacf4f7f2b8UL); + + /* ---------------- mulw.d.wu rd, rj, rk ---------------- */ + TESTINST_RRR("mulw.d.wu", "$r14", "$r17", "$r30", 0x94452e0d7eb407b7UL, 0x629b1902a484a77dUL, 0x474359ca7f7165edUL); + TESTINST_RRR("mulw.d.wu", "$r26", "$r7", "$r5", 0xae9771f0d59319b3UL, 0x1bcb563dea8f3a3fUL, 0x759334cc2d543103UL); + TESTINST_RRR("mulw.d.wu", "$r25", "$r28", "$r27", 0x27ca0bf2d6cd2699UL, 0x5a015da9b52ffc64UL, 0x482a4fa5b5625914UL); + TESTINST_RRR("mulw.d.wu", "$r8", "$r4", "$r16", 0x22f61239dad7bc92UL, 0xe8c9964b31b0e199UL, 0x99fdef421aa22322UL); + TESTINST_RRR("mulw.d.wu", "$r29", "$r17", "$r15", 0xcc5eec6e4f2b5fdbUL, 0x2d08ada074c2ac37UL, 0x8967ce1cd4c2362eUL); + TESTINST_RRR("mulw.d.wu", "$r27", "$r23", "$r16", 0x2d057e2ead214d6cUL, 0x987e7a10a0f3ee5dUL, 0xd515e2a2f06be633UL); + TESTINST_RRR("mulw.d.wu", "$r15", "$r19", "$r12", 0xce24943d6fe20263UL, 0xd6bbdcb20d76de15UL, 0xcc277905bc41da62UL); + TESTINST_RRR("mulw.d.wu", "$r4", "$r4", "$r19", 0xe37942a26dc0e882UL, 0x6a30fb04c3b5431fUL, 0x4c937bed67cb6c73UL); + TESTINST_RRR("mulw.d.wu", "$r7", "$r12", "$r9", 0xbdebe7a7b19b7dc0UL, 0x3f6e790fb24d19f1UL, 0x7a19c4fdd0d29f3eUL); + TESTINST_RRR("mulw.d.wu", "$r31", "$r30", "$r28", 0x690687056e169108UL, 0xa8abab5bf1d42538UL, 0x636a31884ca1e99UL); + + /* ---------------- div.w rd, rj, rk ---------------- */ + TESTINST_RRR("div.w", "$r13", "$r28", "$r23", 0x16546290UL, 0x627aa138UL, 0x534168cUL); + TESTINST_RRR("div.w", "$r28", "$r19", "$r9", 0xffffffffbe03930dUL, 0x223d0ec7UL, 0xffffffff8404aa67UL); + TESTINST_RRR("div.w", "$r18", "$r19", "$r30", 0xffffffffac214649UL, 0xffffffff8019c3b7UL, 0xffffffff871cbf90UL); + TESTINST_RRR("div.w", "$r24", "$r25", "$r7", 0xffffffffa144ed80UL, 0x1c4370c7UL, 0x4695aa29UL); + TESTINST_RRR("div.w", "$r9", "$r27", "$r4", 0x3ae8b7c7UL, 0xfffffffff3a6ebb2UL, 0x181d816aUL); + TESTINST_RRR("div.w", "$r28", "$r15", "$r7", 0xffffffff956a7de4UL, 0xffffffff9aab217bUL, 0x3b061b78UL); + TESTINST_RRR("div.w", "$r25", "$r24", "$r12", 0x3c6167d4UL, 0x2673145eUL, 0x1d5e391UL); + TESTINST_RRR("div.w", "$r23", "$r15", "$r4", 0x3e0820eeUL, 0x42793c51UL, 0x286cdb51UL); + TESTINST_RRR("div.w", "$r28", "$r16", "$r30", 0xffffffffcf8fd242UL, 0x2a76141eUL, 0x2429a52UL); + TESTINST_RRR("div.w", "$r29", "$r8", "$r18", 0x74991388UL, 0xffffffffd594ef43UL, 0x6d3f9603UL); + + /* ---------------- mod.w rd, rj, rk ---------------- */ + TESTINST_RRR("mod.w", "$r8", "$r13", "$r14", 0x5cc9e6dbUL, 0xfffffffff7327c6dUL, 0x23eef833UL); + TESTINST_RRR("mod.w", "$r25", "$r24", "$r25", 0x539195e4UL, 0xffffffffd94f10c8UL, 0x2c5786d9UL); + TESTINST_RRR("mod.w", "$r10", "$r16", "$r23", 0xffffffff9b15f725UL, 0x448a831dUL, 0xffffffffd5d7d92bUL); + TESTINST_RRR("mod.w", "$r6", "$r5", "$r29", 0x1794d969UL, 0x2fba86b0UL, 0x40e6ab6bUL); + TESTINST_RRR("mod.w", "$r16", "$r14", "$r29", 0x6a503328UL, 0xffffffffdf0b2ad2UL, 0xffffffff90dc29c6UL); + TESTINST_RRR("mod.w", "$r30", "$r14", "$r18", 0xffffffffc7670acdUL, 0x53f3b34fUL, 0xffffffff84b62159UL); + TESTINST_RRR("mod.w", "$r31", "$r6", "$r18", 0xffffffff98334c95UL, 0xfffffffff241ffd8UL, 0xffffffffa73314aaUL); + TESTINST_RRR("mod.w", "$r12", "$r8", "$r4", 0xffffffffd9f19db4UL, 0xffffffffc89f9796UL, 0xffffffffaa8e2a3bUL); + TESTINST_RRR("mod.w", "$r23", "$r12", "$r4", 0xffffffff94e93220UL, 0xfffffffffea1587aUL, 0xffffffffb88b2b87UL); + TESTINST_RRR("mod.w", "$r13", "$r9", "$r18", 0xf718c0UL, 0xffffffffe264a3a5UL, 0x2f29ef3UL); + + /* ---------------- div.wu rd, rj, rk ---------------- */ + TESTINST_RRR("div.wu", "$r24", "$r5", "$r16", 0xddf57c5UL, 0x6b1a808cUL, 0x576fe70UL); + TESTINST_RRR("div.wu", "$r26", "$r7", "$r9", 0x665e82ffUL, 0x344d887fUL, 0x7fd6d6d8UL); + TESTINST_RRR("div.wu", "$r13", "$r18", "$r15", 0xffffffffe82e2cf8UL, 0x7c66b628UL, 0x305c899UL); + TESTINST_RRR("div.wu", "$r15", "$r14", "$r7", 0xb06b1fUL, 0x56016282UL, 0x95a8701UL); + TESTINST_RRR("div.wu", "$r19", "$r12", "$r31", 0xffffffffb3a487d1UL, 0xffffffffbe2fe16eUL, 0xffffffff8dc0ff7fUL); + TESTINST_RRR("div.wu", "$r6", "$r10", "$r20", 0x1bb491e9UL, 0x64e382eUL, 0x5977f9f1UL); + TESTINST_RRR("div.wu", "$r9", "$r29", "$r28", 0x498c3349UL, 0x14cbb257UL, 0xffffffff95165a4aUL); + TESTINST_RRR("div.wu", "$r10", "$r29", "$r15", 0xffffffffbb3f9c5dUL, 0x2755057dUL, 0x14039cc4UL); + TESTINST_RRR("div.wu", "$r24", "$r31", "$r7", 0xffffffffe5a9a3cdUL, 0xffffffffa1f84b49UL, 0xffffffffe45bd3b9UL); + TESTINST_RRR("div.wu", "$r23", "$r18", "$r6", 0x54e07e9fUL, 0xffffffffaccbdd8cUL, 0xfffffffff3729b57UL); + + /* ---------------- mod.wu rd, rj, rk ---------------- */ + TESTINST_RRR("mod.wu", "$r5", "$r20", "$r18", 0xffffffffa1ce2e4eUL, 0xffffffffdbeb0e2dUL, 0x70157135UL); + TESTINST_RRR("mod.wu", "$r14", "$r30", "$r17", 0x10e75d07UL, 0x39c3080UL, 0x1658d87bUL); + TESTINST_RRR("mod.wu", "$r28", "$r7", "$r4", 0x6df194dbUL, 0x55fae7c9UL, 0xffffffff9a87c1efUL); + TESTINST_RRR("mod.wu", "$r6", "$r14", "$r10", 0xffffffff8feb78ccUL, 0xffffffffe5032316UL, 0x18ab441eUL); + TESTINST_RRR("mod.wu", "$r13", "$r15", "$r9", 0xffffffffbb28952cUL, 0x2d43f57dUL, 0x2dfbf584UL); + TESTINST_RRR("mod.wu", "$r7", "$r30", "$r5", 0x9bfb2cfUL, 0x6595d7b3UL, 0xfffffffffffd1025UL); + TESTINST_RRR("mod.wu", "$r10", "$r9", "$r16", 0x342671c6UL, 0xfffffffff1ff8be3UL, 0xfffffffffaea052bUL); + TESTINST_RRR("mod.wu", "$r16", "$r16", "$r23", 0xffffffffc0356055UL, 0x2ac1f414UL, 0x4a75c890UL); + TESTINST_RRR("mod.wu", "$r19", "$r8", "$r7", 0xfffffffff8ed6580UL, 0x5fef460eUL, 0x68eedef2UL); + TESTINST_RRR("mod.wu", "$r29", "$r25", "$r25", 0xffffffff9ea76eb0UL, 0xffffffff818904b9UL, 0xffffffffe92f4f30UL); + + /* ---------------- div.d rd, rj, rk ---------------- */ + TESTINST_RRR("div.d", "$r7", "$r17", "$r7", 0xc8f25fb958f2d668UL, 0x74a14cbaa00fdeaUL, 0xcf95f3de82ceb015UL); + TESTINST_RRR("div.d", "$r10", "$r19", "$r12", 0x9ead8a6f6ea63534UL, 0xaf80d344d48e6cd5UL, 0xe1f40f759cbfe0e7UL); + TESTINST_RRR("div.d", "$r23", "$r28", "$r28", 0x35481a5285093e04UL, 0xfd79e3c19b697fa8UL, 0x6ffab603b9e1b7fbUL); + TESTINST_RRR("div.d", "$r30", "$r25", "$r4", 0x3eacf1d695a34b95UL, 0xfbff957ab051d494UL, 0x670724b8930d53fUL); + TESTINST_RRR("div.d", "$r31", "$r29", "$r6", 0xce8d3df48871d655UL, 0xf351f7f35927e83dUL, 0x93a3085686f4101fUL); + TESTINST_RRR("div.d", "$r17", "$r23", "$r8", 0xfc913f8b14dda5a5UL, 0x1f938af81988deUL, 0x9d021a9f06b46953UL); + TESTINST_RRR("div.d", "$r7", "$r29", "$r15", 0x4593da2923f2ac5bUL, 0x11fc5a958b182a55UL, 0x2edafaf2857c6697UL); + TESTINST_RRR("div.d", "$r13", "$r31", "$r27", 0x97236145608dd8c3UL, 0x1f0ee96afd23910bUL, 0xe35e4d5efd2204d3UL); + TESTINST_RRR("div.d", "$r13", "$r26", "$r14", 0x2c057bd222f216dfUL, 0x1e006853720971c3UL, 0x81e35a993e6a15b5UL); + TESTINST_RRR("div.d", "$r5", "$r9", "$r4", 0x93c0d85c66f2c5abUL, 0x774fbe894b2ed067UL, 0x2c46387d55732742UL); + + /* ---------------- mod.d rd, rj, rk ---------------- */ + TESTINST_RRR("mod.d", "$r19", "$r26", "$r16", 0x63304d2181f4a4daUL, 0x9ed948849ddee475UL, 0x18a360d3ab980398UL); + TESTINST_RRR("mod.d", "$r27", "$r23", "$r13", 0xf7156e74db7a8d92UL, 0x324e7001287ce2a8UL, 0x3cc7524686bed31cUL); + TESTINST_RRR("mod.d", "$r8", "$r26", "$r19", 0x7bda37a222135803UL, 0x1daf8fd66ff987edUL, 0x334631279104fc3bUL); + TESTINST_RRR("mod.d", "$r25", "$r15", "$r7", 0xd1a0f45d5b463d53UL, 0x9c4cd7bef3bf0712UL, 0x420a5c702006f3ccUL); + TESTINST_RRR("mod.d", "$r25", "$r18", "$r7", 0x93487a905cb08a75UL, 0x8c79cafa8bebf0a8UL, 0x1478409d192c144bUL); + TESTINST_RRR("mod.d", "$r8", "$r27", "$r27", 0x8756a1690dd7896dUL, 0x35273279ea76319fUL, 0xc5292f2331abc6ddUL); + TESTINST_RRR("mod.d", "$r15", "$r10", "$r24", 0xf8c476adbc930802UL, 0x8b5832bcd0f6c87eUL, 0x6cba54a72da38702UL); + TESTINST_RRR("mod.d", "$r27", "$r7", "$r6", 0x2387015bddb2c076UL, 0x231e30de7a72ad90UL, 0x81f1285973e8dc11UL); + TESTINST_RRR("mod.d", "$r16", "$r9", "$r12", 0x3388d23c07feb1daUL, 0xe8c01f744b310474UL, 0xa29071d702959009UL); + TESTINST_RRR("mod.d", "$r13", "$r10", "$r20", 0xbd45a261f8de4fe4UL, 0x6fb0a8c9a2681a8eUL, 0x2f1b7055cf2409ecUL); + + /* ---------------- div.du rd, rj, rk ---------------- */ + TESTINST_RRR("div.du", "$r17", "$r10", "$r24", 0x4d363fd48a626fdaUL, 0x7ccdeeaa6c24885fUL, 0xfcc68e72f59750aeUL); + TESTINST_RRR("div.du", "$r20", "$r20", "$r10", 0x808fa5cb6a75fd6fUL, 0xf3f712970031005UL, 0x1709a8adab2fa578UL); + TESTINST_RRR("div.du", "$r15", "$r14", "$r19", 0xcd3107423486c8feUL, 0xf6bc56277282cd14UL, 0x961ac833f00f3e3UL); + TESTINST_RRR("div.du", "$r4", "$r29", "$r18", 0xa0bfc2fc5b35fa79UL, 0x2b28c09aa5f12845UL, 0xed44da2fdf5dce00UL); + TESTINST_RRR("div.du", "$r4", "$r6", "$r25", 0x1fc6e23fd0f09ed0UL, 0xeaa71d9fb42223caUL, 0x45689545e60381cUL); + TESTINST_RRR("div.du", "$r10", "$r8", "$r12", 0xa3710c512d4c006cUL, 0xc011778733c50a6eUL, 0xb44475ee048d8167UL); + TESTINST_RRR("div.du", "$r29", "$r4", "$r29", 0x46d27abff0da1972UL, 0x17a4e863a182dcd0UL, 0x59a7b82980ac6a6dUL); + TESTINST_RRR("div.du", "$r15", "$r8", "$r30", 0x68120919dbbd9b19UL, 0x4c296c89a6f7a6dfUL, 0x9d9166c1cd0eecfaUL); + TESTINST_RRR("div.du", "$r7", "$r18", "$r17", 0xd2389cb7af92be89UL, 0x9a1f65b2c59cfda3UL, 0xe316cf92f8f0574fUL); + TESTINST_RRR("div.du", "$r15", "$r25", "$r17", 0x49651d72d87da955UL, 0xd22c499c27908743UL, 0x8d824b01058ecb8UL); + + /* ---------------- mod.du rd, rj, rk ---------------- */ + TESTINST_RRR("mod.du", "$r26", "$r8", "$r23", 0xb0bd66f10c34fe23UL, 0x5eb9b775d83b4893UL, 0x8867d4b638f2622UL); + TESTINST_RRR("mod.du", "$r8", "$r10", "$r25", 0xe236349cd47eeb11UL, 0x119102fd7b236a81UL, 0x8fd72a09e4fb45fUL); + TESTINST_RRR("mod.du", "$r25", "$r4", "$r5", 0x1b669725a0c3a970UL, 0x175359099c87b83UL, 0xcad295c79f1d835aUL); + TESTINST_RRR("mod.du", "$r7", "$r28", "$r20", 0x7117e70798869df4UL, 0xe35b93aa0c37fe97UL, 0x741084dead7970d0UL); + TESTINST_RRR("mod.du", "$r30", "$r24", "$r9", 0xc4d432a8ce91f693UL, 0x77c03aceb2ea6b45UL, 0xb8cd7773fb72b7caUL); + TESTINST_RRR("mod.du", "$r23", "$r9", "$r28", 0x13f1f3e1891b6b73UL, 0x9811699becce53a9UL, 0xed15e264f0c39b88UL); + TESTINST_RRR("mod.du", "$r13", "$r12", "$r14", 0xb8b22bcb0cb970e8UL, 0x16cdecd7c0091cd2UL, 0x4fcab819ebadbdfdUL); + TESTINST_RRR("mod.du", "$r30", "$r17", "$r12", 0xbf96226d2de1240dUL, 0x9fe4b2c7557d6b9aUL, 0x3668e581a5de6efdUL); + TESTINST_RRR("mod.du", "$r14", "$r4", "$r6", 0x9bc8f8a69a7f55c2UL, 0x530a9c5a21769babUL, 0x2805bef72d33cbd5UL); + TESTINST_RRR("mod.du", "$r23", "$r28", "$r12", 0x82a854f86e642cbaUL, 0xdd0fd63485d6c3dUL, 0x56b21f15cb9d2bf2UL); + + /* ---------------- alsl.w rd, rj, rk, sa2 ---------------- */ + TESTINST_RRRI("alsl.w", "$r18", "$r10", "$r15", SA2_1, 0xafb40df16156827bUL, 0x9b0b86116a0d89cbUL, 0x80086c066ea6842bUL, 2); + TESTINST_RRRI("alsl.w", "$r24", "$r5", "$r4", SA2_1, 0xb8b63b8205a919dfUL, 0x7319260322fa2d6dUL, 0x1efce6644a51ebf9UL, 2); + TESTINST_RRRI("alsl.w", "$r24", "$r5", "$r27", SA2_1, 0xb4f0fd355869e078UL, 0x26abeea20b7d1ac1UL, 0x4108f7f27e321c8fUL, 2); + TESTINST_RRRI("alsl.w", "$r24", "$r29", "$r10", SA2_1, 0x4b948e9a0b82df22UL, 0x11893c9dd43d0112UL, 0x51a030165671a055UL, 1); + TESTINST_RRRI("alsl.w", "$r5", "$r10", "$r18", SA2_1, 0xfc253ac9e2b55590UL, 0x2682507563a85b07UL, 0xa467083f66457d1dUL, 1); + TESTINST_RRRI("alsl.w", "$r20", "$r13", "$r10", SA2_1, 0x76e8c346a721cdabUL, 0x548f2762bfb1bc01UL, 0xa6e0d27e62dcc594UL, 3); + TESTINST_RRRI("alsl.w", "$r16", "$r6", "$r24", SA2_1, 0x39f77b88fc3b663UL, 0x281818bf4a36a7e5UL, 0x86cd2a06ef475a61UL, 3); + TESTINST_RRRI("alsl.w", "$r14", "$r18", "$r9", SA2_1, 0x8a58ea94346ff16UL, 0x4ff191f91397adeaUL, 0x4cda359b03c97a53UL, 4); + TESTINST_RRRI("alsl.w", "$r8", "$r6", "$r29", SA2_1, 0xae0bfa182556c725UL, 0xda179bc2f41d03d3UL, 0x1d23e4da08af7978UL, 1); + TESTINST_RRRI("alsl.w", "$r31", "$r26", "$r30", SA2_1, 0xd6af9fcd7ffd8e75UL, 0x3e88bb77d6665633UL, 0x23a0414c69b804c1UL, 1); + + /* ---------------- alsl.wu rd, rj, rk, sa2 ---------------- */ + TESTINST_RRRI("alsl.wu", "$r20", "$r24", "$r18", SA2_1, 0xc714872ff3c39370UL, 0xcaea31ddabb275f9UL, 0xedbfc2cedca8eb7aUL, 2); + TESTINST_RRRI("alsl.wu", "$r13", "$r26", "$r15", SA2_1, 0xe1a0ba1adcb75aa4UL, 0x8adbed432acf321aUL, 0xeae447eaa60bb142UL, 3); + TESTINST_RRRI("alsl.wu", "$r4", "$r17", "$r27", SA2_1, 0xb153f9ecea23068cUL, 0xd2066b089c9499a3UL, 0x36ed3c96ac4751aaUL, 3); + TESTINST_RRRI("alsl.wu", "$r20", "$r10", "$r4", SA2_1, 0x8fb2705357e98d66UL, 0xd353329585fc71ddUL, 0x739237ed6a677f00UL, 4); + TESTINST_RRRI("alsl.wu", "$r31", "$r12", "$r23", SA2_1, 0x6caac60acd9bc6f4UL, 0xc87131b9171530dfUL, 0x39c8e321a6e131c0UL, 2); + TESTINST_RRRI("alsl.wu", "$r13", "$r14", "$r19", SA2_1, 0xd2c7072036f54e45UL, 0x35ea1627556f8f98UL, 0x97054728433042d3UL, 2); + TESTINST_RRRI("alsl.wu", "$r7", "$r14", "$r5", SA2_1, 0x5a0f1fae80105d64UL, 0xd300b74879e33a53UL, 0x3a1e7389d0669d4cUL, 1); + TESTINST_RRRI("alsl.wu", "$r28", "$r4", "$r9", SA2_1, 0xcd7fd8389b4f4062UL, 0xad1830d644c205e7UL, 0xced1c031d73f9087UL, 1); + TESTINST_RRRI("alsl.wu", "$r13", "$r9", "$r29", SA2_1, 0x81601560f53b081UL, 0xd3ee3c45f08cd218UL, 0xa7d5a43a1df2aa1dUL, 4); + TESTINST_RRRI("alsl.wu", "$r30", "$r29", "$r31", SA2_1, 0xf383bd5bfae7e46dUL, 0x67862a0151c65567UL, 0x9cdcbf604f46c48aUL, 2); + + /* ---------------- alsl.d rd, rj, rk, sa2 ---------------- */ + TESTINST_RRRI("alsl.d", "$r18", "$r28", "$r16", SA2_1, 0x53e533e973dfa49cUL, 0x6665a9d32abaaf55UL, 0xf70490874fb75e6eUL, 4); + TESTINST_RRRI("alsl.d", "$r10", "$r30", "$r18", SA2_1, 0xfb14c3e6acd722c3UL, 0xcae19862ab088fccUL, 0x87c434d85259d923UL, 2); + TESTINST_RRRI("alsl.d", "$r17", "$r25", "$r26", SA2_1, 0x95e79a567c313ec7UL, 0x83a0e706c2c4c534UL, 0x2f49f1e9d5b91fc9UL, 1); + TESTINST_RRRI("alsl.d", "$r7", "$r24", "$r24", SA2_1, 0x35b966d0db9f681cUL, 0xc0bc97593f1054fcUL, 0x7e564928b0a53ac6UL, 2); + TESTINST_RRRI("alsl.d", "$r6", "$r30", "$r24", SA2_1, 0x38ad1fb21e071421UL, 0xb959c439b0436d6dUL, 0x647c742c9ce02fc5UL, 3); + TESTINST_RRRI("alsl.d", "$r18", "$r28", "$r10", SA2_1, 0x1bde2962dc5bb68bUL, 0x67c403d00c9389bdUL, 0x8fc18921f225d05aUL, 2); + TESTINST_RRRI("alsl.d", "$r8", "$r27", "$r15", SA2_1, 0x5b8de9d8b393fa06UL, 0x393ec1c28e89e9d8UL, 0x1a59f9d852c3f8baUL, 3); + TESTINST_RRRI("alsl.d", "$r27", "$r24", "$r6", SA2_1, 0x72195c1ca51cc4dbUL, 0x4ee5b51e1e161ab2UL, 0x8a10acb4b625fefUL, 4); + TESTINST_RRRI("alsl.d", "$r29", "$r4", "$r18", SA2_1, 0xf3ed9e39d83d3decUL, 0xa3816509b9a6c23dUL, 0x6949e8e534450dd5UL, 2); + TESTINST_RRRI("alsl.d", "$r16", "$r13", "$r8", SA2_1, 0x588f388f25a342dfUL, 0xde33a74109c7be30UL, 0x8b02cf06997a065aUL, 1); + + /* ---------------- lu12i.w rd, si20 ---------------- */ + TESTINST_RI("lu12i.w", "$r9", SI20, 0xdf45bd002ccf48e1UL, 94146); + TESTINST_RI("lu12i.w", "$r10", SI20, 0xa5138a37d09ada8aUL, 129014); + TESTINST_RI("lu12i.w", "$r18", SI20, 0xefe46a52b8b3e5eUL, -130138); + TESTINST_RI("lu12i.w", "$r7", SI20, 0x29084adf6d033a88UL, -467080); + TESTINST_RI("lu12i.w", "$r10", SI20, 0xe9072e7fec2a5d1cUL, 360675); + TESTINST_RI("lu12i.w", "$r28", SI20, 0x2f7d41c7bd959cd5UL, 205272); + TESTINST_RI("lu12i.w", "$r16", SI20, 0xcb48200d89b48566UL, -266298); + TESTINST_RI("lu12i.w", "$r12", SI20, 0xd605223c244f4a50UL, -186346); + TESTINST_RI("lu12i.w", "$r15", SI20, 0x22c035c8c90016beUL, 247864); + TESTINST_RI("lu12i.w", "$r20", SI20, 0x6b2fd1aa0b603fecUL, -511005); + + /* ---------------- lu32i.d rd, si20 ---------------- */ + TESTINST_RI("lu32i.d", "$r8", SI20, 0xb331616751ed8877UL, -310956); + TESTINST_RI("lu32i.d", "$r17", SI20, 0xe49bab8d80e1dd7UL, 35590); + TESTINST_RI("lu32i.d", "$r4", SI20, 0x842cdc9ac0a0adf6UL, 500474); + TESTINST_RI("lu32i.d", "$r23", SI20, 0xc9ca69b8e5ab079eUL, -447277); + TESTINST_RI("lu32i.d", "$r12", SI20, 0x27d83e1c77dec50aUL, -503028); + TESTINST_RI("lu32i.d", "$r26", SI20, 0xc00dcc918a89f350UL, -355708); + TESTINST_RI("lu32i.d", "$r16", SI20, 0xd180188cdc073491UL, -231989); + TESTINST_RI("lu32i.d", "$r26", SI20, 0x4efae034432bbb3bUL, 250642); + TESTINST_RI("lu32i.d", "$r15", SI20, 0x7bf2141e673e336fUL, 237105); + TESTINST_RI("lu32i.d", "$r4", SI20, 0x187c50bfc5eb8f32UL, -312071); + + /* ---------------- lu52i.d rd, rj, si12 ---------------- */ + TESTINST_RRI("lu52i.d", "$r8", "$r25", SI12, 0x1da74dfcb33d471aUL, 0x453ae9f1200f4d41UL, 1920); + TESTINST_RRI("lu52i.d", "$r14", "$r25", SI12, 0x5e954055ebaec78fUL, 0xb7637f9119e12e31UL, -2008); + TESTINST_RRI("lu52i.d", "$r26", "$r24", SI12, 0xead69e40b96b23bfUL, 0x779862b03d1ab575UL, -1803); + TESTINST_RRI("lu52i.d", "$r5", "$r25", SI12, 0x452236306da7c667UL, 0x9f16a6e48cca3a7bUL, -1406); + TESTINST_RRI("lu52i.d", "$r26", "$r23", SI12, 0x5604b9744291e45aUL, 0x70eecb3116b1795cUL, -667); + TESTINST_RRI("lu52i.d", "$r14", "$r27", SI12, 0x6d9a8cfe459c1c48UL, 0x85452bdd40205e0dUL, -1221); + TESTINST_RRI("lu52i.d", "$r25", "$r8", SI12, 0x1a8d72e42f68a33dUL, 0x7089b6fe4c1f7a70UL, 423); + TESTINST_RRI("lu52i.d", "$r30", "$r10", SI12, 0x7c4fe646acac7ac0UL, 0xe7d222ba1fd5cae2UL, -177); + TESTINST_RRI("lu52i.d", "$r6", "$r13", SI12, 0xdb3d6a615a9e492fUL, 0xaa9303648ff489f2UL, -1438); + TESTINST_RRI("lu52i.d", "$r25", "$r4", SI12, 0x8b41b813d85b8ee8UL, 0xe4d31961e42e713cUL, -634); + + /* ---------------- addi.w rd, rj, si12 ---------------- */ + TESTINST_RRI("addi.w", "$r6", "$r27", SI12, 0x12845f036198fa6fUL, 0xda77c63c764655daUL, 1727); + TESTINST_RRI("addi.w", "$r9", "$r8", SI12, 0x21a7e3cfa2649a4fUL, 0xc64c73b3bd4c1dcbUL, -381); + TESTINST_RRI("addi.w", "$r16", "$r6", SI12, 0x6c47b02ef52a3502UL, 0x24ca1a646dac5cc3UL, -186); + TESTINST_RRI("addi.w", "$r20", "$r31", SI12, 0xb6144d8f9513c78eUL, 0xc4b808764e894e6cUL, 1503); + TESTINST_RRI("addi.w", "$r19", "$r17", SI12, 0xcf97c9215c961121UL, 0x9b714c4cb899399bUL, -1918); + TESTINST_RRI("addi.w", "$r14", "$r8", SI12, 0xe1abf22f6c3c82ecUL, 0x4110e9c1b5f59ef6UL, -1781); + TESTINST_RRI("addi.w", "$r29", "$r18", SI12, 0x4b64427195dda12dUL, 0xadf5af70b7b3f37bUL, 2047); + TESTINST_RRI("addi.w", "$r4", "$r30", SI12, 0xfc785d46f5bbdff4UL, 0x1e061e9d51362d9cUL, 244); + TESTINST_RRI("addi.w", "$r7", "$r23", SI12, 0xe037576d82c12e8dUL, 0xa77c8da72af708f1UL, -376); + TESTINST_RRI("addi.w", "$r23", "$r17", SI12, 0xa10df57c4103efUL, 0x26d2628746ad0a3eUL, 1924); + + /* ---------------- addi.d rd, rj, si12 ---------------- */ + TESTINST_RRI("addi.d", "$r14", "$r14", SI12, 0x61b497fb58a816d9UL, 0x29eb218dd65d9d6cUL, 152); + TESTINST_RRI("addi.d", "$r20", "$r13", SI12, 0xd80db8387a8cdd93UL, 0x5e23e4b01f2bbd6dUL, -640); + TESTINST_RRI("addi.d", "$r13", "$r25", SI12, 0x5dfea060c6e8f587UL, 0x95f49b783954f9f9UL, -743); + TESTINST_RRI("addi.d", "$r4", "$r30", SI12, 0xd72f370f6ce7bc4cUL, 0x148550b0f97ce601UL, 676); + TESTINST_RRI("addi.d", "$r26", "$r8", SI12, 0xa4120a67f8d6df1aUL, 0xa83f4bbcaf5bc52eUL, 1630); + TESTINST_RRI("addi.d", "$r20", "$r29", SI12, 0xa8f9c82780ac16d5UL, 0x7ab169a5751642bcUL, -1971); + TESTINST_RRI("addi.d", "$r8", "$r8", SI12, 0x6f22bdb480c14540UL, 0x94e1253c331b17f2UL, 1160); + TESTINST_RRI("addi.d", "$r15", "$r27", SI12, 0x312473547bcfe03UL, 0x7a786cbc8149d818UL, 844); + TESTINST_RRI("addi.d", "$r8", "$r26", SI12, 0xee2b1be852671bc3UL, 0x6a36d61dfee3a6fbUL, -1185); + TESTINST_RRI("addi.d", "$r17", "$r27", SI12, 0x70e068b54ed72e20UL, 0x922681ab8837027bUL, -2046); + + /* ---------------- addu16i.d rd, rj, si16 ---------------- */ + TESTINST_RRI("addu16i.d", "$r20", "$r29", SI16, 0x8232770e3472bdc3UL, 0x4d28c5567787c26eUL, -14564); + TESTINST_RRI("addu16i.d", "$r29", "$r4", SI16, 0x9076403ed2f0fdf4UL, 0x471cafb4183a389fUL, -3511); + TESTINST_RRI("addu16i.d", "$r26", "$r15", SI16, 0xdec118b1eb13234UL, 0x6ff5ce56111b301UL, 25897); + TESTINST_RRI("addu16i.d", "$r9", "$r5", SI16, 0x73209239d98fb81aUL, 0x1dc8f0ba4710eba3UL, -21829); + TESTINST_RRI("addu16i.d", "$r28", "$r25", SI16, 0xa39ba8429a9c13a6UL, 0x4fffb32851c13ff2UL, -23832); + TESTINST_RRI("addu16i.d", "$r23", "$r30", SI16, 0x8abd919f5ea43b1UL, 0x40078826f7336f0eUL, -32189); + TESTINST_RRI("addu16i.d", "$r28", "$r24", SI16, 0x695e543e25e7d3e4UL, 0x30279db606efa8ecUL, 16372); + TESTINST_RRI("addu16i.d", "$r4", "$r18", SI16, 0xa125cadb71209757UL, 0xff287b5e7fb2a2baUL, -28041); + TESTINST_RRI("addu16i.d", "$r5", "$r17", SI16, 0xd5d3e6da7c594ca9UL, 0x2bc9be0ef252584cUL, -11268); + TESTINST_RRI("addu16i.d", "$r29", "$r28", SI16, 0xee0391151007613UL, 0xae616c39d87c4b6eUL, -15645); + + /* ---------------- andi rd, rj, ui12 ---------------- */ + TESTINST_RRI("andi", "$r28", "$r18", UI12, 0xd62f833fbbd483b3UL, 0xa2f268cdcf18dd00UL, 1288); + TESTINST_RRI("andi", "$r12", "$r13", UI12, 0xc40efc9a74a3a13bUL, 0xfd609200795f877cUL, 153); + TESTINST_RRI("andi", "$r6", "$r18", UI12, 0x79ee7ee7a7865b79UL, 0x644bec92dca1ad7fUL, 3633); + TESTINST_RRI("andi", "$r5", "$r31", UI12, 0x2d64be0e5c2ec0f6UL, 0x87253b6589f182c7UL, 3299); + TESTINST_RRI("andi", "$r28", "$r5", UI12, 0xf2e4ed85d98a1860UL, 0x9f58e4edd98b60d1UL, 3189); + TESTINST_RRI("andi", "$r18", "$r29", UI12, 0x3c067920d48cf0d2UL, 0x2bf35e68c503ecfeUL, 4031); + TESTINST_RRI("andi", "$r20", "$r24", UI12, 0xe1d95be05fd57a64UL, 0xd33e771521b24bd3UL, 3252); + TESTINST_RRI("andi", "$r6", "$r23", UI12, 0x23341b2d86d02365UL, 0x16de10f2b4a45064UL, 1665); + TESTINST_RRI("andi", "$r27", "$r14", UI12, 0xd7db9d77aea4dcf5UL, 0x142272b737435eb7UL, 325); + TESTINST_RRI("andi", "$r23", "$r16", UI12, 0x57fee53581b09718UL, 0x2ace25d9e2ddbaaUL, 1056); + + /* ---------------- ori rd, rj, ui12 ---------------- */ + TESTINST_RRI("ori", "$r26", "$r13", UI12, 0x6d47cf7e5bb5c13eUL, 0x93aed4996805ba3bUL, 3251); + TESTINST_RRI("ori", "$r10", "$r25", UI12, 0x42f0332098f938afUL, 0xd7916fe8d569567bUL, 568); + TESTINST_RRI("ori", "$r12", "$r17", UI12, 0xc507d4150a742b76UL, 0x2b9a102a5b5b15f7UL, 1798); + TESTINST_RRI("ori", "$r15", "$r15", UI12, 0xa54ad5ecc0e72adbUL, 0x37c18ad4ec6e678cUL, 1781); + TESTINST_RRI("ori", "$r5", "$r4", UI12, 0x1f388b2a2b18004dUL, 0xb5fa23fbb02eeedbUL, 682); + TESTINST_RRI("ori", "$r27", "$r24", UI12, 0x73b086f8a8b4d7b5UL, 0xd23e30ab1e45470aUL, 1931); + TESTINST_RRI("ori", "$r28", "$r6", UI12, 0x972967beac695928UL, 0x2c701d0bc28816c5UL, 3593); + TESTINST_RRI("ori", "$r27", "$r4", UI12, 0x54fecbbf0a06e5a6UL, 0xf0b6d846464a3331UL, 3679); + TESTINST_RRI("ori", "$r9", "$r16", UI12, 0x71f3cd001c729062UL, 0xc5720758095e4592UL, 905); + TESTINST_RRI("ori", "$r26", "$r7", UI12, 0xd7ce86800c3c0f4bUL, 0xc4a58f787cdf5bb2UL, 3473); + + /* ---------------- xori rd, rj, ui12 ---------------- */ + TESTINST_RRI("xori", "$r27", "$r31", UI12, 0xe6d49c2dc629fbc7UL, 0x91832665d1a898e2UL, 2690); + TESTINST_RRI("xori", "$r15", "$r5", UI12, 0xada49c0d48beffc5UL, 0xe3cf426f1be4766UL, 697); + TESTINST_RRI("xori", "$r9", "$r20", UI12, 0x174a71d6d3757e3eUL, 0x25ed4678037622beUL, 2268); + TESTINST_RRI("xori", "$r31", "$r15", UI12, 0x1fac1694b40fbf2eUL, 0x4fe4fb2e0b660ca2UL, 3817); + TESTINST_RRI("xori", "$r17", "$r14", UI12, 0x2dc443400df4e153UL, 0x1db25e602ef8ece5UL, 3929); + TESTINST_RRI("xori", "$r4", "$r28", UI12, 0x5fb5ad5a84e97835UL, 0xc52da11293641639UL, 2735); + TESTINST_RRI("xori", "$r5", "$r13", UI12, 0x5c5fc4ba45da005fUL, 0xe46f853b7d602b84UL, 1153); + TESTINST_RRI("xori", "$r30", "$r26", UI12, 0x1419915b6f92678bUL, 0xa984612f1266da94UL, 3867); + TESTINST_RRI("xori", "$r13", "$r13", UI12, 0xc2b8fd036ba6314bUL, 0x4cf49604f644713cUL, 3426); + TESTINST_RRI("xori", "$r25", "$r23", UI12, 0xde46e3673c9a75dcUL, 0xfa1177a89f08c81eUL, 2669); + + /* ---------------- sll.w rd, rj, rk ---------------- */ + TESTINST_RRR("sll.w", "$r13", "$r8", "$r12", 0x26131fa72f4b76f1UL, 0xf34f7108538078d0UL, 0x10bbd12a8e087501UL); + TESTINST_RRR("sll.w", "$r29", "$r8", "$r15", 0xb6f529da4017d0d9UL, 0x49fbfb11ef643171UL, 0x9d0425e747d11bdeUL); + TESTINST_RRR("sll.w", "$r30", "$r31", "$r12", 0xcfc5236f5c070644UL, 0xba8301a1087b3a96UL, 0xff7589561824e1beUL); + TESTINST_RRR("sll.w", "$r28", "$r10", "$r7", 0x37fa51674df87149UL, 0x39212605c5d0cf7dUL, 0x18a8e323326ce5aaUL); + TESTINST_RRR("sll.w", "$r8", "$r9", "$r14", 0x707a9e0ece8abe40UL, 0x94b7b20a80c16c7bUL, 0x6887c46efb4cc181UL); + TESTINST_RRR("sll.w", "$r8", "$r4", "$r24", 0xd718a01b03a53964UL, 0x8ebd8bfeec304e2aUL, 0x6b4a83a6838b5d1UL); + TESTINST_RRR("sll.w", "$r23", "$r31", "$r27", 0xf50cab824a06d30eUL, 0xa8ee12cbd8dec935UL, 0x118002b3f0cecbabUL); + TESTINST_RRR("sll.w", "$r8", "$r25", "$r26", 0x8163368243faadeeUL, 0x3a04f47bf19a4cc8UL, 0x6a58cd3a57b4eeb4UL); + TESTINST_RRR("sll.w", "$r25", "$r13", "$r12", 0x3d6831e1afab1b1aUL, 0x9ee672580cb39777UL, 0x9084acd2bc7404caUL); + TESTINST_RRR("sll.w", "$r20", "$r5", "$r29", 0x90f7ee3ff75817a6UL, 0xe4ae07989d6148d7UL, 0x3e208bfcf046fffdUL); + + /* ---------------- srl.w rd, rj, rk ---------------- */ + TESTINST_RRR("srl.w", "$r20", "$r29", "$r30", 0xff3f6b79b5e2b56dUL, 0x1195aa09fa92d26bUL, 0xa93a8fd11ad5ae99UL); + TESTINST_RRR("srl.w", "$r8", "$r15", "$r4", 0x5d2fb7cd04ecd00cUL, 0x47bf914b6eca2852UL, 0x1bc63138cc45a75cUL); + TESTINST_RRR("srl.w", "$r20", "$r12", "$r18", 0x61fa22abda7c7b02UL, 0x9341cf09aa2e106eUL, 0x2dea831e9e121355UL); + TESTINST_RRR("srl.w", "$r30", "$r20", "$r26", 0x43e0249584da52dbUL, 0x482a209e436cda53UL, 0xb323a7f463f80660UL); + TESTINST_RRR("srl.w", "$r31", "$r16", "$r28", 0x4b10d05d93bf7288UL, 0x6d0330e88122d7c1UL, 0xc531cf8c92d53d03UL); + TESTINST_RRR("srl.w", "$r31", "$r15", "$r31", 0xd4654233c7648c3aUL, 0x12e6fc2a04cbf809UL, 0xcfe1c1b558a94808UL); + TESTINST_RRR("srl.w", "$r10", "$r30", "$r19", 0x602dee9c45a3b99bUL, 0x3ce0a6ac2acf19faUL, 0xdb5fab4bc2f82e7aUL); + TESTINST_RRR("srl.w", "$r17", "$r9", "$r23", 0x45106f11d4a57641UL, 0x5354795b675edacUL, 0xc67578c28ed7b6c7UL); + TESTINST_RRR("srl.w", "$r25", "$r26", "$r29", 0x1dc3b8477fba650cUL, 0x814377a71768e75UL, 0x60276c0e316db833UL); + TESTINST_RRR("srl.w", "$r31", "$r7", "$r30", 0x360fc92a085c2e14UL, 0x1b44ec96def89449UL, 0x56d6c5d85a81ed1fUL); + + /* ---------------- sra.w rd, rj, rk ---------------- */ + TESTINST_RRR("sra.w", "$r10", "$r17", "$r19", 0x576f2bfc771641b8UL, 0xfb1fb20b98a54405UL, 0xb20e9dae5a212078UL); + TESTINST_RRR("sra.w", "$r12", "$r16", "$r31", 0xbfdbb9a90ccc08a0UL, 0xb5d3c7f3b1a800a6UL, 0x57c3ff79f3b4198bUL); + TESTINST_RRR("sra.w", "$r18", "$r16", "$r5", 0xadcb6c153538b6b1UL, 0x99e245813e90b5e9UL, 0x7adff58363d5ebd2UL); + TESTINST_RRR("sra.w", "$r17", "$r28", "$r25", 0x7faea6a29686caf9UL, 0x801d40ea40b19beeUL, 0xf5174f678600d3fUL); + TESTINST_RRR("sra.w", "$r8", "$r27", "$r13", 0x86e5534832150e05UL, 0x47bb53d1cdc3560fUL, 0x917e2b49633a0f44UL); + TESTINST_RRR("sra.w", "$r26", "$r18", "$r20", 0xbfb83a0d762c171aUL, 0xbf67ed78d934d37cUL, 0x9f377995293fcc6bUL); + TESTINST_RRR("sra.w", "$r5", "$r25", "$r19", 0x266703af59334b0fUL, 0x4ed92cdab9f641c9UL, 0x5da1d0b8846d1a3dUL); + TESTINST_RRR("sra.w", "$r19", "$r27", "$r24", 0x72557561b3b40007UL, 0xd5db278ea099b3b5UL, 0x50b4a888b898610fUL); + TESTINST_RRR("sra.w", "$r16", "$r10", "$r4", 0xb349f888f1809ba3UL, 0x23d60a1fc100d89eUL, 0xc2846cc882dbc8e2UL); + TESTINST_RRR("sra.w", "$r23", "$r10", "$r31", 0xd7bdeddd344bb5afUL, 0xa015a07c13ff2234UL, 0x7c0fe410ce063a85UL); + + /* ---------------- sll.d rd, rj, rk ---------------- */ + TESTINST_RRR("sll.d", "$r28", "$r17", "$r10", 0x167adf26efd66416UL, 0xb861ba6e0aadf304UL, 0xa19e21ba0f406c33UL); + TESTINST_RRR("sll.d", "$r18", "$r29", "$r13", 0x3e8ea4dc3a9d9b44UL, 0x28ccf5dfa9cdc3b2UL, 0x33ef837a5a476bdcUL); + TESTINST_RRR("sll.d", "$r23", "$r27", "$r29", 0x23e29c76deed70caUL, 0x9e2265d8422e78dUL, 0xe9cc62bfd8a7c913UL); + TESTINST_RRR("sll.d", "$r16", "$r17", "$r17", 0xf5e858c7445fceddUL, 0x6735e4cf2fcb78fbUL, 0x726dd10e13b62663UL); + TESTINST_RRR("sll.d", "$r17", "$r15", "$r29", 0xfc1dbfc0551f8813UL, 0xec45100b21a74025UL, 0x186d3b737cbfd39aUL); + TESTINST_RRR("sll.d", "$r19", "$r15", "$r9", 0xbb01afe39a1e17b6UL, 0x3e66dd1100acc44aUL, 0xa9c74257f6e39cdfUL); + TESTINST_RRR("sll.d", "$r23", "$r9", "$r31", 0x945b101751c38d12UL, 0x262d14baae546199UL, 0x7ccdd8a7840948dfUL); + TESTINST_RRR("sll.d", "$r5", "$r31", "$r28", 0xa88eaecc1405995bUL, 0xd96ed500aff4596bUL, 0x6994841a196c562eUL); + TESTINST_RRR("sll.d", "$r27", "$r10", "$r25", 0x1e9540fa8237a849UL, 0x9aad6101b2470a60UL, 0x90c95628696f752fUL); + TESTINST_RRR("sll.d", "$r4", "$r26", "$r18", 0xb4dc3cdeab2e8454UL, 0xd27a92db3b2906cUL, 0x2bc7647c40c0b375UL); + + /* ---------------- srl.d rd, rj, rk ---------------- */ + TESTINST_RRR("srl.d", "$r6", "$r27", "$r13", 0x66ebeca9a7fad574UL, 0xdc837ce646ea6b51UL, 0xa57259e1758c564bUL); + TESTINST_RRR("srl.d", "$r6", "$r20", "$r5", 0x91794316e6c5e65UL, 0xdc7c47d39d64a16UL, 0x35f029b9942e11c8UL); + TESTINST_RRR("srl.d", "$r15", "$r5", "$r4", 0xbc963842b3ebc906UL, 0x42ea773b0bd19807UL, 0xd05cd2c4b01ea630UL); + TESTINST_RRR("srl.d", "$r18", "$r25", "$r28", 0x30d908baaa31230eUL, 0x779272ae228746a5UL, 0xf7b665809a3f303bUL); + TESTINST_RRR("srl.d", "$r5", "$r28", "$r27", 0x1f1d414f1d0f1feUL, 0x647277d3759d74bfUL, 0xa5c5fce39b4a1810UL); + TESTINST_RRR("srl.d", "$r24", "$r9", "$r26", 0x5fa44419162fc2c8UL, 0x9d2a589e6f6b3440UL, 0x810a615115238d8dUL); + TESTINST_RRR("srl.d", "$r31", "$r23", "$r30", 0xfa1a7ad64758b758UL, 0xe3d69d99e87b4297UL, 0x87fd8dc0a78e86bbUL); + TESTINST_RRR("srl.d", "$r26", "$r10", "$r24", 0x540888639a787231UL, 0x168791cefeb1660aUL, 0xd02b158115db9cdfUL); + TESTINST_RRR("srl.d", "$r23", "$r15", "$r12", 0xff3e950565409999UL, 0xe15a01fa0e34ea3bUL, 0x237aba34fe552f8eUL); + TESTINST_RRR("srl.d", "$r8", "$r16", "$r4", 0x825bafd36cc0d32eUL, 0x321677304d1b1406UL, 0xca68c6c83dfa5837UL); + + /* ---------------- sra.d rd, rj, rk ---------------- */ + TESTINST_RRR("sra.d", "$r23", "$r19", "$r16", 0x4cab63abd8f64774UL, 0x2c007c3ac68d7c80UL, 0xd8f4ac963a8b2c01UL); + TESTINST_RRR("sra.d", "$r18", "$r30", "$r25", 0x531de73fca30361aUL, 0x2857ba730cd281ffUL, 0xacab0fe400e4c113UL); + TESTINST_RRR("sra.d", "$r31", "$r13", "$r10", 0x3184416bc93a5e26UL, 0xad5864bc4022de96UL, 0xf7007bdbf1f728abUL); + TESTINST_RRR("sra.d", "$r6", "$r25", "$r23", 0x9184d2df291f3402UL, 0x7c0b117dcad80c03UL, 0x35b29b0dde1a94bdUL); + TESTINST_RRR("sra.d", "$r16", "$r6", "$r29", 0x2849e543d35dff5fUL, 0x9f13f36a632a3fUL, 0xf31f881e12072fe2UL); + TESTINST_RRR("sra.d", "$r7", "$r29", "$r10", 0x25c763f8366139ddUL, 0xfd77fd6e69e371c6UL, 0xcaa2ec6ad4f3b996UL); + TESTINST_RRR("sra.d", "$r24", "$r25", "$r26", 0x472602300b4f04c9UL, 0x54ceea832a5677e9UL, 0x5f63e9d9d6eb4af0UL); + TESTINST_RRR("sra.d", "$r23", "$r4", "$r27", 0xe8b449325a0ed51eUL, 0xd96928476f8441a5UL, 0x7e1ae8fd9c849dceUL); + TESTINST_RRR("sra.d", "$r15", "$r9", "$r12", 0x71601a1a2b155f51UL, 0xbcbb1d162563240UL, 0x5a906ad2f4abb4c7UL); + TESTINST_RRR("sra.d", "$r16", "$r29", "$r23", 0x1686886f27d397fbUL, 0x851328b2655e5689UL, 0x1634457590cd4033UL); + + /* ---------------- rotr.w rd, rj, rk ---------------- */ + TESTINST_RRR("rotr.w", "$r8", "$r5", "$r18", 0xc4394aae4c13908bUL, 0xa0c5728d1211b595UL, 0x3d562746b3943f3bUL); + TESTINST_RRR("rotr.w", "$r19", "$r18", "$r10", 0x284b501639de116bUL, 0x4248ad6cc0107902UL, 0xb41907b756bf8004UL); + TESTINST_RRR("rotr.w", "$r29", "$r8", "$r4", 0x2656b50c7d689f19UL, 0x7b5d21fdce9bcb73UL, 0x5b212fbe9e6b8522UL); + TESTINST_RRR("rotr.w", "$r25", "$r6", "$r30", 0x4c79ed7a1695fc25UL, 0x6bac1698a978f50fUL, 0xf1d58570dfb10203UL); + TESTINST_RRR("rotr.w", "$r14", "$r18", "$r6", 0xe894476b4ebbff23UL, 0x1398b65ae1e91c98UL, 0xebb6c3f5f689d2d8UL); + TESTINST_RRR("rotr.w", "$r19", "$r29", "$r26", 0x2595423cc93ecd7cUL, 0x6c462c2d29d8f908UL, 0x19142efd8e0b48b8UL); + TESTINST_RRR("rotr.w", "$r23", "$r10", "$r25", 0x68b4d913b267a3a2UL, 0x69afb673907e4506UL, 0xbd09ff2ed890862dUL); + TESTINST_RRR("rotr.w", "$r9", "$r14", "$r27", 0x17a45b8cbdebd6efUL, 0x33effef864846356UL, 0x3f52e437f2d5da62UL); + TESTINST_RRR("rotr.w", "$r5", "$r12", "$r23", 0x2d191b1a9707cf26UL, 0x86fa75433dac3d39UL, 0x21136a02424e5da4UL); + TESTINST_RRR("rotr.w", "$r29", "$r18", "$r27", 0x7d989f74f9944f8dUL, 0x50fe5829a153e6UL, 0x926776f9140b06fcUL); + + /* ---------------- rotr.d rd, rj, rk ---------------- */ + TESTINST_RRR("rotr.d", "$r29", "$r19", "$r13", 0x1e02c0c28ec3f9b1UL, 0xf2e79e6ff240b188UL, 0x60f500663eddf444UL); + TESTINST_RRR("rotr.d", "$r30", "$r4", "$r14", 0x97f6be8229e2e822UL, 0xf79aaeb2c03a2113UL, 0xbbdb2cb642605ed7UL); + TESTINST_RRR("rotr.d", "$r6", "$r19", "$r7", 0x1611806010ce99d8UL, 0xcb64270e0fc5b4c7UL, 0xeda6972c46af03cUL); + TESTINST_RRR("rotr.d", "$r4", "$r15", "$r30", 0xe63084e97bd0efb3UL, 0x6e1aa322e38e9b66UL, 0xa7df0f1d92106e2dUL); + TESTINST_RRR("rotr.d", "$r16", "$r27", "$r10", 0x1ff92fbb0f10ff9aUL, 0x15c2eb91c9ae124UL, 0x8b4c97ee7f9bc2faUL); + TESTINST_RRR("rotr.d", "$r28", "$r7", "$r25", 0xbd766a63bbead21cUL, 0xd97b509610db5e7UL, 0x3151203010315af5UL); + TESTINST_RRR("rotr.d", "$r9", "$r20", "$r23", 0x8a2bb5eacea50d68UL, 0x947ec1930151adb9UL, 0xc2f39e045d278b7bUL); + TESTINST_RRR("rotr.d", "$r25", "$r13", "$r23", 0xcaddb8ea7bd492c7UL, 0x416a1b790dbf45cbUL, 0x44c59965e1c6af25UL); + TESTINST_RRR("rotr.d", "$r14", "$r7", "$r31", 0x8ca18b58047c8b5aUL, 0x93a6cdc3585b5446UL, 0x70cd84ec07e33cefUL); + TESTINST_RRR("rotr.d", "$r14", "$r9", "$r4", 0x48bd5c133004f490UL, 0xad095be0915fe20bUL, 0xc1fff6ff603a47b3UL); + + /* ---------------- slli.w rd, rj, ui5 ---------------- */ + TESTINST_RRI("slli.w", "$r18", "$r8", UI5, 0xe7f8823a2989c395UL, 0xf0ccc85519ad1e0aUL, 10); + TESTINST_RRI("slli.w", "$r27", "$r17", UI5, 0x2e66b550a3bb071dUL, 0x20943aa3eaa4024eUL, 30); + TESTINST_RRI("slli.w", "$r27", "$r23", UI5, 0x70daa2bee8209243UL, 0x2e9160afd2e28a64UL, 31); + TESTINST_RRI("slli.w", "$r10", "$r13", UI5, 0x701c424632b5dc29UL, 0x591054db6afe1725UL, 12); + TESTINST_RRI("slli.w", "$r7", "$r15", UI5, 0xdd1d7fe3ae579499UL, 0x2e077f689088c0c7UL, 19); + TESTINST_RRI("slli.w", "$r6", "$r8", UI5, 0xff732113ddaab79bUL, 0x9cacf8e6d9e37f97UL, 12); + TESTINST_RRI("slli.w", "$r5", "$r19", UI5, 0xcef75ddd2adc5853UL, 0xcc24ed9167fd06eaUL, 22); + TESTINST_RRI("slli.w", "$r17", "$r8", UI5, 0x3c8788fed3e8a049UL, 0xccf9b2d2c2e80251UL, 7); + TESTINST_RRI("slli.w", "$r14", "$r29", UI5, 0xe1b0b077db4f08eUL, 0x76aea4b9ae43cdfbUL, 10); + TESTINST_RRI("slli.w", "$r23", "$r30", UI5, 0x13d8514aeb0dc12bUL, 0x9c8352804e7e8ccbUL, 26); + + /* ---------------- slli.d rd, rj, ui6 ---------------- */ + TESTINST_RRI("slli.d", "$r27", "$r28", UI6, 0x689a2c4141835926UL, 0x1b6ff38e611d1e4dUL, 5); + TESTINST_RRI("slli.d", "$r5", "$r20", UI6, 0xff3391c2323defa6UL, 0xe99a134a0c1a2574UL, 1); + TESTINST_RRI("slli.d", "$r27", "$r7", UI6, 0xc32d8fb319ba47e6UL, 0xc6530e0e601d3631UL, 61); + TESTINST_RRI("slli.d", "$r5", "$r26", UI6, 0x979553ff112cdf52UL, 0x931e420364fdcacaUL, 45); + TESTINST_RRI("slli.d", "$r27", "$r5", UI6, 0xa7f70b048a4087b0UL, 0xc1b829210c3cd5a9UL, 60); + TESTINST_RRI("slli.d", "$r23", "$r10", UI6, 0xcd547af78ac66ca7UL, 0xa2c0802de6c82645UL, 59); + TESTINST_RRI("slli.d", "$r13", "$r30", UI6, 0x410b8f25e1234eeUL, 0xdbaacfe884cda24dUL, 56); + TESTINST_RRI("slli.d", "$r16", "$r4", UI6, 0x44a2ff35045ec37cUL, 0xee2240010629a8eeUL, 20); + TESTINST_RRI("slli.d", "$r19", "$r20", UI6, 0x8617d88408d75cacUL, 0xba15483820d66ae7UL, 25); + TESTINST_RRI("slli.d", "$r24", "$r27", UI6, 0x669e0e9b99d5b604UL, 0xf5d1ffc374e53c7dUL, 13); + + /* ---------------- srli.w rd, rj, ui5 ---------------- */ + TESTINST_RRI("srli.w", "$r20", "$r16", UI5, 0x7f5310ac5eaa9924UL, 0xea8b69613d183eeUL, 10); + TESTINST_RRI("srli.w", "$r13", "$r15", UI5, 0x5f4d9313f9224389UL, 0xd544272206f4e814UL, 0); + TESTINST_RRI("srli.w", "$r17", "$r18", UI5, 0xd9b2c942f996cc8aUL, 0x704cd1d89de5c2b4UL, 7); + TESTINST_RRI("srli.w", "$r27", "$r28", UI5, 0xa3eef8efc97e0d4fUL, 0x8c449e6236daa7a2UL, 18); + TESTINST_RRI("srli.w", "$r9", "$r10", UI5, 0x6c044927152e5fc9UL, 0x592a1607944e0109UL, 29); + TESTINST_RRI("srli.w", "$r8", "$r24", UI5, 0xcaa01b37d49db675UL, 0x5e35848bbc958164UL, 31); + TESTINST_RRI("srli.w", "$r6", "$r16", UI5, 0xe2fbe1accb343769UL, 0x85f5e17c7d785222UL, 18); + TESTINST_RRI("srli.w", "$r18", "$r25", UI5, 0x4653c07e0627825fUL, 0x44fffa524ffd0417UL, 31); + TESTINST_RRI("srli.w", "$r5", "$r26", UI5, 0x817ebd7154c8ed46UL, 0xc7399a9899fc5958UL, 22); + TESTINST_RRI("srli.w", "$r27", "$r4", UI5, 0x3e4b17b34f2b08d0UL, 0x5bedb97aefd697f4UL, 27); + + /* ---------------- srli.d rd, rj, ui6 ---------------- */ + TESTINST_RRI("srli.d", "$r31", "$r9", UI6, 0x8fc21da189af52edUL, 0x235bf33e3e612a15UL, 51); + TESTINST_RRI("srli.d", "$r26", "$r7", UI6, 0xcd1eaac4df2531ddUL, 0xe87216fce9c75788UL, 36); + TESTINST_RRI("srli.d", "$r6", "$r31", UI6, 0xc0282beeb7dc6618UL, 0x8b58604d6be3e8e0UL, 29); + TESTINST_RRI("srli.d", "$r20", "$r6", UI6, 0x1546fdd9fc133e39UL, 0x74067840bb05a992UL, 18); + TESTINST_RRI("srli.d", "$r28", "$r20", UI6, 0xaa1f88b09e13e4c6UL, 0x6e153faa5221e893UL, 28); + TESTINST_RRI("srli.d", "$r26", "$r4", UI6, 0x2ba2151c80dbea7aUL, 0x21246f3c7063edf9UL, 55); + TESTINST_RRI("srli.d", "$r28", "$r29", UI6, 0xcd72eff1b5aa0877UL, 0x5d9488c1d61a1544UL, 34); + TESTINST_RRI("srli.d", "$r13", "$r7", UI6, 0x5953b78fbd8109a9UL, 0x862731652b653859UL, 62); + TESTINST_RRI("srli.d", "$r29", "$r18", UI6, 0xab821449d149a976UL, 0xcb73553146cc4bdcUL, 25); + TESTINST_RRI("srli.d", "$r28", "$r7", UI6, 0x31272fa88123357dUL, 0xe9359f7a9f92ec5UL, 2); + + /* ---------------- srai.w rd, rj, ui5 ---------------- */ + TESTINST_RRI("srai.w", "$r26", "$r23", UI5, 0xe73a55c2b7005c01UL, 0xfcd659254f4b3fe7UL, 2); + TESTINST_RRI("srai.w", "$r31", "$r10", UI5, 0x2e0c4330fae0890aUL, 0xa76ca364a204c82bUL, 0); + TESTINST_RRI("srai.w", "$r31", "$r8", UI5, 0x64790bb6e8674f68UL, 0xce5594f964c4a026UL, 0); + TESTINST_RRI("srai.w", "$r15", "$r31", UI5, 0xccfb53c708026acdUL, 0xce185873627515b5UL, 27); + TESTINST_RRI("srai.w", "$r16", "$r28", UI5, 0x994c4d22e90185a2UL, 0x49995d51019e1050UL, 1); + TESTINST_RRI("srai.w", "$r13", "$r16", UI5, 0x484408b57b3ab89UL, 0x437401347e23c399UL, 16); + TESTINST_RRI("srai.w", "$r4", "$r9", UI5, 0xd1d936105b7cca3UL, 0xd49c3c65e292b942UL, 7); + TESTINST_RRI("srai.w", "$r24", "$r15", UI5, 0xaa9377005232ec93UL, 0xde29d0172b40f03dUL, 10); + TESTINST_RRI("srai.w", "$r19", "$r14", UI5, 0xa49c65a4c2cde36dUL, 0x782e0d4b8a7a28d0UL, 24); + TESTINST_RRI("srai.w", "$r24", "$r27", UI5, 0x404f816ff696bbc8UL, 0x1b6900e15f252315UL, 24); + + /* ---------------- srai.d rd, rj, ui6 ---------------- */ + TESTINST_RRI("srai.d", "$r24", "$r4", UI6, 0x96250384fede78c7UL, 0x6c501d9ec5e9e731UL, 22); + TESTINST_RRI("srai.d", "$r30", "$r19", UI6, 0xcfc52d7caaf7bf47UL, 0x82499a30d50f8b83UL, 17); + TESTINST_RRI("srai.d", "$r12", "$r12", UI6, 0x628a1a46bbe30c16UL, 0xaba392c50d63ea53UL, 5); + TESTINST_RRI("srai.d", "$r24", "$r9", UI6, 0x21c1bb01f0253d8UL, 0xb35e31d92548a2feUL, 2); + TESTINST_RRI("srai.d", "$r28", "$r7", UI6, 0x2a5ac0a983332ec3UL, 0x2297ae499a473c6dUL, 62); + TESTINST_RRI("srai.d", "$r8", "$r17", UI6, 0xa27cf36651750e09UL, 0x1984e046b042d0cfUL, 31); + TESTINST_RRI("srai.d", "$r25", "$r16", UI6, 0x7df3822fb20b8dedUL, 0xb4e464563029fac8UL, 37); + TESTINST_RRI("srai.d", "$r14", "$r5", UI6, 0xe8c1939c13a2e6caUL, 0x6a22077c63497a9aUL, 57); + TESTINST_RRI("srai.d", "$r25", "$r15", UI6, 0xf2df68e25cccf72eUL, 0xe0af648201f919fcUL, 10); + TESTINST_RRI("srai.d", "$r6", "$r15", UI6, 0xa24591b35142aa9cUL, 0x12b20ac67de77b8dUL, 49); + + /* ---------------- rotri.w rd, rj, ui5 ---------------- */ + TESTINST_RRI("rotri.w", "$r18", "$r6", UI5, 0xf0c65b137926ba00UL, 0x95e0f5f057a212c5UL, 20); + TESTINST_RRI("rotri.w", "$r9", "$r16", UI5, 0xe36356471d2a7e18UL, 0xb8af3071021bd869UL, 27); + TESTINST_RRI("rotri.w", "$r5", "$r31", UI5, 0x5992fc9cfce2ebe9UL, 0x6c427c821603d01aUL, 1); + TESTINST_RRI("rotri.w", "$r27", "$r13", UI5, 0x239c57dca2ab060UL, 0xed54e28825b25471UL, 23); + TESTINST_RRI("rotri.w", "$r18", "$r18", UI5, 0xb84df2305a710936UL, 0x8aae5248c6d4973cUL, 7); + TESTINST_RRI("rotri.w", "$r4", "$r27", UI5, 0x730e1701570ac9fcUL, 0xd55b9d54232536e7UL, 29); + TESTINST_RRI("rotri.w", "$r19", "$r18", UI5, 0x36dbceffa501d8dcUL, 0x8415238fa1dd314fUL, 0); + TESTINST_RRI("rotri.w", "$r13", "$r24", UI5, 0xc1ac428ddf5193UL, 0x3b588028fcfbb0a8UL, 21); + TESTINST_RRI("rotri.w", "$r14", "$r25", UI5, 0x733414543ca8145eUL, 0xded24831de35be08UL, 29); + TESTINST_RRI("rotri.w", "$r27", "$r5", UI5, 0x60afaebb36d22ba0UL, 0xfd31a16f03582b5UL, 8); + + /* ---------------- rotri.d rd, rj, ui6 ---------------- */ + TESTINST_RRI("rotri.d", "$r20", "$r7", UI6, 0xe112a6d47c0444c1UL, 0xbd9bbb91bdc381c5UL, 53); + TESTINST_RRI("rotri.d", "$r27", "$r16", UI6, 0xf254a827c1ef7351UL, 0x3de084650f757cebUL, 62); + TESTINST_RRI("rotri.d", "$r30", "$r17", UI6, 0x31c36a8c83999eb2UL, 0x107098a9863e85d5UL, 10); + TESTINST_RRI("rotri.d", "$r29", "$r8", UI6, 0xf2e7a25c121af3c3UL, 0xb177c110c3dd3225UL, 46); + TESTINST_RRI("rotri.d", "$r4", "$r26", UI6, 0xdd94ff60f2e1abffUL, 0xb76d3e4a0af02e4dUL, 45); + TESTINST_RRI("rotri.d", "$r10", "$r9", UI6, 0x6064d48d901beca7UL, 0xea20b33360134ab2UL, 42); + TESTINST_RRI("rotri.d", "$r4", "$r26", UI6, 0x27f1e63c8f7f71cfUL, 0xf4c5c8a69f37a1bdUL, 27); + TESTINST_RRI("rotri.d", "$r9", "$r16", UI6, 0x7d4cb07a3ab72944UL, 0xd5ee210421c6080eUL, 20); + TESTINST_RRI("rotri.d", "$r24", "$r26", UI6, 0x1ce66a79f3e45e6fUL, 0x6e1767144ffa6e2dUL, 4); + TESTINST_RRI("rotri.d", "$r4", "$r18", UI6, 0x4173f8102b03399UL, 0xde7066568917d899UL, 46); + + /* ---------------- ext.w.h rd, rj ---------------- */ + TESTINST_RR("ext.w.h", "$r17", "$r14", 0x58af862c6fc4208dUL, 0x6235b0cfe4eed6edUL); + TESTINST_RR("ext.w.h", "$r31", "$r20", 0x425af3dcd83fa9fdUL, 0x6e59403101a538f1UL); + TESTINST_RR("ext.w.h", "$r18", "$r27", 0xcb140226bf788367UL, 0x58a5430ee4e1616eUL); + TESTINST_RR("ext.w.h", "$r15", "$r10", 0xd3debaf05f7d909fUL, 0x6f7083340247fb12UL); + TESTINST_RR("ext.w.h", "$r12", "$r15", 0x5dc6f7191af80bcfUL, 0xb1f1c8f4b11c03d9UL); + TESTINST_RR("ext.w.h", "$r7", "$r15", 0x5ffe304a5c9dc9d2UL, 0x102fb4fa33193103UL); + TESTINST_RR("ext.w.h", "$r16", "$r16", 0x533616e37505799fUL, 0xf988c7255086f4f5UL); + TESTINST_RR("ext.w.h", "$r13", "$r25", 0x805a406557ed3facUL, 0xdc6ce0f2993b219bUL); + TESTINST_RR("ext.w.h", "$r19", "$r20", 0xcc49c20125c4755dUL, 0xde7b765222a9703aUL); + TESTINST_RR("ext.w.h", "$r18", "$r7", 0xe0dd9155cbe168c6UL, 0xc1063421eae07663UL); + + /* ---------------- ext.w.b rd, rj ---------------- */ + TESTINST_RR("ext.w.b", "$r16", "$r23", 0x21666e814555aa02UL, 0x926b8d68b5c40592UL); + TESTINST_RR("ext.w.b", "$r8", "$r20", 0xf68ae0a0ac497dedUL, 0xbfb5d489716d0c5UL); + TESTINST_RR("ext.w.b", "$r24", "$r15", 0xbc84e54c82fd6e51UL, 0x7d814b11e5eb07f6UL); + TESTINST_RR("ext.w.b", "$r31", "$r17", 0x14e575a8dda1f0d3UL, 0x6a111e663a52244cUL); + TESTINST_RR("ext.w.b", "$r16", "$r8", 0x911acc218fcf640bUL, 0xac1405ad05b23e43UL); + TESTINST_RR("ext.w.b", "$r28", "$r8", 0x77fb13eaa8995607UL, 0x5c97a81f12da7d3UL); + TESTINST_RR("ext.w.b", "$r9", "$r23", 0xb88cfdb98683e15eUL, 0x74893b34973e16cbUL); + TESTINST_RR("ext.w.b", "$r31", "$r4", 0xc7168cb4f7d079e4UL, 0xf4fc215bc2c5273eUL); + TESTINST_RR("ext.w.b", "$r4", "$r18", 0xe2e5dca4727b373UL, 0xa1b97136f32e452bUL); + TESTINST_RR("ext.w.b", "$r8", "$r29", 0x625eb5236f483daaUL, 0x3ceca34ee347e7c8UL); + + /* ---------------- clo.w rd, rj ---------------- */ + TESTINST_RR("clo.w", "$r4", "$r13", 0xbcca747f77aca28UL, 0x8df71972c1a17096UL); + TESTINST_RR("clo.w", "$r27", "$r5", 0x98a9e6d99d8e84cbUL, 0xdc59d3c8fc1540e4UL); + TESTINST_RR("clo.w", "$r9", "$r14", 0xe8e78b162c95ed66UL, 0xdfad6854bbf442e6UL); + TESTINST_RR("clo.w", "$r13", "$r26", 0xa3db2cf80f9112cdUL, 0x7676463dd6f13f80UL); + TESTINST_RR("clo.w", "$r7", "$r16", 0xb5213ab31b574031UL, 0x478c19ebdeaa74c0UL); + TESTINST_RR("clo.w", "$r13", "$r12", 0xd68d9661284fb9d7UL, 0x702bf24fddd8bfe0UL); + TESTINST_RR("clo.w", "$r18", "$r20", 0x510cd4002aff4c6cUL, 0x4fc898e8b83669eeUL); + TESTINST_RR("clo.w", "$r5", "$r9", 0x53c0de96f709208dUL, 0xe56d87b898438b5UL); + TESTINST_RR("clo.w", "$r20", "$r5", 0x96187854fcce4fd1UL, 0xf1248bea6ed8be30UL); + TESTINST_RR("clo.w", "$r20", "$r31", 0xb1abb4795d411683UL, 0x1025f914a9225e6UL); + + /* ---------------- clz.w rd, rj ---------------- */ + TESTINST_RR("clz.w", "$r19", "$r8", 0x374348642747a8dcUL, 0xd8ec1d547d95ada5UL); + TESTINST_RR("clz.w", "$r26", "$r4", 0x741ab4d14b9ee1f8UL, 0x99e2ef840817cfffUL); + TESTINST_RR("clz.w", "$r17", "$r4", 0x45c9ce7217f501b3UL, 0xa387a194cd03bcf1UL); + TESTINST_RR("clz.w", "$r13", "$r26", 0x69707656f354d758UL, 0xd4a8f8ab02b876b0UL); + TESTINST_RR("clz.w", "$r25", "$r13", 0x103ce6ee41e094c3UL, 0xd7a85bf4006e655aUL); + TESTINST_RR("clz.w", "$r5", "$r13", 0x3910578929e7cd4aUL, 0x93c87b02b7b1b603UL); + TESTINST_RR("clz.w", "$r18", "$r29", 0x10639f8979feefe5UL, 0x9d8b4b8f8493f844UL); + TESTINST_RR("clz.w", "$r25", "$r16", 0x7b35b3e995b3b44dUL, 0xad953d0ae0b3e870UL); + TESTINST_RR("clz.w", "$r6", "$r25", 0xda6cbd19f10ef86fUL, 0x1d6665db1162cfb4UL); + TESTINST_RR("clz.w", "$r5", "$r12", 0x8a6f4d6ec8d7c00dUL, 0x19b40cb8dd8d1679UL); + + /* ---------------- cto.w rd, rj ---------------- */ + TESTINST_RR("cto.w", "$r7", "$r15", 0x7285e9c364562d11UL, 0x963655c7f58de520UL); + TESTINST_RR("cto.w", "$r4", "$r15", 0x105dceebc6d7e641UL, 0xfc01c17baaca9c46UL); + TESTINST_RR("cto.w", "$r31", "$r28", 0xdeff9742b93f0591UL, 0x2cf98074b0151f33UL); + TESTINST_RR("cto.w", "$r13", "$r8", 0xeee665743cd218ffUL, 0xbdd700b2535aa3b7UL); + TESTINST_RR("cto.w", "$r23", "$r13", 0x1cc22cfd7c0c869cUL, 0x5b848b64decbee8fUL); + TESTINST_RR("cto.w", "$r12", "$r18", 0x5c32b3db803e5988UL, 0x2d5d1ebf93b79dd0UL); + TESTINST_RR("cto.w", "$r17", "$r9", 0xc11d806786501f0eUL, 0xd175fe2ca41bda38UL); + TESTINST_RR("cto.w", "$r24", "$r16", 0x504f9b43af62e2adUL, 0xfce545d98e2361daUL); + TESTINST_RR("cto.w", "$r24", "$r8", 0xc13ac5668538f5a4UL, 0x3096912e575d64dbUL); + TESTINST_RR("cto.w", "$r27", "$r17", 0xd27f68629dd8d4fbUL, 0x15ac43632e175a8bUL); + + /* ---------------- ctz.w rd, rj ---------------- */ + TESTINST_RR("ctz.w", "$r8", "$r12", 0xfc9bd3736a3c08bdUL, 0xaebba33c2e268daaUL); + TESTINST_RR("ctz.w", "$r5", "$r27", 0x5dc8af7bac7db01aUL, 0xabce2f0e113597aaUL); + TESTINST_RR("ctz.w", "$r18", "$r6", 0xe4ac5b59d8442dfeUL, 0x935d1b694e96bd04UL); + TESTINST_RR("ctz.w", "$r9", "$r15", 0x9b760f465efbb52eUL, 0x834c9974dba65d99UL); + TESTINST_RR("ctz.w", "$r13", "$r7", 0x95b5748f5f8bfb38UL, 0x75dd7a9890cdf2d9UL); + TESTINST_RR("ctz.w", "$r29", "$r17", 0xa25119fd892d1b20UL, 0x38c12e795dc52acfUL); + TESTINST_RR("ctz.w", "$r15", "$r12", 0x95c2ce0f0446807cUL, 0x623a5915ac8164b2UL); + TESTINST_RR("ctz.w", "$r6", "$r17", 0xd9034892a300dca8UL, 0x5911fea4e6ce1df3UL); + TESTINST_RR("ctz.w", "$r10", "$r25", 0xda1e0d0eb34884abUL, 0x8d70d49a10ba8968UL); + TESTINST_RR("ctz.w", "$r14", "$r13", 0x207d275c076e5247UL, 0xd243debc9b557922UL); + + /* ---------------- clo.d rd, rj ---------------- */ + TESTINST_RR("clo.d", "$r7", "$r16", 0x9432ccd773e86812UL, 0x9f921ea959c97c2bUL); + TESTINST_RR("clo.d", "$r7", "$r12", 0xaf19ef0b422b09bfUL, 0x8773ec5c72444fe2UL); + TESTINST_RR("clo.d", "$r5", "$r10", 0xa2912bc0ca36fa58UL, 0x2c93a7506a8979b7UL); + TESTINST_RR("clo.d", "$r7", "$r28", 0x69dd3f71121c7380UL, 0x1784b7c2c7558b4aUL); + TESTINST_RR("clo.d", "$r15", "$r9", 0x95b40b42f113ceccUL, 0xf0cdb7b9c17bb9e1UL); + TESTINST_RR("clo.d", "$r9", "$r27", 0x1961ee1499945d08UL, 0x23c7a2252c1cbc78UL); + TESTINST_RR("clo.d", "$r30", "$r19", 0xda0aa8b04f719a51UL, 0x8f93c7a1b3cc9f12UL); + TESTINST_RR("clo.d", "$r26", "$r20", 0xdd4f62bfe1237a28UL, 0xd61c7bfe05165d04UL); + TESTINST_RR("clo.d", "$r26", "$r6", 0x44a1378e22d6ec81UL, 0x1b21543ee9abd103UL); + TESTINST_RR("clo.d", "$r24", "$r16", 0x51efcf6ef8eb9917UL, 0x602cbdf020ee6da8UL); + + /* ---------------- clz.d rd, rj ---------------- */ + TESTINST_RR("clz.d", "$r27", "$r7", 0x91df318f7b476077UL, 0x6ca0b9cf9bb84c4aUL); + TESTINST_RR("clz.d", "$r19", "$r30", 0x435d7fb412d9c12cUL, 0xc926e58bdb46104eUL); + TESTINST_RR("clz.d", "$r12", "$r30", 0x906b06441b2ef62bUL, 0x4b9b91966077ef0UL); + TESTINST_RR("clz.d", "$r28", "$r6", 0x28bb3e3324f33e14UL, 0x7628cd8752be6223UL); + TESTINST_RR("clz.d", "$r14", "$r15", 0xb7a5ae04bf2e60c0UL, 0x41a328a79afda305UL); + TESTINST_RR("clz.d", "$r4", "$r23", 0x5fd8327a265b1a3bUL, 0x66b92d8b5b842d4aUL); + TESTINST_RR("clz.d", "$r18", "$r29", 0x73df6808e38c72adUL, 0x6b91b11261dd26b6UL); + TESTINST_RR("clz.d", "$r13", "$r8", 0xd8d2dbd71d1783adUL, 0xdc50b7586ccab6a1UL); + TESTINST_RR("clz.d", "$r17", "$r10", 0xee6f842bb7686b8dUL, 0xdf52e003cd95f02fUL); + TESTINST_RR("clz.d", "$r13", "$r8", 0x91e717aef96cc046UL, 0x5dd0743ed560ba78UL); + + /* ---------------- cto.d rd, rj ---------------- */ + TESTINST_RR("cto.d", "$r31", "$r5", 0xf361d5d1fb232769UL, 0x1530b67240d804cfUL); + TESTINST_RR("cto.d", "$r5", "$r26", 0xbedb393d17f69d40UL, 0xcef56269ef7aecdaUL); + TESTINST_RR("cto.d", "$r5", "$r31", 0xadd75db878cdbf84UL, 0x8e08acc65c97f0b2UL); + TESTINST_RR("cto.d", "$r31", "$r31", 0x6a8a89827e4929f9UL, 0x7df0f59d97924bb3UL); + TESTINST_RR("cto.d", "$r14", "$r30", 0xefb0874ef3600b6dUL, 0x97a4b45ab971a548UL); + TESTINST_RR("cto.d", "$r5", "$r17", 0x144271fb49c8d2d8UL, 0x787e6dbb4fec4d21UL); + TESTINST_RR("cto.d", "$r28", "$r20", 0xd6d0953d2a12c998UL, 0xafd578caad0dfa09UL); + TESTINST_RR("cto.d", "$r16", "$r18", 0xde650be54a7990cUL, 0x3ea8f45e10441829UL); + TESTINST_RR("cto.d", "$r15", "$r16", 0xbbd328743f49a86UL, 0x5cafc638b6b509beUL); + TESTINST_RR("cto.d", "$r6", "$r20", 0x598ee27859cf8d0eUL, 0x4bce530e537ad762UL); + + /* ---------------- ctz.d rd, rj ---------------- */ + TESTINST_RR("ctz.d", "$r14", "$r28", 0xf2e4d886a8fd3fe3UL, 0xdafbabdfefac692UL); + TESTINST_RR("ctz.d", "$r6", "$r27", 0xe005a6a20d44fbcaUL, 0xe000ac4f4cfb2ce2UL); + TESTINST_RR("ctz.d", "$r15", "$r26", 0x871c2ccd50ec0784UL, 0xa82b0d96dd72f11cUL); + TESTINST_RR("ctz.d", "$r17", "$r20", 0xebe7d9f4ec5055d5UL, 0x65575957936d1d6eUL); + TESTINST_RR("ctz.d", "$r19", "$r8", 0x394effa243e5f14cUL, 0xf6852349a7b00561UL); + TESTINST_RR("ctz.d", "$r5", "$r9", 0x3c67392fc408e9dbUL, 0xeff4bf8e886d7cc3UL); + TESTINST_RR("ctz.d", "$r31", "$r15", 0xbf5435775bd0435bUL, 0x19760246c8d1d680UL); + TESTINST_RR("ctz.d", "$r9", "$r5", 0xccde230362ce06aUL, 0x7590c6e73077c2bcUL); + TESTINST_RR("ctz.d", "$r28", "$r25", 0x2518777b06d608a0UL, 0xb87647dad481ba32UL); + TESTINST_RR("ctz.d", "$r23", "$r19", 0xbe232a9fe2090e75UL, 0x2dceda5cdc990d2eUL); + + /* ---------------- revb.2h rd, rj ---------------- */ + TESTINST_RR("revb.2h", "$r29", "$r30", 0x75397084990a0745UL, 0xd4c83f5966c1c17UL); + TESTINST_RR("revb.2h", "$r17", "$r23", 0xecfbee2a69bbe344UL, 0x5a42dc5dc5705f68UL); + TESTINST_RR("revb.2h", "$r6", "$r14", 0xbfeffdbd68845522UL, 0x3490af5b50fd56bfUL); + TESTINST_RR("revb.2h", "$r13", "$r6", 0x58e1821d319a1598UL, 0x4c6711d021a72be6UL); + TESTINST_RR("revb.2h", "$r18", "$r8", 0x6e14994d4e16ff86UL, 0x9fda01513ab5ceb8UL); + TESTINST_RR("revb.2h", "$r7", "$r30", 0x9979d3a3fcfc9323UL, 0x504c708535bc136fUL); + TESTINST_RR("revb.2h", "$r28", "$r19", 0x9daf4aa3a33eec5fUL, 0xaa376fc54f4be6f5UL); + TESTINST_RR("revb.2h", "$r30", "$r8", 0x2e0bba43ec83e59eUL, 0xaee8b8acd436f6daUL); + TESTINST_RR("revb.2h", "$r14", "$r7", 0x9634787c9be10863UL, 0xe9da521d42716c0aUL); + TESTINST_RR("revb.2h", "$r23", "$r14", 0x687b89225667081aUL, 0x9089e36a4f12f9c6UL); + + /* ---------------- revb.4h rd, rj ---------------- */ + TESTINST_RR("revb.4h", "$r4", "$r25", 0xc42859bd06b669d2UL, 0x782e4ae6ab812191UL); + TESTINST_RR("revb.4h", "$r18", "$r19", 0x45ca4499d789fe5bUL, 0x6e558c98b95d346dUL); + TESTINST_RR("revb.4h", "$r24", "$r10", 0x2d04871fd753c43fUL, 0xbeab033e2b5a979eUL); + TESTINST_RR("revb.4h", "$r24", "$r8", 0xbc4deb39fb2ffe2eUL, 0x5e3e50b8025e77f3UL); + TESTINST_RR("revb.4h", "$r7", "$r14", 0xf44a6ea6f42e0918UL, 0x9f617a848e4ad8f2UL); + TESTINST_RR("revb.4h", "$r13", "$r12", 0xda815ff8648e92b9UL, 0xa401e74c4dd88e12UL); + TESTINST_RR("revb.4h", "$r31", "$r19", 0x7964d861d2ecb8d5UL, 0xe402e87f73fb4c68UL); + TESTINST_RR("revb.4h", "$r29", "$r25", 0x6beff3fa6167cdccUL, 0x11e350b71aee0229UL); + TESTINST_RR("revb.4h", "$r4", "$r8", 0x357a56e8ae275376UL, 0xdf8ebc175f4be7e3UL); + TESTINST_RR("revb.4h", "$r15", "$r27", 0xeb11b29acfe397d6UL, 0x42d231083cd97aa0UL); + + /* ---------------- revb.2w rd, rj ---------------- */ + TESTINST_RR("revb.2w", "$r27", "$r31", 0x978f867dd7f0cb8UL, 0x19eec2d357cd6a06UL); + TESTINST_RR("revb.2w", "$r10", "$r10", 0x7897a40c4fda96d5UL, 0xcb849783a18de892UL); + TESTINST_RR("revb.2w", "$r23", "$r14", 0x18338c734be53a1UL, 0x6258664ec1bb96b8UL); + TESTINST_RR("revb.2w", "$r12", "$r19", 0x7417ec4fef3451ccUL, 0x216ad32ee149542bUL); + TESTINST_RR("revb.2w", "$r31", "$r30", 0x8132835b9905b650UL, 0x6fac007fbefdecf2UL); + TESTINST_RR("revb.2w", "$r25", "$r10", 0x7336ebe375c83bedUL, 0x643f76ac3010a6bbUL); + TESTINST_RR("revb.2w", "$r31", "$r29", 0x5d99f79f18e805b8UL, 0xe65e70ca4cf299faUL); + TESTINST_RR("revb.2w", "$r30", "$r19", 0xec10dd6d7249c5faUL, 0x3f6bb22d66caf299UL); + TESTINST_RR("revb.2w", "$r6", "$r30", 0x2c394783817c0870UL, 0xd823cff07efd78dbUL); + TESTINST_RR("revb.2w", "$r4", "$r15", 0xc5acf61f075cd4e4UL, 0xc154dd7479b90c6cUL); + + /* ---------------- revb.d rd, rj ---------------- */ + TESTINST_RR("revb.d", "$r6", "$r23", 0xe6e05a0dafda37ceUL, 0x2ac7d047f197f6fbUL); + TESTINST_RR("revb.d", "$r19", "$r4", 0xc07a757bea6011ffUL, 0xcef6cef3e0f941ffUL); + TESTINST_RR("revb.d", "$r6", "$r15", 0x711bb31e18fcb2f3UL, 0x522068042cf5be1aUL); + TESTINST_RR("revb.d", "$r9", "$r7", 0xf9654c655c67392eUL, 0xa1b065742110e3f4UL); + TESTINST_RR("revb.d", "$r29", "$r4", 0x70c0dcad23609060UL, 0x5d04b7b2ece6f6bbUL); + TESTINST_RR("revb.d", "$r15", "$r4", 0x809930516f3136ebUL, 0xda33327a8d42ef55UL); + TESTINST_RR("revb.d", "$r10", "$r4", 0x1a7ee04b354f6af5UL, 0xcda6c6943e46fed7UL); + TESTINST_RR("revb.d", "$r20", "$r4", 0x315f95452d748459UL, 0xa001e934745758e0UL); + TESTINST_RR("revb.d", "$r6", "$r8", 0xabbd06000374627aUL, 0x85441006689de89bUL); + TESTINST_RR("revb.d", "$r27", "$r24", 0x2d404e69f54afa48UL, 0x46f47b822772f3cdUL); + + /* ---------------- revh.2w rd, rj ---------------- */ + TESTINST_RR("revh.2w", "$r6", "$r15", 0x5b764c7bfb1999ebUL, 0x86603fc3f96843edUL); + TESTINST_RR("revh.2w", "$r19", "$r10", 0xf39f8e6b43dd63ceUL, 0x141d294d06276941UL); + TESTINST_RR("revh.2w", "$r5", "$r20", 0x3ff54e5c35d83e69UL, 0xd677d6a21384278aUL); + TESTINST_RR("revh.2w", "$r4", "$r31", 0xce463b02a2f840ccUL, 0x6f87c9636f9cfca6UL); + TESTINST_RR("revh.2w", "$r19", "$r26", 0x34abc96ddde64e27UL, 0x723ec7ce92720502UL); + TESTINST_RR("revh.2w", "$r8", "$r18", 0x1454a1ee8739c235UL, 0xd890efa373a6dfb0UL); + TESTINST_RR("revh.2w", "$r12", "$r31", 0xf0c8b856751cae70UL, 0xb675dff2568e6ebfUL); + TESTINST_RR("revh.2w", "$r24", "$r9", 0xb36984e3a7a3eaeaUL, 0xa169cfa9f35f6a8aUL); + TESTINST_RR("revh.2w", "$r25", "$r27", 0x640b3e6b41180473UL, 0x9bc307f0a2ef368fUL); + TESTINST_RR("revh.2w", "$r7", "$r9", 0x897e1406a0eb2dc9UL, 0x1921bcf657fecdccUL); + + /* ---------------- revh.d rd, rj ---------------- */ + TESTINST_RR("revh.d", "$r14", "$r25", 0xec3573411ea025e5UL, 0x6976d4371b08f1abUL); + TESTINST_RR("revh.d", "$r24", "$r31", 0x9ef9e5cb1375d42aUL, 0x9ce130c8a579e11dUL); + TESTINST_RR("revh.d", "$r9", "$r28", 0x3c8cd0055a5e7031UL, 0xf05f9381753ded16UL); + TESTINST_RR("revh.d", "$r24", "$r26", 0x6a4e5797f19041f6UL, 0xd26a5ae65e21041cUL); + TESTINST_RR("revh.d", "$r14", "$r24", 0xe2cb9a83aee22d97UL, 0x6405d71e0bb63321UL); + TESTINST_RR("revh.d", "$r19", "$r23", 0x91cdf3bcd9afe76dUL, 0x171953826107396aUL); + TESTINST_RR("revh.d", "$r23", "$r14", 0x93ed49255d084e12UL, 0x374bd76990198b43UL); + TESTINST_RR("revh.d", "$r31", "$r12", 0x8e54a908f04882bUL, 0xf7e8756491b9d346UL); + TESTINST_RR("revh.d", "$r31", "$r20", 0xbb7cd34502fdf01fUL, 0x906b7289a6957d3fUL); + TESTINST_RR("revh.d", "$r27", "$r30", 0xacbca1aacdd9dd3fUL, 0x3072d9c69004d4b5UL); + + /* ---------------- bitrev.4b rd, rj ---------------- */ + TESTINST_RR("bitrev.4b", "$r23", "$r19", 0xb422f2854b491d92UL, 0x7649084cec69098aUL); + TESTINST_RR("bitrev.4b", "$r27", "$r16", 0xd14736328d74b448UL, 0x1abee3a271c71db9UL); + TESTINST_RR("bitrev.4b", "$r15", "$r23", 0xf17c0f0ccfbb2c38UL, 0x490107ff4155bd17UL); + TESTINST_RR("bitrev.4b", "$r5", "$r18", 0x8408d6a30523619dUL, 0x625d5aedf0add9fbUL); + TESTINST_RR("bitrev.4b", "$r8", "$r15", 0xc41a2fdb60ba75a6UL, 0xe2562eab3b333a00UL); + TESTINST_RR("bitrev.4b", "$r17", "$r18", 0x6a409394f364c02aUL, 0xea970d90edb343ccUL); + TESTINST_RR("bitrev.4b", "$r25", "$r29", 0xd8d1c9b8dcff266dUL, 0xacca47ac7597ca65UL); + TESTINST_RR("bitrev.4b", "$r26", "$r24", 0xe2a0d11df8c5055bUL, 0xc57559d03e3e216dUL); + TESTINST_RR("bitrev.4b", "$r8", "$r27", 0xb6a5815170d657f0UL, 0x9f60901eefa1347aUL); + TESTINST_RR("bitrev.4b", "$r20", "$r16", 0x432a2fbf2b073732UL, 0x604b8d7ecb5e86dcUL); + + /* ---------------- bitrev.8b rd, rj ---------------- */ + TESTINST_RR("bitrev.8b", "$r25", "$r7", 0x22b2e6007f742fd1UL, 0xe8c23886def1bbc9UL); + TESTINST_RR("bitrev.8b", "$r28", "$r30", 0xf985d7779c5ca157UL, 0x285cbdc0f47395d1UL); + TESTINST_RR("bitrev.8b", "$r29", "$r13", 0xd9b8364a793bc50cUL, 0xded35d7c7ba73d29UL); + TESTINST_RR("bitrev.8b", "$r12", "$r28", 0x18d7769bc1147dc5UL, 0xfb6cda8c7f12313aUL); + TESTINST_RR("bitrev.8b", "$r23", "$r6", 0xeff84dc134b3acbeUL, 0xee7c4e89e333eda8UL); + TESTINST_RR("bitrev.8b", "$r24", "$r20", 0xad65748f0bc46e9fUL, 0xd0d88137a6284eacUL); + TESTINST_RR("bitrev.8b", "$r10", "$r5", 0xe0e1c1e262352e89UL, 0x9c43ebc4f7c65dc1UL); + TESTINST_RR("bitrev.8b", "$r27", "$r13", 0x444a53aa65d317dcUL, 0x473eea7ea5691da7UL); + TESTINST_RR("bitrev.8b", "$r13", "$r9", 0xfc48d0fdf4c7a6e5UL, 0x5dcad407df3401a5UL); + TESTINST_RR("bitrev.8b", "$r12", "$r5", 0xebef32fcbd91e9aUL, 0xe1eeea527816355eUL); + + /* ---------------- bitrev.w rd, rj ---------------- */ + TESTINST_RR("bitrev.w", "$r18", "$r15", 0x2028b0c8691a767UL, 0x5822df2950c9c2d3UL); + TESTINST_RR("bitrev.w", "$r30", "$r27", 0x2a2d48209d9f377bUL, 0xde9d59b836df41fcUL); + TESTINST_RR("bitrev.w", "$r17", "$r4", 0xe6fb8b07c90464e6UL, 0x65976cb5c6c6a5b0UL); + TESTINST_RR("bitrev.w", "$r9", "$r31", 0x1b95159ec5c37644UL, 0x62c549b741c2adadUL); + TESTINST_RR("bitrev.w", "$r17", "$r14", 0x8b414dfa7156f0ceUL, 0x9642d0186f420e7cUL); + TESTINST_RR("bitrev.w", "$r15", "$r8", 0x2722ecb374b4d5e3UL, 0xeaf151a286bbc4cfUL); + TESTINST_RR("bitrev.w", "$r27", "$r19", 0x58ec913c63634a5UL, 0xe723c39df96a4fd2UL); + TESTINST_RR("bitrev.w", "$r7", "$r26", 0xa245e7dd80a324a2UL, 0xe7d6c2b2683291eUL); + TESTINST_RR("bitrev.w", "$r31", "$r6", 0x114292ed02ba1255UL, 0x13cd62afac5ac3d4UL); + TESTINST_RR("bitrev.w", "$r7", "$r25", 0xbd46d88fc8d2933bUL, 0x69ce9ccb487dadd1UL); + + /* ---------------- bitrev.d rd, rj ---------------- */ + TESTINST_RR("bitrev.d", "$r4", "$r29", 0xeaacaeb60b227eabUL, 0x799f36da44887e2cUL); + TESTINST_RR("bitrev.d", "$r29", "$r6", 0xcfbb055ab1ebf7faUL, 0x2924f63fec744b02UL); + TESTINST_RR("bitrev.d", "$r28", "$r31", 0xaac74a398d76900dUL, 0xf6c75e45e33b4cb7UL); + TESTINST_RR("bitrev.d", "$r24", "$r12", 0xfc8bc33fb4a8d023UL, 0xcccd98e9d53aa26aUL); + TESTINST_RR("bitrev.d", "$r8", "$r7", 0x7502cd68289f4c3aUL, 0x746ddfd3c3a512b1UL); + TESTINST_RR("bitrev.d", "$r6", "$r16", 0xe8b94bfe615774aeUL, 0x518770bbee53d619UL); + TESTINST_RR("bitrev.d", "$r24", "$r4", 0x6318c17dbae816c3UL, 0x9ab684e129b57f07UL); + TESTINST_RR("bitrev.d", "$r27", "$r23", 0x8a22909b005a86b8UL, 0x69337e8c3b1fc2bbUL); + TESTINST_RR("bitrev.d", "$r20", "$r9", 0x9f43885d40caf0UL, 0x193cbf609dbc33d4UL); + TESTINST_RR("bitrev.d", "$r30", "$r19", 0x30fa02e0fc390ac9UL, 0x21686c931c6260daUL); + + /* ---------------- bytepick.w rd, rj, rk, sa2 ---------------- */ + TESTINST_RRRI("bytepick.w", "$r26", "$r15", "$r19", SA2, 0x1b0b980dd3271273UL, 0x8737ca6c8106ceeeUL, 0x2807e0dcb47d6efUL, 1); + TESTINST_RRRI("bytepick.w", "$r15", "$r17", "$r7", SA2, 0x3d2e3fbcbd032001UL, 0x5eced8cf3da8b205UL, 0xb8155b41321e09c0UL, 0); + TESTINST_RRRI("bytepick.w", "$r12", "$r15", "$r17", SA2, 0x2670c80f12a87520UL, 0x29ab42125e3ea5c8UL, 0x32a39ac435460f2fUL, 3); + TESTINST_RRRI("bytepick.w", "$r4", "$r20", "$r18", SA2, 0x5a64271926277c04UL, 0xcbde225cc736e5d5UL, 0x18abacc874db47e9UL, 3); + TESTINST_RRRI("bytepick.w", "$r8", "$r5", "$r24", SA2, 0xdb41606ce3f9df94UL, 0xc3f6ce370d754a3fUL, 0x34ad5a423a5c42e3UL, 3); + TESTINST_RRRI("bytepick.w", "$r5", "$r30", "$r14", SA2, 0xedb3aad221050d0bUL, 0x46f5823389f2581aUL, 0xf766f1e75349809eUL, 2); + TESTINST_RRRI("bytepick.w", "$r4", "$r19", "$r18", SA2, 0xf92ed0231f25c991UL, 0xba59df0352ed6b3eUL, 0x58d6fbce4e4325e8UL, 0); + TESTINST_RRRI("bytepick.w", "$r18", "$r28", "$r24", SA2, 0x177dcaf8fcd30180UL, 0xbdc04b3b8f707462UL, 0x6102168606deb3edUL, 3); + TESTINST_RRRI("bytepick.w", "$r13", "$r27", "$r29", SA2, 0x383d82c5d717259bUL, 0x495e30e5e680d7fcUL, 0x1c17f315ebb3bec3UL, 2); + TESTINST_RRRI("bytepick.w", "$r5", "$r29", "$r4", SA2, 0x26a0fb212ab80a3aUL, 0x78b167aecd81f869UL, 0x6daab499f228fef4UL, 1); + + /* ---------------- bytepick.d rd, rj, rk, sa3 ---------------- */ + TESTINST_RRRI("bytepick.d", "$r28", "$r4", "$r28", SA3, 0x794fa22d52f7e834UL, 0x2f084db071d3bcceUL, 0xa0cf51d7020f10c1UL, 7); + TESTINST_RRRI("bytepick.d", "$r10", "$r18", "$r4", SA3, 0x9fd7a6b378604833UL, 0x37da15f8a7154cabUL, 0xaedd64328d27a0a8UL, 2); + TESTINST_RRRI("bytepick.d", "$r7", "$r6", "$r24", SA3, 0xdee49920d429d3c2UL, 0x15e3f61f2f82a2d1UL, 0xdeba03c7761e4678UL, 3); + TESTINST_RRRI("bytepick.d", "$r19", "$r16", "$r5", SA3, 0x53bda4d18e61fc44UL, 0xc79bd94439006673UL, 0xa8024ab452a2bd52UL, 4); + TESTINST_RRRI("bytepick.d", "$r26", "$r19", "$r25", SA3, 0xc8aae5136d925592UL, 0xea109dd2837d3acfUL, 0x30e93a75e695666aUL, 7); + TESTINST_RRRI("bytepick.d", "$r8", "$r14", "$r8", SA3, 0xa03db273c845b37fUL, 0xa7fd0053a136769fUL, 0x6ab932903229b035UL, 2); + TESTINST_RRRI("bytepick.d", "$r9", "$r14", "$r23", SA3, 0x2f160a0d147b300fUL, 0xdae9d5d15bb8f5b5UL, 0xc4fdfbb29d49dfe4UL, 2); + TESTINST_RRRI("bytepick.d", "$r20", "$r18", "$r15", SA3, 0x30cefdebc30b841aUL, 0xbfd016fb0312277cUL, 0x44269b95d496912fUL, 5); + TESTINST_RRRI("bytepick.d", "$r12", "$r17", "$r5", SA3, 0xde32bc5d3471eed2UL, 0xdb807610c6e762e4UL, 0xb2148e34e649d1b8UL, 2); + TESTINST_RRRI("bytepick.d", "$r5", "$r24", "$r28", SA3, 0x9ab1be6a0faa61a8UL, 0x97d4a12579967739UL, 0xaa592ef1fd606badUL, 3); + + /* ---------------- maskeqz rd, rj, rk ---------------- */ + TESTINST_RRR("maskeqz", "$r14", "$r28", "$r25", 0xc263b6b8f3404c8dUL, 0x90ef733c88c88866UL, 0xd256888d94e8d21aUL); + TESTINST_RRR("maskeqz", "$r13", "$r9", "$r15", 0x5bdd86b962c61db4UL, 0x8a78f7b88a728d92UL, 0x69e707acb2c26a83UL); + TESTINST_RRR("maskeqz", "$r7", "$r7", "$r13", 0xea86abdbdea660cbUL, 0xfb778deef0a5b893UL, 0xad10e23c971d1a9fUL); + TESTINST_RRR("maskeqz", "$r8", "$r7", "$r19", 0xf64df33b6146939fUL, 0xe7376d3da44f4dfdUL, 0x7987e122af2505abUL); + TESTINST_RRR("maskeqz", "$r10", "$r27", "$r29", 0x404a261c069b488bUL, 0x81886c523ec2658cUL, 0x3236dc83d0a27cc1UL); + TESTINST_RRR("maskeqz", "$r23", "$r16", "$r25", 0x8671050519b7bda0UL, 0x26fa2567b106d73aUL, 0xd884011e0d767feUL); + TESTINST_RRR("maskeqz", "$r5", "$r19", "$r18", 0xbd8d4cef53122132UL, 0x4976c047c57ec148UL, 0x602312f372049a5eUL); + TESTINST_RRR("maskeqz", "$r29", "$r24", "$r23", 0x7f390b695d8b12eUL, 0x70043e7666a24a34UL, 0xfee8f8f90ab3ac9bUL); + TESTINST_RRR("maskeqz", "$r25", "$r4", "$r18", 0x7eaffcb6dac1b5bUL, 0x4b12f8c6738216a2UL, 0x409acb80b7391511UL); + TESTINST_RRR("maskeqz", "$r30", "$r6", "$r24", 0x14d829636b628dc9UL, 0xdb88a366a2271c2cUL, 0xea0d5998835940aUL); + + /* ---------------- masknez rd, rj, rk ---------------- */ + TESTINST_RRR("masknez", "$r14", "$r24", "$r5", 0x46b15bbb9507bd79UL, 0xc92af628c880a454UL, 0x846a586db0af0965UL); + TESTINST_RRR("masknez", "$r30", "$r8", "$r8", 0x43cd20b5234db4e8UL, 0x7aeee6ab6b10561fUL, 0x45ab4fdb4ca8b325UL); + TESTINST_RRR("masknez", "$r24", "$r19", "$r15", 0xd3d50bbb34b528e2UL, 0xdd71746b0beedae3UL, 0xa34d82fc50174094UL); + TESTINST_RRR("masknez", "$r29", "$r26", "$r26", 0x576cb2da15b1462dUL, 0x6c669f0195b50b7aUL, 0xec1609ef36aa938fUL); + TESTINST_RRR("masknez", "$r4", "$r29", "$r10", 0xaa220f67a02617dbUL, 0xffcd18e3016e10fUL, 0x4cf9bdd8dca7f88fUL); + TESTINST_RRR("masknez", "$r23", "$r9", "$r29", 0x774e1c840428fbdeUL, 0x391268694388d2a7UL, 0xf06192a4e5780c53UL); + TESTINST_RRR("masknez", "$r7", "$r25", "$r28", 0x7b75099f16135faaUL, 0xf95af681c18bf31cUL, 0x2f6122581dfdef74UL); + TESTINST_RRR("masknez", "$r26", "$r10", "$r16", 0xe6006c9bd6bae204UL, 0x7e84e5db1181249dUL, 0x6ab2371059cdc875UL); + TESTINST_RRR("masknez", "$r26", "$r15", "$r28", 0xb4c9c784ef74245fUL, 0x20cc1c4c169ca02cUL, 0x606eeb8ce6278d16UL); + TESTINST_RRR("masknez", "$r19", "$r16", "$r16", 0x75a721553f7c7054UL, 0x7b63b7b7b3f5bd5fUL, 0xf8c7933e92e155eeUL); + + /* ---------------- bstrins.w rd, rj, msbw, lsbw ---------------- */ + TESTINST_RRII("bstrins.w", "$r27", "$r16", MSBW, LSBW, 0x431055863e78b187UL, 0xe18dda9620a50e9dUL, 31, 8); + TESTINST_RRII("bstrins.w", "$r26", "$r27", MSBW, LSBW, 0x19f800eab7e1ab51UL, 0x61e7d86005d21d29UL, 30, 27); + TESTINST_RRII("bstrins.w", "$r15", "$r4", MSBW, LSBW, 0xb141d462e777528dUL, 0xb7aebff9bcca1643UL, 17, 14); + TESTINST_RRII("bstrins.w", "$r30", "$r17", MSBW, LSBW, 0xfac48083375844feUL, 0x6d3283ba14cc27ebUL, 24, 6); + TESTINST_RRII("bstrins.w", "$r12", "$r12", MSBW, LSBW, 0x9b7629774f19f64aUL, 0x84ee8d65b2842686UL, 30, 25); + TESTINST_RRII("bstrins.w", "$r15", "$r10", MSBW, LSBW, 0x290172844863090fUL, 0x85ea298976069fcdUL, 26, 1); + TESTINST_RRII("bstrins.w", "$r10", "$r13", MSBW, LSBW, 0x66942ba1c15e85aaUL, 0xddb2dfa7474a4370UL, 23, 8); + TESTINST_RRII("bstrins.w", "$r5", "$r20", MSBW, LSBW, 0x3dcfecca80bf0d79UL, 0x5044b246f2d3f890UL, 18, 16); + TESTINST_RRII("bstrins.w", "$r23", "$r5", MSBW, LSBW, 0xa11723142f1472a7UL, 0xcbaaa9a23d119663UL, 25, 21); + TESTINST_RRII("bstrins.w", "$r20", "$r31", MSBW, LSBW, 0x6a1110240ba884b8UL, 0x45cadf0ffe08cc25UL, 13, 12); + + /* ---------------- bstrpick.w rd, rj, msbw, lsbw ---------------- */ + TESTINST_RRII("bstrpick.w", "$r5", "$r23", MSBW, LSBW, 0x6885eaa89f691954UL, 0x94f8458597294f2eUL, 23, 11); + TESTINST_RRII("bstrpick.w", "$r25", "$r8", MSBW, LSBW, 0x11be9b9923ebee96UL, 0x23deda120a49df15UL, 18, 11); + TESTINST_RRII("bstrpick.w", "$r6", "$r6", MSBW, LSBW, 0x3546d655181289bcUL, 0x7ee84a41c952b690UL, 10, 3); + TESTINST_RRII("bstrpick.w", "$r25", "$r5", MSBW, LSBW, 0xb2eec884ea77f548UL, 0x23992bc40919416fUL, 15, 9); + TESTINST_RRII("bstrpick.w", "$r26", "$r14", MSBW, LSBW, 0x8e591161730ac582UL, 0xf45f4435cc1cb138UL, 21, 8); + TESTINST_RRII("bstrpick.w", "$r9", "$r14", MSBW, LSBW, 0x1ac92d930e8361f9UL, 0xcc11dd56e96c6256UL, 7, 3); + TESTINST_RRII("bstrpick.w", "$r19", "$r9", MSBW, LSBW, 0xd15fd80fafe60a58UL, 0xb1426a8c680d628cUL, 8, 8); + TESTINST_RRII("bstrpick.w", "$r17", "$r13", MSBW, LSBW, 0xfa48c3cd091d2b5eUL, 0x3a2827a58a014a72UL, 30, 12); + TESTINST_RRII("bstrpick.w", "$r6", "$r31", MSBW, LSBW, 0xca10a858ebfa78a1UL, 0x202a38722f270884UL, 16, 7); + TESTINST_RRII("bstrpick.w", "$r20", "$r10", MSBW, LSBW, 0xc010deb269ae6ba2UL, 0x98f1d297734f9f4cUL, 31, 15); + + /* ---------------- bstrins.d rd, rj, msbd, lsbd ---------------- */ + TESTINST_RRII("bstrins.d", "$r29", "$r17", MSBD, LSBD, 0x7cf4a9ec79307e59UL, 0xb1b5afc00eef90a3UL, 60, 25); + TESTINST_RRII("bstrins.d", "$r10", "$r27", MSBD, LSBD, 0xc708602dee32579fUL, 0x199d90a711e94375UL, 31, 22); + TESTINST_RRII("bstrins.d", "$r4", "$r24", MSBD, LSBD, 0x4e5ce98e217a4b59UL, 0xaf25b5661daefdeaUL, 58, 58); + TESTINST_RRII("bstrins.d", "$r12", "$r30", MSBD, LSBD, 0x9505d862c56b1708UL, 0x7f3f0c983ce27863UL, 16, 6); + TESTINST_RRII("bstrins.d", "$r29", "$r5", MSBD, LSBD, 0x248f295ef3afe5aaUL, 0x9469277db61227b7UL, 43, 0); + TESTINST_RRII("bstrins.d", "$r31", "$r31", MSBD, LSBD, 0xbc5f0c47c3a63a94UL, 0x4aacc1c77ad0c09aUL, 49, 23); + TESTINST_RRII("bstrins.d", "$r6", "$r24", MSBD, LSBD, 0x79110235b8c34188UL, 0x75e3e311aef2bef9UL, 12, 2); + TESTINST_RRII("bstrins.d", "$r6", "$r16", MSBD, LSBD, 0xaa6e63ffd80b76c5UL, 0xb1ea7dcb3af0881dUL, 43, 13); + TESTINST_RRII("bstrins.d", "$r15", "$r25", MSBD, LSBD, 0x5b68a802f26a1804UL, 0xb4f651115b84591bUL, 53, 29); + TESTINST_RRII("bstrins.d", "$r9", "$r9", MSBD, LSBD, 0x3394218c965d5f1aUL, 0xf3d30b5d4d4089b4UL, 61, 40); + + /* ---------------- bstrpick.d rd, rj, msbd, lsbd ---------------- */ + TESTINST_RRII("bstrpick.d", "$r27", "$r27", MSBD, LSBD, 0x503c8fae2d6d7b58UL, 0x9fd9869ca812de0cUL, 63, 33); + TESTINST_RRII("bstrpick.d", "$r14", "$r5", MSBD, LSBD, 0x65f05eaa5e13856aUL, 0xd52c72fbeccc39f5UL, 52, 40); + TESTINST_RRII("bstrpick.d", "$r13", "$r20", MSBD, LSBD, 0x9cea777df4d2eae0UL, 0x6326727a36499800UL, 48, 14); + TESTINST_RRII("bstrpick.d", "$r10", "$r17", MSBD, LSBD, 0xf30a073a4a56604bUL, 0xc12d112f6a0c8f1UL, 43, 20); + TESTINST_RRII("bstrpick.d", "$r13", "$r25", MSBD, LSBD, 0xe559d975e0d9ac85UL, 0xcf41f30cc4a46713UL, 55, 37); + TESTINST_RRII("bstrpick.d", "$r29", "$r4", MSBD, LSBD, 0x41843db6c2a206cbUL, 0x343f795d45fcff8cUL, 34, 20); + TESTINST_RRII("bstrpick.d", "$r27", "$r28", MSBD, LSBD, 0xb359821297377feeUL, 0x4fc51c5773e64f69UL, 27, 10); + TESTINST_RRII("bstrpick.d", "$r24", "$r24", MSBD, LSBD, 0xed3cb5d1e8f0e55eUL, 0x9cdbb70a8b8d3945UL, 63, 20); + TESTINST_RRII("bstrpick.d", "$r7", "$r30", MSBD, LSBD, 0x11b7344343be1ccfUL, 0xa3422c671803480fUL, 34, 30); + TESTINST_RRII("bstrpick.d", "$r15", "$r4", MSBD, LSBD, 0x3670c6b869f28085UL, 0x2caa9d9c1351e402UL, 55, 4); + + /* ---------------- crc.w.b.w rd, rj, rk ---------------- */ + TESTINST_RRR("crc.w.b.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x4b154113f7d32514UL, 0xcce230caafbf9cc9UL); + TESTINST_RRR("crc.w.b.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x33d5d595721d4f13UL, 0xf4509311f443a7ceUL); + TESTINST_RRR("crc.w.b.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x4a3c6de6954cbc17UL, 0x111b21e39fbd7254UL); + TESTINST_RRR("crc.w.b.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0xfbb5c64ed1b044c6UL, 0x33ca4c4fb3960326UL); + TESTINST_RRR("crc.w.b.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x2b7c5939d7c0f528UL, 0xb73870a5a6630162UL); + TESTINST_RRR("crc.w.b.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x02fe41918ac5cdbaUL, 0x48e0815289728f05UL); + TESTINST_RRR("crc.w.b.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0xb60a8f381f187baeUL, 0x008c208cc413ff72UL); + + /* ---------------- crc.w.h.w rd, rj, rk ---------------- */ + TESTINST_RRR("crc.w.h.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x4b154113f7d32514UL, 0xcce230caafbf9cc9UL); + TESTINST_RRR("crc.w.h.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x33d5d595721d4f13UL, 0xf4509311f443a7ceUL); + TESTINST_RRR("crc.w.h.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x4a3c6de6954cbc17UL, 0x111b21e39fbd7254UL); + TESTINST_RRR("crc.w.h.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0xfbb5c64ed1b044c6UL, 0x33ca4c4fb3960326UL); + TESTINST_RRR("crc.w.h.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x2b7c5939d7c0f528UL, 0xb73870a5a6630162UL); + TESTINST_RRR("crc.w.h.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x02fe41918ac5cdbaUL, 0x48e0815289728f05UL); + TESTINST_RRR("crc.w.h.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0xb60a8f381f187baeUL, 0x008c208cc413ff72UL); + + /* ---------------- crc.w.w.w rd, rj, rk ---------------- */ + TESTINST_RRR("crc.w.w.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x4b154113f7d32514UL, 0xcce230caafbf9cc9UL); + TESTINST_RRR("crc.w.w.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x33d5d595721d4f13UL, 0xf4509311f443a7ceUL); + TESTINST_RRR("crc.w.w.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x4a3c6de6954cbc17UL, 0x111b21e39fbd7254UL); + TESTINST_RRR("crc.w.w.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0xfbb5c64ed1b044c6UL, 0x33ca4c4fb3960326UL); + TESTINST_RRR("crc.w.w.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x2b7c5939d7c0f528UL, 0xb73870a5a6630162UL); + TESTINST_RRR("crc.w.w.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x02fe41918ac5cdbaUL, 0x48e0815289728f05UL); + TESTINST_RRR("crc.w.w.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0xb60a8f381f187baeUL, 0x008c208cc413ff72UL); + + /* ---------------- crc.w.d.w rd, rj, rk ---------------- */ + TESTINST_RRR("crc.w.d.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x4b154113f7d32514UL, 0xcce230caafbf9cc9UL); + TESTINST_RRR("crc.w.d.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x33d5d595721d4f13UL, 0xf4509311f443a7ceUL); + TESTINST_RRR("crc.w.d.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x4a3c6de6954cbc17UL, 0x111b21e39fbd7254UL); + TESTINST_RRR("crc.w.d.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0xfbb5c64ed1b044c6UL, 0x33ca4c4fb3960326UL); + TESTINST_RRR("crc.w.d.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x2b7c5939d7c0f528UL, 0xb73870a5a6630162UL); + TESTINST_RRR("crc.w.d.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x02fe41918ac5cdbaUL, 0x48e0815289728f05UL); + TESTINST_RRR("crc.w.d.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0xb60a8f381f187baeUL, 0x008c208cc413ff72UL); + + /* ---------------- crcc.w.b.w rd, rj, rk ---------------- */ + TESTINST_RRR("crcc.w.b.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x4b154113f7d32514UL, 0xcce230caafbf9cc9UL); + TESTINST_RRR("crcc.w.b.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x33d5d595721d4f13UL, 0xf4509311f443a7ceUL); + TESTINST_RRR("crcc.w.b.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x4a3c6de6954cbc17UL, 0x111b21e39fbd7254UL); + TESTINST_RRR("crcc.w.b.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0xfbb5c64ed1b044c6UL, 0x33ca4c4fb3960326UL); + TESTINST_RRR("crcc.w.b.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x2b7c5939d7c0f528UL, 0xb73870a5a6630162UL); + TESTINST_RRR("crcc.w.b.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x02fe41918ac5cdbaUL, 0x48e0815289728f05UL); + TESTINST_RRR("crcc.w.b.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0xb60a8f381f187baeUL, 0x008c208cc413ff72UL); + + /* ---------------- crcc.w.h.w rd, rj, rk ---------------- */ + TESTINST_RRR("crcc.w.h.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x4b154113f7d32514UL, 0xcce230caafbf9cc9UL); + TESTINST_RRR("crcc.w.h.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x33d5d595721d4f13UL, 0xf4509311f443a7ceUL); + TESTINST_RRR("crcc.w.h.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x4a3c6de6954cbc17UL, 0x111b21e39fbd7254UL); + TESTINST_RRR("crcc.w.h.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0xfbb5c64ed1b044c6UL, 0x33ca4c4fb3960326UL); + TESTINST_RRR("crcc.w.h.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x2b7c5939d7c0f528UL, 0xb73870a5a6630162UL); + TESTINST_RRR("crcc.w.h.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x02fe41918ac5cdbaUL, 0x48e0815289728f05UL); + TESTINST_RRR("crcc.w.h.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0xb60a8f381f187baeUL, 0x008c208cc413ff72UL); + + /* ---------------- crcc.w.w.w rd, rj, rk ---------------- */ + TESTINST_RRR("crcc.w.w.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x4b154113f7d32514UL, 0xcce230caafbf9cc9UL); + TESTINST_RRR("crcc.w.w.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x33d5d595721d4f13UL, 0xf4509311f443a7ceUL); + TESTINST_RRR("crcc.w.w.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x4a3c6de6954cbc17UL, 0x111b21e39fbd7254UL); + TESTINST_RRR("crcc.w.w.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0xfbb5c64ed1b044c6UL, 0x33ca4c4fb3960326UL); + TESTINST_RRR("crcc.w.w.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x2b7c5939d7c0f528UL, 0xb73870a5a6630162UL); + TESTINST_RRR("crcc.w.w.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x02fe41918ac5cdbaUL, 0x48e0815289728f05UL); + TESTINST_RRR("crcc.w.w.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0xb60a8f381f187baeUL, 0x008c208cc413ff72UL); + + /* ---------------- crcc.w.d.w rd, rj, rk ---------------- */ + TESTINST_RRR("crcc.w.d.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x4b154113f7d32514UL, 0xcce230caafbf9cc9UL); + TESTINST_RRR("crcc.w.d.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x33d5d595721d4f13UL, 0xf4509311f443a7ceUL); + TESTINST_RRR("crcc.w.d.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x4a3c6de6954cbc17UL, 0x111b21e39fbd7254UL); + TESTINST_RRR("crcc.w.d.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0xfbb5c64ed1b044c6UL, 0x33ca4c4fb3960326UL); + TESTINST_RRR("crcc.w.d.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x2b7c5939d7c0f528UL, 0xb73870a5a6630162UL); + TESTINST_RRR("crcc.w.d.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0x02fe41918ac5cdbaUL, 0x48e0815289728f05UL); + TESTINST_RRR("crcc.w.d.w", "$r12", "$r13", "$r14", 0x123456789abcdefUL, 0xb60a8f381f187baeUL, 0x008c208cc413ff72UL); +} + +int main(void) +{ + test(); + return 0; +} diff --git a/none/tests/loongarch64/integer.stderr.exp b/none/tests/loongarch64/integer.stderr.exp new file mode 100644 index 0000000..e69de29 diff --git a/none/tests/loongarch64/integer.stdout.exp b/none/tests/loongarch64/integer.stdout.exp new file mode 100644 index 0000000..a4592b7 --- /dev/null +++ b/none/tests/loongarch64/integer.stdout.exp @@ -0,0 +1,2748 @@ +add.w $r19, $r20, $r25 :: +before: $r19=0xf7f01ffbc9696094, $r20=0xb664b1ce21c8c7fc, $r25=0x0d0a02b79ace85cf +after: $r19=0xffffffffbc974dcb, $r20=0xb664b1ce21c8c7fc, $r25=0x0d0a02b79ace85cf +add.w $r29, $r9, $r12 :: +before: $r29=0x5418cd6f6b640953, $r9=0x6465907ca2dac58c, $r12=0xefea76d0d526df3a +after: $r29=0x000000007801a4c6, $r9=0x6465907ca2dac58c, $r12=0xefea76d0d526df3a +add.w $r23, $r15, $r28 :: +before: $r23=0x6ae34fbc6f2f7a9a, $r15=0xbf21c48ab5c2edcc, $r28=0x24824ebd458ed20e +after: $r23=0xfffffffffb51bfda, $r15=0xbf21c48ab5c2edcc, $r28=0x24824ebd458ed20e +add.w $r27, $r14, $r26 :: +before: $r27=0x9f33e38db05616cc, $r14=0xf12ee0c276c52c78, $r26=0xc3054d65ecec3fe6 +after: $r27=0x0000000063b16c5e, $r14=0xf12ee0c276c52c78, $r26=0xc3054d65ecec3fe6 +add.w $r14, $r23, $r27 :: +before: $r14=0x17eaa07c4607901f, $r23=0xa5fa9d0c8472848e, $r27=0xa34301227bb57f76 +after: $r14=0x0000000000280404, $r23=0xa5fa9d0c8472848e, $r27=0xa34301227bb57f76 +add.w $r19, $r19, $r4 :: +before: $r19=0xd2e0644d9532b5ea, $r19=0x2957c6f0638238bc, $r4=0xf01566d0031ee917 +after: $r19=0x0000000066a121d3, $r19=0x0000000066a121d3, $r4=0xf01566d0031ee917 +add.w $r19, $r26, $r13 :: +before: $r19=0x7b39b3f2ccbdaf79, $r26=0xee877221beef9d45, $r13=0x4a743034eefe075d +after: $r19=0xffffffffadeda4a2, $r26=0xee877221beef9d45, $r13=0x4a743034eefe075d +add.w $r29, $r18, $r14 :: +before: $r29=0x95214c4de7e6d3ba, $r18=0x26502eb481799cd1, $r14=0x34d57b775083fb91 +after: $r29=0xffffffffd1fd9862, $r18=0x26502eb481799cd1, $r14=0x34d57b775083fb91 +add.w $r16, $r26, $r8 :: +before: $r16=0xb66b18865bbb3036, $r26=0x8881ccbe1e31aa8d, $r8=0xffe0d2dde8325edc +after: $r16=0x0000000006640969, $r26=0x8881ccbe1e31aa8d, $r8=0xffe0d2dde8325edc +add.w $r26, $r5, $r8 :: +before: $r26=0xc367af71c905540c, $r5=0xcdcbe4860d983fe3, $r8=0x6687aa19ee1fc503 +after: $r26=0xfffffffffbb804e6, $r5=0xcdcbe4860d983fe3, $r8=0x6687aa19ee1fc503 +add.d $r16, $r18, $r8 :: +before: $r16=0xbe5505b409ce995c, $r18=0x561a85fd57e87226, $r8=0x923f3293987edab0 +after: $r16=0xe859b890f0674cd6, $r18=0x561a85fd57e87226, $r8=0x923f3293987edab0 +add.d $r12, $r7, $r29 :: +before: $r12=0xff2682151edc3476, $r7=0x90beb037eacfe3db, $r29=0xa4017082880f1151 +after: $r12=0x34c020ba72def52c, $r7=0x90beb037eacfe3db, $r29=0xa4017082880f1151 +add.d $r31, $r31, $r5 :: +before: $r31=0x81e38385e39d9f16, $r31=0xedb2ffa50c0c8b5f, $r5=0x8776f30d75fc97c2 +after: $r31=0x7529f2b282092321, $r31=0x7529f2b282092321, $r5=0x8776f30d75fc97c2 +add.d $r31, $r6, $r26 :: +before: $r31=0x64ff385d97b60dc2, $r6=0x80f903f206f08f60, $r26=0x4f5b589532e85398 +after: $r31=0xd0545c8739d8e2f8, $r6=0x80f903f206f08f60, $r26=0x4f5b589532e85398 +add.d $r25, $r10, $r20 :: +before: $r25=0xdd8973d6b99634ca, $r10=0x34c0fe5a72dd43d9, $r20=0x2494af03cf5878e7 +after: $r25=0x5955ad5e4235bcc0, $r10=0x34c0fe5a72dd43d9, $r20=0x2494af03cf5878e7 +add.d $r5, $r10, $r4 :: +before: $r5=0x94b272b05ffe39c8, $r10=0x152d15efbbc54c04, $r4=0x25afc06cf151ab29 +after: $r5=0x3adcd65cad16f72d, $r10=0x152d15efbbc54c04, $r4=0x25afc06cf151ab29 +add.d $r19, $r30, $r18 :: +before: $r19=0xa6e14d42459cadf6, $r30=0x558620ff616141b1, $r18=0x1978905697120747 +after: $r19=0x6efeb155f87348f8, $r30=0x558620ff616141b1, $r18=0x1978905697120747 +add.d $r7, $r8, $r20 :: +before: $r7=0x02ea6f88031a29ae, $r8=0x6a08c12301e00d49, $r20=0xdd533acf17f59142 +after: $r7=0x475bfbf219d59e8b, $r8=0x6a08c12301e00d49, $r20=0xdd533acf17f59142 +add.d $r24, $r14, $r26 :: +before: $r24=0xb88df6b8315eb7a6, $r14=0x0137d04f7f6fe285, $r26=0x2ccb253ff7ea93d6 +after: $r24=0x2e02f58f775a765b, $r14=0x0137d04f7f6fe285, $r26=0x2ccb253ff7ea93d6 +add.d $r7, $r19, $r23 :: +before: $r7=0xad464722c0967f28, $r19=0x30295c1fd85ae029, $r23=0x2c69edb227e01d94 +after: $r7=0x5c9349d2003afdbd, $r19=0x30295c1fd85ae029, $r23=0x2c69edb227e01d94 +sub.w $r16, $r28, $r17 :: +before: $r16=0x8b0ba4ef20207fdd, $r28=0x90493cb39ff734a2, $r17=0x519842bab5cc1208 +after: $r16=0xffffffffea2b229a, $r28=0x90493cb39ff734a2, $r17=0x519842bab5cc1208 +sub.w $r6, $r13, $r15 :: +before: $r6=0x13af983aafc53691, $r13=0x27bc6a037865e47f, $r15=0xe20df003930575d5 +after: $r6=0xffffffffe5606eaa, $r13=0x27bc6a037865e47f, $r15=0xe20df003930575d5 +sub.w $r8, $r19, $r23 :: +before: $r8=0x4177aec74585d42d, $r19=0xba89b6aa9b7728ac, $r23=0x0e6a089b8eaf43fe +after: $r8=0x000000000cc7e4ae, $r19=0xba89b6aa9b7728ac, $r23=0x0e6a089b8eaf43fe +sub.w $r7, $r10, $r23 :: +before: $r7=0x0ca1b83a7ab88912, $r10=0xd5e2759ea82c2c80, $r23=0x76e9d6f88c2624ff +after: $r7=0x000000001c060781, $r10=0xd5e2759ea82c2c80, $r23=0x76e9d6f88c2624ff +sub.w $r19, $r24, $r24 :: +before: $r19=0x99d63505ea0474b3, $r24=0x1b53c4c34957af8e, $r24=0x6146da47b731d3ed +after: $r19=000000000000000000, $r24=0x6146da47b731d3ed, $r24=0x6146da47b731d3ed +sub.w $r26, $r31, $r7 :: +before: $r26=0x8eca560d8234ff55, $r31=0x5beb18985c3f451e, $r7=0x9c9634dfaa7b9313 +after: $r26=0xffffffffb1c3b20b, $r31=0x5beb18985c3f451e, $r7=0x9c9634dfaa7b9313 +sub.w $r29, $r16, $r6 :: +before: $r29=0x229544d2cb1d5a64, $r16=0xd23751d515597128, $r6=0xa09dd29330aa8d15 +after: $r29=0xffffffffe4aee413, $r16=0xd23751d515597128, $r6=0xa09dd29330aa8d15 +sub.w $r12, $r16, $r4 :: +before: $r12=0x229f5aefe9fb7fb7, $r16=0x0740ed49b5e95fae, $r4=0xbc6304a0df442807 +after: $r12=0xffffffffd6a537a7, $r16=0x0740ed49b5e95fae, $r4=0xbc6304a0df442807 +sub.w $r30, $r29, $r26 :: +before: $r30=0x94f3a67d188df281, $r29=0x048e066cdad20ac2, $r26=0x1e032e60568554a7 +after: $r30=0xffffffff844cb61b, $r29=0x048e066cdad20ac2, $r26=0x1e032e60568554a7 +sub.w $r18, $r23, $r25 :: +before: $r18=0xedb4f44fb338ba4f, $r23=0xf06e698cd08c8e7b, $r25=0xa22b91e88b77d4d8 +after: $r18=0x000000004514b9a3, $r23=0xf06e698cd08c8e7b, $r25=0xa22b91e88b77d4d8 +sub.d $r18, $r10, $r27 :: +before: $r18=0x68647aa06a23c8f9, $r10=0xd001cb46cb78fc4f, $r27=0x460cc8702b1761f9 +after: $r18=0x89f502d6a0619a56, $r10=0xd001cb46cb78fc4f, $r27=0x460cc8702b1761f9 +sub.d $r7, $r24, $r18 :: +before: $r7=0x8d18e952fb747f43, $r24=0x1e7d1a019fb96490, $r18=0xb466fb9891e8c151 +after: $r7=0x6a161e690dd0a33f, $r24=0x1e7d1a019fb96490, $r18=0xb466fb9891e8c151 +sub.d $r4, $r16, $r27 :: +before: $r4=0x5f6647277ca4c99d, $r16=0xa1156b863ec98e1d, $r27=0xc15612f3ce819d64 +after: $r4=0xdfbf58927047f0b9, $r16=0xa1156b863ec98e1d, $r27=0xc15612f3ce819d64 +sub.d $r4, $r25, $r9 :: +before: $r4=0xe67b33778df480b4, $r25=0xc24b2711be7e4ef1, $r9=0xd940ca25b956100f +after: $r4=0xe90a5cec05283ee2, $r25=0xc24b2711be7e4ef1, $r9=0xd940ca25b956100f +sub.d $r5, $r12, $r18 :: +before: $r5=0x258ae461ef798ce7, $r12=0x3f4984ea3f5692de, $r18=0x99fa673f30e69019 +after: $r5=0xa54f1dab0e7002c5, $r12=0x3f4984ea3f5692de, $r18=0x99fa673f30e69019 +sub.d $r13, $r10, $r9 :: +before: $r13=0xdafb48debea5211e, $r10=0xeac1d3b25f6bf8db, $r9=0x297d671b1c96e48f +after: $r13=0xc1446c9742d5144c, $r10=0xeac1d3b25f6bf8db, $r9=0x297d671b1c96e48f +sub.d $r7, $r15, $r23 :: +before: $r7=0xc6b03274ff37baf6, $r15=0x05b37ffc2c84aec9, $r23=0x74d62a52cbaaec15 +after: $r7=0x90dd55a960d9c2b4, $r15=0x05b37ffc2c84aec9, $r23=0x74d62a52cbaaec15 +sub.d $r26, $r18, $r26 :: +before: $r26=0x35c71e0956ffcd43, $r18=0xad703a4e8078070b, $r26=0x634924e8a9fdbb9e +after: $r26=0x4a271565d67a4b6d, $r18=0xad703a4e8078070b, $r26=0x4a271565d67a4b6d +sub.d $r16, $r29, $r5 :: +before: $r16=0x18bf961cba922928, $r29=0x54ed9198405f8983, $r5=0x977f5b65e5f86b4a +after: $r16=0xbd6e36325a671e39, $r29=0x54ed9198405f8983, $r5=0x977f5b65e5f86b4a +sub.d $r31, $r28, $r14 :: +before: $r31=0xa38a1e8cb3c7ba00, $r28=0xd220d1ef3cf8f3f7, $r14=0xc972df2ace170d61 +after: $r31=0x08adf2c46ee1e696, $r28=0xd220d1ef3cf8f3f7, $r14=0xc972df2ace170d61 +slt $r12, $r17, $r18 :: +before: $r12=0xd7a0e65c279e1082, $r17=0x819edf00a849ba44, $r18=0x41a0b2fe37d44db2 +after: $r12=0x0000000000000001, $r17=0x819edf00a849ba44, $r18=0x41a0b2fe37d44db2 +slt $r31, $r13, $r18 :: +before: $r31=0x2ef00a5cfd100f71, $r13=0x4792cd9f9abf36d3, $r18=0x2c117902110ef9a8 +after: $r31=000000000000000000, $r13=0x4792cd9f9abf36d3, $r18=0x2c117902110ef9a8 +slt $r4, $r30, $r29 :: +before: $r4=0x6d8be2fb73e2c006, $r30=0xf76ce97d7658995e, $r29=0x3856e09bfe39df6e +after: $r4=0x0000000000000001, $r30=0xf76ce97d7658995e, $r29=0x3856e09bfe39df6e +slt $r4, $r18, $r10 :: +before: $r4=0xeddcb9dcf092c3f5, $r18=0x0e57b7c25d13dea8, $r10=0x761d86b48cb5ce21 +after: $r4=0x0000000000000001, $r18=0x0e57b7c25d13dea8, $r10=0x761d86b48cb5ce21 +slt $r16, $r18, $r16 :: +before: $r16=0xcddd92e2340cd593, $r18=0xc9a30f4707743f80, $r16=0x3ff7d36f17396d3a +after: $r16=0x0000000000000001, $r18=0xc9a30f4707743f80, $r16=0x0000000000000001 +slt $r6, $r14, $r10 :: +before: $r6=0xa9e71c6376093499, $r14=0x26bb3955b588461f, $r10=0xfae7e7a950447826 +after: $r6=000000000000000000, $r14=0x26bb3955b588461f, $r10=0xfae7e7a950447826 +slt $r19, $r4, $r17 :: +before: $r19=0x35bb27f64ebd7d62, $r4=0x4a7d3941ebf88bc1, $r17=0x0cda32e4b1c1d5c4 +after: $r19=000000000000000000, $r4=0x4a7d3941ebf88bc1, $r17=0x0cda32e4b1c1d5c4 +slt $r19, $r28, $r15 :: +before: $r19=0x29419b8261e40b99, $r28=0xe7e9b059033afa7d, $r15=0x1ea916293b1cc3dd +after: $r19=0x0000000000000001, $r28=0xe7e9b059033afa7d, $r15=0x1ea916293b1cc3dd +slt $r31, $r16, $r16 :: +before: $r31=0xe0fb75047bc62c9a, $r16=0xa634f6174dcced7d, $r16=0xcca5a9d25b670e70 +after: $r31=000000000000000000, $r16=0xcca5a9d25b670e70, $r16=0xcca5a9d25b670e70 +slt $r4, $r4, $r10 :: +before: $r4=0x724ee03fb3fcdec8, $r4=0xae2587f097065e2c, $r10=0x65c69548f83dd0df +after: $r4=0x0000000000000001, $r4=0x0000000000000001, $r10=0x65c69548f83dd0df +sltu $r14, $r10, $r13 :: +before: $r14=0x1956e5498db3fb6e, $r10=0x2d909abfec4490bd, $r13=0xa7d554ebe591d5cc +after: $r14=0x0000000000000001, $r10=0x2d909abfec4490bd, $r13=0xa7d554ebe591d5cc +sltu $r6, $r5, $r18 :: +before: $r6=0xc34214447a064eb8, $r5=0xad4413e45f0a226a, $r18=0x4b09aab500b04bff +after: $r6=000000000000000000, $r5=0xad4413e45f0a226a, $r18=0x4b09aab500b04bff +sltu $r31, $r17, $r17 :: +before: $r31=0x86e16a1618a639c4, $r17=0x87917b281cef8df0, $r17=0x0d543115a56dee48 +after: $r31=000000000000000000, $r17=0x0d543115a56dee48, $r17=0x0d543115a56dee48 +sltu $r20, $r6, $r25 :: +before: $r20=0x164fff47b8b23752, $r6=0x9ad830d46b1660f6, $r25=0xc5d72c146f4aba72 +after: $r20=0x0000000000000001, $r6=0x9ad830d46b1660f6, $r25=0xc5d72c146f4aba72 +sltu $r6, $r26, $r7 :: +before: $r6=0x1428360430b7c9b5, $r26=0xc2052dc6eea5a53c, $r7=0xda1a8e35dd060adf +after: $r6=0x0000000000000001, $r26=0xc2052dc6eea5a53c, $r7=0xda1a8e35dd060adf +sltu $r19, $r15, $r26 :: +before: $r19=0xdfc9984966167604, $r15=0xa9ea12b5a37dd492, $r26=0x7a24be9fcf349afc +after: $r19=000000000000000000, $r15=0xa9ea12b5a37dd492, $r26=0x7a24be9fcf349afc +sltu $r29, $r26, $r29 :: +before: $r29=0x5a3822db2cc26fc5, $r26=0x5985f02e77511d80, $r29=0x370f15cc98f2a6c1 +after: $r29=000000000000000000, $r26=0x5985f02e77511d80, $r29=000000000000000000 +sltu $r7, $r28, $r16 :: +before: $r7=0x0e4594ee2cc8c6d7, $r28=0x0177ac0014f5dd20, $r16=0xde1724c7590a4908 +after: $r7=0x0000000000000001, $r28=0x0177ac0014f5dd20, $r16=0xde1724c7590a4908 +sltu $r8, $r12, $r4 :: +before: $r8=0x1df979e50aa0ed18, $r12=0x5b410cd0985fce18, $r4=0x9d3c39d61e29025d +after: $r8=0x0000000000000001, $r12=0x5b410cd0985fce18, $r4=0x9d3c39d61e29025d +sltu $r30, $r23, $r25 :: +before: $r30=0x1cba022788d49d13, $r23=0xd2b40941478ee865, $r25=0xa503a74e41535830 +after: $r30=000000000000000000, $r23=0xd2b40941478ee865, $r25=0xa503a74e41535830 +slti $r15, $r27, 1913 :: +before: $r15=0xe24c4ca567d1d5f4, $r27=0xfef05a88adf4b892 +after: $r15=0x0000000000000001, $r27=0xfef05a88adf4b892 +slti $r8, $r31, -738 :: +before: $r8=0xfba7284a8ab83b2d, $r31=0xff63b80173f1e368 +after: $r8=0x0000000000000001, $r31=0xff63b80173f1e368 +slti $r31, $r31, -1544 :: +before: $r31=0xb4599a9fa734365a, $r31=0x4327139de75dde1e +after: $r31=000000000000000000, $r31=000000000000000000 +slti $r5, $r4, 1529 :: +before: $r5=0xa5572272e0c04a20, $r4=0x87657c1b1699936b +after: $r5=0x0000000000000001, $r4=0x87657c1b1699936b +slti $r10, $r28, 557 :: +before: $r10=0x1260731618214410, $r28=0xd0de0dfbafb7960a +after: $r10=0x0000000000000001, $r28=0xd0de0dfbafb7960a +slti $r5, $r12, -222 :: +before: $r5=0x4c6317772a4b06b0, $r12=0x7a1d4eeb507d649b +after: $r5=000000000000000000, $r12=0x7a1d4eeb507d649b +slti $r4, $r31, 717 :: +before: $r4=0x23b4d62a21994afb, $r31=0x85304cc393f6506b +after: $r4=0x0000000000000001, $r31=0x85304cc393f6506b +slti $r18, $r26, 730 :: +before: $r18=0x67b6f5dbf6a0c55d, $r26=0x451013f9a2337f9f +after: $r18=000000000000000000, $r26=0x451013f9a2337f9f +slti $r25, $r8, 1193 :: +before: $r25=0xdb278cca57f1ad7b, $r8=0x7371a60f5af6334b +after: $r25=000000000000000000, $r8=0x7371a60f5af6334b +slti $r17, $r24, 329 :: +before: $r17=0xffa3ed31f9ea3a29, $r24=0x1138e06e1a45c4f3 +after: $r17=000000000000000000, $r24=0x1138e06e1a45c4f3 +sltui $r13, $r26, -462 :: +before: $r13=0x62677116040aebff, $r26=0xeedd6ccd0e5e2771 +after: $r13=0x0000000000000001, $r26=0xeedd6ccd0e5e2771 +sltui $r24, $r28, 1890 :: +before: $r24=0xef9500b68a87984a, $r28=0xaf5922683f40599d +after: $r24=000000000000000000, $r28=0xaf5922683f40599d +sltui $r9, $r6, -1538 :: +before: $r9=0x9996aa21d2b51922, $r6=0xd5214fb275e738dc +after: $r9=0x0000000000000001, $r6=0xd5214fb275e738dc +sltui $r19, $r26, -215 :: +before: $r19=0x3eb2777655f0f1c5, $r26=0x98ed915860f0eb26 +after: $r19=0x0000000000000001, $r26=0x98ed915860f0eb26 +sltui $r8, $r19, -780 :: +before: $r8=0x5c44b5807c43724c, $r19=0x63a068026b529b03 +after: $r8=0x0000000000000001, $r19=0x63a068026b529b03 +sltui $r19, $r17, -1041 :: +before: $r19=0xf6926016cdbfacc1, $r17=0xec04a9bcc8d1192a +after: $r19=0x0000000000000001, $r17=0xec04a9bcc8d1192a +sltui $r26, $r14, 1653 :: +before: $r26=0x542f05c795aa07c2, $r14=0xb634bf537df4c4ce +after: $r26=000000000000000000, $r14=0xb634bf537df4c4ce +sltui $r8, $r5, 441 :: +before: $r8=0x371daf74e330ee8b, $r5=0xedb0321c888ae22e +after: $r8=000000000000000000, $r5=0xedb0321c888ae22e +sltui $r25, $r4, 678 :: +before: $r25=0xba813c7acc8f5621, $r4=0x8d5ce4750fe7603b +after: $r25=000000000000000000, $r4=0x8d5ce4750fe7603b +sltui $r17, $r15, 2019 :: +before: $r17=0x199b641cefe0a0e2, $r15=0x7ea0508a3fed3453 +after: $r17=000000000000000000, $r15=0x7ea0508a3fed3453 +nor $r14, $r28, $r9 :: +before: $r14=0xccf23cf02a48844d, $r28=0x2608ea0069c4e9dd, $r9=0x1c7a04255a2d13f8 +after: $r14=0xc18511da84120402, $r28=0x2608ea0069c4e9dd, $r9=0x1c7a04255a2d13f8 +nor $r6, $r30, $r4 :: +before: $r6=0xbfcc3de6da2483be, $r30=0xd24e9abca28d6cb5, $r4=0xbb01b508523673c6 +after: $r6=0x04b040430d408008, $r30=0xd24e9abca28d6cb5, $r4=0xbb01b508523673c6 +nor $r6, $r28, $r13 :: +before: $r6=0x28dacd828d5736d7, $r28=0xb365ff31474f736c, $r13=0x593621c0f82b445c +after: $r6=0x0488000e00908883, $r28=0xb365ff31474f736c, $r13=0x593621c0f82b445c +nor $r24, $r16, $r31 :: +before: $r24=0x5898010a4c6cf1bb, $r16=0xecac6e093ba6146a, $r31=0x050e6093f19b1194 +after: $r24=0x125191640440ea01, $r16=0xecac6e093ba6146a, $r31=0x050e6093f19b1194 +nor $r15, $r7, $r20 :: +before: $r15=0x2ddb1dea334fd92a, $r7=0x401d7a663be0b31a, $r20=0xb6c008973a85f779 +after: $r15=0x09228508c41a0884, $r7=0x401d7a663be0b31a, $r20=0xb6c008973a85f779 +nor $r18, $r31, $r29 :: +before: $r18=0x0c987982e1d91684, $r31=0x181f20f581ed38f4, $r29=0xefaa786e00a2e5b9 +after: $r18=0x004087007e100202, $r31=0x181f20f581ed38f4, $r29=0xefaa786e00a2e5b9 +nor $r19, $r31, $r13 :: +before: $r19=0x39e476d555cd20bc, $r31=0xfb8fab5d35576d50, $r13=0x71a92a8377c0f729 +after: $r19=0x0450542088280086, $r31=0xfb8fab5d35576d50, $r13=0x71a92a8377c0f729 +nor $r25, $r7, $r5 :: +before: $r25=0x7f36d0c6d173e8c8, $r7=0x181763a9f9350680, $r5=0x5ec5099605d7d418 +after: $r25=0xa128944002082967, $r7=0x181763a9f9350680, $r5=0x5ec5099605d7d418 +nor $r30, $r23, $r23 :: +before: $r30=0x688e1d04976ac8db, $r23=0xd37b6d6a1c510287, $r23=0x8670301ee2a715df +after: $r30=0x798fcfe11d58ea20, $r23=0x8670301ee2a715df, $r23=0x8670301ee2a715df +nor $r5, $r23, $r14 :: +before: $r5=0x71c4a211dd9262f4, $r23=0xcb8a4aebc2c6c4f2, $r14=0x084d79a5254447c9 +after: $r5=0x3430841018393804, $r23=0xcb8a4aebc2c6c4f2, $r14=0x084d79a5254447c9 +and $r8, $r14, $r31 :: +before: $r8=0xbddf22c4109e20b5, $r14=0xb2d25973efd1a8ff, $r31=0x28b78b59dfe641e9 +after: $r8=0x20920951cfc000e9, $r14=0xb2d25973efd1a8ff, $r31=0x28b78b59dfe641e9 +and $r19, $r23, $r17 :: +before: $r19=0xb25e185c549f6661, $r23=0xb6ccc215c2f17718, $r17=0xf20669c51aee8ffe +after: $r19=0xb204400502e00718, $r23=0xb6ccc215c2f17718, $r17=0xf20669c51aee8ffe +and $r30, $r27, $r23 :: +before: $r30=0xa7f4ad796393e12b, $r27=0xefbcf405df3e7aff, $r23=0x548a0141e9fe1700 +after: $r30=0x44880001c93e1200, $r27=0xefbcf405df3e7aff, $r23=0x548a0141e9fe1700 +and $r18, $r31, $r29 :: +before: $r18=0xa399c7f46c61d974, $r31=0xe0fe8cca1cbab773, $r29=0x49e680ddee7f666b +after: $r18=0x40e680c80c3a2663, $r31=0xe0fe8cca1cbab773, $r29=0x49e680ddee7f666b +and $r5, $r26, $r25 :: +before: $r5=0x1682ca17c11f90ac, $r26=0x4e9706cb2c885742, $r25=0x250ff6304dd87d57 +after: $r5=0x040706000c885542, $r26=0x4e9706cb2c885742, $r25=0x250ff6304dd87d57 +and $r28, $r14, $r8 :: +before: $r28=0xcacf15e6ffad256f, $r14=0x99527f4fa2aa8fb1, $r8=0xcff546a883b63cfb +after: $r28=0x8950460882a20cb1, $r14=0x99527f4fa2aa8fb1, $r8=0xcff546a883b63cfb +and $r28, $r9, $r28 :: +before: $r28=0xc60423b9cf70d112, $r9=0x2fb0db47f1d8f166, $r28=0x1e9cec9d13e85210 +after: $r28=0x0e90c80511c85000, $r9=0x2fb0db47f1d8f166, $r28=0x0e90c80511c85000 +and $r18, $r28, $r5 :: +before: $r18=0x5059c37ee38d2f25, $r28=0x74bf57d85d90af3a, $r5=0x35479df0ebec9209 +after: $r18=0x340715d049808208, $r28=0x74bf57d85d90af3a, $r5=0x35479df0ebec9209 +and $r23, $r25, $r12 :: +before: $r23=0x18742ef4c73416be, $r25=0x8b93e775860ef52b, $r12=0xa909915f60a546d2 +after: $r23=0x8901815500044402, $r25=0x8b93e775860ef52b, $r12=0xa909915f60a546d2 +and $r18, $r17, $r24 :: +before: $r18=0xadb2cc6aec909946, $r17=0x3068f8b21d583e4c, $r24=0xcf8aae1918f3a88e +after: $r18=0x0008a8101850280c, $r17=0x3068f8b21d583e4c, $r24=0xcf8aae1918f3a88e +or $r19, $r28, $r25 :: +before: $r19=0x46819825f87044c2, $r28=0x65cb2cc7e5f5a720, $r25=0x1fc0130146f13f76 +after: $r19=0x7fcb3fc7e7f5bf76, $r28=0x65cb2cc7e5f5a720, $r25=0x1fc0130146f13f76 +or $r8, $r25, $r4 :: +before: $r8=0x45083dd59c60e6fe, $r25=0x936ecfaeb4d51c95, $r4=0xdc37c27c69024f6e +after: $r8=0xdf7fcffefdd75fff, $r25=0x936ecfaeb4d51c95, $r4=0xdc37c27c69024f6e +or $r15, $r16, $r8 :: +before: $r15=0x516659e51cf19b26, $r16=0x7589da0802d59510, $r8=0x6b713c60390f3fbf +after: $r15=0x7ff9fe683bdfbfbf, $r16=0x7589da0802d59510, $r8=0x6b713c60390f3fbf +or $r9, $r15, $r6 :: +before: $r9=0x1646568625c40022, $r15=0xa68db9141a88850c, $r6=0x756d912fbefef973 +after: $r9=0xf7edb93fbefefd7f, $r15=0xa68db9141a88850c, $r6=0x756d912fbefef973 +or $r24, $r9, $r25 :: +before: $r24=0xda34c24d14fce443, $r9=0x6ad9bf24481630b0, $r25=0x02aefcdfa652395b +after: $r24=0x6affffffee5639fb, $r9=0x6ad9bf24481630b0, $r25=0x02aefcdfa652395b +or $r13, $r9, $r14 :: +before: $r13=0x900358ad1e848728, $r9=0xa0e361b5b891a62e, $r14=0xddfa0c1377ce01ac +after: $r13=0xfdfb6db7ffdfa7ae, $r9=0xa0e361b5b891a62e, $r14=0xddfa0c1377ce01ac +or $r23, $r16, $r15 :: +before: $r23=0x27a55515d39aded9, $r16=0xd0daf17f9cb0bf5a, $r15=0xf44c4372982c4d74 +after: $r23=0xf4def37f9cbcff7e, $r16=0xd0daf17f9cb0bf5a, $r15=0xf44c4372982c4d74 +or $r20, $r16, $r16 :: +before: $r20=0x7045887bb8325d6f, $r16=0xbac771cbb78dae04, $r16=0x23f4928023125a5c +after: $r20=0x23f4928023125a5c, $r16=0x23f4928023125a5c, $r16=0x23f4928023125a5c +or $r30, $r5, $r7 :: +before: $r30=0xcf609aa2057d1b98, $r5=0x379641544fd1cd48, $r7=0x5275ef34f265f01a +after: $r30=0x77f7ef74fff5fd5a, $r5=0x379641544fd1cd48, $r7=0x5275ef34f265f01a +or $r23, $r4, $r30 :: +before: $r23=0xc43fc1c750887406, $r4=0x44a3229c33d1cd65, $r30=0xceaa00084fc04912 +after: $r23=0xceab229c7fd1cd77, $r4=0x44a3229c33d1cd65, $r30=0xceaa00084fc04912 +xor $r6, $r19, $r31 :: +before: $r6=0x018522418b59bf8a, $r19=0x270a2ec823f26e39, $r31=0x99ef76e6d4495ae3 +after: $r6=0xbee5582ef7bb34da, $r19=0x270a2ec823f26e39, $r31=0x99ef76e6d4495ae3 +xor $r28, $r20, $r27 :: +before: $r28=0x57de83cac9dade15, $r20=0xd39fdecdfd4ccb08, $r27=0x00c97b854adacdb4 +after: $r28=0xd356a548b79606bc, $r20=0xd39fdecdfd4ccb08, $r27=0x00c97b854adacdb4 +xor $r4, $r29, $r5 :: +before: $r4=0x9f7356fff2445f77, $r29=0xc3c3a34d2c226b5a, $r5=0x51abdd266816b94f +after: $r4=0x92687e6b4434d215, $r29=0xc3c3a34d2c226b5a, $r5=0x51abdd266816b94f +xor $r14, $r6, $r28 :: +before: $r14=0xdd5ca0b5c6c45804, $r6=0xa0ba047990ec0798, $r28=0x089e6efd43651c28 +after: $r14=0xa8246a84d3891bb0, $r6=0xa0ba047990ec0798, $r28=0x089e6efd43651c28 +xor $r8, $r19, $r23 :: +before: $r8=0xc3e35cd44af166fa, $r19=0x6affcfe12104ccc7, $r23=0x4adbb3601a07a1d9 +after: $r8=0x20247c813b036d1e, $r19=0x6affcfe12104ccc7, $r23=0x4adbb3601a07a1d9 +xor $r16, $r5, $r18 :: +before: $r16=0x685cdc5ca969c8e1, $r5=0xd88d0e2a9900b8eb, $r18=0xdd4dfbba723cde28 +after: $r16=0x05c0f590eb3c66c3, $r5=0xd88d0e2a9900b8eb, $r18=0xdd4dfbba723cde28 +xor $r20, $r18, $r24 :: +before: $r20=0x2362838018fa39be, $r18=0xbbc8d438b24c037a, $r24=0xe020a8456a45b667 +after: $r20=0x5be87c7dd809b51d, $r18=0xbbc8d438b24c037a, $r24=0xe020a8456a45b667 +xor $r19, $r23, $r19 :: +before: $r19=0x637cae50fc0a1c95, $r23=0x514b81a7227dd07e, $r19=0x59a27a7f9c8481c3 +after: $r19=0x08e9fbd8bef951bd, $r23=0x514b81a7227dd07e, $r19=0x08e9fbd8bef951bd +xor $r20, $r16, $r18 :: +before: $r20=0xb728dd7a443bcc8f, $r16=0xe2de9bf67cdbdc0c, $r18=0x26687435fbe4dbf6 +after: $r20=0xc4b6efc3873f07fa, $r16=0xe2de9bf67cdbdc0c, $r18=0x26687435fbe4dbf6 +xor $r23, $r14, $r6 :: +before: $r23=0x744915919b52e27e, $r14=0x16863c1d3e1cded7, $r6=0x040ce8607349c380 +after: $r23=0x128ad47d4d551d57, $r14=0x16863c1d3e1cded7, $r6=0x040ce8607349c380 +orn $r24, $r9, $r15 :: +before: $r24=0x39320ce9aa25fb73, $r9=0xaaec06dc1b47cf43, $r15=0x5fa36a558c884a69 +after: $r24=0xaafc97fe7b77ffd7, $r9=0xaaec06dc1b47cf43, $r15=0x5fa36a558c884a69 +orn $r12, $r4, $r26 :: +before: $r12=0xa9c2abcbc14e3f3c, $r4=0x7c87d633528d97b0, $r26=0xe383c14e72ab8677 +after: $r12=0x7cfffeb3dfddffb8, $r4=0x7c87d633528d97b0, $r26=0xe383c14e72ab8677 +orn $r20, $r24, $r28 :: +before: $r20=0xb117d8b0280738a2, $r24=0x318fd949c3ba430f, $r28=0xc9edab5116dc1582 +after: $r20=0x379fddefebbbeb7f, $r24=0x318fd949c3ba430f, $r28=0xc9edab5116dc1582 +orn $r8, $r25, $r25 :: +before: $r8=0xb140441a36f8eded, $r25=0xa26782a5e34d7add, $r25=0x61bdd5b78d019958 +after: $r8=0xffffffffffffffff, $r25=0x61bdd5b78d019958, $r25=0x61bdd5b78d019958 +orn $r16, $r18, $r25 :: +before: $r16=0xcda0e2c1bce1eeec, $r18=0xa4486eefd2c444d9, $r25=0xbd007605c829cadc +after: $r16=0xe6ffeffff7d675fb, $r18=0xa4486eefd2c444d9, $r25=0xbd007605c829cadc +orn $r5, $r28, $r19 :: +before: $r5=0x8196fca50795a2aa, $r28=0xec7f689a0d676560, $r19=0xb4450418c4e1b333 +after: $r5=0xeffffbff3f7f6dec, $r28=0xec7f689a0d676560, $r19=0xb4450418c4e1b333 +orn $r15, $r14, $r8 :: +before: $r15=0xaf1e2a9fe35ba4ed, $r14=0xd2207f86d89b890a, $r8=0xfb31b9e37313a94d +after: $r15=0xd6ee7f9edcffdfba, $r14=0xd2207f86d89b890a, $r8=0xfb31b9e37313a94d +orn $r27, $r14, $r14 :: +before: $r27=0x1f24566bfa353160, $r14=0xc4e17319c4766bec, $r14=0x29a3bbaaf6b49218 +after: $r27=0xffffffffffffffff, $r14=0x29a3bbaaf6b49218, $r14=0x29a3bbaaf6b49218 +orn $r17, $r12, $r31 :: +before: $r17=0xf5195a72c175fed7, $r12=0x7aa8d4840359cbf6, $r31=0xa1a42af83c82215b +after: $r17=0x7efbd587c37ddff6, $r12=0x7aa8d4840359cbf6, $r31=0xa1a42af83c82215b +orn $r16, $r20, $r20 :: +before: $r16=0x76bb09b5b50705e2, $r20=0x613fdcbd8c1eba2a, $r20=0xfb1e04641f5da4ff +after: $r16=0xffffffffffffffff, $r20=0xfb1e04641f5da4ff, $r20=0xfb1e04641f5da4ff +andn $r19, $r31, $r17 :: +before: $r19=0xbcc81a9b2e349626, $r31=0x5a38a8ef9c7e30e4, $r17=0xcb490976d0652986 +after: $r19=0x1030a0890c1a1060, $r31=0x5a38a8ef9c7e30e4, $r17=0xcb490976d0652986 +andn $r10, $r4, $r10 :: +before: $r10=0x9acfa0cd6ea107fd, $r4=0x1d9b572e8f6bedb7, $r10=0x768fe778d2a543ea +after: $r10=0x091010060d4aac15, $r4=0x1d9b572e8f6bedb7, $r10=0x091010060d4aac15 +andn $r6, $r12, $r26 :: +before: $r6=0x949e36cff3b5decb, $r12=0x56723f7285834fc9, $r26=0xf6fa544d6cd57fa8 +after: $r6=0x00002b3281020041, $r12=0x56723f7285834fc9, $r26=0xf6fa544d6cd57fa8 +andn $r16, $r6, $r4 :: +before: $r16=0x44a39d85132d6513, $r6=0x3ca7f972b865b7ce, $r4=0xf18819e4740308bc +after: $r16=0x0c27e0128864b742, $r6=0x3ca7f972b865b7ce, $r4=0xf18819e4740308bc +andn $r19, $r26, $r15 :: +before: $r19=0x856d1e3162c8fa2d, $r26=0x0c1ef79456be3885, $r15=0x03c089064e60da1d +after: $r19=0x0c1e7690109e2080, $r26=0x0c1ef79456be3885, $r15=0x03c089064e60da1d +andn $r17, $r28, $r9 :: +before: $r17=0x512a518c554f4b0a, $r28=0x043454425b8b7755, $r9=0xdc5dca386b49bdd7 +after: $r17=0x0020144210824200, $r28=0x043454425b8b7755, $r9=0xdc5dca386b49bdd7 +andn $r16, $r16, $r14 :: +before: $r16=0xa9c14796fec54f89, $r16=0xe31928f90d2723a4, $r14=0xcf2deaf4af11410a +after: $r16=0x20100009002622a4, $r16=0x20100009002622a4, $r14=0xcf2deaf4af11410a +andn $r9, $r4, $r20 :: +before: $r9=0x51d79964a699ec8d, $r4=0xe82135537ca93e7f, $r20=0xcbadcb1dc4dd0ed0 +after: $r9=0x200034423820302f, $r4=0xe82135537ca93e7f, $r20=0xcbadcb1dc4dd0ed0 +andn $r18, $r25, $r25 :: +before: $r18=0xeb546ce75bcba3f5, $r25=0x953d86e2bd6b136d, $r25=0x4914dbeee506d8ad +after: $r18=000000000000000000, $r25=0x4914dbeee506d8ad, $r25=0x4914dbeee506d8ad +andn $r27, $r15, $r14 :: +before: $r27=0xc8b599a43b0b4683, $r15=0x0509638630676b88, $r14=0x3d278ed22a112a89 +after: $r27=0x0008610410664100, $r15=0x0509638630676b88, $r14=0x3d278ed22a112a89 +mul.w $r28, $r12, $r10 :: +before: $r28=0xf6fcce3e1c5b1598, $r12=0xef2747013f911fe8, $r10=0x14a216fd69537967 +after: $r28=0xffffffffabb07e58, $r12=0xef2747013f911fe8, $r10=0x14a216fd69537967 +mul.w $r13, $r18, $r24 :: +before: $r13=0x5e8a32c1e1e12aa4, $r18=0x30e007bb8dd185fa, $r24=0x1a74dd893af9fb5a +after: $r13=0x000000003e2f37e4, $r18=0x30e007bb8dd185fa, $r24=0x1a74dd893af9fb5a +mul.w $r10, $r20, $r4 :: +before: $r10=0xf06f4af61b0e0c24, $r20=0x1b3624a77f26275f, $r4=0x653052ae3a1347df +after: $r10=0xffffffffc934a4c1, $r20=0x1b3624a77f26275f, $r4=0x653052ae3a1347df +mul.w $r23, $r19, $r10 :: +before: $r23=0xccb5485ae4605cdd, $r19=0x67c67c647eaf9e6c, $r10=0xfb9b6c7b49ec10cf +after: $r23=0x000000004177d954, $r19=0x67c67c647eaf9e6c, $r10=0xfb9b6c7b49ec10cf +mul.w $r12, $r30, $r7 :: +before: $r12=0xc1f45aaf98ffcb39, $r30=0x906f0c08c0bae02e, $r7=0xdf6cf5c05b5f2d34 +after: $r12=0xffffffff8a6f9f58, $r30=0x906f0c08c0bae02e, $r7=0xdf6cf5c05b5f2d34 +mul.w $r27, $r12, $r12 :: +before: $r27=0x9545c6d9f812c0d9, $r12=0xacd016cb69e028b3, $r12=0x2b68e3a280d9c0b6 +after: $r27=0x00000000459d8164, $r12=0x2b68e3a280d9c0b6, $r12=0x2b68e3a280d9c0b6 +mul.w $r28, $r7, $r19 :: +before: $r28=0x4cf68a9590da3da5, $r7=0x70ed8b9b03a6325d, $r19=0x1125383d12dad118 +after: $r28=0x0000000073e4a5b8, $r7=0x70ed8b9b03a6325d, $r19=0x1125383d12dad118 +mul.w $r20, $r12, $r20 :: +before: $r20=0x10683d31408fb4c5, $r12=0x9ef4ea79672ce58d, $r20=0x960a13776923d3e4 +after: $r20=0x000000001c76a894, $r12=0x9ef4ea79672ce58d, $r20=0x000000001c76a894 +mul.w $r26, $r19, $r28 :: +before: $r26=0xbf8a20b69fa4357b, $r19=0xf3e9b53a654e3cbf, $r28=0x20afdeb5a4b4e1c9 +after: $r26=0x00000000601d90f7, $r19=0xf3e9b53a654e3cbf, $r28=0x20afdeb5a4b4e1c9 +mul.w $r13, $r26, $r25 :: +before: $r13=0x78f637d350c666bf, $r26=0xff742d96dc73e9e9, $r25=0x94a3289b55744707 +after: $r13=0xffffffff879f045f, $r26=0xff742d96dc73e9e9, $r25=0x94a3289b55744707 +mulh.w $r18, $r25, $r14 :: +before: $r18=0xa988161162710d96, $r25=0x37443c6f5d0625ea, $r14=0x94da379219de8576 +after: $r18=0x0000000009667587, $r25=0x37443c6f5d0625ea, $r14=0x94da379219de8576 +mulh.w $r13, $r16, $r18 :: +before: $r13=0x246298a54a25030a, $r16=0x33643ceed35cff64, $r18=0xc25702631b42c849 +after: $r13=0xfffffffffb3f29fd, $r16=0x33643ceed35cff64, $r18=0xc25702631b42c849 +mulh.w $r20, $r5, $r15 :: +before: $r20=0x3b606ea986dcf13e, $r5=0x269dcd16567786d2, $r15=0x96c0983df45d5c03 +after: $r20=0xfffffffffc11ee2e, $r5=0x269dcd16567786d2, $r15=0x96c0983df45d5c03 +mulh.w $r19, $r19, $r25 :: +before: $r19=0xab8fc1c922ba3e7a, $r19=0xdec5bddca513d198, $r25=0xf05e814d67d43f5a +after: $r19=0xffffffffdb1f973d, $r19=0xffffffffdb1f973d, $r25=0xf05e814d67d43f5a +mulh.w $r15, $r28, $r16 :: +before: $r15=0x82fcfa24449231ba, $r28=0xf37548fee13133f3, $r16=0x256188ef96bb3d23 +after: $r15=0x000000000cab1812, $r28=0xf37548fee13133f3, $r16=0x256188ef96bb3d23 +mulh.w $r24, $r9, $r27 :: +before: $r24=0x858ddeb68e948058, $r9=0x0ffb64d62e202462, $r27=0xe07a6dae07f46c11 +after: $r24=0x00000000016eeb19, $r9=0x0ffb64d62e202462, $r27=0xe07a6dae07f46c11 +mulh.w $r23, $r20, $r14 :: +before: $r23=0x7713930e419350ff, $r20=0xd5d72e6efb86e428, $r14=0x49f87e78ddcc8400 +after: $r23=0x000000000098fbfd, $r20=0xd5d72e6efb86e428, $r14=0x49f87e78ddcc8400 +mulh.w $r28, $r20, $r25 :: +before: $r28=0x552a9b7f3fa0c48a, $r20=0xd616afd20f193287, $r25=0xbcd2ae680b131cd2 +after: $r28=0x0000000000a735bd, $r20=0xd616afd20f193287, $r25=0xbcd2ae680b131cd2 +mulh.w $r16, $r19, $r12 :: +before: $r16=0x94b154fc890497c3, $r19=0xd8217f47e4257a7c, $r12=0xb47bb0e4cff83cbf +after: $r16=0x000000000539d140, $r19=0xd8217f47e4257a7c, $r12=0xb47bb0e4cff83cbf +mulh.w $r23, $r23, $r6 :: +before: $r23=0x0afb7fddb344318f, $r23=0xaafee418c4267e18, $r6=0x1763f686cd41d46e +after: $r23=0x000000000bdcf0fd, $r23=0x000000000bdcf0fd, $r6=0x1763f686cd41d46e +mulh.wu $r18, $r17, $r8 :: +before: $r18=0xa92fa2817b19786c, $r17=0xaf23e3d2092f080c, $r8=0x771c36ac19259f2a +after: $r18=0x0000000000e6f14b, $r17=0xaf23e3d2092f080c, $r8=0x771c36ac19259f2a +mulh.wu $r16, $r13, $r8 :: +before: $r16=0xf4a7b7abe5f3831a, $r13=0xe8beff7f8f4330cd, $r8=0x38cebbe3d1af354d +after: $r16=0x000000007557e799, $r13=0xe8beff7f8f4330cd, $r8=0x38cebbe3d1af354d +mulh.wu $r8, $r23, $r29 :: +before: $r8=0x6ca8c7d8ec316750, $r23=0xc3a59754c752c3a5, $r29=0x4b77e251de7f45f1 +after: $r8=0xffffffffad3cde2d, $r23=0xc3a59754c752c3a5, $r29=0x4b77e251de7f45f1 +mulh.wu $r20, $r25, $r30 :: +before: $r20=0x6faa5d1372250132, $r25=0x68734123142c820a, $r30=0x0f7b4bdf342e2017 +after: $r20=0x00000000041cacf0, $r25=0x68734123142c820a, $r30=0x0f7b4bdf342e2017 +mulh.wu $r31, $r18, $r19 :: +before: $r31=0x08cfa67422c1c5d5, $r18=0xb48ac9531206cef2, $r19=0x9f9f5d925c5cf738 +after: $r31=0x000000000680fe39, $r18=0xb48ac9531206cef2, $r19=0x9f9f5d925c5cf738 +mulh.wu $r25, $r7, $r27 :: +before: $r25=0x85aa17ff1b3699ba, $r7=0x9a7aeabb800edb53, $r27=0x4eb1ec754c7cdb59 +after: $r25=0x000000002642de08, $r7=0x9a7aeabb800edb53, $r27=0x4eb1ec754c7cdb59 +mulh.wu $r19, $r4, $r28 :: +before: $r19=0x821038d7fb43149c, $r4=0x44cd20261f5ae87e, $r28=0xf9d8916e8eb4ecb1 +after: $r19=0x00000000117a95de, $r4=0x44cd20261f5ae87e, $r28=0xf9d8916e8eb4ecb1 +mulh.wu $r30, $r23, $r28 :: +before: $r30=0xef34433557594fb3, $r23=0x2f9401c8064c8ca0, $r28=0x5de6287c2a56e507 +after: $r30=0x00000000010ab26c, $r23=0x2f9401c8064c8ca0, $r28=0x5de6287c2a56e507 +mulh.wu $r13, $r6, $r17 :: +before: $r13=0xd6b38c427ad5f669, $r6=0xbe04ea8987b20188, $r17=0x52cee1d144e3c134 +after: $r13=0x00000000248401a8, $r6=0xbe04ea8987b20188, $r17=0x52cee1d144e3c134 +mulh.wu $r26, $r19, $r17 :: +before: $r26=0x2ea15eee9429b8a0, $r19=0x43598be92000d9f7, $r17=0x6364cfeb707aba6c +after: $r26=0x000000000e0fb712, $r19=0x43598be92000d9f7, $r17=0x6364cfeb707aba6c +mul.d $r19, $r4, $r10 :: +before: $r19=0xf0235819cf1bab1f, $r4=0xdc7a0086353cfddf, $r10=0x6f18aec465b5af87 +after: $r19=0xb1beaa2f3e605199, $r4=0xdc7a0086353cfddf, $r10=0x6f18aec465b5af87 +mul.d $r19, $r31, $r20 :: +before: $r19=0x24d7526c5e4669e3, $r31=0xaab7dd46e5af2493, $r20=0xd5df6eea42205e25 +after: $r19=0x7ec27945fa1e433f, $r31=0xaab7dd46e5af2493, $r20=0xd5df6eea42205e25 +mul.d $r15, $r20, $r4 :: +before: $r15=0x3740ba48d64cc478, $r20=0xcfeffb7c35a98382, $r4=0xeab050fc9bdb3c52 +after: $r15=0x3ae548f8215497a4, $r20=0xcfeffb7c35a98382, $r4=0xeab050fc9bdb3c52 +mul.d $r29, $r7, $r25 :: +before: $r29=0xe8858552c0e8eac8, $r7=0xb65ed231c27efb70, $r25=0xbb753de59e4ca3d1 +after: $r29=0x57c0018869039670, $r7=0xb65ed231c27efb70, $r25=0xbb753de59e4ca3d1 +mul.d $r5, $r30, $r4 :: +before: $r5=0xc4f17df5c983317d, $r30=0xb2af9e86d443d8ce, $r4=0xf9e3c6d18372d0d3 +after: $r5=0xeff3c7ee09cf11ca, $r30=0xb2af9e86d443d8ce, $r4=0xf9e3c6d18372d0d3 +mul.d $r25, $r17, $r29 :: +before: $r25=0xa09d11d50056b350, $r17=0x6609b14ca65f9aff, $r29=0x692def5a14a3278c +after: $r25=0xbd4098e529429c74, $r17=0x6609b14ca65f9aff, $r29=0x692def5a14a3278c +mul.d $r13, $r15, $r26 :: +before: $r13=0xd528ed047af75775, $r15=0x896658fe826a0817, $r26=0xa456f53d5f2760b1 +after: $r13=0x630a2082b2d937e7, $r15=0x896658fe826a0817, $r26=0xa456f53d5f2760b1 +mul.d $r23, $r9, $r7 :: +before: $r23=0x5d33f63ce8637a69, $r9=0xad38922264c721ff, $r7=0xe0514fea4ee52aca +after: $r23=0x9d478a3f4bcfa936, $r9=0xad38922264c721ff, $r7=0xe0514fea4ee52aca +mul.d $r25, $r23, $r30 :: +before: $r25=0x5d74125f059662f3, $r23=0xa708100731e88710, $r30=0x739e4de71fec92e0 +after: $r25=0xeb30fae9bb3d4e00, $r23=0xa708100731e88710, $r30=0x739e4de71fec92e0 +mul.d $r26, $r18, $r30 :: +before: $r26=0x110a94ffa2e12f32, $r18=0x01b770d6c423d4f8, $r30=0x38bf04d66f91531a +after: $r26=0x5937a05ab2280930, $r18=0x01b770d6c423d4f8, $r30=0x38bf04d66f91531a +mulh.d $r5, $r15, $r12 :: +before: $r5=0xd72f46d42ca4db6b, $r15=0xe1771af0e69e49a6, $r12=0xd796f52fbd01a4bb +after: $r5=0x04d1eb3a7f530298, $r15=0xe1771af0e69e49a6, $r12=0xd796f52fbd01a4bb +mulh.d $r28, $r18, $r14 :: +before: $r28=0x904e699bcbe32b08, $r18=0x9b5b69b4d817779c, $r14=0xa02ca97cc4e37f13 +after: $r28=0x25ac2970a5b47a76, $r18=0x9b5b69b4d817779c, $r14=0xa02ca97cc4e37f13 +mulh.d $r6, $r12, $r7 :: +before: $r6=0xc75e1065b8dbcd34, $r12=0xec7d8ae6a65f2fd3, $r7=0xb7e32b52f40bc8ef +after: $r6=0x057ee36929066010, $r12=0xec7d8ae6a65f2fd3, $r7=0xb7e32b52f40bc8ef +mulh.d $r5, $r25, $r19 :: +before: $r5=0x7b2e04c0c2f95e4f, $r25=0x9a5037ff200e982a, $r19=0xf862c0c6425ff2bc +after: $r5=0x03064462e05709fc, $r25=0x9a5037ff200e982a, $r19=0xf862c0c6425ff2bc +mulh.d $r14, $r8, $r23 :: +before: $r14=0x5fd7ae31ad151daa, $r8=0x444243172f499ec0, $r23=0x9003c8aeabc39884 +after: $r14=0xe22404eefbd57910, $r8=0x444243172f499ec0, $r23=0x9003c8aeabc39884 +mulh.d $r7, $r23, $r13 :: +before: $r7=0x0bc21ca397041a2b, $r23=0xe886455c8737b2ca, $r13=0xd5ccec2f631a1d60 +after: $r7=0x03dea7b02a86f5c2, $r23=0xe886455c8737b2ca, $r13=0xd5ccec2f631a1d60 +mulh.d $r26, $r16, $r13 :: +before: $r26=0xd3894783f187ee9c, $r16=0xa7a6c4abeda9a22c, $r13=0x4375f7e49ed91384 +after: $r26=0xe8b7ef23e33e1269, $r16=0xa7a6c4abeda9a22c, $r13=0x4375f7e49ed91384 +mulh.d $r17, $r31, $r16 :: +before: $r17=0xa93bd0cf9137745e, $r31=0x3a1b2b922b7645f1, $r16=0x7e33f64c19972ae3 +after: $r17=0x1ca52ac301413b29, $r31=0x3a1b2b922b7645f1, $r16=0x7e33f64c19972ae3 +mulh.d $r20, $r19, $r8 :: +before: $r20=0xda9224c9ab488939, $r19=0xb7f5978bf509641d, $r8=0xf6fcd615333c30c0 +after: $r20=0x028941970b9c41ae, $r19=0xb7f5978bf509641d, $r8=0xf6fcd615333c30c0 +mulh.d $r12, $r17, $r20 :: +before: $r12=0xcdbd51e35d5c1df3, $r17=0x254bd8eaadc946fe, $r20=0x9de163435088598b +after: $r12=0xf1b4813d0885ff33, $r17=0x254bd8eaadc946fe, $r20=0x9de163435088598b +mulh.du $r25, $r28, $r29 :: +before: $r25=0xf7ef0dbf1bf7938a, $r28=0xd267d11ae422f604, $r29=0x089d6fd68226e13d +after: $r25=0x0714a41f660b233e, $r28=0xd267d11ae422f604, $r29=0x089d6fd68226e13d +mulh.du $r7, $r28, $r24 :: +before: $r7=0xe568cf4a6d6bc199, $r28=0x6efedad6fbe95f2a, $r24=0xdf55853ed22d024e +after: $r7=0x60d51505935d32a4, $r28=0x6efedad6fbe95f2a, $r24=0xdf55853ed22d024e +mulh.du $r25, $r8, $r9 :: +before: $r25=0x0bf7c0226b0c2072, $r8=0x794fd44a65c65ebb, $r9=0xa0391c3fa3cf1e5c +after: $r25=0x4becf4d7a7a9ffeb, $r8=0x794fd44a65c65ebb, $r9=0xa0391c3fa3cf1e5c +mulh.du $r30, $r16, $r7 :: +before: $r30=0x3df3f3b3ff17f61a, $r16=0xcadd1f7e7150ad7b, $r7=0xbdc63d3f762cf02d +after: $r30=0x966257cfb0059e70, $r16=0xcadd1f7e7150ad7b, $r7=0xbdc63d3f762cf02d +mulh.du $r6, $r10, $r19 :: +before: $r6=0x6601e05fc5f801cb, $r10=0xbc10a70104969251, $r19=0x2f50a00036fb7821 +after: $r6=0x22c24967f0edf696, $r10=0xbc10a70104969251, $r19=0x2f50a00036fb7821 +mulh.du $r17, $r9, $r5 :: +before: $r17=0xffabc0cbdc8aa7b0, $r9=0x5288bc60da558afb, $r5=0x2795644a58b2668f +after: $r17=0x0cc2fe9dc756ea23, $r9=0x5288bc60da558afb, $r5=0x2795644a58b2668f +mulh.du $r26, $r8, $r15 :: +before: $r26=0x68b64c997f561b59, $r8=0xe2ed2375e64b1bf3, $r15=0xe1033e583092ad96 +after: $r26=0xc7754c35a4f2f082, $r8=0xe2ed2375e64b1bf3, $r15=0xe1033e583092ad96 +mulh.du $r10, $r13, $r30 :: +before: $r10=0x6450ec488eb4753b, $r13=0x4287b82860366cf8, $r30=0x01c15ed3f051fe8c +after: $r10=0x0074c8aee8c0e7ce, $r13=0x4287b82860366cf8, $r30=0x01c15ed3f051fe8c +mulh.du $r24, $r13, $r15 :: +before: $r24=0x1169fa9dd6f8273d, $r13=0x6fd2cdb39e5d1fa3, $r15=0xff0526e206880684 +after: $r24=0x6f653afff4bd7810, $r13=0x6fd2cdb39e5d1fa3, $r15=0xff0526e206880684 +mulh.du $r8, $r9, $r10 :: +before: $r8=0xe9cb6416a1492fbf, $r9=0xaf89960e18913df0, $r10=0x76b4251409ff9830 +after: $r8=0x5164f154a1871400, $r9=0xaf89960e18913df0, $r10=0x76b4251409ff9830 +mulw.d.w $r6, $r31, $r7 :: +before: $r6=0x50ce021eb3b3f3a4, $r31=0xb859e7514e4c4d7c, $r7=0x372cb1e2b3200f36 +after: $r6=0xe87cdae260229c28, $r31=0xb859e7514e4c4d7c, $r7=0x372cb1e2b3200f36 +mulw.d.w $r31, $r7, $r28 :: +before: $r31=0x925642fa7e2de9ab, $r7=0x61404b6550238ceb, $r28=0x75ed502242ed0430 +after: $r31=0x14f35c8da06d1810, $r7=0x61404b6550238ceb, $r28=0x75ed502242ed0430 +mulw.d.w $r19, $r16, $r10 :: +before: $r19=0x0ef82de697f7239f, $r16=0xdf1c56dfe5c0e48d, $r10=0xbc7e740fe1b1dc25 +after: $r19=0x031b681eebc73461, $r16=0xdf1c56dfe5c0e48d, $r10=0xbc7e740fe1b1dc25 +mulw.d.w $r29, $r12, $r27 :: +before: $r29=0xc104a400fa0d1dbf, $r12=0x2aa34e8a5fad6c6f, $r27=0x7f8e4d23644b0d4d +after: $r29=0x257bcb22b6304063, $r12=0x2aa34e8a5fad6c6f, $r27=0x7f8e4d23644b0d4d +mulw.d.w $r25, $r16, $r25 :: +before: $r25=0x5b8ff9172c849fb9, $r16=0x843f90380af6f2af, $r25=0x12f7f8780cb8bfe0 +after: $r25=0x008b7d1678ecea20, $r16=0x843f90380af6f2af, $r25=0x008b7d1678ecea20 +mulw.d.w $r13, $r13, $r7 :: +before: $r13=0x6bba79a88056d891, $r13=0x6757a43d403285ab, $r7=0x2d2ea385888c2664 +after: $r13=0xe20b7699851798cc, $r13=0xe20b7699851798cc, $r7=0x2d2ea385888c2664 +mulw.d.w $r12, $r8, $r23 :: +before: $r12=0x5c96927dcf1fb14e, $r8=0x2b3767b9e9029d4b, $r23=0x252bbcc66b5d834b +after: $r12=0xf65bb1e7178075f9, $r8=0x2b3767b9e9029d4b, $r23=0x252bbcc66b5d834b +mulw.d.w $r6, $r13, $r10 :: +before: $r6=0x5fa5a8b36e8ec3e0, $r13=0xcbca4b4d518b9466, $r10=0xabdf2ec674f70c5b +after: $r6=0x2541f0d9edfc8842, $r13=0xcbca4b4d518b9466, $r10=0xabdf2ec674f70c5b +mulw.d.w $r16, $r15, $r23 :: +before: $r16=0x5b94eeb9c3c9fa01, $r15=0x5c4ebef486f83b43, $r23=0x73f3781c3a1e9216 +after: $r16=0xe485c9734afb4dc2, $r15=0x5c4ebef486f83b43, $r23=0x73f3781c3a1e9216 +mulw.d.w $r6, $r31, $r7 :: +before: $r6=0xbc263312a123caed, $r31=0xe9aa8545d3a99a97, $r7=0x71b5dbacf4f7f2b8 +after: $r6=0x01e91b5b89bada88, $r31=0xe9aa8545d3a99a97, $r7=0x71b5dbacf4f7f2b8 +mulw.d.wu $r14, $r17, $r30 :: +before: $r14=0x94452e0d7eb407b7, $r17=0x629b1902a484a77d, $r30=0x474359ca7f7165ed +after: $r14=0x51e6af2596105fb9, $r17=0x629b1902a484a77d, $r30=0x474359ca7f7165ed +mulw.d.wu $r26, $r7, $r5 :: +before: $r26=0xae9771f0d59319b3, $r7=0x1bcb563dea8f3a3f, $r5=0x759334cc2d543103 +after: $r26=0x29885124597fbdbd, $r7=0x1bcb563dea8f3a3f, $r5=0x759334cc2d543103 +mulw.d.wu $r25, $r28, $r27 :: +before: $r25=0x27ca0bf2d6cd2699, $r28=0x5a015da9b52ffc64, $r27=0x482a4fa5b5625914 +after: $r25=0x806088dd28c67bd0, $r28=0x5a015da9b52ffc64, $r27=0x482a4fa5b5625914 +mulw.d.wu $r8, $r4, $r16 :: +before: $r8=0x22f61239dad7bc92, $r4=0xe8c9964b31b0e199, $r16=0x99fdef421aa22322 +after: $r8=0x052b6faa1527e152, $r4=0xe8c9964b31b0e199, $r16=0x99fdef421aa22322 +mulw.d.wu $r29, $r17, $r15 :: +before: $r29=0xcc5eec6e4f2b5fdb, $r17=0x2d08ada074c2ac37, $r15=0x8967ce1cd4c2362e +after: $r29=0x6109cada18fc8be2, $r17=0x2d08ada074c2ac37, $r15=0x8967ce1cd4c2362e +mulw.d.wu $r27, $r23, $r16 :: +before: $r27=0x2d057e2ead214d6c, $r23=0x987e7a10a0f3ee5d, $r16=0xd515e2a2f06be633 +after: $r27=0x97288627099f0a87, $r23=0x987e7a10a0f3ee5d, $r16=0xd515e2a2f06be633 +mulw.d.wu $r15, $r19, $r12 :: +before: $r15=0xce24943d6fe20263, $r19=0xd6bbdcb20d76de15, $r12=0xcc277905bc41da62 +after: $r15=0x09e6c1c22ff3e60a, $r19=0xd6bbdcb20d76de15, $r12=0xcc277905bc41da62 +mulw.d.wu $r4, $r4, $r19 :: +before: $r4=0xe37942a26dc0e882, $r4=0x6a30fb04c3b5431f, $r19=0x4c937bed67cb6c73 +after: $r4=0x4f5971a615533aed, $r4=0x4f5971a615533aed, $r19=0x4c937bed67cb6c73 +mulw.d.wu $r7, $r12, $r9 :: +before: $r7=0xbdebe7a7b19b7dc0, $r12=0x3f6e790fb24d19f1, $r9=0x7a19c4fdd0d29f3e +after: $r7=0x9171573c297af75e, $r12=0x3f6e790fb24d19f1, $r9=0x7a19c4fdd0d29f3e +mulw.d.wu $r31, $r30, $r28 :: +before: $r31=0x690687056e169108, $r30=0xa8abab5bf1d42538, $r28=0x0636a31884ca1e99 +after: $r31=0x7d70517da256ce78, $r30=0xa8abab5bf1d42538, $r28=0x0636a31884ca1e99 +div.w $r13, $r28, $r23 :: +before: $r13=0x0000000016546290, $r28=0x00000000627aa138, $r23=0x000000000534168c +after: $r13=0x0000000000000012, $r28=0x00000000627aa138, $r23=0x000000000534168c +div.w $r28, $r19, $r9 :: +before: $r28=0xffffffffbe03930d, $r19=0x00000000223d0ec7, $r9=0xffffffff8404aa67 +after: $r28=000000000000000000, $r19=0x00000000223d0ec7, $r9=0xffffffff8404aa67 +div.w $r18, $r19, $r30 :: +before: $r18=0xffffffffac214649, $r19=0xffffffff8019c3b7, $r30=0xffffffff871cbf90 +after: $r18=0x0000000000000001, $r19=0xffffffff8019c3b7, $r30=0xffffffff871cbf90 +div.w $r24, $r25, $r7 :: +before: $r24=0xffffffffa144ed80, $r25=0x000000001c4370c7, $r7=0x000000004695aa29 +after: $r24=000000000000000000, $r25=0x000000001c4370c7, $r7=0x000000004695aa29 +div.w $r9, $r27, $r4 :: +before: $r9=0x000000003ae8b7c7, $r27=0xfffffffff3a6ebb2, $r4=0x00000000181d816a +after: $r9=000000000000000000, $r27=0xfffffffff3a6ebb2, $r4=0x00000000181d816a +div.w $r28, $r15, $r7 :: +before: $r28=0xffffffff956a7de4, $r15=0xffffffff9aab217b, $r7=0x000000003b061b78 +after: $r28=0xffffffffffffffff, $r15=0xffffffff9aab217b, $r7=0x000000003b061b78 +div.w $r25, $r24, $r12 :: +before: $r25=0x000000003c6167d4, $r24=0x000000002673145e, $r12=0x0000000001d5e391 +after: $r25=0x0000000000000014, $r24=0x000000002673145e, $r12=0x0000000001d5e391 +div.w $r23, $r15, $r4 :: +before: $r23=0x000000003e0820ee, $r15=0x0000000042793c51, $r4=0x00000000286cdb51 +after: $r23=0x0000000000000001, $r15=0x0000000042793c51, $r4=0x00000000286cdb51 +div.w $r28, $r16, $r30 :: +before: $r28=0xffffffffcf8fd242, $r16=0x000000002a76141e, $r30=0x0000000002429a52 +after: $r28=0x0000000000000012, $r16=0x000000002a76141e, $r30=0x0000000002429a52 +div.w $r29, $r8, $r18 :: +before: $r29=0x0000000074991388, $r8=0xffffffffd594ef43, $r18=0x000000006d3f9603 +after: $r29=000000000000000000, $r8=0xffffffffd594ef43, $r18=0x000000006d3f9603 +mod.w $r8, $r13, $r14 :: +before: $r8=0x000000005cc9e6db, $r13=0xfffffffff7327c6d, $r14=0x0000000023eef833 +after: $r8=0xfffffffff7327c6d, $r13=0xfffffffff7327c6d, $r14=0x0000000023eef833 +mod.w $r25, $r24, $r25 :: +before: $r25=0x00000000539195e4, $r24=0xffffffffd94f10c8, $r25=0x000000002c5786d9 +after: $r25=0xffffffffd94f10c8, $r24=0xffffffffd94f10c8, $r25=0xffffffffd94f10c8 +mod.w $r10, $r16, $r23 :: +before: $r10=0xffffffff9b15f725, $r16=0x00000000448a831d, $r23=0xffffffffd5d7d92b +after: $r10=0x000000001a625c48, $r16=0x00000000448a831d, $r23=0xffffffffd5d7d92b +mod.w $r6, $r5, $r29 :: +before: $r6=0x000000001794d969, $r5=0x000000002fba86b0, $r29=0x0000000040e6ab6b +after: $r6=0x000000002fba86b0, $r5=0x000000002fba86b0, $r29=0x0000000040e6ab6b +mod.w $r16, $r14, $r29 :: +before: $r16=0x000000006a503328, $r14=0xffffffffdf0b2ad2, $r29=0xffffffff90dc29c6 +after: $r16=0xffffffffdf0b2ad2, $r14=0xffffffffdf0b2ad2, $r29=0xffffffff90dc29c6 +mod.w $r30, $r14, $r18 :: +before: $r30=0xffffffffc7670acd, $r14=0x0000000053f3b34f, $r18=0xffffffff84b62159 +after: $r30=0x0000000053f3b34f, $r14=0x0000000053f3b34f, $r18=0xffffffff84b62159 +mod.w $r31, $r6, $r18 :: +before: $r31=0xffffffff98334c95, $r6=0xfffffffff241ffd8, $r18=0xffffffffa73314aa +after: $r31=0xfffffffff241ffd8, $r6=0xfffffffff241ffd8, $r18=0xffffffffa73314aa +mod.w $r12, $r8, $r4 :: +before: $r12=0xffffffffd9f19db4, $r8=0xffffffffc89f9796, $r4=0xffffffffaa8e2a3b +after: $r12=0xffffffffc89f9796, $r8=0xffffffffc89f9796, $r4=0xffffffffaa8e2a3b +mod.w $r23, $r12, $r4 :: +before: $r23=0xffffffff94e93220, $r12=0xfffffffffea1587a, $r4=0xffffffffb88b2b87 +after: $r23=0xfffffffffea1587a, $r12=0xfffffffffea1587a, $r4=0xffffffffb88b2b87 +mod.w $r13, $r9, $r18 :: +before: $r13=0x0000000000f718c0, $r9=0xffffffffe264a3a5, $r18=0x0000000002f29ef3 +after: $r13=0xffffffffffded923, $r9=0xffffffffe264a3a5, $r18=0x0000000002f29ef3 +div.wu $r24, $r5, $r16 :: +before: $r24=0x000000000ddf57c5, $r5=0x000000006b1a808c, $r16=0x000000000576fe70 +after: $r24=0x0000000000000013, $r5=0x000000006b1a808c, $r16=0x000000000576fe70 +div.wu $r26, $r7, $r9 :: +before: $r26=0x00000000665e82ff, $r7=0x00000000344d887f, $r9=0x000000007fd6d6d8 +after: $r26=000000000000000000, $r7=0x00000000344d887f, $r9=0x000000007fd6d6d8 +div.wu $r13, $r18, $r15 :: +before: $r13=0xffffffffe82e2cf8, $r18=0x000000007c66b628, $r15=0x000000000305c899 +after: $r13=0x0000000000000029, $r18=0x000000007c66b628, $r15=0x000000000305c899 +div.wu $r15, $r14, $r7 :: +before: $r15=0x0000000000b06b1f, $r14=0x0000000056016282, $r7=0x00000000095a8701 +after: $r15=0x0000000000000009, $r14=0x0000000056016282, $r7=0x00000000095a8701 +div.wu $r19, $r12, $r31 :: +before: $r19=0xffffffffb3a487d1, $r12=0xffffffffbe2fe16e, $r31=0xffffffff8dc0ff7f +after: $r19=0x0000000000000001, $r12=0xffffffffbe2fe16e, $r31=0xffffffff8dc0ff7f +div.wu $r6, $r10, $r20 :: +before: $r6=0x000000001bb491e9, $r10=0x00000000064e382e, $r20=0x000000005977f9f1 +after: $r6=000000000000000000, $r10=0x00000000064e382e, $r20=0x000000005977f9f1 +div.wu $r9, $r29, $r28 :: +before: $r9=0x00000000498c3349, $r29=0x0000000014cbb257, $r28=0xffffffff95165a4a +after: $r9=000000000000000000, $r29=0x0000000014cbb257, $r28=0xffffffff95165a4a +div.wu $r10, $r29, $r15 :: +before: $r10=0xffffffffbb3f9c5d, $r29=0x000000002755057d, $r15=0x0000000014039cc4 +after: $r10=0x0000000000000001, $r29=0x000000002755057d, $r15=0x0000000014039cc4 +div.wu $r24, $r31, $r7 :: +before: $r24=0xffffffffe5a9a3cd, $r31=0xffffffffa1f84b49, $r7=0xffffffffe45bd3b9 +after: $r24=000000000000000000, $r31=0xffffffffa1f84b49, $r7=0xffffffffe45bd3b9 +div.wu $r23, $r18, $r6 :: +before: $r23=0x0000000054e07e9f, $r18=0xffffffffaccbdd8c, $r6=0xfffffffff3729b57 +after: $r23=000000000000000000, $r18=0xffffffffaccbdd8c, $r6=0xfffffffff3729b57 +mod.wu $r5, $r20, $r18 :: +before: $r5=0xffffffffa1ce2e4e, $r20=0xffffffffdbeb0e2d, $r18=0x0000000070157135 +after: $r5=0x000000006bd59cf8, $r20=0xffffffffdbeb0e2d, $r18=0x0000000070157135 +mod.wu $r14, $r30, $r17 :: +before: $r14=0x0000000010e75d07, $r30=0x00000000039c3080, $r17=0x000000001658d87b +after: $r14=0x00000000039c3080, $r30=0x00000000039c3080, $r17=0x000000001658d87b +mod.wu $r28, $r7, $r4 :: +before: $r28=0x000000006df194db, $r7=0x0000000055fae7c9, $r4=0xffffffff9a87c1ef +after: $r28=0x0000000055fae7c9, $r7=0x0000000055fae7c9, $r4=0xffffffff9a87c1ef +mod.wu $r6, $r14, $r10 :: +before: $r6=0xffffffff8feb78cc, $r14=0xffffffffe5032316, $r10=0x0000000018ab441e +after: $r6=0x0000000006fdbe08, $r14=0xffffffffe5032316, $r10=0x0000000018ab441e +mod.wu $r13, $r15, $r9 :: +before: $r13=0xffffffffbb28952c, $r15=0x000000002d43f57d, $r9=0x000000002dfbf584 +after: $r13=0x000000002d43f57d, $r15=0x000000002d43f57d, $r9=0x000000002dfbf584 +mod.wu $r7, $r30, $r5 :: +before: $r7=0x0000000009bfb2cf, $r30=0x000000006595d7b3, $r5=0xfffffffffffd1025 +after: $r7=0x000000006595d7b3, $r30=0x000000006595d7b3, $r5=0xfffffffffffd1025 +mod.wu $r10, $r9, $r16 :: +before: $r10=0x00000000342671c6, $r9=0xfffffffff1ff8be3, $r16=0xfffffffffaea052b +after: $r10=0xfffffffff1ff8be3, $r9=0xfffffffff1ff8be3, $r16=0xfffffffffaea052b +mod.wu $r16, $r16, $r23 :: +before: $r16=0xffffffffc0356055, $r16=0x000000002ac1f414, $r23=0x000000004a75c890 +after: $r16=0x000000002ac1f414, $r16=0x000000002ac1f414, $r23=0x000000004a75c890 +mod.wu $r19, $r8, $r7 :: +before: $r19=0xfffffffff8ed6580, $r8=0x000000005fef460e, $r7=0x0000000068eedef2 +after: $r19=0x000000005fef460e, $r8=0x000000005fef460e, $r7=0x0000000068eedef2 +mod.wu $r29, $r25, $r25 :: +before: $r29=0xffffffff9ea76eb0, $r25=0xffffffff818904b9, $r25=0xffffffffe92f4f30 +after: $r29=000000000000000000, $r25=0xffffffffe92f4f30, $r25=0xffffffffe92f4f30 +div.d $r7, $r17, $r7 :: +before: $r7=0xc8f25fb958f2d668, $r17=0x074a14cbaa00fdea, $r7=0xcf95f3de82ceb015 +after: $r7=000000000000000000, $r17=0x074a14cbaa00fdea, $r7=000000000000000000 +div.d $r10, $r19, $r12 :: +before: $r10=0x9ead8a6f6ea63534, $r19=0xaf80d344d48e6cd5, $r12=0xe1f40f759cbfe0e7 +after: $r10=0x0000000000000002, $r19=0xaf80d344d48e6cd5, $r12=0xe1f40f759cbfe0e7 +div.d $r23, $r28, $r28 :: +before: $r23=0x35481a5285093e04, $r28=0xfd79e3c19b697fa8, $r28=0x6ffab603b9e1b7fb +after: $r23=0x0000000000000001, $r28=0x6ffab603b9e1b7fb, $r28=0x6ffab603b9e1b7fb +div.d $r30, $r25, $r4 :: +before: $r30=0x3eacf1d695a34b95, $r25=0xfbff957ab051d494, $r4=0x0670724b8930d53f +after: $r30=000000000000000000, $r25=0xfbff957ab051d494, $r4=0x0670724b8930d53f +div.d $r31, $r29, $r6 :: +before: $r31=0xce8d3df48871d655, $r29=0xf351f7f35927e83d, $r6=0x93a3085686f4101f +after: $r31=000000000000000000, $r29=0xf351f7f35927e83d, $r6=0x93a3085686f4101f +div.d $r17, $r23, $r8 :: +before: $r17=0xfc913f8b14dda5a5, $r23=0x001f938af81988de, $r8=0x9d021a9f06b46953 +after: $r17=000000000000000000, $r23=0x001f938af81988de, $r8=0x9d021a9f06b46953 +div.d $r7, $r29, $r15 :: +before: $r7=0x4593da2923f2ac5b, $r29=0x11fc5a958b182a55, $r15=0x2edafaf2857c6697 +after: $r7=000000000000000000, $r29=0x11fc5a958b182a55, $r15=0x2edafaf2857c6697 +div.d $r13, $r31, $r27 :: +before: $r13=0x97236145608dd8c3, $r31=0x1f0ee96afd23910b, $r27=0xe35e4d5efd2204d3 +after: $r13=0xffffffffffffffff, $r31=0x1f0ee96afd23910b, $r27=0xe35e4d5efd2204d3 +div.d $r13, $r26, $r14 :: +before: $r13=0x2c057bd222f216df, $r26=0x1e006853720971c3, $r14=0x81e35a993e6a15b5 +after: $r13=000000000000000000, $r26=0x1e006853720971c3, $r14=0x81e35a993e6a15b5 +div.d $r5, $r9, $r4 :: +before: $r5=0x93c0d85c66f2c5ab, $r9=0x774fbe894b2ed067, $r4=0x2c46387d55732742 +after: $r5=0x0000000000000002, $r9=0x774fbe894b2ed067, $r4=0x2c46387d55732742 +mod.d $r19, $r26, $r16 :: +before: $r19=0x63304d2181f4a4da, $r26=0x9ed948849ddee475, $r16=0x18a360d3ab980398 +after: $r19=0xe8c36affa0a6ef3d, $r26=0x9ed948849ddee475, $r16=0x18a360d3ab980398 +mod.d $r27, $r23, $r13 :: +before: $r27=0xf7156e74db7a8d92, $r23=0x324e7001287ce2a8, $r13=0x3cc7524686bed31c +after: $r27=0x324e7001287ce2a8, $r23=0x324e7001287ce2a8, $r13=0x3cc7524686bed31c +mod.d $r8, $r26, $r19 :: +before: $r8=0x7bda37a222135803, $r26=0x1daf8fd66ff987ed, $r19=0x334631279104fc3b +after: $r8=0x1daf8fd66ff987ed, $r26=0x1daf8fd66ff987ed, $r19=0x334631279104fc3b +mod.d $r25, $r15, $r7 :: +before: $r25=0xd1a0f45d5b463d53, $r15=0x9c4cd7bef3bf0712, $r7=0x420a5c702006f3cc +after: $r25=0xde57342f13c5fade, $r15=0x9c4cd7bef3bf0712, $r7=0x420a5c702006f3cc +mod.d $r25, $r18, $r7 :: +before: $r25=0x93487a905cb08a75, $r18=0x8c79cafa8bebf0a8, $r7=0x1478409d192c144b +after: $r25=0xf2d30e0c09c8561f, $r18=0x8c79cafa8bebf0a8, $r7=0x1478409d192c144b +mod.d $r8, $r27, $r27 :: +before: $r8=0x8756a1690dd7896d, $r27=0x35273279ea76319f, $r27=0xc5292f2331abc6dd +after: $r8=000000000000000000, $r27=0xc5292f2331abc6dd, $r27=0xc5292f2331abc6dd +mod.d $r15, $r10, $r24 :: +before: $r15=0xf8c476adbc930802, $r10=0x8b5832bcd0f6c87e, $r24=0x6cba54a72da38702 +after: $r15=0xf8128763fe9a4f80, $r10=0x8b5832bcd0f6c87e, $r24=0x6cba54a72da38702 +mod.d $r27, $r7, $r6 :: +before: $r27=0x2387015bddb2c076, $r7=0x231e30de7a72ad90, $r6=0x81f1285973e8dc11 +after: $r27=0x231e30de7a72ad90, $r7=0x231e30de7a72ad90, $r6=0x81f1285973e8dc11 +mod.d $r16, $r9, $r12 :: +before: $r16=0x3388d23c07feb1da, $r9=0xe8c01f744b310474, $r12=0xa29071d702959009 +after: $r16=0xe8c01f744b310474, $r9=0xe8c01f744b310474, $r12=0xa29071d702959009 +mod.d $r13, $r10, $r20 :: +before: $r13=0xbd45a261f8de4fe4, $r10=0x6fb0a8c9a2681a8e, $r20=0x2f1b7055cf2409ec +after: $r13=0x1179c81e042006b6, $r10=0x6fb0a8c9a2681a8e, $r20=0x2f1b7055cf2409ec +div.du $r17, $r10, $r24 :: +before: $r17=0x4d363fd48a626fda, $r10=0x7ccdeeaa6c24885f, $r24=0xfcc68e72f59750ae +after: $r17=000000000000000000, $r10=0x7ccdeeaa6c24885f, $r24=0xfcc68e72f59750ae +div.du $r20, $r20, $r10 :: +before: $r20=0x808fa5cb6a75fd6f, $r20=0x0f3f712970031005, $r10=0x1709a8adab2fa578 +after: $r20=000000000000000000, $r20=000000000000000000, $r10=0x1709a8adab2fa578 +div.du $r15, $r14, $r19 :: +before: $r15=0xcd3107423486c8fe, $r14=0xf6bc56277282cd14, $r19=0x0961ac833f00f3e3 +after: $r15=0x000000000000001a, $r14=0xf6bc56277282cd14, $r19=0x0961ac833f00f3e3 +div.du $r4, $r29, $r18 :: +before: $r4=0xa0bfc2fc5b35fa79, $r29=0x2b28c09aa5f12845, $r18=0xed44da2fdf5dce00 +after: $r4=000000000000000000, $r29=0x2b28c09aa5f12845, $r18=0xed44da2fdf5dce00 +div.du $r4, $r6, $r25 :: +before: $r4=0x1fc6e23fd0f09ed0, $r6=0xeaa71d9fb42223ca, $r25=0x045689545e60381c +after: $r4=0x0000000000000036, $r6=0xeaa71d9fb42223ca, $r25=0x045689545e60381c +div.du $r10, $r8, $r12 :: +before: $r10=0xa3710c512d4c006c, $r8=0xc011778733c50a6e, $r12=0xb44475ee048d8167 +after: $r10=0x0000000000000001, $r8=0xc011778733c50a6e, $r12=0xb44475ee048d8167 +div.du $r29, $r4, $r29 :: +before: $r29=0x46d27abff0da1972, $r4=0x17a4e863a182dcd0, $r29=0x59a7b82980ac6a6d +after: $r29=000000000000000000, $r4=0x17a4e863a182dcd0, $r29=000000000000000000 +div.du $r15, $r8, $r30 :: +before: $r15=0x68120919dbbd9b19, $r8=0x4c296c89a6f7a6df, $r30=0x9d9166c1cd0eecfa +after: $r15=000000000000000000, $r8=0x4c296c89a6f7a6df, $r30=0x9d9166c1cd0eecfa +div.du $r7, $r18, $r17 :: +before: $r7=0xd2389cb7af92be89, $r18=0x9a1f65b2c59cfda3, $r17=0xe316cf92f8f0574f +after: $r7=000000000000000000, $r18=0x9a1f65b2c59cfda3, $r17=0xe316cf92f8f0574f +div.du $r15, $r25, $r17 :: +before: $r15=0x49651d72d87da955, $r25=0xd22c499c27908743, $r17=0x08d824b01058ecb8 +after: $r15=0x0000000000000017, $r25=0xd22c499c27908743, $r17=0x08d824b01058ecb8 +mod.du $r26, $r8, $r23 :: +before: $r26=0xb0bd66f10c34fe23, $r8=0x5eb9b775d83b4893, $r23=0x08867d4b638f2622 +after: $r26=0x00f255389114a51d, $r8=0x5eb9b775d83b4893, $r23=0x08867d4b638f2622 +mod.du $r8, $r10, $r25 :: +before: $r8=0xe236349cd47eeb11, $r10=0x119102fd7b236a81, $r25=0x08fd72a09e4fb45f +after: $r8=0x0893905cdcd3b622, $r10=0x119102fd7b236a81, $r25=0x08fd72a09e4fb45f +mod.du $r25, $r4, $r5 :: +before: $r25=0x1b669725a0c3a970, $r4=0x0175359099c87b83, $r5=0xcad295c79f1d835a +after: $r25=0x0175359099c87b83, $r4=0x0175359099c87b83, $r5=0xcad295c79f1d835a +mod.du $r7, $r28, $r20 :: +before: $r7=0x7117e70798869df4, $r28=0xe35b93aa0c37fe97, $r20=0x741084dead7970d0 +after: $r7=0x6f4b0ecb5ebe8dc7, $r28=0xe35b93aa0c37fe97, $r20=0x741084dead7970d0 +mod.du $r30, $r24, $r9 :: +before: $r30=0xc4d432a8ce91f693, $r24=0x77c03aceb2ea6b45, $r9=0xb8cd7773fb72b7ca +after: $r30=0x77c03aceb2ea6b45, $r24=0x77c03aceb2ea6b45, $r9=0xb8cd7773fb72b7ca +mod.du $r23, $r9, $r28 :: +before: $r23=0x13f1f3e1891b6b73, $r9=0x9811699becce53a9, $r28=0xed15e264f0c39b88 +after: $r23=0x9811699becce53a9, $r9=0x9811699becce53a9, $r28=0xed15e264f0c39b88 +mod.du $r13, $r12, $r14 :: +before: $r13=0xb8b22bcb0cb970e8, $r12=0x16cdecd7c0091cd2, $r14=0x4fcab819ebadbdfd +after: $r13=0x16cdecd7c0091cd2, $r12=0x16cdecd7c0091cd2, $r14=0x4fcab819ebadbdfd +mod.du $r30, $r17, $r12 :: +before: $r30=0xbf96226d2de1240d, $r17=0x9fe4b2c7557d6b9a, $r12=0x3668e581a5de6efd +after: $r30=0x3312e7c409c08da0, $r17=0x9fe4b2c7557d6b9a, $r12=0x3668e581a5de6efd +mod.du $r14, $r4, $r6 :: +before: $r14=0x9bc8f8a69a7f55c2, $r4=0x530a9c5a21769bab, $r6=0x2805bef72d33cbd5 +after: $r14=0x02ff1e6bc70f0401, $r4=0x530a9c5a21769bab, $r6=0x2805bef72d33cbd5 +mod.du $r23, $r28, $r12 :: +before: $r23=0x82a854f86e642cba, $r28=0x0dd0fd63485d6c3d, $r12=0x56b21f15cb9d2bf2 +after: $r23=0x0dd0fd63485d6c3d, $r28=0x0dd0fd63485d6c3d, $r12=0x56b21f15cb9d2bf2 +alsl.w $r18, $r10, $r15, 2 :: +before: $r18=0xafb40df16156827b, $r10=0x9b0b86116a0d89cb, $r15=0x80086c066ea6842b +after: $r18=0x0000000016dcab57, $r10=0x9b0b86116a0d89cb, $r15=0x80086c066ea6842b +alsl.w $r24, $r5, $r4, 2 :: +before: $r24=0xb8b63b8205a919df, $r5=0x7319260322fa2d6d, $r4=0x1efce6644a51ebf9 +after: $r24=0xffffffffd63aa1ad, $r5=0x7319260322fa2d6d, $r4=0x1efce6644a51ebf9 +alsl.w $r24, $r5, $r27, 2 :: +before: $r24=0xb4f0fd355869e078, $r5=0x26abeea20b7d1ac1, $r27=0x4108f7f27e321c8f +after: $r24=0xffffffffac268793, $r5=0x26abeea20b7d1ac1, $r27=0x4108f7f27e321c8f +alsl.w $r24, $r29, $r10, 1 :: +before: $r24=0x4b948e9a0b82df22, $r29=0x11893c9dd43d0112, $r10=0x51a030165671a055 +after: $r24=0xfffffffffeeba279, $r29=0x11893c9dd43d0112, $r10=0x51a030165671a055 +alsl.w $r5, $r10, $r18, 1 :: +before: $r5=0xfc253ac9e2b55590, $r10=0x2682507563a85b07, $r18=0xa467083f66457d1d +after: $r5=0x000000002d96332b, $r10=0x2682507563a85b07, $r18=0xa467083f66457d1d +alsl.w $r20, $r13, $r10, 3 :: +before: $r20=0x76e8c346a721cdab, $r13=0x548f2762bfb1bc01, $r10=0xa6e0d27e62dcc594 +after: $r20=0x00000000606aa59c, $r13=0x548f2762bfb1bc01, $r10=0xa6e0d27e62dcc594 +alsl.w $r16, $r6, $r24, 3 :: +before: $r16=0x039f77b88fc3b663, $r6=0x281818bf4a36a7e5, $r24=0x86cd2a06ef475a61 +after: $r16=0x0000000040fc9989, $r6=0x281818bf4a36a7e5, $r24=0x86cd2a06ef475a61 +alsl.w $r14, $r18, $r9, 4 :: +before: $r14=0x08a58ea94346ff16, $r18=0x4ff191f91397adea, $r9=0x4cda359b03c97a53 +after: $r14=0x000000003d4458f3, $r18=0x4ff191f91397adea, $r9=0x4cda359b03c97a53 +alsl.w $r8, $r6, $r29, 1 :: +before: $r8=0xae0bfa182556c725, $r6=0xda179bc2f41d03d3, $r29=0x1d23e4da08af7978 +after: $r8=0xfffffffff0e9811e, $r6=0xda179bc2f41d03d3, $r29=0x1d23e4da08af7978 +alsl.w $r31, $r26, $r30, 1 :: +before: $r31=0xd6af9fcd7ffd8e75, $r26=0x3e88bb77d6665633, $r30=0x23a0414c69b804c1 +after: $r31=0x000000001684b127, $r26=0x3e88bb77d6665633, $r30=0x23a0414c69b804c1 +alsl.wu $r20, $r24, $r18, 2 :: +before: $r20=0xc714872ff3c39370, $r24=0xcaea31ddabb275f9, $r18=0xedbfc2cedca8eb7a +after: $r20=0x000000008b72c35e, $r24=0xcaea31ddabb275f9, $r18=0xedbfc2cedca8eb7a +alsl.wu $r13, $r26, $r15, 3 :: +before: $r13=0xe1a0ba1adcb75aa4, $r26=0x8adbed432acf321a, $r15=0xeae447eaa60bb142 +after: $r13=0x00000000fc854212, $r26=0x8adbed432acf321a, $r15=0xeae447eaa60bb142 +alsl.wu $r4, $r17, $r27, 3 :: +before: $r4=0xb153f9ecea23068c, $r17=0xd2066b089c9499a3, $r27=0x36ed3c96ac4751aa +after: $r4=0x0000000090ec1ec2, $r17=0xd2066b089c9499a3, $r27=0x36ed3c96ac4751aa +alsl.wu $r20, $r10, $r4, 4 :: +before: $r20=0x8fb2705357e98d66, $r10=0xd353329585fc71dd, $r4=0x739237ed6a677f00 +after: $r20=0x00000000ca2e9cd0, $r10=0xd353329585fc71dd, $r4=0x739237ed6a677f00 +alsl.wu $r31, $r12, $r23, 2 :: +before: $r31=0x6caac60acd9bc6f4, $r12=0xc87131b9171530df, $r23=0x39c8e321a6e131c0 +after: $r31=0x000000000335f53c, $r12=0xc87131b9171530df, $r23=0x39c8e321a6e131c0 +alsl.wu $r13, $r14, $r19, 2 :: +before: $r13=0xd2c7072036f54e45, $r14=0x35ea1627556f8f98, $r19=0x97054728433042d3 +after: $r13=0x0000000098ee8133, $r14=0x35ea1627556f8f98, $r19=0x97054728433042d3 +alsl.wu $r7, $r14, $r5, 1 :: +before: $r7=0x5a0f1fae80105d64, $r14=0xd300b74879e33a53, $r5=0x3a1e7389d0669d4c +after: $r7=0x00000000c42d11f2, $r14=0xd300b74879e33a53, $r5=0x3a1e7389d0669d4c +alsl.wu $r28, $r4, $r9, 1 :: +before: $r28=0xcd7fd8389b4f4062, $r4=0xad1830d644c205e7, $r9=0xced1c031d73f9087 +after: $r28=0x0000000060c39c55, $r4=0xad1830d644c205e7, $r9=0xced1c031d73f9087 +alsl.wu $r13, $r9, $r29, 4 :: +before: $r13=0x081601560f53b081, $r9=0xd3ee3c45f08cd218, $r29=0xa7d5a43a1df2aa1d +after: $r13=0x0000000026bfcb9d, $r9=0xd3ee3c45f08cd218, $r29=0xa7d5a43a1df2aa1d +alsl.wu $r30, $r29, $r31, 2 :: +before: $r30=0xf383bd5bfae7e46d, $r29=0x67862a0151c65567, $r31=0x9cdcbf604f46c48a +after: $r30=0x0000000096601a26, $r29=0x67862a0151c65567, $r31=0x9cdcbf604f46c48a +alsl.d $r18, $r28, $r16, 4 :: +before: $r18=0x53e533e973dfa49c, $r28=0x6665a9d32abaaf55, $r16=0xf70490874fb75e6e +after: $r18=0x5d5f2db9fb6253be, $r28=0x6665a9d32abaaf55, $r16=0xf70490874fb75e6e +alsl.d $r10, $r30, $r18, 2 :: +before: $r10=0xfb14c3e6acd722c3, $r30=0xcae19862ab088fcc, $r18=0x87c434d85259d923 +after: $r10=0xb34a9662fe7c1853, $r30=0xcae19862ab088fcc, $r18=0x87c434d85259d923 +alsl.d $r17, $r25, $r26, 1 :: +before: $r17=0x95e79a567c313ec7, $r25=0x83a0e706c2c4c534, $r26=0x2f49f1e9d5b91fc9 +after: $r17=0x368bbff75b42aa31, $r25=0x83a0e706c2c4c534, $r26=0x2f49f1e9d5b91fc9 +alsl.d $r7, $r24, $r24, 2 :: +before: $r7=0x35b966d0db9f681c, $r24=0xc0bc97593f1054fc, $r24=0x7e564928b0a53ac6 +after: $r7=0x77af6dcb733a25de, $r24=0x7e564928b0a53ac6, $r24=0x7e564928b0a53ac6 +alsl.d $r6, $r30, $r24, 3 :: +before: $r6=0x38ad1fb21e071421, $r30=0xb959c439b0436d6d, $r24=0x647c742c9ce02fc5 +after: $r6=0x2f4a95fa1efb9b2d, $r30=0xb959c439b0436d6d, $r24=0x647c742c9ce02fc5 +alsl.d $r18, $r28, $r10, 2 :: +before: $r18=0x1bde2962dc5bb68b, $r28=0x67c403d00c9389bd, $r10=0x8fc18921f225d05a +after: $r18=0x2ed198622473f74e, $r28=0x67c403d00c9389bd, $r10=0x8fc18921f225d05a +alsl.d $r8, $r27, $r15, 3 :: +before: $r8=0x5b8de9d8b393fa06, $r27=0x393ec1c28e89e9d8, $r15=0x1a59f9d852c3f8ba +after: $r8=0xe45007ecc713477a, $r27=0x393ec1c28e89e9d8, $r15=0x1a59f9d852c3f8ba +alsl.d $r27, $r24, $r6, 4 :: +before: $r27=0x72195c1ca51cc4db, $r24=0x4ee5b51e1e161ab2, $r6=0x08a10acb4b625fef +after: $r27=0xf6fc5cad2cc40b0f, $r24=0x4ee5b51e1e161ab2, $r6=0x08a10acb4b625fef +alsl.d $r29, $r4, $r18, 2 :: +before: $r29=0xf3ed9e39d83d3dec, $r4=0xa3816509b9a6c23d, $r18=0x6949e8e534450dd5 +after: $r29=0xf74f7d0c1ae016c9, $r4=0xa3816509b9a6c23d, $r18=0x6949e8e534450dd5 +alsl.d $r16, $r13, $r8, 1 :: +before: $r16=0x588f388f25a342df, $r13=0xde33a74109c7be30, $r8=0x8b02cf06997a065a +after: $r16=0x476a1d88ad0982ba, $r13=0xde33a74109c7be30, $r8=0x8b02cf06997a065a +lu12i.w $r9, 94146 :: +before: $r9=0xdf45bd002ccf48e1 +after: $r9=0x0000000016fc2000 +lu12i.w $r10, 129014 :: +before: $r10=0xa5138a37d09ada8a +after: $r10=0x000000001f7f6000 +lu12i.w $r18, -130138 :: +before: $r18=0x0efe46a52b8b3e5e +after: $r18=0xffffffffe03a6000 +lu12i.w $r7, -467080 :: +before: $r7=0x29084adf6d033a88 +after: $r7=0xffffffff8df78000 +lu12i.w $r10, 360675 :: +before: $r10=0xe9072e7fec2a5d1c +after: $r10=0x00000000580e3000 +lu12i.w $r28, 205272 :: +before: $r28=0x2f7d41c7bd959cd5 +after: $r28=0x00000000321d8000 +lu12i.w $r16, -266298 :: +before: $r16=0xcb48200d89b48566 +after: $r16=0xffffffffbefc6000 +lu12i.w $r12, -186346 :: +before: $r12=0xd605223c244f4a50 +after: $r12=0xffffffffd2816000 +lu12i.w $r15, 247864 :: +before: $r15=0x22c035c8c90016be +after: $r15=0x000000003c838000 +lu12i.w $r20, -511005 :: +before: $r20=0x6b2fd1aa0b603fec +after: $r20=0xffffffff833e3000 +lu32i.d $r8, -310956 :: +before: $r8=0xb331616751ed8877 +after: $r8=0xfffb415451ed8877 +lu32i.d $r17, 35590 :: +before: $r17=0x0e49bab8d80e1dd7 +after: $r17=0x00008b06d80e1dd7 +lu32i.d $r4, 500474 :: +before: $r4=0x842cdc9ac0a0adf6 +after: $r4=0x0007a2fac0a0adf6 +lu32i.d $r23, -447277 :: +before: $r23=0xc9ca69b8e5ab079e +after: $r23=0xfff92cd3e5ab079e +lu32i.d $r12, -503028 :: +before: $r12=0x27d83e1c77dec50a +after: $r12=0xfff8530c77dec50a +lu32i.d $r26, -355708 :: +before: $r26=0xc00dcc918a89f350 +after: $r26=0xfffa92848a89f350 +lu32i.d $r16, -231989 :: +before: $r16=0xd180188cdc073491 +after: $r16=0xfffc75cbdc073491 +lu32i.d $r26, 250642 :: +before: $r26=0x4efae034432bbb3b +after: $r26=0x0003d312432bbb3b +lu32i.d $r15, 237105 :: +before: $r15=0x7bf2141e673e336f +after: $r15=0x00039e31673e336f +lu32i.d $r4, -312071 :: +before: $r4=0x187c50bfc5eb8f32 +after: $r4=0xfffb3cf9c5eb8f32 +lu52i.d $r8, $r25, 1920 :: +before: $r8=0x1da74dfcb33d471a, $r25=0x453ae9f1200f4d41 +after: $r8=0x780ae9f1200f4d41, $r25=0x453ae9f1200f4d41 +lu52i.d $r14, $r25, -2008 :: +before: $r14=0x5e954055ebaec78f, $r25=0xb7637f9119e12e31 +after: $r14=0x82837f9119e12e31, $r25=0xb7637f9119e12e31 +lu52i.d $r26, $r24, -1803 :: +before: $r26=0xead69e40b96b23bf, $r24=0x779862b03d1ab575 +after: $r26=0x8f5862b03d1ab575, $r24=0x779862b03d1ab575 +lu52i.d $r5, $r25, -1406 :: +before: $r5=0x452236306da7c667, $r25=0x9f16a6e48cca3a7b +after: $r5=0xa826a6e48cca3a7b, $r25=0x9f16a6e48cca3a7b +lu52i.d $r26, $r23, -667 :: +before: $r26=0x5604b9744291e45a, $r23=0x70eecb3116b1795c +after: $r26=0xd65ecb3116b1795c, $r23=0x70eecb3116b1795c +lu52i.d $r14, $r27, -1221 :: +before: $r14=0x6d9a8cfe459c1c48, $r27=0x85452bdd40205e0d +after: $r14=0xb3b52bdd40205e0d, $r27=0x85452bdd40205e0d +lu52i.d $r25, $r8, 423 :: +before: $r25=0x1a8d72e42f68a33d, $r8=0x7089b6fe4c1f7a70 +after: $r25=0x1a79b6fe4c1f7a70, $r8=0x7089b6fe4c1f7a70 +lu52i.d $r30, $r10, -177 :: +before: $r30=0x7c4fe646acac7ac0, $r10=0xe7d222ba1fd5cae2 +after: $r30=0xf4f222ba1fd5cae2, $r10=0xe7d222ba1fd5cae2 +lu52i.d $r6, $r13, -1438 :: +before: $r6=0xdb3d6a615a9e492f, $r13=0xaa9303648ff489f2 +after: $r6=0xa62303648ff489f2, $r13=0xaa9303648ff489f2 +lu52i.d $r25, $r4, -634 :: +before: $r25=0x8b41b813d85b8ee8, $r4=0xe4d31961e42e713c +after: $r25=0xd8631961e42e713c, $r4=0xe4d31961e42e713c +addi.w $r6, $r27, 1727 :: +before: $r6=0x12845f036198fa6f, $r27=0xda77c63c764655da +after: $r6=0x0000000076465c99, $r27=0xda77c63c764655da +addi.w $r9, $r8, -381 :: +before: $r9=0x21a7e3cfa2649a4f, $r8=0xc64c73b3bd4c1dcb +after: $r9=0xffffffffbd4c1c4e, $r8=0xc64c73b3bd4c1dcb +addi.w $r16, $r6, -186 :: +before: $r16=0x6c47b02ef52a3502, $r6=0x24ca1a646dac5cc3 +after: $r16=0x000000006dac5c09, $r6=0x24ca1a646dac5cc3 +addi.w $r20, $r31, 1503 :: +before: $r20=0xb6144d8f9513c78e, $r31=0xc4b808764e894e6c +after: $r20=0x000000004e89544b, $r31=0xc4b808764e894e6c +addi.w $r19, $r17, -1918 :: +before: $r19=0xcf97c9215c961121, $r17=0x9b714c4cb899399b +after: $r19=0xffffffffb899321d, $r17=0x9b714c4cb899399b +addi.w $r14, $r8, -1781 :: +before: $r14=0xe1abf22f6c3c82ec, $r8=0x4110e9c1b5f59ef6 +after: $r14=0xffffffffb5f59801, $r8=0x4110e9c1b5f59ef6 +addi.w $r29, $r18, 2047 :: +before: $r29=0x4b64427195dda12d, $r18=0xadf5af70b7b3f37b +after: $r29=0xffffffffb7b3fb7a, $r18=0xadf5af70b7b3f37b +addi.w $r4, $r30, 244 :: +before: $r4=0xfc785d46f5bbdff4, $r30=0x1e061e9d51362d9c +after: $r4=0x0000000051362e90, $r30=0x1e061e9d51362d9c +addi.w $r7, $r23, -376 :: +before: $r7=0xe037576d82c12e8d, $r23=0xa77c8da72af708f1 +after: $r7=0x000000002af70779, $r23=0xa77c8da72af708f1 +addi.w $r23, $r17, 1924 :: +before: $r23=0x00a10df57c4103ef, $r17=0x26d2628746ad0a3e +after: $r23=0x0000000046ad11c2, $r17=0x26d2628746ad0a3e +addi.d $r14, $r14, 152 :: +before: $r14=0x61b497fb58a816d9, $r14=0x29eb218dd65d9d6c +after: $r14=0x29eb218dd65d9e04, $r14=0x29eb218dd65d9e04 +addi.d $r20, $r13, -640 :: +before: $r20=0xd80db8387a8cdd93, $r13=0x5e23e4b01f2bbd6d +after: $r20=0x5e23e4b01f2bbaed, $r13=0x5e23e4b01f2bbd6d +addi.d $r13, $r25, -743 :: +before: $r13=0x5dfea060c6e8f587, $r25=0x95f49b783954f9f9 +after: $r13=0x95f49b783954f712, $r25=0x95f49b783954f9f9 +addi.d $r4, $r30, 676 :: +before: $r4=0xd72f370f6ce7bc4c, $r30=0x148550b0f97ce601 +after: $r4=0x148550b0f97ce8a5, $r30=0x148550b0f97ce601 +addi.d $r26, $r8, 1630 :: +before: $r26=0xa4120a67f8d6df1a, $r8=0xa83f4bbcaf5bc52e +after: $r26=0xa83f4bbcaf5bcb8c, $r8=0xa83f4bbcaf5bc52e +addi.d $r20, $r29, -1971 :: +before: $r20=0xa8f9c82780ac16d5, $r29=0x7ab169a5751642bc +after: $r20=0x7ab169a575163b09, $r29=0x7ab169a5751642bc +addi.d $r8, $r8, 1160 :: +before: $r8=0x6f22bdb480c14540, $r8=0x94e1253c331b17f2 +after: $r8=0x94e1253c331b1c7a, $r8=0x94e1253c331b1c7a +addi.d $r15, $r27, 844 :: +before: $r15=0x0312473547bcfe03, $r27=0x7a786cbc8149d818 +after: $r15=0x7a786cbc8149db64, $r27=0x7a786cbc8149d818 +addi.d $r8, $r26, -1185 :: +before: $r8=0xee2b1be852671bc3, $r26=0x6a36d61dfee3a6fb +after: $r8=0x6a36d61dfee3a25a, $r26=0x6a36d61dfee3a6fb +addi.d $r17, $r27, -2046 :: +before: $r17=0x70e068b54ed72e20, $r27=0x922681ab8837027b +after: $r17=0x922681ab8836fa7d, $r27=0x922681ab8837027b +addu16i.d $r20, $r29, -14564 :: +before: $r20=0x8232770e3472bdc3, $r29=0x4d28c5567787c26e +after: $r20=0x4d28c5563ea3c26e, $r29=0x4d28c5567787c26e +addu16i.d $r29, $r4, -3511 :: +before: $r29=0x9076403ed2f0fdf4, $r4=0x471cafb4183a389f +after: $r29=0x471cafb40a83389f, $r4=0x471cafb4183a389f +addu16i.d $r26, $r15, 25897 :: +before: $r26=0x0dec118b1eb13234, $r15=0x06ff5ce56111b301 +after: $r26=0x06ff5ce5c63ab301, $r15=0x06ff5ce56111b301 +addu16i.d $r9, $r5, -21829 :: +before: $r9=0x73209239d98fb81a, $r5=0x1dc8f0ba4710eba3 +after: $r9=0x1dc8f0b9f1cbeba3, $r5=0x1dc8f0ba4710eba3 +addu16i.d $r28, $r25, -23832 :: +before: $r28=0xa39ba8429a9c13a6, $r25=0x4fffb32851c13ff2 +after: $r28=0x4fffb327f4a93ff2, $r25=0x4fffb32851c13ff2 +addu16i.d $r23, $r30, -32189 :: +before: $r23=0x08abd919f5ea43b1, $r30=0x40078826f7336f0e +after: $r23=0x4007882679766f0e, $r30=0x40078826f7336f0e +addu16i.d $r28, $r24, 16372 :: +before: $r28=0x695e543e25e7d3e4, $r24=0x30279db606efa8ec +after: $r28=0x30279db646e3a8ec, $r24=0x30279db606efa8ec +addu16i.d $r4, $r18, -28041 :: +before: $r4=0xa125cadb71209757, $r18=0xff287b5e7fb2a2ba +after: $r4=0xff287b5e1229a2ba, $r18=0xff287b5e7fb2a2ba +addu16i.d $r5, $r17, -11268 :: +before: $r5=0xd5d3e6da7c594ca9, $r17=0x2bc9be0ef252584c +after: $r5=0x2bc9be0ec64e584c, $r17=0x2bc9be0ef252584c +addu16i.d $r29, $r28, -15645 :: +before: $r29=0x0ee0391151007613, $r28=0xae616c39d87c4b6e +after: $r29=0xae616c399b5f4b6e, $r28=0xae616c39d87c4b6e +andi $r28, $r18, 1288 :: +before: $r28=0xd62f833fbbd483b3, $r18=0xa2f268cdcf18dd00 +after: $r28=0x0000000000000500, $r18=0xa2f268cdcf18dd00 +andi $r12, $r13, 153 :: +before: $r12=0xc40efc9a74a3a13b, $r13=0xfd609200795f877c +after: $r12=0x0000000000000018, $r13=0xfd609200795f877c +andi $r6, $r18, 3633 :: +before: $r6=0x79ee7ee7a7865b79, $r18=0x644bec92dca1ad7f +after: $r6=0x0000000000000c31, $r18=0x644bec92dca1ad7f +andi $r5, $r31, 3299 :: +before: $r5=0x2d64be0e5c2ec0f6, $r31=0x87253b6589f182c7 +after: $r5=0x00000000000000c3, $r31=0x87253b6589f182c7 +andi $r28, $r5, 3189 :: +before: $r28=0xf2e4ed85d98a1860, $r5=0x9f58e4edd98b60d1 +after: $r28=0x0000000000000051, $r5=0x9f58e4edd98b60d1 +andi $r18, $r29, 4031 :: +before: $r18=0x3c067920d48cf0d2, $r29=0x2bf35e68c503ecfe +after: $r18=0x0000000000000cbe, $r29=0x2bf35e68c503ecfe +andi $r20, $r24, 3252 :: +before: $r20=0xe1d95be05fd57a64, $r24=0xd33e771521b24bd3 +after: $r20=0x0000000000000890, $r24=0xd33e771521b24bd3 +andi $r6, $r23, 1665 :: +before: $r6=0x23341b2d86d02365, $r23=0x16de10f2b4a45064 +after: $r6=000000000000000000, $r23=0x16de10f2b4a45064 +andi $r27, $r14, 325 :: +before: $r27=0xd7db9d77aea4dcf5, $r14=0x142272b737435eb7 +after: $r27=0x0000000000000005, $r14=0x142272b737435eb7 +andi $r23, $r16, 1056 :: +before: $r23=0x57fee53581b09718, $r16=0x02ace25d9e2ddbaa +after: $r23=0x0000000000000020, $r16=0x02ace25d9e2ddbaa +ori $r26, $r13, 3251 :: +before: $r26=0x6d47cf7e5bb5c13e, $r13=0x93aed4996805ba3b +after: $r26=0x93aed4996805bebb, $r13=0x93aed4996805ba3b +ori $r10, $r25, 568 :: +before: $r10=0x42f0332098f938af, $r25=0xd7916fe8d569567b +after: $r10=0xd7916fe8d569567b, $r25=0xd7916fe8d569567b +ori $r12, $r17, 1798 :: +before: $r12=0xc507d4150a742b76, $r17=0x2b9a102a5b5b15f7 +after: $r12=0x2b9a102a5b5b17f7, $r17=0x2b9a102a5b5b15f7 +ori $r15, $r15, 1781 :: +before: $r15=0xa54ad5ecc0e72adb, $r15=0x37c18ad4ec6e678c +after: $r15=0x37c18ad4ec6e67fd, $r15=0x37c18ad4ec6e67fd +ori $r5, $r4, 682 :: +before: $r5=0x1f388b2a2b18004d, $r4=0xb5fa23fbb02eeedb +after: $r5=0xb5fa23fbb02eeefb, $r4=0xb5fa23fbb02eeedb +ori $r27, $r24, 1931 :: +before: $r27=0x73b086f8a8b4d7b5, $r24=0xd23e30ab1e45470a +after: $r27=0xd23e30ab1e45478b, $r24=0xd23e30ab1e45470a +ori $r28, $r6, 3593 :: +before: $r28=0x972967beac695928, $r6=0x2c701d0bc28816c5 +after: $r28=0x2c701d0bc2881ecd, $r6=0x2c701d0bc28816c5 +ori $r27, $r4, 3679 :: +before: $r27=0x54fecbbf0a06e5a6, $r4=0xf0b6d846464a3331 +after: $r27=0xf0b6d846464a3f7f, $r4=0xf0b6d846464a3331 +ori $r9, $r16, 905 :: +before: $r9=0x71f3cd001c729062, $r16=0xc5720758095e4592 +after: $r9=0xc5720758095e479b, $r16=0xc5720758095e4592 +ori $r26, $r7, 3473 :: +before: $r26=0xd7ce86800c3c0f4b, $r7=0xc4a58f787cdf5bb2 +after: $r26=0xc4a58f787cdf5fb3, $r7=0xc4a58f787cdf5bb2 +xori $r27, $r31, 2690 :: +before: $r27=0xe6d49c2dc629fbc7, $r31=0x91832665d1a898e2 +after: $r27=0x91832665d1a89260, $r31=0x91832665d1a898e2 +xori $r15, $r5, 697 :: +before: $r15=0xada49c0d48beffc5, $r5=0x0e3cf426f1be4766 +after: $r15=0x0e3cf426f1be45df, $r5=0x0e3cf426f1be4766 +xori $r9, $r20, 2268 :: +before: $r9=0x174a71d6d3757e3e, $r20=0x25ed4678037622be +after: $r9=0x25ed467803762a62, $r20=0x25ed4678037622be +xori $r31, $r15, 3817 :: +before: $r31=0x1fac1694b40fbf2e, $r15=0x4fe4fb2e0b660ca2 +after: $r31=0x4fe4fb2e0b66024b, $r15=0x4fe4fb2e0b660ca2 +xori $r17, $r14, 3929 :: +before: $r17=0x2dc443400df4e153, $r14=0x1db25e602ef8ece5 +after: $r17=0x1db25e602ef8e3bc, $r14=0x1db25e602ef8ece5 +xori $r4, $r28, 2735 :: +before: $r4=0x5fb5ad5a84e97835, $r28=0xc52da11293641639 +after: $r4=0xc52da11293641c96, $r28=0xc52da11293641639 +xori $r5, $r13, 1153 :: +before: $r5=0x5c5fc4ba45da005f, $r13=0xe46f853b7d602b84 +after: $r5=0xe46f853b7d602f05, $r13=0xe46f853b7d602b84 +xori $r30, $r26, 3867 :: +before: $r30=0x1419915b6f92678b, $r26=0xa984612f1266da94 +after: $r30=0xa984612f1266d58f, $r26=0xa984612f1266da94 +xori $r13, $r13, 3426 :: +before: $r13=0xc2b8fd036ba6314b, $r13=0x4cf49604f644713c +after: $r13=0x4cf49604f6447c5e, $r13=0x4cf49604f6447c5e +xori $r25, $r23, 2669 :: +before: $r25=0xde46e3673c9a75dc, $r23=0xfa1177a89f08c81e +after: $r25=0xfa1177a89f08c273, $r23=0xfa1177a89f08c81e +sll.w $r13, $r8, $r12 :: +before: $r13=0x26131fa72f4b76f1, $r8=0xf34f7108538078d0, $r12=0x10bbd12a8e087501 +after: $r13=0xffffffffa700f1a0, $r8=0xf34f7108538078d0, $r12=0x10bbd12a8e087501 +sll.w $r29, $r8, $r15 :: +before: $r29=0xb6f529da4017d0d9, $r8=0x49fbfb11ef643171, $r15=0x9d0425e747d11bde +after: $r29=0x0000000040000000, $r8=0x49fbfb11ef643171, $r15=0x9d0425e747d11bde +sll.w $r30, $r31, $r12 :: +before: $r30=0xcfc5236f5c070644, $r31=0xba8301a1087b3a96, $r12=0xff7589561824e1be +after: $r30=0xffffffff80000000, $r31=0xba8301a1087b3a96, $r12=0xff7589561824e1be +sll.w $r28, $r10, $r7 :: +before: $r28=0x37fa51674df87149, $r10=0x39212605c5d0cf7d, $r7=0x18a8e323326ce5aa +after: $r28=0x00000000433df400, $r10=0x39212605c5d0cf7d, $r7=0x18a8e323326ce5aa +sll.w $r8, $r9, $r14 :: +before: $r8=0x707a9e0ece8abe40, $r9=0x94b7b20a80c16c7b, $r14=0x6887c46efb4cc181 +after: $r8=0x000000000182d8f6, $r9=0x94b7b20a80c16c7b, $r14=0x6887c46efb4cc181 +sll.w $r8, $r4, $r24 :: +before: $r8=0xd718a01b03a53964, $r4=0x8ebd8bfeec304e2a, $r24=0x06b4a83a6838b5d1 +after: $r8=0xffffffff9c540000, $r4=0x8ebd8bfeec304e2a, $r24=0x06b4a83a6838b5d1 +sll.w $r23, $r31, $r27 :: +before: $r23=0xf50cab824a06d30e, $r31=0xa8ee12cbd8dec935, $r27=0x118002b3f0cecbab +after: $r23=0xfffffffff649a800, $r31=0xa8ee12cbd8dec935, $r27=0x118002b3f0cecbab +sll.w $r8, $r25, $r26 :: +before: $r8=0x8163368243faadee, $r25=0x3a04f47bf19a4cc8, $r26=0x6a58cd3a57b4eeb4 +after: $r8=0xffffffffcc800000, $r25=0x3a04f47bf19a4cc8, $r26=0x6a58cd3a57b4eeb4 +sll.w $r25, $r13, $r12 :: +before: $r25=0x3d6831e1afab1b1a, $r13=0x9ee672580cb39777, $r12=0x9084acd2bc7404ca +after: $r25=0xffffffffce5ddc00, $r13=0x9ee672580cb39777, $r12=0x9084acd2bc7404ca +sll.w $r20, $r5, $r29 :: +before: $r20=0x90f7ee3ff75817a6, $r5=0xe4ae07989d6148d7, $r29=0x3e208bfcf046fffd +after: $r20=0xffffffffe0000000, $r5=0xe4ae07989d6148d7, $r29=0x3e208bfcf046fffd +srl.w $r20, $r29, $r30 :: +before: $r20=0xff3f6b79b5e2b56d, $r29=0x1195aa09fa92d26b, $r30=0xa93a8fd11ad5ae99 +after: $r20=0x000000000000007d, $r29=0x1195aa09fa92d26b, $r30=0xa93a8fd11ad5ae99 +srl.w $r8, $r15, $r4 :: +before: $r8=0x5d2fb7cd04ecd00c, $r15=0x47bf914b6eca2852, $r4=0x1bc63138cc45a75c +after: $r8=0x0000000000000006, $r15=0x47bf914b6eca2852, $r4=0x1bc63138cc45a75c +srl.w $r20, $r12, $r18 :: +before: $r20=0x61fa22abda7c7b02, $r12=0x9341cf09aa2e106e, $r18=0x2dea831e9e121355 +after: $r20=0x0000000000000551, $r12=0x9341cf09aa2e106e, $r18=0x2dea831e9e121355 +srl.w $r30, $r20, $r26 :: +before: $r30=0x43e0249584da52db, $r20=0x482a209e436cda53, $r26=0xb323a7f463f80660 +after: $r30=0x00000000436cda53, $r20=0x482a209e436cda53, $r26=0xb323a7f463f80660 +srl.w $r31, $r16, $r28 :: +before: $r31=0x4b10d05d93bf7288, $r16=0x6d0330e88122d7c1, $r28=0xc531cf8c92d53d03 +after: $r31=0x0000000010245af8, $r16=0x6d0330e88122d7c1, $r28=0xc531cf8c92d53d03 +srl.w $r31, $r15, $r31 :: +before: $r31=0xd4654233c7648c3a, $r15=0x12e6fc2a04cbf809, $r31=0xcfe1c1b558a94808 +after: $r31=0x000000000004cbf8, $r15=0x12e6fc2a04cbf809, $r31=0x000000000004cbf8 +srl.w $r10, $r30, $r19 :: +before: $r10=0x602dee9c45a3b99b, $r30=0x3ce0a6ac2acf19fa, $r19=0xdb5fab4bc2f82e7a +after: $r10=0x000000000000000a, $r30=0x3ce0a6ac2acf19fa, $r19=0xdb5fab4bc2f82e7a +srl.w $r17, $r9, $r23 :: +before: $r17=0x45106f11d4a57641, $r9=0x05354795b675edac, $r23=0xc67578c28ed7b6c7 +after: $r17=0x00000000016cebdb, $r9=0x05354795b675edac, $r23=0xc67578c28ed7b6c7 +srl.w $r25, $r26, $r29 :: +before: $r25=0x1dc3b8477fba650c, $r26=0x0814377a71768e75, $r29=0x60276c0e316db833 +after: $r25=0x0000000000000e2e, $r26=0x0814377a71768e75, $r29=0x60276c0e316db833 +srl.w $r31, $r7, $r30 :: +before: $r31=0x360fc92a085c2e14, $r7=0x1b44ec96def89449, $r30=0x56d6c5d85a81ed1f +after: $r31=0x0000000000000001, $r7=0x1b44ec96def89449, $r30=0x56d6c5d85a81ed1f +sra.w $r10, $r17, $r19 :: +before: $r10=0x576f2bfc771641b8, $r17=0xfb1fb20b98a54405, $r19=0xb20e9dae5a212078 +after: $r10=0xffffffffffffff98, $r17=0xfb1fb20b98a54405, $r19=0xb20e9dae5a212078 +sra.w $r12, $r16, $r31 :: +before: $r12=0xbfdbb9a90ccc08a0, $r16=0xb5d3c7f3b1a800a6, $r31=0x57c3ff79f3b4198b +after: $r12=0xfffffffffff63500, $r16=0xb5d3c7f3b1a800a6, $r31=0x57c3ff79f3b4198b +sra.w $r18, $r16, $r5 :: +before: $r18=0xadcb6c153538b6b1, $r16=0x99e245813e90b5e9, $r5=0x7adff58363d5ebd2 +after: $r18=0x0000000000000fa4, $r16=0x99e245813e90b5e9, $r5=0x7adff58363d5ebd2 +sra.w $r17, $r28, $r25 :: +before: $r17=0x7faea6a29686caf9, $r28=0x801d40ea40b19bee, $r25=0x0f5174f678600d3f +after: $r17=000000000000000000, $r28=0x801d40ea40b19bee, $r25=0x0f5174f678600d3f +sra.w $r8, $r27, $r13 :: +before: $r8=0x86e5534832150e05, $r27=0x47bb53d1cdc3560f, $r13=0x917e2b49633a0f44 +after: $r8=0xfffffffffcdc3560, $r27=0x47bb53d1cdc3560f, $r13=0x917e2b49633a0f44 +sra.w $r26, $r18, $r20 :: +before: $r26=0xbfb83a0d762c171a, $r18=0xbf67ed78d934d37c, $r20=0x9f377995293fcc6b +after: $r26=0xfffffffffffb269a, $r18=0xbf67ed78d934d37c, $r20=0x9f377995293fcc6b +sra.w $r5, $r25, $r19 :: +before: $r5=0x266703af59334b0f, $r25=0x4ed92cdab9f641c9, $r19=0x5da1d0b8846d1a3d +after: $r5=0xfffffffffffffffd, $r25=0x4ed92cdab9f641c9, $r19=0x5da1d0b8846d1a3d +sra.w $r19, $r27, $r24 :: +before: $r19=0x72557561b3b40007, $r27=0xd5db278ea099b3b5, $r24=0x50b4a888b898610f +after: $r19=0xffffffffffff4133, $r27=0xd5db278ea099b3b5, $r24=0x50b4a888b898610f +sra.w $r16, $r10, $r4 :: +before: $r16=0xb349f888f1809ba3, $r10=0x23d60a1fc100d89e, $r4=0xc2846cc882dbc8e2 +after: $r16=0xfffffffff0403627, $r10=0x23d60a1fc100d89e, $r4=0xc2846cc882dbc8e2 +sra.w $r23, $r10, $r31 :: +before: $r23=0xd7bdeddd344bb5af, $r10=0xa015a07c13ff2234, $r31=0x7c0fe410ce063a85 +after: $r23=0x00000000009ff911, $r10=0xa015a07c13ff2234, $r31=0x7c0fe410ce063a85 +sll.d $r28, $r17, $r10 :: +before: $r28=0x167adf26efd66416, $r17=0xb861ba6e0aadf304, $r10=0xa19e21ba0f406c33 +after: $r28=0x9820000000000000, $r17=0xb861ba6e0aadf304, $r10=0xa19e21ba0f406c33 +sll.d $r18, $r29, $r13 :: +before: $r18=0x3e8ea4dc3a9d9b44, $r29=0x28ccf5dfa9cdc3b2, $r13=0x33ef837a5a476bdc +after: $r18=0xfa9cdc3b20000000, $r29=0x28ccf5dfa9cdc3b2, $r13=0x33ef837a5a476bdc +sll.d $r23, $r27, $r29 :: +before: $r23=0x23e29c76deed70ca, $r27=0x09e2265d8422e78d, $r29=0xe9cc62bfd8a7c913 +after: $r23=0x32ec21173c680000, $r27=0x09e2265d8422e78d, $r29=0xe9cc62bfd8a7c913 +sll.d $r16, $r17, $r17 :: +before: $r16=0xf5e858c7445fcedd, $r17=0x6735e4cf2fcb78fb, $r17=0x726dd10e13b62663 +after: $r16=0x9db1331800000000, $r17=0x726dd10e13b62663, $r17=0x726dd10e13b62663 +sll.d $r17, $r15, $r29 :: +before: $r17=0xfc1dbfc0551f8813, $r15=0xec45100b21a74025, $r29=0x186d3b737cbfd39a +after: $r17=0x2c869d0094000000, $r15=0xec45100b21a74025, $r29=0x186d3b737cbfd39a +sll.d $r19, $r15, $r9 :: +before: $r19=0xbb01afe39a1e17b6, $r15=0x3e66dd1100acc44a, $r9=0xa9c74257f6e39cdf +after: $r19=0x8056622500000000, $r15=0x3e66dd1100acc44a, $r9=0xa9c74257f6e39cdf +sll.d $r23, $r9, $r31 :: +before: $r23=0x945b101751c38d12, $r9=0x262d14baae546199, $r31=0x7ccdd8a7840948df +after: $r23=0x572a30cc80000000, $r9=0x262d14baae546199, $r31=0x7ccdd8a7840948df +sll.d $r5, $r31, $r28 :: +before: $r5=0xa88eaecc1405995b, $r31=0xd96ed500aff4596b, $r28=0x6994841a196c562e +after: $r5=0x165ac00000000000, $r31=0xd96ed500aff4596b, $r28=0x6994841a196c562e +sll.d $r27, $r10, $r25 :: +before: $r27=0x1e9540fa8237a849, $r10=0x9aad6101b2470a60, $r25=0x90c95628696f752f +after: $r27=0x8530000000000000, $r10=0x9aad6101b2470a60, $r25=0x90c95628696f752f +sll.d $r4, $r26, $r18 :: +before: $r4=0xb4dc3cdeab2e8454, $r26=0x0d27a92db3b2906c, $r18=0x2bc7647c40c0b375 +after: $r4=0x0d80000000000000, $r26=0x0d27a92db3b2906c, $r18=0x2bc7647c40c0b375 +srl.d $r6, $r27, $r13 :: +before: $r6=0x66ebeca9a7fad574, $r27=0xdc837ce646ea6b51, $r13=0xa57259e1758c564b +after: $r6=0x001b906f9cc8dd4d, $r27=0xdc837ce646ea6b51, $r13=0xa57259e1758c564b +srl.d $r6, $r20, $r5 :: +before: $r6=0x091794316e6c5e65, $r20=0x0dc7c47d39d64a16, $r5=0x35f029b9942e11c8 +after: $r6=0x000dc7c47d39d64a, $r20=0x0dc7c47d39d64a16, $r5=0x35f029b9942e11c8 +srl.d $r15, $r5, $r4 :: +before: $r15=0xbc963842b3ebc906, $r5=0x42ea773b0bd19807, $r4=0xd05cd2c4b01ea630 +after: $r15=0x00000000000042ea, $r5=0x42ea773b0bd19807, $r4=0xd05cd2c4b01ea630 +srl.d $r18, $r25, $r28 :: +before: $r18=0x30d908baaa31230e, $r25=0x779272ae228746a5, $r28=0xf7b665809a3f303b +after: $r18=0x000000000000000e, $r25=0x779272ae228746a5, $r28=0xf7b665809a3f303b +srl.d $r5, $r28, $r27 :: +before: $r5=0x01f1d414f1d0f1fe, $r28=0x647277d3759d74bf, $r27=0xa5c5fce39b4a1810 +after: $r5=0x0000647277d3759d, $r28=0x647277d3759d74bf, $r27=0xa5c5fce39b4a1810 +srl.d $r24, $r9, $r26 :: +before: $r24=0x5fa44419162fc2c8, $r9=0x9d2a589e6f6b3440, $r26=0x810a615115238d8d +after: $r24=0x0004e952c4f37b59, $r9=0x9d2a589e6f6b3440, $r26=0x810a615115238d8d +srl.d $r31, $r23, $r30 :: +before: $r31=0xfa1a7ad64758b758, $r23=0xe3d69d99e87b4297, $r30=0x87fd8dc0a78e86bb +after: $r31=0x000000000000001c, $r23=0xe3d69d99e87b4297, $r30=0x87fd8dc0a78e86bb +srl.d $r26, $r10, $r24 :: +before: $r26=0x540888639a787231, $r10=0x168791cefeb1660a, $r24=0xd02b158115db9cdf +after: $r26=0x000000002d0f239d, $r10=0x168791cefeb1660a, $r24=0xd02b158115db9cdf +srl.d $r23, $r15, $r12 :: +before: $r23=0xff3e950565409999, $r15=0xe15a01fa0e34ea3b, $r12=0x237aba34fe552f8e +after: $r23=0x0003856807e838d3, $r15=0xe15a01fa0e34ea3b, $r12=0x237aba34fe552f8e +srl.d $r8, $r16, $r4 :: +before: $r8=0x825bafd36cc0d32e, $r16=0x321677304d1b1406, $r4=0xca68c6c83dfa5837 +after: $r8=0x0000000000000064, $r16=0x321677304d1b1406, $r4=0xca68c6c83dfa5837 +sra.d $r23, $r19, $r16 :: +before: $r23=0x4cab63abd8f64774, $r19=0x2c007c3ac68d7c80, $r16=0xd8f4ac963a8b2c01 +after: $r23=0x16003e1d6346be40, $r19=0x2c007c3ac68d7c80, $r16=0xd8f4ac963a8b2c01 +sra.d $r18, $r30, $r25 :: +before: $r18=0x531de73fca30361a, $r30=0x2857ba730cd281ff, $r25=0xacab0fe400e4c113 +after: $r18=0x0000050af74e619a, $r30=0x2857ba730cd281ff, $r25=0xacab0fe400e4c113 +sra.d $r31, $r13, $r10 :: +before: $r31=0x3184416bc93a5e26, $r13=0xad5864bc4022de96, $r10=0xf7007bdbf1f728ab +after: $r31=0xfffffffffff5ab0c, $r13=0xad5864bc4022de96, $r10=0xf7007bdbf1f728ab +sra.d $r6, $r25, $r23 :: +before: $r6=0x9184d2df291f3402, $r25=0x7c0b117dcad80c03, $r23=0x35b29b0dde1a94bd +after: $r6=0x0000000000000003, $r25=0x7c0b117dcad80c03, $r23=0x35b29b0dde1a94bd +sra.d $r16, $r6, $r29 :: +before: $r16=0x2849e543d35dff5f, $r6=0x009f13f36a632a3f, $r29=0xf31f881e12072fe2 +after: $r16=0x000000000027c4fc, $r6=0x009f13f36a632a3f, $r29=0xf31f881e12072fe2 +sra.d $r7, $r29, $r10 :: +before: $r7=0x25c763f8366139dd, $r29=0xfd77fd6e69e371c6, $r10=0xcaa2ec6ad4f3b996 +after: $r7=0xfffffff5dff5b9a7, $r29=0xfd77fd6e69e371c6, $r10=0xcaa2ec6ad4f3b996 +sra.d $r24, $r25, $r26 :: +before: $r24=0x472602300b4f04c9, $r25=0x54ceea832a5677e9, $r26=0x5f63e9d9d6eb4af0 +after: $r24=0x00000000000054ce, $r25=0x54ceea832a5677e9, $r26=0x5f63e9d9d6eb4af0 +sra.d $r23, $r4, $r27 :: +before: $r23=0xe8b449325a0ed51e, $r4=0xd96928476f8441a5, $r27=0x7e1ae8fd9c849dce +after: $r23=0xffff65a4a11dbe11, $r4=0xd96928476f8441a5, $r27=0x7e1ae8fd9c849dce +sra.d $r15, $r9, $r12 :: +before: $r15=0x71601a1a2b155f51, $r9=0x0bcbb1d162563240, $r12=0x5a906ad2f4abb4c7 +after: $r15=0x00179763a2c4ac64, $r9=0x0bcbb1d162563240, $r12=0x5a906ad2f4abb4c7 +sra.d $r16, $r29, $r23 :: +before: $r16=0x1686886f27d397fb, $r29=0x851328b2655e5689, $r23=0x1634457590cd4033 +after: $r16=0xfffffffffffff0a2, $r29=0x851328b2655e5689, $r23=0x1634457590cd4033 +rotr.w $r8, $r5, $r18 :: +before: $r8=0xc4394aae4c13908b, $r5=0xa0c5728d1211b595, $r18=0x3d562746b3943f3b +after: $r8=0x000000004236b2a2, $r5=0xa0c5728d1211b595, $r18=0x3d562746b3943f3b +rotr.w $r19, $r18, $r10 :: +before: $r19=0x284b501639de116b, $r18=0x4248ad6cc0107902, $r10=0xb41907b756bf8004 +after: $r19=0x000000002c010790, $r18=0x4248ad6cc0107902, $r10=0xb41907b756bf8004 +rotr.w $r29, $r8, $r4 :: +before: $r29=0x2656b50c7d689f19, $r8=0x7b5d21fdce9bcb73, $r4=0x5b212fbe9e6b8522 +after: $r29=0xfffffffff3a6f2dc, $r8=0x7b5d21fdce9bcb73, $r4=0x5b212fbe9e6b8522 +rotr.w $r25, $r6, $r30 :: +before: $r25=0x4c79ed7a1695fc25, $r6=0x6bac1698a978f50f, $r30=0xf1d58570dfb10203 +after: $r25=0xfffffffff52f1ea1, $r6=0x6bac1698a978f50f, $r30=0xf1d58570dfb10203 +rotr.w $r14, $r18, $r6 :: +before: $r14=0xe894476b4ebbff23, $r18=0x1398b65ae1e91c98, $r6=0xebb6c3f5f689d2d8 +after: $r14=0xffffffffe91c98e1, $r18=0x1398b65ae1e91c98, $r6=0xebb6c3f5f689d2d8 +rotr.w $r19, $r29, $r26 :: +before: $r19=0x2595423cc93ecd7c, $r29=0x6c462c2d29d8f908, $r26=0x19142efd8e0b48b8 +after: $r19=0xffffffffd8f90829, $r29=0x6c462c2d29d8f908, $r26=0x19142efd8e0b48b8 +rotr.w $r23, $r10, $r25 :: +before: $r23=0x68b4d913b267a3a2, $r10=0x69afb673907e4506, $r25=0xbd09ff2ed890862d +after: $r23=0x00000000283483f2, $r10=0x69afb673907e4506, $r25=0xbd09ff2ed890862d +rotr.w $r9, $r14, $r27 :: +before: $r9=0x17a45b8cbdebd6ef, $r14=0x33effef864846356, $r27=0x3f52e437f2d5da62 +after: $r9=0xffffffff992118d5, $r14=0x33effef864846356, $r27=0x3f52e437f2d5da62 +rotr.w $r5, $r12, $r23 :: +before: $r5=0x2d191b1a9707cf26, $r12=0x86fa75433dac3d39, $r23=0x21136a02424e5da4 +after: $r5=0xffffffff93dac3d3, $r12=0x86fa75433dac3d39, $r23=0x21136a02424e5da4 +rotr.w $r29, $r18, $r27 :: +before: $r29=0x7d989f74f9944f8d, $r18=0x0050fe5829a153e6, $r27=0x926776f9140b06fc +after: $r29=0xffffffff9a153e62, $r18=0x0050fe5829a153e6, $r27=0x926776f9140b06fc +rotr.d $r29, $r19, $r13 :: +before: $r29=0x1e02c0c28ec3f9b1, $r19=0xf2e79e6ff240b188, $r13=0x60f500663eddf444 +after: $r29=0x8f2e79e6ff240b18, $r19=0xf2e79e6ff240b188, $r13=0x60f500663eddf444 +rotr.d $r30, $r4, $r14 :: +before: $r30=0x97f6be8229e2e822, $r4=0xf79aaeb2c03a2113, $r14=0xbbdb2cb642605ed7 +after: $r30=0x744227ef355d6580, $r4=0xf79aaeb2c03a2113, $r14=0xbbdb2cb642605ed7 +rotr.d $r6, $r19, $r7 :: +before: $r6=0x1611806010ce99d8, $r19=0xcb64270e0fc5b4c7, $r7=0x0eda6972c46af03c +after: $r6=0xb64270e0fc5b4c7c, $r19=0xcb64270e0fc5b4c7, $r7=0x0eda6972c46af03c +rotr.d $r4, $r15, $r30 :: +before: $r4=0xe63084e97bd0efb3, $r15=0x6e1aa322e38e9b66, $r30=0xa7df0f1d92106e2d +after: $r4=0x19171c74db3370d5, $r15=0x6e1aa322e38e9b66, $r30=0xa7df0f1d92106e2d +rotr.d $r16, $r27, $r10 :: +before: $r16=0x1ff92fbb0f10ff9a, $r27=0x015c2eb91c9ae124, $r10=0x8b4c97ee7f9bc2fa +after: $r16=0x570bae4726b84900, $r27=0x015c2eb91c9ae124, $r10=0x8b4c97ee7f9bc2fa +rotr.d $r28, $r7, $r25 :: +before: $r28=0xbd766a63bbead21c, $r7=0x0d97b509610db5e7, $r25=0x3151203010315af5 +after: $r28=0xbda84b086daf386c, $r7=0x0d97b509610db5e7, $r25=0x3151203010315af5 +rotr.d $r9, $r20, $r23 :: +before: $r9=0x8a2bb5eacea50d68, $r20=0x947ec1930151adb9, $r23=0xc2f39e045d278b7b +after: $r9=0x8fd832602a35b732, $r20=0x947ec1930151adb9, $r23=0xc2f39e045d278b7b +rotr.d $r25, $r13, $r23 :: +before: $r25=0xcaddb8ea7bd492c7, $r13=0x416a1b790dbf45cb, $r23=0x44c59965e1c6af25 +after: $r25=0xc86dfa2e5a0b50db, $r13=0x416a1b790dbf45cb, $r23=0x44c59965e1c6af25 +rotr.d $r14, $r7, $r31 :: +before: $r14=0x8ca18b58047c8b5a, $r7=0x93a6cdc3585b5446, $r31=0x70cd84ec07e33cef +after: $r14=0x9b86b0b6a88d274d, $r7=0x93a6cdc3585b5446, $r31=0x70cd84ec07e33cef +rotr.d $r14, $r9, $r4 :: +before: $r14=0x48bd5c133004f490, $r9=0xad095be0915fe20b, $r4=0xc1fff6ff603a47b3 +after: $r14=0x2b7c122bfc4175a1, $r9=0xad095be0915fe20b, $r4=0xc1fff6ff603a47b3 +slli.w $r18, $r8, 10 :: +before: $r18=0xe7f8823a2989c395, $r8=0xf0ccc85519ad1e0a +after: $r18=0xffffffffb4782800, $r8=0xf0ccc85519ad1e0a +slli.w $r27, $r17, 30 :: +before: $r27=0x2e66b550a3bb071d, $r17=0x20943aa3eaa4024e +after: $r27=0xffffffff80000000, $r17=0x20943aa3eaa4024e +slli.w $r27, $r23, 31 :: +before: $r27=0x70daa2bee8209243, $r23=0x2e9160afd2e28a64 +after: $r27=000000000000000000, $r23=0x2e9160afd2e28a64 +slli.w $r10, $r13, 12 :: +before: $r10=0x701c424632b5dc29, $r13=0x591054db6afe1725 +after: $r10=0xffffffffe1725000, $r13=0x591054db6afe1725 +slli.w $r7, $r15, 19 :: +before: $r7=0xdd1d7fe3ae579499, $r15=0x2e077f689088c0c7 +after: $r7=0x0000000006380000, $r15=0x2e077f689088c0c7 +slli.w $r6, $r8, 12 :: +before: $r6=0xff732113ddaab79b, $r8=0x9cacf8e6d9e37f97 +after: $r6=0x0000000037f97000, $r8=0x9cacf8e6d9e37f97 +slli.w $r5, $r19, 22 :: +before: $r5=0xcef75ddd2adc5853, $r19=0xcc24ed9167fd06ea +after: $r5=0xffffffffba800000, $r19=0xcc24ed9167fd06ea +slli.w $r17, $r8, 7 :: +before: $r17=0x3c8788fed3e8a049, $r8=0xccf9b2d2c2e80251 +after: $r17=0x0000000074012880, $r8=0xccf9b2d2c2e80251 +slli.w $r14, $r29, 10 :: +before: $r14=0x0e1b0b077db4f08e, $r29=0x76aea4b9ae43cdfb +after: $r14=0x000000000f37ec00, $r29=0x76aea4b9ae43cdfb +slli.w $r23, $r30, 26 :: +before: $r23=0x13d8514aeb0dc12b, $r30=0x9c8352804e7e8ccb +after: $r23=0x000000002c000000, $r30=0x9c8352804e7e8ccb +slli.d $r27, $r28, 5 :: +before: $r27=0x689a2c4141835926, $r28=0x1b6ff38e611d1e4d +after: $r27=0x6dfe71cc23a3c9a0, $r28=0x1b6ff38e611d1e4d +slli.d $r5, $r20, 1 :: +before: $r5=0xff3391c2323defa6, $r20=0xe99a134a0c1a2574 +after: $r5=0xd334269418344ae8, $r20=0xe99a134a0c1a2574 +slli.d $r27, $r7, 61 :: +before: $r27=0xc32d8fb319ba47e6, $r7=0xc6530e0e601d3631 +after: $r27=0x2000000000000000, $r7=0xc6530e0e601d3631 +slli.d $r5, $r26, 45 :: +before: $r5=0x979553ff112cdf52, $r26=0x931e420364fdcaca +after: $r5=0xb959400000000000, $r26=0x931e420364fdcaca +slli.d $r27, $r5, 60 :: +before: $r27=0xa7f70b048a4087b0, $r5=0xc1b829210c3cd5a9 +after: $r27=0x9000000000000000, $r5=0xc1b829210c3cd5a9 +slli.d $r23, $r10, 59 :: +before: $r23=0xcd547af78ac66ca7, $r10=0xa2c0802de6c82645 +after: $r23=0x2800000000000000, $r10=0xa2c0802de6c82645 +slli.d $r13, $r30, 56 :: +before: $r13=0x0410b8f25e1234ee, $r30=0xdbaacfe884cda24d +after: $r13=0x4d00000000000000, $r30=0xdbaacfe884cda24d +slli.d $r16, $r4, 20 :: +before: $r16=0x44a2ff35045ec37c, $r4=0xee2240010629a8ee +after: $r16=0x0010629a8ee00000, $r4=0xee2240010629a8ee +slli.d $r19, $r20, 25 :: +before: $r19=0x8617d88408d75cac, $r20=0xba15483820d66ae7 +after: $r19=0x7041acd5ce000000, $r20=0xba15483820d66ae7 +slli.d $r24, $r27, 13 :: +before: $r24=0x669e0e9b99d5b604, $r27=0xf5d1ffc374e53c7d +after: $r24=0x3ff86e9ca78fa000, $r27=0xf5d1ffc374e53c7d +srli.w $r20, $r16, 10 :: +before: $r20=0x7f5310ac5eaa9924, $r16=0x0ea8b69613d183ee +after: $r20=0x000000000004f460, $r16=0x0ea8b69613d183ee +srli.w $r13, $r15, 0 :: +before: $r13=0x5f4d9313f9224389, $r15=0xd544272206f4e814 +after: $r13=0x0000000006f4e814, $r15=0xd544272206f4e814 +srli.w $r17, $r18, 7 :: +before: $r17=0xd9b2c942f996cc8a, $r18=0x704cd1d89de5c2b4 +after: $r17=0x00000000013bcb85, $r18=0x704cd1d89de5c2b4 +srli.w $r27, $r28, 18 :: +before: $r27=0xa3eef8efc97e0d4f, $r28=0x8c449e6236daa7a2 +after: $r27=0x0000000000000db6, $r28=0x8c449e6236daa7a2 +srli.w $r9, $r10, 29 :: +before: $r9=0x6c044927152e5fc9, $r10=0x592a1607944e0109 +after: $r9=0x0000000000000004, $r10=0x592a1607944e0109 +srli.w $r8, $r24, 31 :: +before: $r8=0xcaa01b37d49db675, $r24=0x5e35848bbc958164 +after: $r8=0x0000000000000001, $r24=0x5e35848bbc958164 +srli.w $r6, $r16, 18 :: +before: $r6=0xe2fbe1accb343769, $r16=0x85f5e17c7d785222 +after: $r6=0x0000000000001f5e, $r16=0x85f5e17c7d785222 +srli.w $r18, $r25, 31 :: +before: $r18=0x4653c07e0627825f, $r25=0x44fffa524ffd0417 +after: $r18=000000000000000000, $r25=0x44fffa524ffd0417 +srli.w $r5, $r26, 22 :: +before: $r5=0x817ebd7154c8ed46, $r26=0xc7399a9899fc5958 +after: $r5=0x0000000000000267, $r26=0xc7399a9899fc5958 +srli.w $r27, $r4, 27 :: +before: $r27=0x3e4b17b34f2b08d0, $r4=0x5bedb97aefd697f4 +after: $r27=0x000000000000001d, $r4=0x5bedb97aefd697f4 +srli.d $r31, $r9, 51 :: +before: $r31=0x8fc21da189af52ed, $r9=0x235bf33e3e612a15 +after: $r31=0x000000000000046b, $r9=0x235bf33e3e612a15 +srli.d $r26, $r7, 36 :: +before: $r26=0xcd1eaac4df2531dd, $r7=0xe87216fce9c75788 +after: $r26=0x000000000e87216f, $r7=0xe87216fce9c75788 +srli.d $r6, $r31, 29 :: +before: $r6=0xc0282beeb7dc6618, $r31=0x8b58604d6be3e8e0 +after: $r6=0x000000045ac3026b, $r31=0x8b58604d6be3e8e0 +srli.d $r20, $r6, 18 :: +before: $r20=0x1546fdd9fc133e39, $r6=0x74067840bb05a992 +after: $r20=0x00001d019e102ec1, $r6=0x74067840bb05a992 +srli.d $r28, $r20, 28 :: +before: $r28=0xaa1f88b09e13e4c6, $r20=0x6e153faa5221e893 +after: $r28=0x00000006e153faa5, $r20=0x6e153faa5221e893 +srli.d $r26, $r4, 55 :: +before: $r26=0x2ba2151c80dbea7a, $r4=0x21246f3c7063edf9 +after: $r26=0x0000000000000042, $r4=0x21246f3c7063edf9 +srli.d $r28, $r29, 34 :: +before: $r28=0xcd72eff1b5aa0877, $r29=0x5d9488c1d61a1544 +after: $r28=0x0000000017652230, $r29=0x5d9488c1d61a1544 +srli.d $r13, $r7, 62 :: +before: $r13=0x5953b78fbd8109a9, $r7=0x862731652b653859 +after: $r13=0x0000000000000002, $r7=0x862731652b653859 +srli.d $r29, $r18, 25 :: +before: $r29=0xab821449d149a976, $r18=0xcb73553146cc4bdc +after: $r29=0x00000065b9aa98a3, $r18=0xcb73553146cc4bdc +srli.d $r28, $r7, 2 :: +before: $r28=0x31272fa88123357d, $r7=0x0e9359f7a9f92ec5 +after: $r28=0x03a4d67dea7e4bb1, $r7=0x0e9359f7a9f92ec5 +srai.w $r26, $r23, 2 :: +before: $r26=0xe73a55c2b7005c01, $r23=0xfcd659254f4b3fe7 +after: $r26=0x0000000013d2cff9, $r23=0xfcd659254f4b3fe7 +srai.w $r31, $r10, 0 :: +before: $r31=0x2e0c4330fae0890a, $r10=0xa76ca364a204c82b +after: $r31=0xffffffffa204c82b, $r10=0xa76ca364a204c82b +srai.w $r31, $r8, 0 :: +before: $r31=0x64790bb6e8674f68, $r8=0xce5594f964c4a026 +after: $r31=0x0000000064c4a026, $r8=0xce5594f964c4a026 +srai.w $r15, $r31, 27 :: +before: $r15=0xccfb53c708026acd, $r31=0xce185873627515b5 +after: $r15=0x000000000000000c, $r31=0xce185873627515b5 +srai.w $r16, $r28, 1 :: +before: $r16=0x994c4d22e90185a2, $r28=0x49995d51019e1050 +after: $r16=0x0000000000cf0828, $r28=0x49995d51019e1050 +srai.w $r13, $r16, 16 :: +before: $r13=0x0484408b57b3ab89, $r16=0x437401347e23c399 +after: $r13=0x0000000000007e23, $r16=0x437401347e23c399 +srai.w $r4, $r9, 7 :: +before: $r4=0x0d1d936105b7cca3, $r9=0xd49c3c65e292b942 +after: $r4=0xffffffffffc52572, $r9=0xd49c3c65e292b942 +srai.w $r24, $r15, 10 :: +before: $r24=0xaa9377005232ec93, $r15=0xde29d0172b40f03d +after: $r24=0x00000000000ad03c, $r15=0xde29d0172b40f03d +srai.w $r19, $r14, 24 :: +before: $r19=0xa49c65a4c2cde36d, $r14=0x782e0d4b8a7a28d0 +after: $r19=0xffffffffffffff8a, $r14=0x782e0d4b8a7a28d0 +srai.w $r24, $r27, 24 :: +before: $r24=0x404f816ff696bbc8, $r27=0x1b6900e15f252315 +after: $r24=0x000000000000005f, $r27=0x1b6900e15f252315 +srai.d $r24, $r4, 22 :: +before: $r24=0x96250384fede78c7, $r4=0x6c501d9ec5e9e731 +after: $r24=0x000001b140767b17, $r4=0x6c501d9ec5e9e731 +srai.d $r30, $r19, 17 :: +before: $r30=0xcfc52d7caaf7bf47, $r19=0x82499a30d50f8b83 +after: $r30=0xffffc124cd186a87, $r19=0x82499a30d50f8b83 +srai.d $r12, $r12, 5 :: +before: $r12=0x628a1a46bbe30c16, $r12=0xaba392c50d63ea53 +after: $r12=0xfd5d1c96286b1f52, $r12=0xfd5d1c96286b1f52 +srai.d $r24, $r9, 2 :: +before: $r24=0x021c1bb01f0253d8, $r9=0xb35e31d92548a2fe +after: $r24=0xecd78c76495228bf, $r9=0xb35e31d92548a2fe +srai.d $r28, $r7, 62 :: +before: $r28=0x2a5ac0a983332ec3, $r7=0x2297ae499a473c6d +after: $r28=000000000000000000, $r7=0x2297ae499a473c6d +srai.d $r8, $r17, 31 :: +before: $r8=0xa27cf36651750e09, $r17=0x1984e046b042d0cf +after: $r8=0x000000003309c08d, $r17=0x1984e046b042d0cf +srai.d $r25, $r16, 37 :: +before: $r25=0x7df3822fb20b8ded, $r16=0xb4e464563029fac8 +after: $r25=0xfffffffffda72322, $r16=0xb4e464563029fac8 +srai.d $r14, $r5, 57 :: +before: $r14=0xe8c1939c13a2e6ca, $r5=0x6a22077c63497a9a +after: $r14=0x0000000000000035, $r5=0x6a22077c63497a9a +srai.d $r25, $r15, 10 :: +before: $r25=0xf2df68e25cccf72e, $r15=0xe0af648201f919fc +after: $r25=0xfff82bd920807e46, $r15=0xe0af648201f919fc +srai.d $r6, $r15, 49 :: +before: $r6=0xa24591b35142aa9c, $r15=0x12b20ac67de77b8d +after: $r6=0x0000000000000959, $r15=0x12b20ac67de77b8d +rotri.w $r18, $r6, 20 :: +before: $r18=0xf0c65b137926ba00, $r6=0x95e0f5f057a212c5 +after: $r18=0x00000000212c557a, $r6=0x95e0f5f057a212c5 +rotri.w $r9, $r16, 27 :: +before: $r9=0xe36356471d2a7e18, $r16=0xb8af3071021bd869 +after: $r9=0x00000000437b0d20, $r16=0xb8af3071021bd869 +rotri.w $r5, $r31, 1 :: +before: $r5=0x5992fc9cfce2ebe9, $r31=0x6c427c821603d01a +after: $r5=0x000000000b01e80d, $r31=0x6c427c821603d01a +rotri.w $r27, $r13, 23 :: +before: $r27=0x0239c57dca2ab060, $r13=0xed54e28825b25471 +after: $r27=0x0000000064a8e24b, $r13=0xed54e28825b25471 +rotri.w $r18, $r18, 7 :: +before: $r18=0xb84df2305a710936, $r18=0x8aae5248c6d4973c +after: $r18=0x00000000798da92e, $r18=0x00000000798da92e +rotri.w $r4, $r27, 29 :: +before: $r4=0x730e1701570ac9fc, $r27=0xd55b9d54232536e7 +after: $r4=0x000000001929b739, $r27=0xd55b9d54232536e7 +rotri.w $r19, $r18, 0 :: +before: $r19=0x36dbceffa501d8dc, $r18=0x8415238fa1dd314f +after: $r19=0xffffffffa1dd314f, $r18=0x8415238fa1dd314f +rotri.w $r13, $r24, 21 :: +before: $r13=0x00c1ac428ddf5193, $r24=0x3b588028fcfbb0a8 +after: $r13=0xffffffffdd8547e7, $r24=0x3b588028fcfbb0a8 +rotri.w $r14, $r25, 29 :: +before: $r14=0x733414543ca8145e, $r25=0xded24831de35be08 +after: $r14=0xfffffffff1adf046, $r25=0xded24831de35be08 +rotri.w $r27, $r5, 8 :: +before: $r27=0x60afaebb36d22ba0, $r5=0x0fd31a16f03582b5 +after: $r27=0xffffffffb5f03582, $r5=0x0fd31a16f03582b5 +rotri.d $r20, $r7, 53 :: +before: $r20=0xe112a6d47c0444c1, $r7=0xbd9bbb91bdc381c5 +after: $r20=0xdddc8dee1c0e2dec, $r7=0xbd9bbb91bdc381c5 +rotri.d $r27, $r16, 62 :: +before: $r27=0xf254a827c1ef7351, $r16=0x3de084650f757ceb +after: $r27=0xf78211943dd5f3ac, $r16=0x3de084650f757ceb +rotri.d $r30, $r17, 10 :: +before: $r30=0x31c36a8c83999eb2, $r17=0x107098a9863e85d5 +after: $r30=0x75441c262a618fa1, $r17=0x107098a9863e85d5 +rotri.d $r29, $r8, 46 :: +before: $r29=0xf2e7a25c121af3c3, $r8=0xb177c110c3dd3225 +after: $r29=0x04430f74c896c5df, $r8=0xb177c110c3dd3225 +rotri.d $r4, $r26, 45 :: +before: $r4=0xdd94ff60f2e1abff, $r26=0xb76d3e4a0af02e4d +after: $r4=0xf2505781726dbb69, $r26=0xb76d3e4a0af02e4d +rotri.d $r10, $r9, 42 :: +before: $r10=0x6064d48d901beca7, $r9=0xea20b33360134ab2 +after: $r10=0xccd804d2acba882c, $r9=0xea20b33360134ab2 +rotri.d $r4, $r26, 27 :: +before: $r4=0x27f1e63c8f7f71cf, $r26=0xf4c5c8a69f37a1bd +after: $r4=0xe6f437be98b914d3, $r26=0xf4c5c8a69f37a1bd +rotri.d $r9, $r16, 20 :: +before: $r9=0x7d4cb07a3ab72944, $r16=0xd5ee210421c6080e +after: $r9=0x6080ed5ee210421c, $r16=0xd5ee210421c6080e +rotri.d $r24, $r26, 4 :: +before: $r24=0x1ce66a79f3e45e6f, $r26=0x6e1767144ffa6e2d +after: $r24=0xd6e1767144ffa6e2, $r26=0x6e1767144ffa6e2d +rotri.d $r4, $r18, 46 :: +before: $r4=0x04173f8102b03399, $r18=0xde7066568917d899 +after: $r4=0x995a245f626779c1, $r18=0xde7066568917d899 +ext.w.h $r17, $r14 :: +before: $r17=0x58af862c6fc4208d, $r14=0x6235b0cfe4eed6ed +after: $r17=0xffffffffffffd6ed, $r14=0x6235b0cfe4eed6ed +ext.w.h $r31, $r20 :: +before: $r31=0x425af3dcd83fa9fd, $r20=0x6e59403101a538f1 +after: $r31=0x00000000000038f1, $r20=0x6e59403101a538f1 +ext.w.h $r18, $r27 :: +before: $r18=0xcb140226bf788367, $r27=0x58a5430ee4e1616e +after: $r18=0x000000000000616e, $r27=0x58a5430ee4e1616e +ext.w.h $r15, $r10 :: +before: $r15=0xd3debaf05f7d909f, $r10=0x6f7083340247fb12 +after: $r15=0xfffffffffffffb12, $r10=0x6f7083340247fb12 +ext.w.h $r12, $r15 :: +before: $r12=0x5dc6f7191af80bcf, $r15=0xb1f1c8f4b11c03d9 +after: $r12=0x00000000000003d9, $r15=0xb1f1c8f4b11c03d9 +ext.w.h $r7, $r15 :: +before: $r7=0x5ffe304a5c9dc9d2, $r15=0x102fb4fa33193103 +after: $r7=0x0000000000003103, $r15=0x102fb4fa33193103 +ext.w.h $r16, $r16 :: +before: $r16=0x533616e37505799f, $r16=0xf988c7255086f4f5 +after: $r16=0xfffffffffffff4f5, $r16=0xfffffffffffff4f5 +ext.w.h $r13, $r25 :: +before: $r13=0x805a406557ed3fac, $r25=0xdc6ce0f2993b219b +after: $r13=0x000000000000219b, $r25=0xdc6ce0f2993b219b +ext.w.h $r19, $r20 :: +before: $r19=0xcc49c20125c4755d, $r20=0xde7b765222a9703a +after: $r19=0x000000000000703a, $r20=0xde7b765222a9703a +ext.w.h $r18, $r7 :: +before: $r18=0xe0dd9155cbe168c6, $r7=0xc1063421eae07663 +after: $r18=0x0000000000007663, $r7=0xc1063421eae07663 +ext.w.b $r16, $r23 :: +before: $r16=0x21666e814555aa02, $r23=0x926b8d68b5c40592 +after: $r16=0xffffffffffffff92, $r23=0x926b8d68b5c40592 +ext.w.b $r8, $r20 :: +before: $r8=0xf68ae0a0ac497ded, $r20=0x0bfb5d489716d0c5 +after: $r8=0xffffffffffffffc5, $r20=0x0bfb5d489716d0c5 +ext.w.b $r24, $r15 :: +before: $r24=0xbc84e54c82fd6e51, $r15=0x7d814b11e5eb07f6 +after: $r24=0xfffffffffffffff6, $r15=0x7d814b11e5eb07f6 +ext.w.b $r31, $r17 :: +before: $r31=0x14e575a8dda1f0d3, $r17=0x6a111e663a52244c +after: $r31=0x000000000000004c, $r17=0x6a111e663a52244c +ext.w.b $r16, $r8 :: +before: $r16=0x911acc218fcf640b, $r8=0xac1405ad05b23e43 +after: $r16=0x0000000000000043, $r8=0xac1405ad05b23e43 +ext.w.b $r28, $r8 :: +before: $r28=0x77fb13eaa8995607, $r8=0x05c97a81f12da7d3 +after: $r28=0xffffffffffffffd3, $r8=0x05c97a81f12da7d3 +ext.w.b $r9, $r23 :: +before: $r9=0xb88cfdb98683e15e, $r23=0x74893b34973e16cb +after: $r9=0xffffffffffffffcb, $r23=0x74893b34973e16cb +ext.w.b $r31, $r4 :: +before: $r31=0xc7168cb4f7d079e4, $r4=0xf4fc215bc2c5273e +after: $r31=0x000000000000003e, $r4=0xf4fc215bc2c5273e +ext.w.b $r4, $r18 :: +before: $r4=0x0e2e5dca4727b373, $r18=0xa1b97136f32e452b +after: $r4=0x000000000000002b, $r18=0xa1b97136f32e452b +ext.w.b $r8, $r29 :: +before: $r8=0x625eb5236f483daa, $r29=0x3ceca34ee347e7c8 +after: $r8=0xffffffffffffffc8, $r29=0x3ceca34ee347e7c8 +clo.w $r4, $r13 :: +before: $r4=0x0bcca747f77aca28, $r13=0x8df71972c1a17096 +after: $r4=0x0000000000000002, $r13=0x8df71972c1a17096 +clo.w $r27, $r5 :: +before: $r27=0x98a9e6d99d8e84cb, $r5=0xdc59d3c8fc1540e4 +after: $r27=0x0000000000000006, $r5=0xdc59d3c8fc1540e4 +clo.w $r9, $r14 :: +before: $r9=0xe8e78b162c95ed66, $r14=0xdfad6854bbf442e6 +after: $r9=0x0000000000000001, $r14=0xdfad6854bbf442e6 +clo.w $r13, $r26 :: +before: $r13=0xa3db2cf80f9112cd, $r26=0x7676463dd6f13f80 +after: $r13=0x0000000000000002, $r26=0x7676463dd6f13f80 +clo.w $r7, $r16 :: +before: $r7=0xb5213ab31b574031, $r16=0x478c19ebdeaa74c0 +after: $r7=0x0000000000000002, $r16=0x478c19ebdeaa74c0 +clo.w $r13, $r12 :: +before: $r13=0xd68d9661284fb9d7, $r12=0x702bf24fddd8bfe0 +after: $r13=0x0000000000000002, $r12=0x702bf24fddd8bfe0 +clo.w $r18, $r20 :: +before: $r18=0x510cd4002aff4c6c, $r20=0x4fc898e8b83669ee +after: $r18=0x0000000000000001, $r20=0x4fc898e8b83669ee +clo.w $r5, $r9 :: +before: $r5=0x53c0de96f709208d, $r9=0x0e56d87b898438b5 +after: $r5=0x0000000000000001, $r9=0x0e56d87b898438b5 +clo.w $r20, $r5 :: +before: $r20=0x96187854fcce4fd1, $r5=0xf1248bea6ed8be30 +after: $r20=000000000000000000, $r5=0xf1248bea6ed8be30 +clo.w $r20, $r31 :: +before: $r20=0xb1abb4795d411683, $r31=0x01025f914a9225e6 +after: $r20=000000000000000000, $r31=0x01025f914a9225e6 +clz.w $r19, $r8 :: +before: $r19=0x374348642747a8dc, $r8=0xd8ec1d547d95ada5 +after: $r19=0x0000000000000001, $r8=0xd8ec1d547d95ada5 +clz.w $r26, $r4 :: +before: $r26=0x741ab4d14b9ee1f8, $r4=0x99e2ef840817cfff +after: $r26=0x0000000000000004, $r4=0x99e2ef840817cfff +clz.w $r17, $r4 :: +before: $r17=0x45c9ce7217f501b3, $r4=0xa387a194cd03bcf1 +after: $r17=000000000000000000, $r4=0xa387a194cd03bcf1 +clz.w $r13, $r26 :: +before: $r13=0x69707656f354d758, $r26=0xd4a8f8ab02b876b0 +after: $r13=0x0000000000000006, $r26=0xd4a8f8ab02b876b0 +clz.w $r25, $r13 :: +before: $r25=0x103ce6ee41e094c3, $r13=0xd7a85bf4006e655a +after: $r25=0x0000000000000009, $r13=0xd7a85bf4006e655a +clz.w $r5, $r13 :: +before: $r5=0x3910578929e7cd4a, $r13=0x93c87b02b7b1b603 +after: $r5=000000000000000000, $r13=0x93c87b02b7b1b603 +clz.w $r18, $r29 :: +before: $r18=0x10639f8979feefe5, $r29=0x9d8b4b8f8493f844 +after: $r18=000000000000000000, $r29=0x9d8b4b8f8493f844 +clz.w $r25, $r16 :: +before: $r25=0x7b35b3e995b3b44d, $r16=0xad953d0ae0b3e870 +after: $r25=000000000000000000, $r16=0xad953d0ae0b3e870 +clz.w $r6, $r25 :: +before: $r6=0xda6cbd19f10ef86f, $r25=0x1d6665db1162cfb4 +after: $r6=0x0000000000000003, $r25=0x1d6665db1162cfb4 +clz.w $r5, $r12 :: +before: $r5=0x8a6f4d6ec8d7c00d, $r12=0x19b40cb8dd8d1679 +after: $r5=000000000000000000, $r12=0x19b40cb8dd8d1679 +cto.w $r7, $r15 :: +before: $r7=0x7285e9c364562d11, $r15=0x963655c7f58de520 +after: $r7=000000000000000000, $r15=0x963655c7f58de520 +cto.w $r4, $r15 :: +before: $r4=0x105dceebc6d7e641, $r15=0xfc01c17baaca9c46 +after: $r4=000000000000000000, $r15=0xfc01c17baaca9c46 +cto.w $r31, $r28 :: +before: $r31=0xdeff9742b93f0591, $r28=0x2cf98074b0151f33 +after: $r31=0x0000000000000002, $r28=0x2cf98074b0151f33 +cto.w $r13, $r8 :: +before: $r13=0xeee665743cd218ff, $r8=0xbdd700b2535aa3b7 +after: $r13=0x0000000000000003, $r8=0xbdd700b2535aa3b7 +cto.w $r23, $r13 :: +before: $r23=0x1cc22cfd7c0c869c, $r13=0x5b848b64decbee8f +after: $r23=0x0000000000000004, $r13=0x5b848b64decbee8f +cto.w $r12, $r18 :: +before: $r12=0x5c32b3db803e5988, $r18=0x2d5d1ebf93b79dd0 +after: $r12=000000000000000000, $r18=0x2d5d1ebf93b79dd0 +cto.w $r17, $r9 :: +before: $r17=0xc11d806786501f0e, $r9=0xd175fe2ca41bda38 +after: $r17=000000000000000000, $r9=0xd175fe2ca41bda38 +cto.w $r24, $r16 :: +before: $r24=0x504f9b43af62e2ad, $r16=0xfce545d98e2361da +after: $r24=000000000000000000, $r16=0xfce545d98e2361da +cto.w $r24, $r8 :: +before: $r24=0xc13ac5668538f5a4, $r8=0x3096912e575d64db +after: $r24=0x0000000000000002, $r8=0x3096912e575d64db +cto.w $r27, $r17 :: +before: $r27=0xd27f68629dd8d4fb, $r17=0x15ac43632e175a8b +after: $r27=0x0000000000000002, $r17=0x15ac43632e175a8b +ctz.w $r8, $r12 :: +before: $r8=0xfc9bd3736a3c08bd, $r12=0xaebba33c2e268daa +after: $r8=0x0000000000000001, $r12=0xaebba33c2e268daa +ctz.w $r5, $r27 :: +before: $r5=0x5dc8af7bac7db01a, $r27=0xabce2f0e113597aa +after: $r5=0x0000000000000001, $r27=0xabce2f0e113597aa +ctz.w $r18, $r6 :: +before: $r18=0xe4ac5b59d8442dfe, $r6=0x935d1b694e96bd04 +after: $r18=0x0000000000000002, $r6=0x935d1b694e96bd04 +ctz.w $r9, $r15 :: +before: $r9=0x9b760f465efbb52e, $r15=0x834c9974dba65d99 +after: $r9=000000000000000000, $r15=0x834c9974dba65d99 +ctz.w $r13, $r7 :: +before: $r13=0x95b5748f5f8bfb38, $r7=0x75dd7a9890cdf2d9 +after: $r13=000000000000000000, $r7=0x75dd7a9890cdf2d9 +ctz.w $r29, $r17 :: +before: $r29=0xa25119fd892d1b20, $r17=0x38c12e795dc52acf +after: $r29=000000000000000000, $r17=0x38c12e795dc52acf +ctz.w $r15, $r12 :: +before: $r15=0x95c2ce0f0446807c, $r12=0x623a5915ac8164b2 +after: $r15=0x0000000000000001, $r12=0x623a5915ac8164b2 +ctz.w $r6, $r17 :: +before: $r6=0xd9034892a300dca8, $r17=0x5911fea4e6ce1df3 +after: $r6=000000000000000000, $r17=0x5911fea4e6ce1df3 +ctz.w $r10, $r25 :: +before: $r10=0xda1e0d0eb34884ab, $r25=0x8d70d49a10ba8968 +after: $r10=0x0000000000000003, $r25=0x8d70d49a10ba8968 +ctz.w $r14, $r13 :: +before: $r14=0x207d275c076e5247, $r13=0xd243debc9b557922 +after: $r14=0x0000000000000001, $r13=0xd243debc9b557922 +clo.d $r7, $r16 :: +before: $r7=0x9432ccd773e86812, $r16=0x9f921ea959c97c2b +after: $r7=0x0000000000000001, $r16=0x9f921ea959c97c2b +clo.d $r7, $r12 :: +before: $r7=0xaf19ef0b422b09bf, $r12=0x8773ec5c72444fe2 +after: $r7=0x0000000000000001, $r12=0x8773ec5c72444fe2 +clo.d $r5, $r10 :: +before: $r5=0xa2912bc0ca36fa58, $r10=0x2c93a7506a8979b7 +after: $r5=000000000000000000, $r10=0x2c93a7506a8979b7 +clo.d $r7, $r28 :: +before: $r7=0x69dd3f71121c7380, $r28=0x1784b7c2c7558b4a +after: $r7=000000000000000000, $r28=0x1784b7c2c7558b4a +clo.d $r15, $r9 :: +before: $r15=0x95b40b42f113cecc, $r9=0xf0cdb7b9c17bb9e1 +after: $r15=0x0000000000000004, $r9=0xf0cdb7b9c17bb9e1 +clo.d $r9, $r27 :: +before: $r9=0x1961ee1499945d08, $r27=0x23c7a2252c1cbc78 +after: $r9=000000000000000000, $r27=0x23c7a2252c1cbc78 +clo.d $r30, $r19 :: +before: $r30=0xda0aa8b04f719a51, $r19=0x8f93c7a1b3cc9f12 +after: $r30=0x0000000000000001, $r19=0x8f93c7a1b3cc9f12 +clo.d $r26, $r20 :: +before: $r26=0xdd4f62bfe1237a28, $r20=0xd61c7bfe05165d04 +after: $r26=0x0000000000000002, $r20=0xd61c7bfe05165d04 +clo.d $r26, $r6 :: +before: $r26=0x44a1378e22d6ec81, $r6=0x1b21543ee9abd103 +after: $r26=000000000000000000, $r6=0x1b21543ee9abd103 +clo.d $r24, $r16 :: +before: $r24=0x51efcf6ef8eb9917, $r16=0x602cbdf020ee6da8 +after: $r24=000000000000000000, $r16=0x602cbdf020ee6da8 +clz.d $r27, $r7 :: +before: $r27=0x91df318f7b476077, $r7=0x6ca0b9cf9bb84c4a +after: $r27=0x0000000000000001, $r7=0x6ca0b9cf9bb84c4a +clz.d $r19, $r30 :: +before: $r19=0x435d7fb412d9c12c, $r30=0xc926e58bdb46104e +after: $r19=000000000000000000, $r30=0xc926e58bdb46104e +clz.d $r12, $r30 :: +before: $r12=0x906b06441b2ef62b, $r30=0x04b9b91966077ef0 +after: $r12=0x0000000000000005, $r30=0x04b9b91966077ef0 +clz.d $r28, $r6 :: +before: $r28=0x28bb3e3324f33e14, $r6=0x7628cd8752be6223 +after: $r28=0x0000000000000001, $r6=0x7628cd8752be6223 +clz.d $r14, $r15 :: +before: $r14=0xb7a5ae04bf2e60c0, $r15=0x41a328a79afda305 +after: $r14=0x0000000000000001, $r15=0x41a328a79afda305 +clz.d $r4, $r23 :: +before: $r4=0x5fd8327a265b1a3b, $r23=0x66b92d8b5b842d4a +after: $r4=0x0000000000000001, $r23=0x66b92d8b5b842d4a +clz.d $r18, $r29 :: +before: $r18=0x73df6808e38c72ad, $r29=0x6b91b11261dd26b6 +after: $r18=0x0000000000000001, $r29=0x6b91b11261dd26b6 +clz.d $r13, $r8 :: +before: $r13=0xd8d2dbd71d1783ad, $r8=0xdc50b7586ccab6a1 +after: $r13=000000000000000000, $r8=0xdc50b7586ccab6a1 +clz.d $r17, $r10 :: +before: $r17=0xee6f842bb7686b8d, $r10=0xdf52e003cd95f02f +after: $r17=000000000000000000, $r10=0xdf52e003cd95f02f +clz.d $r13, $r8 :: +before: $r13=0x91e717aef96cc046, $r8=0x5dd0743ed560ba78 +after: $r13=0x0000000000000001, $r8=0x5dd0743ed560ba78 +cto.d $r31, $r5 :: +before: $r31=0xf361d5d1fb232769, $r5=0x1530b67240d804cf +after: $r31=0x0000000000000004, $r5=0x1530b67240d804cf +cto.d $r5, $r26 :: +before: $r5=0xbedb393d17f69d40, $r26=0xcef56269ef7aecda +after: $r5=000000000000000000, $r26=0xcef56269ef7aecda +cto.d $r5, $r31 :: +before: $r5=0xadd75db878cdbf84, $r31=0x8e08acc65c97f0b2 +after: $r5=000000000000000000, $r31=0x8e08acc65c97f0b2 +cto.d $r31, $r31 :: +before: $r31=0x6a8a89827e4929f9, $r31=0x7df0f59d97924bb3 +after: $r31=0x0000000000000002, $r31=0x0000000000000002 +cto.d $r14, $r30 :: +before: $r14=0xefb0874ef3600b6d, $r30=0x97a4b45ab971a548 +after: $r14=000000000000000000, $r30=0x97a4b45ab971a548 +cto.d $r5, $r17 :: +before: $r5=0x144271fb49c8d2d8, $r17=0x787e6dbb4fec4d21 +after: $r5=0x0000000000000001, $r17=0x787e6dbb4fec4d21 +cto.d $r28, $r20 :: +before: $r28=0xd6d0953d2a12c998, $r20=0xafd578caad0dfa09 +after: $r28=0x0000000000000001, $r20=0xafd578caad0dfa09 +cto.d $r16, $r18 :: +before: $r16=0x0de650be54a7990c, $r18=0x3ea8f45e10441829 +after: $r16=0x0000000000000001, $r18=0x3ea8f45e10441829 +cto.d $r15, $r16 :: +before: $r15=0x0bbd328743f49a86, $r16=0x5cafc638b6b509be +after: $r15=000000000000000000, $r16=0x5cafc638b6b509be +cto.d $r6, $r20 :: +before: $r6=0x598ee27859cf8d0e, $r20=0x4bce530e537ad762 +after: $r6=000000000000000000, $r20=0x4bce530e537ad762 +ctz.d $r14, $r28 :: +before: $r14=0xf2e4d886a8fd3fe3, $r28=0x0dafbabdfefac692 +after: $r14=0x0000000000000001, $r28=0x0dafbabdfefac692 +ctz.d $r6, $r27 :: +before: $r6=0xe005a6a20d44fbca, $r27=0xe000ac4f4cfb2ce2 +after: $r6=0x0000000000000001, $r27=0xe000ac4f4cfb2ce2 +ctz.d $r15, $r26 :: +before: $r15=0x871c2ccd50ec0784, $r26=0xa82b0d96dd72f11c +after: $r15=0x0000000000000002, $r26=0xa82b0d96dd72f11c +ctz.d $r17, $r20 :: +before: $r17=0xebe7d9f4ec5055d5, $r20=0x65575957936d1d6e +after: $r17=0x0000000000000001, $r20=0x65575957936d1d6e +ctz.d $r19, $r8 :: +before: $r19=0x394effa243e5f14c, $r8=0xf6852349a7b00561 +after: $r19=000000000000000000, $r8=0xf6852349a7b00561 +ctz.d $r5, $r9 :: +before: $r5=0x3c67392fc408e9db, $r9=0xeff4bf8e886d7cc3 +after: $r5=000000000000000000, $r9=0xeff4bf8e886d7cc3 +ctz.d $r31, $r15 :: +before: $r31=0xbf5435775bd0435b, $r15=0x19760246c8d1d680 +after: $r31=0x0000000000000007, $r15=0x19760246c8d1d680 +ctz.d $r9, $r5 :: +before: $r9=0x0ccde230362ce06a, $r5=0x7590c6e73077c2bc +after: $r9=0x0000000000000002, $r5=0x7590c6e73077c2bc +ctz.d $r28, $r25 :: +before: $r28=0x2518777b06d608a0, $r25=0xb87647dad481ba32 +after: $r28=0x0000000000000001, $r25=0xb87647dad481ba32 +ctz.d $r23, $r19 :: +before: $r23=0xbe232a9fe2090e75, $r19=0x2dceda5cdc990d2e +after: $r23=0x0000000000000001, $r19=0x2dceda5cdc990d2e +revb.2h $r29, $r30 :: +before: $r29=0x75397084990a0745, $r30=0x0d4c83f5966c1c17 +after: $r29=0x000000006c96171c, $r30=0x0d4c83f5966c1c17 +revb.2h $r17, $r23 :: +before: $r17=0xecfbee2a69bbe344, $r23=0x5a42dc5dc5705f68 +after: $r17=0x0000000070c5685f, $r23=0x5a42dc5dc5705f68 +revb.2h $r6, $r14 :: +before: $r6=0xbfeffdbd68845522, $r14=0x3490af5b50fd56bf +after: $r6=0xfffffffffd50bf56, $r14=0x3490af5b50fd56bf +revb.2h $r13, $r6 :: +before: $r13=0x58e1821d319a1598, $r6=0x4c6711d021a72be6 +after: $r13=0xffffffffa721e62b, $r6=0x4c6711d021a72be6 +revb.2h $r18, $r8 :: +before: $r18=0x6e14994d4e16ff86, $r8=0x9fda01513ab5ceb8 +after: $r18=0xffffffffb53ab8ce, $r8=0x9fda01513ab5ceb8 +revb.2h $r7, $r30 :: +before: $r7=0x9979d3a3fcfc9323, $r30=0x504c708535bc136f +after: $r7=0xffffffffbc356f13, $r30=0x504c708535bc136f +revb.2h $r28, $r19 :: +before: $r28=0x9daf4aa3a33eec5f, $r19=0xaa376fc54f4be6f5 +after: $r28=0x000000004b4ff5e6, $r19=0xaa376fc54f4be6f5 +revb.2h $r30, $r8 :: +before: $r30=0x2e0bba43ec83e59e, $r8=0xaee8b8acd436f6da +after: $r30=0x0000000036d4daf6, $r8=0xaee8b8acd436f6da +revb.2h $r14, $r7 :: +before: $r14=0x9634787c9be10863, $r7=0xe9da521d42716c0a +after: $r14=0x0000000071420a6c, $r7=0xe9da521d42716c0a +revb.2h $r23, $r14 :: +before: $r23=0x687b89225667081a, $r14=0x9089e36a4f12f9c6 +after: $r23=0x00000000124fc6f9, $r14=0x9089e36a4f12f9c6 +revb.4h $r4, $r25 :: +before: $r4=0xc42859bd06b669d2, $r25=0x782e4ae6ab812191 +after: $r4=0x2e78e64a81ab9121, $r25=0x782e4ae6ab812191 +revb.4h $r18, $r19 :: +before: $r18=0x45ca4499d789fe5b, $r19=0x6e558c98b95d346d +after: $r18=0x556e988c5db96d34, $r19=0x6e558c98b95d346d +revb.4h $r24, $r10 :: +before: $r24=0x2d04871fd753c43f, $r10=0xbeab033e2b5a979e +after: $r24=0xabbe3e035a2b9e97, $r10=0xbeab033e2b5a979e +revb.4h $r24, $r8 :: +before: $r24=0xbc4deb39fb2ffe2e, $r8=0x5e3e50b8025e77f3 +after: $r24=0x3e5eb8505e02f377, $r8=0x5e3e50b8025e77f3 +revb.4h $r7, $r14 :: +before: $r7=0xf44a6ea6f42e0918, $r14=0x9f617a848e4ad8f2 +after: $r7=0x619f847a4a8ef2d8, $r14=0x9f617a848e4ad8f2 +revb.4h $r13, $r12 :: +before: $r13=0xda815ff8648e92b9, $r12=0xa401e74c4dd88e12 +after: $r13=0x01a44ce7d84d128e, $r12=0xa401e74c4dd88e12 +revb.4h $r31, $r19 :: +before: $r31=0x7964d861d2ecb8d5, $r19=0xe402e87f73fb4c68 +after: $r31=0x02e47fe8fb73684c, $r19=0xe402e87f73fb4c68 +revb.4h $r29, $r25 :: +before: $r29=0x6beff3fa6167cdcc, $r25=0x11e350b71aee0229 +after: $r29=0xe311b750ee1a2902, $r25=0x11e350b71aee0229 +revb.4h $r4, $r8 :: +before: $r4=0x357a56e8ae275376, $r8=0xdf8ebc175f4be7e3 +after: $r4=0x8edf17bc4b5fe3e7, $r8=0xdf8ebc175f4be7e3 +revb.4h $r15, $r27 :: +before: $r15=0xeb11b29acfe397d6, $r27=0x42d231083cd97aa0 +after: $r15=0xd2420831d93ca07a, $r27=0x42d231083cd97aa0 +revb.2w $r27, $r31 :: +before: $r27=0x0978f867dd7f0cb8, $r31=0x19eec2d357cd6a06 +after: $r27=0xd3c2ee19066acd57, $r31=0x19eec2d357cd6a06 +revb.2w $r10, $r10 :: +before: $r10=0x7897a40c4fda96d5, $r10=0xcb849783a18de892 +after: $r10=0x839784cb92e88da1, $r10=0x839784cb92e88da1 +revb.2w $r23, $r14 :: +before: $r23=0x018338c734be53a1, $r14=0x6258664ec1bb96b8 +after: $r23=0x4e665862b896bbc1, $r14=0x6258664ec1bb96b8 +revb.2w $r12, $r19 :: +before: $r12=0x7417ec4fef3451cc, $r19=0x216ad32ee149542b +after: $r12=0x2ed36a212b5449e1, $r19=0x216ad32ee149542b +revb.2w $r31, $r30 :: +before: $r31=0x8132835b9905b650, $r30=0x6fac007fbefdecf2 +after: $r31=0x7f00ac6ff2ecfdbe, $r30=0x6fac007fbefdecf2 +revb.2w $r25, $r10 :: +before: $r25=0x7336ebe375c83bed, $r10=0x643f76ac3010a6bb +after: $r25=0xac763f64bba61030, $r10=0x643f76ac3010a6bb +revb.2w $r31, $r29 :: +before: $r31=0x5d99f79f18e805b8, $r29=0xe65e70ca4cf299fa +after: $r31=0xca705ee6fa99f24c, $r29=0xe65e70ca4cf299fa +revb.2w $r30, $r19 :: +before: $r30=0xec10dd6d7249c5fa, $r19=0x3f6bb22d66caf299 +after: $r30=0x2db26b3f99f2ca66, $r19=0x3f6bb22d66caf299 +revb.2w $r6, $r30 :: +before: $r6=0x2c394783817c0870, $r30=0xd823cff07efd78db +after: $r6=0xf0cf23d8db78fd7e, $r30=0xd823cff07efd78db +revb.2w $r4, $r15 :: +before: $r4=0xc5acf61f075cd4e4, $r15=0xc154dd7479b90c6c +after: $r4=0x74dd54c16c0cb979, $r15=0xc154dd7479b90c6c +revb.d $r6, $r23 :: +before: $r6=0xe6e05a0dafda37ce, $r23=0x2ac7d047f197f6fb +after: $r6=0xfbf697f147d0c72a, $r23=0x2ac7d047f197f6fb +revb.d $r19, $r4 :: +before: $r19=0xc07a757bea6011ff, $r4=0xcef6cef3e0f941ff +after: $r19=0xff41f9e0f3cef6ce, $r4=0xcef6cef3e0f941ff +revb.d $r6, $r15 :: +before: $r6=0x711bb31e18fcb2f3, $r15=0x522068042cf5be1a +after: $r6=0x1abef52c04682052, $r15=0x522068042cf5be1a +revb.d $r9, $r7 :: +before: $r9=0xf9654c655c67392e, $r7=0xa1b065742110e3f4 +after: $r9=0xf4e310217465b0a1, $r7=0xa1b065742110e3f4 +revb.d $r29, $r4 :: +before: $r29=0x70c0dcad23609060, $r4=0x5d04b7b2ece6f6bb +after: $r29=0xbbf6e6ecb2b7045d, $r4=0x5d04b7b2ece6f6bb +revb.d $r15, $r4 :: +before: $r15=0x809930516f3136eb, $r4=0xda33327a8d42ef55 +after: $r15=0x55ef428d7a3233da, $r4=0xda33327a8d42ef55 +revb.d $r10, $r4 :: +before: $r10=0x1a7ee04b354f6af5, $r4=0xcda6c6943e46fed7 +after: $r10=0xd7fe463e94c6a6cd, $r4=0xcda6c6943e46fed7 +revb.d $r20, $r4 :: +before: $r20=0x315f95452d748459, $r4=0xa001e934745758e0 +after: $r20=0xe058577434e901a0, $r4=0xa001e934745758e0 +revb.d $r6, $r8 :: +before: $r6=0xabbd06000374627a, $r8=0x85441006689de89b +after: $r6=0x9be89d6806104485, $r8=0x85441006689de89b +revb.d $r27, $r24 :: +before: $r27=0x2d404e69f54afa48, $r24=0x46f47b822772f3cd +after: $r27=0xcdf37227827bf446, $r24=0x46f47b822772f3cd +revh.2w $r6, $r15 :: +before: $r6=0x5b764c7bfb1999eb, $r15=0x86603fc3f96843ed +after: $r6=0x3fc3866043edf968, $r15=0x86603fc3f96843ed +revh.2w $r19, $r10 :: +before: $r19=0xf39f8e6b43dd63ce, $r10=0x141d294d06276941 +after: $r19=0x294d141d69410627, $r10=0x141d294d06276941 +revh.2w $r5, $r20 :: +before: $r5=0x3ff54e5c35d83e69, $r20=0xd677d6a21384278a +after: $r5=0xd6a2d677278a1384, $r20=0xd677d6a21384278a +revh.2w $r4, $r31 :: +before: $r4=0xce463b02a2f840cc, $r31=0x6f87c9636f9cfca6 +after: $r4=0xc9636f87fca66f9c, $r31=0x6f87c9636f9cfca6 +revh.2w $r19, $r26 :: +before: $r19=0x34abc96ddde64e27, $r26=0x723ec7ce92720502 +after: $r19=0xc7ce723e05029272, $r26=0x723ec7ce92720502 +revh.2w $r8, $r18 :: +before: $r8=0x1454a1ee8739c235, $r18=0xd890efa373a6dfb0 +after: $r8=0xefa3d890dfb073a6, $r18=0xd890efa373a6dfb0 +revh.2w $r12, $r31 :: +before: $r12=0xf0c8b856751cae70, $r31=0xb675dff2568e6ebf +after: $r12=0xdff2b6756ebf568e, $r31=0xb675dff2568e6ebf +revh.2w $r24, $r9 :: +before: $r24=0xb36984e3a7a3eaea, $r9=0xa169cfa9f35f6a8a +after: $r24=0xcfa9a1696a8af35f, $r9=0xa169cfa9f35f6a8a +revh.2w $r25, $r27 :: +before: $r25=0x640b3e6b41180473, $r27=0x9bc307f0a2ef368f +after: $r25=0x07f09bc3368fa2ef, $r27=0x9bc307f0a2ef368f +revh.2w $r7, $r9 :: +before: $r7=0x897e1406a0eb2dc9, $r9=0x1921bcf657fecdcc +after: $r7=0xbcf61921cdcc57fe, $r9=0x1921bcf657fecdcc +revh.d $r14, $r25 :: +before: $r14=0xec3573411ea025e5, $r25=0x6976d4371b08f1ab +after: $r14=0xf1ab1b08d4376976, $r25=0x6976d4371b08f1ab +revh.d $r24, $r31 :: +before: $r24=0x9ef9e5cb1375d42a, $r31=0x9ce130c8a579e11d +after: $r24=0xe11da57930c89ce1, $r31=0x9ce130c8a579e11d +revh.d $r9, $r28 :: +before: $r9=0x3c8cd0055a5e7031, $r28=0xf05f9381753ded16 +after: $r9=0xed16753d9381f05f, $r28=0xf05f9381753ded16 +revh.d $r24, $r26 :: +before: $r24=0x6a4e5797f19041f6, $r26=0xd26a5ae65e21041c +after: $r24=0x041c5e215ae6d26a, $r26=0xd26a5ae65e21041c +revh.d $r14, $r24 :: +before: $r14=0xe2cb9a83aee22d97, $r24=0x6405d71e0bb63321 +after: $r14=0x33210bb6d71e6405, $r24=0x6405d71e0bb63321 +revh.d $r19, $r23 :: +before: $r19=0x91cdf3bcd9afe76d, $r23=0x171953826107396a +after: $r19=0x396a610753821719, $r23=0x171953826107396a +revh.d $r23, $r14 :: +before: $r23=0x93ed49255d084e12, $r14=0x374bd76990198b43 +after: $r23=0x8b439019d769374b, $r14=0x374bd76990198b43 +revh.d $r31, $r12 :: +before: $r31=0x08e54a908f04882b, $r12=0xf7e8756491b9d346 +after: $r31=0xd34691b97564f7e8, $r12=0xf7e8756491b9d346 +revh.d $r31, $r20 :: +before: $r31=0xbb7cd34502fdf01f, $r20=0x906b7289a6957d3f +after: $r31=0x7d3fa6957289906b, $r20=0x906b7289a6957d3f +revh.d $r27, $r30 :: +before: $r27=0xacbca1aacdd9dd3f, $r30=0x3072d9c69004d4b5 +after: $r27=0xd4b59004d9c63072, $r30=0x3072d9c69004d4b5 +bitrev.4b $r23, $r19 :: +before: $r23=0xb422f2854b491d92, $r19=0x7649084cec69098a +after: $r23=0x0000000037969051, $r19=0x7649084cec69098a +bitrev.4b $r27, $r16 :: +before: $r27=0xd14736328d74b448, $r16=0x1abee3a271c71db9 +after: $r27=0xffffffff8ee3b89d, $r16=0x1abee3a271c71db9 +bitrev.4b $r15, $r23 :: +before: $r15=0xf17c0f0ccfbb2c38, $r23=0x490107ff4155bd17 +after: $r15=0xffffffff82aabde8, $r23=0x490107ff4155bd17 +bitrev.4b $r5, $r18 :: +before: $r5=0x8408d6a30523619d, $r18=0x625d5aedf0add9fb +after: $r5=0x000000000fb59bdf, $r18=0x625d5aedf0add9fb +bitrev.4b $r8, $r15 :: +before: $r8=0xc41a2fdb60ba75a6, $r15=0xe2562eab3b333a00 +after: $r8=0xffffffffdccc5c00, $r15=0xe2562eab3b333a00 +bitrev.4b $r17, $r18 :: +before: $r17=0x6a409394f364c02a, $r18=0xea970d90edb343cc +after: $r17=0xffffffffb7cdc233, $r18=0xea970d90edb343cc +bitrev.4b $r25, $r29 :: +before: $r25=0xd8d1c9b8dcff266d, $r29=0xacca47ac7597ca65 +after: $r25=0xffffffffaee953a6, $r29=0xacca47ac7597ca65 +bitrev.4b $r26, $r24 :: +before: $r26=0xe2a0d11df8c5055b, $r24=0xc57559d03e3e216d +after: $r26=0x000000007c7c84b6, $r24=0xc57559d03e3e216d +bitrev.4b $r8, $r27 :: +before: $r8=0xb6a5815170d657f0, $r27=0x9f60901eefa1347a +after: $r8=0xfffffffff7852c5e, $r27=0x9f60901eefa1347a +bitrev.4b $r20, $r16 :: +before: $r20=0x432a2fbf2b073732, $r16=0x604b8d7ecb5e86dc +after: $r20=0xffffffffd37a613b, $r16=0x604b8d7ecb5e86dc +bitrev.8b $r25, $r7 :: +before: $r25=0x22b2e6007f742fd1, $r7=0xe8c23886def1bbc9 +after: $r25=0x17431c617b8fdd93, $r7=0xe8c23886def1bbc9 +bitrev.8b $r28, $r30 :: +before: $r28=0xf985d7779c5ca157, $r30=0x285cbdc0f47395d1 +after: $r28=0x143abd032fcea98b, $r30=0x285cbdc0f47395d1 +bitrev.8b $r29, $r13 :: +before: $r29=0xd9b8364a793bc50c, $r13=0xded35d7c7ba73d29 +after: $r29=0x7bcbba3edee5bc94, $r13=0xded35d7c7ba73d29 +bitrev.8b $r12, $r28 :: +before: $r12=0x18d7769bc1147dc5, $r28=0xfb6cda8c7f12313a +after: $r12=0xdf365b31fe488c5c, $r28=0xfb6cda8c7f12313a +bitrev.8b $r23, $r6 :: +before: $r23=0xeff84dc134b3acbe, $r6=0xee7c4e89e333eda8 +after: $r23=0x773e7291c7ccb715, $r6=0xee7c4e89e333eda8 +bitrev.8b $r24, $r20 :: +before: $r24=0xad65748f0bc46e9f, $r20=0xd0d88137a6284eac +after: $r24=0x0b1b81ec65147235, $r20=0xd0d88137a6284eac +bitrev.8b $r10, $r5 :: +before: $r10=0xe0e1c1e262352e89, $r5=0x9c43ebc4f7c65dc1 +after: $r10=0x39c2d723ef63ba83, $r5=0x9c43ebc4f7c65dc1 +bitrev.8b $r27, $r13 :: +before: $r27=0x444a53aa65d317dc, $r13=0x473eea7ea5691da7 +after: $r27=0xe27c577ea596b8e5, $r13=0x473eea7ea5691da7 +bitrev.8b $r13, $r9 :: +before: $r13=0xfc48d0fdf4c7a6e5, $r9=0x5dcad407df3401a5 +after: $r13=0xba532be0fb2c80a5, $r9=0x5dcad407df3401a5 +bitrev.8b $r12, $r5 :: +before: $r12=0x0ebef32fcbd91e9a, $r5=0xe1eeea527816355e +after: $r12=0x8777574a1e68ac7a, $r5=0xe1eeea527816355e +bitrev.w $r18, $r15 :: +before: $r18=0x02028b0c8691a767, $r15=0x5822df2950c9c2d3 +after: $r18=0xffffffffcb43930a, $r15=0x5822df2950c9c2d3 +bitrev.w $r30, $r27 :: +before: $r30=0x2a2d48209d9f377b, $r27=0xde9d59b836df41fc +after: $r30=0x000000003f82fb6c, $r27=0xde9d59b836df41fc +bitrev.w $r17, $r4 :: +before: $r17=0xe6fb8b07c90464e6, $r4=0x65976cb5c6c6a5b0 +after: $r17=0x000000000da56363, $r4=0x65976cb5c6c6a5b0 +bitrev.w $r9, $r31 :: +before: $r9=0x1b95159ec5c37644, $r31=0x62c549b741c2adad +after: $r9=0xffffffffb5b54382, $r31=0x62c549b741c2adad +bitrev.w $r17, $r14 :: +before: $r17=0x8b414dfa7156f0ce, $r14=0x9642d0186f420e7c +after: $r17=0x000000003e7042f6, $r14=0x9642d0186f420e7c +bitrev.w $r15, $r8 :: +before: $r15=0x2722ecb374b4d5e3, $r8=0xeaf151a286bbc4cf +after: $r15=0xfffffffff323dd61, $r8=0xeaf151a286bbc4cf +bitrev.w $r27, $r19 :: +before: $r27=0x058ec913c63634a5, $r19=0xe723c39df96a4fd2 +after: $r27=0x000000004bf2569f, $r19=0xe723c39df96a4fd2 +bitrev.w $r7, $r26 :: +before: $r7=0xa245e7dd80a324a2, $r26=0x0e7d6c2b2683291e +after: $r7=0x000000007894c164, $r26=0x0e7d6c2b2683291e +bitrev.w $r31, $r6 :: +before: $r31=0x114292ed02ba1255, $r6=0x13cd62afac5ac3d4 +after: $r31=0x000000002bc35a35, $r6=0x13cd62afac5ac3d4 +bitrev.w $r7, $r25 :: +before: $r7=0xbd46d88fc8d2933b, $r25=0x69ce9ccb487dadd1 +after: $r7=0xffffffff8bb5be12, $r25=0x69ce9ccb487dadd1 +bitrev.d $r4, $r29 :: +before: $r4=0xeaacaeb60b227eab, $r29=0x799f36da44887e2c +after: $r4=0x347e11225b6cf99e, $r29=0x799f36da44887e2c +bitrev.d $r29, $r6 :: +before: $r29=0xcfbb055ab1ebf7fa, $r6=0x2924f63fec744b02 +after: $r29=0x40d22e37fc6f2494, $r6=0x2924f63fec744b02 +bitrev.d $r28, $r31 :: +before: $r28=0xaac74a398d76900d, $r31=0xf6c75e45e33b4cb7 +after: $r28=0xed32dcc7a27ae36f, $r31=0xf6c75e45e33b4cb7 +bitrev.d $r24, $r12 :: +before: $r24=0xfc8bc33fb4a8d023, $r12=0xcccd98e9d53aa26a +after: $r24=0x56455cab9719b333, $r12=0xcccd98e9d53aa26a +bitrev.d $r8, $r7 :: +before: $r8=0x7502cd68289f4c3a, $r7=0x746ddfd3c3a512b1 +after: $r8=0x8d48a5c3cbfbb62e, $r7=0x746ddfd3c3a512b1 +bitrev.d $r6, $r16 :: +before: $r6=0xe8b94bfe615774ae, $r16=0x518770bbee53d619 +after: $r6=0x986bca77dd0ee18a, $r16=0x518770bbee53d619 +bitrev.d $r24, $r4 :: +before: $r24=0x6318c17dbae816c3, $r4=0x9ab684e129b57f07 +after: $r24=0xe0fead9487216d59, $r4=0x9ab684e129b57f07 +bitrev.d $r27, $r23 :: +before: $r27=0x8a22909b005a86b8, $r23=0x69337e8c3b1fc2bb +after: $r27=0xdd43f8dc317ecc96, $r23=0x69337e8c3b1fc2bb +bitrev.d $r20, $r9 :: +before: $r20=0x009f43885d40caf0, $r9=0x193cbf609dbc33d4 +after: $r20=0x2bcc3db906fd3c98, $r9=0x193cbf609dbc33d4 +bitrev.d $r30, $r19 :: +before: $r30=0x30fa02e0fc390ac9, $r19=0x21686c931c6260da +after: $r30=0x5b064638c9361684, $r19=0x21686c931c6260da +bytepick.w $r26, $r15, $r19, 1 :: +before: $r26=0x1b0b980dd3271273, $r15=0x8737ca6c8106ceee, $r19=0x02807e0dcb47d6ef +after: $r26=0x0000000047d6ef81, $r15=0x8737ca6c8106ceee, $r19=0x02807e0dcb47d6ef +bytepick.w $r15, $r17, $r7, 0 :: +before: $r15=0x3d2e3fbcbd032001, $r17=0x5eced8cf3da8b205, $r7=0xb8155b41321e09c0 +after: $r15=0x00000000321e09c0, $r17=0x5eced8cf3da8b205, $r7=0xb8155b41321e09c0 +bytepick.w $r12, $r15, $r17, 3 :: +before: $r12=0x2670c80f12a87520, $r15=0x29ab42125e3ea5c8, $r17=0x32a39ac435460f2f +after: $r12=0x000000002f5e3ea5, $r15=0x29ab42125e3ea5c8, $r17=0x32a39ac435460f2f +bytepick.w $r4, $r20, $r18, 3 :: +before: $r4=0x5a64271926277c04, $r20=0xcbde225cc736e5d5, $r18=0x18abacc874db47e9 +after: $r4=0xffffffffe9c736e5, $r20=0xcbde225cc736e5d5, $r18=0x18abacc874db47e9 +bytepick.w $r8, $r5, $r24, 3 :: +before: $r8=0xdb41606ce3f9df94, $r5=0xc3f6ce370d754a3f, $r24=0x34ad5a423a5c42e3 +after: $r8=0xffffffffe30d754a, $r5=0xc3f6ce370d754a3f, $r24=0x34ad5a423a5c42e3 +bytepick.w $r5, $r30, $r14, 2 :: +before: $r5=0xedb3aad221050d0b, $r30=0x46f5823389f2581a, $r14=0xf766f1e75349809e +after: $r5=0xffffffff809e89f2, $r30=0x46f5823389f2581a, $r14=0xf766f1e75349809e +bytepick.w $r4, $r19, $r18, 0 :: +before: $r4=0xf92ed0231f25c991, $r19=0xba59df0352ed6b3e, $r18=0x58d6fbce4e4325e8 +after: $r4=0x000000004e4325e8, $r19=0xba59df0352ed6b3e, $r18=0x58d6fbce4e4325e8 +bytepick.w $r18, $r28, $r24, 3 :: +before: $r18=0x177dcaf8fcd30180, $r28=0xbdc04b3b8f707462, $r24=0x6102168606deb3ed +after: $r18=0xffffffffed8f7074, $r28=0xbdc04b3b8f707462, $r24=0x6102168606deb3ed +bytepick.w $r13, $r27, $r29, 2 :: +before: $r13=0x383d82c5d717259b, $r27=0x495e30e5e680d7fc, $r29=0x1c17f315ebb3bec3 +after: $r13=0xffffffffbec3e680, $r27=0x495e30e5e680d7fc, $r29=0x1c17f315ebb3bec3 +bytepick.w $r5, $r29, $r4, 1 :: +before: $r5=0x26a0fb212ab80a3a, $r29=0x78b167aecd81f869, $r4=0x6daab499f228fef4 +after: $r5=0x0000000028fef4cd, $r29=0x78b167aecd81f869, $r4=0x6daab499f228fef4 +bytepick.d $r28, $r4, $r28, 7 :: +before: $r28=0x794fa22d52f7e834, $r4=0x2f084db071d3bcce, $r28=0xa0cf51d7020f10c1 +after: $r28=0xc12f084db071d3bc, $r4=0x2f084db071d3bcce, $r28=0xc12f084db071d3bc +bytepick.d $r10, $r18, $r4, 2 :: +before: $r10=0x9fd7a6b378604833, $r18=0x37da15f8a7154cab, $r4=0xaedd64328d27a0a8 +after: $r10=0x64328d27a0a837da, $r18=0x37da15f8a7154cab, $r4=0xaedd64328d27a0a8 +bytepick.d $r7, $r6, $r24, 3 :: +before: $r7=0xdee49920d429d3c2, $r6=0x15e3f61f2f82a2d1, $r24=0xdeba03c7761e4678 +after: $r7=0xc7761e467815e3f6, $r6=0x15e3f61f2f82a2d1, $r24=0xdeba03c7761e4678 +bytepick.d $r19, $r16, $r5, 4 :: +before: $r19=0x53bda4d18e61fc44, $r16=0xc79bd94439006673, $r5=0xa8024ab452a2bd52 +after: $r19=0x52a2bd52c79bd944, $r16=0xc79bd94439006673, $r5=0xa8024ab452a2bd52 +bytepick.d $r26, $r19, $r25, 7 :: +before: $r26=0xc8aae5136d925592, $r19=0xea109dd2837d3acf, $r25=0x30e93a75e695666a +after: $r26=0x6aea109dd2837d3a, $r19=0xea109dd2837d3acf, $r25=0x30e93a75e695666a +bytepick.d $r8, $r14, $r8, 2 :: +before: $r8=0xa03db273c845b37f, $r14=0xa7fd0053a136769f, $r8=0x6ab932903229b035 +after: $r8=0x32903229b035a7fd, $r14=0xa7fd0053a136769f, $r8=0x32903229b035a7fd +bytepick.d $r9, $r14, $r23, 2 :: +before: $r9=0x2f160a0d147b300f, $r14=0xdae9d5d15bb8f5b5, $r23=0xc4fdfbb29d49dfe4 +after: $r9=0xfbb29d49dfe4dae9, $r14=0xdae9d5d15bb8f5b5, $r23=0xc4fdfbb29d49dfe4 +bytepick.d $r20, $r18, $r15, 5 :: +before: $r20=0x30cefdebc30b841a, $r18=0xbfd016fb0312277c, $r15=0x44269b95d496912f +after: $r20=0x96912fbfd016fb03, $r18=0xbfd016fb0312277c, $r15=0x44269b95d496912f +bytepick.d $r12, $r17, $r5, 2 :: +before: $r12=0xde32bc5d3471eed2, $r17=0xdb807610c6e762e4, $r5=0xb2148e34e649d1b8 +after: $r12=0x8e34e649d1b8db80, $r17=0xdb807610c6e762e4, $r5=0xb2148e34e649d1b8 +bytepick.d $r5, $r24, $r28, 3 :: +before: $r5=0x9ab1be6a0faa61a8, $r24=0x97d4a12579967739, $r28=0xaa592ef1fd606bad +after: $r5=0xf1fd606bad97d4a1, $r24=0x97d4a12579967739, $r28=0xaa592ef1fd606bad +maskeqz $r14, $r28, $r25 :: +before: $r14=0xc263b6b8f3404c8d, $r28=0x90ef733c88c88866, $r25=0xd256888d94e8d21a +after: $r14=0x90ef733c88c88866, $r28=0x90ef733c88c88866, $r25=0xd256888d94e8d21a +maskeqz $r13, $r9, $r15 :: +before: $r13=0x5bdd86b962c61db4, $r9=0x8a78f7b88a728d92, $r15=0x69e707acb2c26a83 +after: $r13=0x8a78f7b88a728d92, $r9=0x8a78f7b88a728d92, $r15=0x69e707acb2c26a83 +maskeqz $r7, $r7, $r13 :: +before: $r7=0xea86abdbdea660cb, $r7=0xfb778deef0a5b893, $r13=0xad10e23c971d1a9f +after: $r7=0xfb778deef0a5b893, $r7=0xfb778deef0a5b893, $r13=0xad10e23c971d1a9f +maskeqz $r8, $r7, $r19 :: +before: $r8=0xf64df33b6146939f, $r7=0xe7376d3da44f4dfd, $r19=0x7987e122af2505ab +after: $r8=0xe7376d3da44f4dfd, $r7=0xe7376d3da44f4dfd, $r19=0x7987e122af2505ab +maskeqz $r10, $r27, $r29 :: +before: $r10=0x404a261c069b488b, $r27=0x81886c523ec2658c, $r29=0x3236dc83d0a27cc1 +after: $r10=0x81886c523ec2658c, $r27=0x81886c523ec2658c, $r29=0x3236dc83d0a27cc1 +maskeqz $r23, $r16, $r25 :: +before: $r23=0x8671050519b7bda0, $r16=0x26fa2567b106d73a, $r25=0x0d884011e0d767fe +after: $r23=0x26fa2567b106d73a, $r16=0x26fa2567b106d73a, $r25=0x0d884011e0d767fe +maskeqz $r5, $r19, $r18 :: +before: $r5=0xbd8d4cef53122132, $r19=0x4976c047c57ec148, $r18=0x602312f372049a5e +after: $r5=0x4976c047c57ec148, $r19=0x4976c047c57ec148, $r18=0x602312f372049a5e +maskeqz $r29, $r24, $r23 :: +before: $r29=0x07f390b695d8b12e, $r24=0x70043e7666a24a34, $r23=0xfee8f8f90ab3ac9b +after: $r29=0x70043e7666a24a34, $r24=0x70043e7666a24a34, $r23=0xfee8f8f90ab3ac9b +maskeqz $r25, $r4, $r18 :: +before: $r25=0x07eaffcb6dac1b5b, $r4=0x4b12f8c6738216a2, $r18=0x409acb80b7391511 +after: $r25=0x4b12f8c6738216a2, $r4=0x4b12f8c6738216a2, $r18=0x409acb80b7391511 +maskeqz $r30, $r6, $r24 :: +before: $r30=0x14d829636b628dc9, $r6=0xdb88a366a2271c2c, $r24=0x0ea0d5998835940a +after: $r30=0xdb88a366a2271c2c, $r6=0xdb88a366a2271c2c, $r24=0x0ea0d5998835940a +masknez $r14, $r24, $r5 :: +before: $r14=0x46b15bbb9507bd79, $r24=0xc92af628c880a454, $r5=0x846a586db0af0965 +after: $r14=000000000000000000, $r24=0xc92af628c880a454, $r5=0x846a586db0af0965 +masknez $r30, $r8, $r8 :: +before: $r30=0x43cd20b5234db4e8, $r8=0x7aeee6ab6b10561f, $r8=0x45ab4fdb4ca8b325 +after: $r30=000000000000000000, $r8=0x45ab4fdb4ca8b325, $r8=0x45ab4fdb4ca8b325 +masknez $r24, $r19, $r15 :: +before: $r24=0xd3d50bbb34b528e2, $r19=0xdd71746b0beedae3, $r15=0xa34d82fc50174094 +after: $r24=000000000000000000, $r19=0xdd71746b0beedae3, $r15=0xa34d82fc50174094 +masknez $r29, $r26, $r26 :: +before: $r29=0x576cb2da15b1462d, $r26=0x6c669f0195b50b7a, $r26=0xec1609ef36aa938f +after: $r29=000000000000000000, $r26=0xec1609ef36aa938f, $r26=0xec1609ef36aa938f +masknez $r4, $r29, $r10 :: +before: $r4=0xaa220f67a02617db, $r29=0x0ffcd18e3016e10f, $r10=0x4cf9bdd8dca7f88f +after: $r4=000000000000000000, $r29=0x0ffcd18e3016e10f, $r10=0x4cf9bdd8dca7f88f +masknez $r23, $r9, $r29 :: +before: $r23=0x774e1c840428fbde, $r9=0x391268694388d2a7, $r29=0xf06192a4e5780c53 +after: $r23=000000000000000000, $r9=0x391268694388d2a7, $r29=0xf06192a4e5780c53 +masknez $r7, $r25, $r28 :: +before: $r7=0x7b75099f16135faa, $r25=0xf95af681c18bf31c, $r28=0x2f6122581dfdef74 +after: $r7=000000000000000000, $r25=0xf95af681c18bf31c, $r28=0x2f6122581dfdef74 +masknez $r26, $r10, $r16 :: +before: $r26=0xe6006c9bd6bae204, $r10=0x7e84e5db1181249d, $r16=0x6ab2371059cdc875 +after: $r26=000000000000000000, $r10=0x7e84e5db1181249d, $r16=0x6ab2371059cdc875 +masknez $r26, $r15, $r28 :: +before: $r26=0xb4c9c784ef74245f, $r15=0x20cc1c4c169ca02c, $r28=0x606eeb8ce6278d16 +after: $r26=000000000000000000, $r15=0x20cc1c4c169ca02c, $r28=0x606eeb8ce6278d16 +masknez $r19, $r16, $r16 :: +before: $r19=0x75a721553f7c7054, $r16=0x7b63b7b7b3f5bd5f, $r16=0xf8c7933e92e155ee +after: $r19=000000000000000000, $r16=0xf8c7933e92e155ee, $r16=0xf8c7933e92e155ee +bstrins.w $r27, $r16, 31, 8 :: +before: $r27=0x431055863e78b187, $r16=0xe18dda9620a50e9d +after: $r27=0xffffffffa50e9d87, $r16=0xe18dda9620a50e9d +bstrins.w $r26, $r27, 30, 27 :: +before: $r26=0x19f800eab7e1ab51, $r27=0x61e7d86005d21d29 +after: $r26=0xffffffffcfe1ab51, $r27=0x61e7d86005d21d29 +bstrins.w $r15, $r4, 17, 14 :: +before: $r15=0xb141d462e777528d, $r4=0xb7aebff9bcca1643 +after: $r15=0xffffffffe774d28d, $r4=0xb7aebff9bcca1643 +bstrins.w $r30, $r17, 24, 6 :: +before: $r30=0xfac48083375844fe, $r17=0x6d3283ba14cc27eb +after: $r30=0x000000003709fafe, $r17=0x6d3283ba14cc27eb +bstrins.w $r12, $r12, 30, 25 :: +before: $r12=0x9b7629774f19f64a, $r12=0x84ee8d65b2842686 +after: $r12=0xffffffff8c842686, $r12=0xffffffff8c842686 +bstrins.w $r15, $r10, 26, 1 :: +before: $r15=0x290172844863090f, $r10=0x85ea298976069fcd +after: $r15=0x000000004c0d3f9b, $r10=0x85ea298976069fcd +bstrins.w $r10, $r13, 23, 8 :: +before: $r10=0x66942ba1c15e85aa, $r13=0xddb2dfa7474a4370 +after: $r10=0xffffffffc14370aa, $r13=0xddb2dfa7474a4370 +bstrins.w $r5, $r20, 18, 16 :: +before: $r5=0x3dcfecca80bf0d79, $r20=0x5044b246f2d3f890 +after: $r5=0xffffffff80b80d79, $r20=0x5044b246f2d3f890 +bstrins.w $r23, $r5, 25, 21 :: +before: $r23=0xa11723142f1472a7, $r5=0xcbaaa9a23d119663 +after: $r23=0x000000002c7472a7, $r5=0xcbaaa9a23d119663 +bstrins.w $r20, $r31, 13, 12 :: +before: $r20=0x6a1110240ba884b8, $r31=0x45cadf0ffe08cc25 +after: $r20=0x000000000ba894b8, $r31=0x45cadf0ffe08cc25 +bstrpick.w $r5, $r23, 23, 11 :: +before: $r5=0x6885eaa89f691954, $r23=0x94f8458597294f2e +after: $r5=0x0000000000000529, $r23=0x94f8458597294f2e +bstrpick.w $r25, $r8, 18, 11 :: +before: $r25=0x11be9b9923ebee96, $r8=0x23deda120a49df15 +after: $r25=0x000000000000003b, $r8=0x23deda120a49df15 +bstrpick.w $r6, $r6, 10, 3 :: +before: $r6=0x3546d655181289bc, $r6=0x7ee84a41c952b690 +after: $r6=0x00000000000000d2, $r6=0x00000000000000d2 +bstrpick.w $r25, $r5, 15, 9 :: +before: $r25=0xb2eec884ea77f548, $r5=0x23992bc40919416f +after: $r25=0x0000000000000020, $r5=0x23992bc40919416f +bstrpick.w $r26, $r14, 21, 8 :: +before: $r26=0x8e591161730ac582, $r14=0xf45f4435cc1cb138 +after: $r26=0x0000000000001cb1, $r14=0xf45f4435cc1cb138 +bstrpick.w $r9, $r14, 7, 3 :: +before: $r9=0x1ac92d930e8361f9, $r14=0xcc11dd56e96c6256 +after: $r9=0x000000000000000a, $r14=0xcc11dd56e96c6256 +bstrpick.w $r19, $r9, 8, 8 :: +before: $r19=0xd15fd80fafe60a58, $r9=0xb1426a8c680d628c +after: $r19=000000000000000000, $r9=0xb1426a8c680d628c +bstrpick.w $r17, $r13, 30, 12 :: +before: $r17=0xfa48c3cd091d2b5e, $r13=0x3a2827a58a014a72 +after: $r17=0x000000000000a014, $r13=0x3a2827a58a014a72 +bstrpick.w $r6, $r31, 16, 7 :: +before: $r6=0xca10a858ebfa78a1, $r31=0x202a38722f270884 +after: $r6=0x0000000000000211, $r31=0x202a38722f270884 +bstrpick.w $r20, $r10, 31, 15 :: +before: $r20=0xc010deb269ae6ba2, $r10=0x98f1d297734f9f4c +after: $r20=0x000000000000e69f, $r10=0x98f1d297734f9f4c +bstrins.d $r29, $r17, 60, 25 :: +before: $r29=0x7cf4a9ec79307e59, $r17=0xb1b5afc00eef90a3 +after: $r29=0x601ddf2147307e59, $r17=0xb1b5afc00eef90a3 +bstrins.d $r10, $r27, 31, 22 :: +before: $r10=0xc708602dee32579f, $r27=0x199d90a711e94375 +after: $r10=0xc708602ddd72579f, $r27=0x199d90a711e94375 +bstrins.d $r4, $r24, 58, 58 :: +before: $r4=0x4e5ce98e217a4b59, $r24=0xaf25b5661daefdea +after: $r4=0x4a5ce98e217a4b59, $r24=0xaf25b5661daefdea +bstrins.d $r12, $r30, 16, 6 :: +before: $r12=0x9505d862c56b1708, $r30=0x7f3f0c983ce27863 +after: $r12=0x9505d862c56a18c8, $r30=0x7f3f0c983ce27863 +bstrins.d $r29, $r5, 43, 0 :: +before: $r29=0x248f295ef3afe5aa, $r5=0x9469277db61227b7 +after: $r29=0x248f277db61227b7, $r5=0x9469277db61227b7 +bstrins.d $r31, $r31, 49, 23 :: +before: $r31=0xbc5f0c47c3a63a94, $r31=0x4aacc1c77ad0c09a +after: $r31=0x4aad68604d50c09a, $r31=0x4aad68604d50c09a +bstrins.d $r6, $r24, 12, 2 :: +before: $r6=0x79110235b8c34188, $r24=0x75e3e311aef2bef9 +after: $r6=0x79110235b8c35be4, $r24=0x75e3e311aef2bef9 +bstrins.d $r6, $r16, 43, 13 :: +before: $r6=0xaa6e63ffd80b76c5, $r16=0xb1ea7dcb3af0881d +after: $r6=0xaa6e675e1103b6c5, $r16=0xb1ea7dcb3af0881d +bstrins.d $r15, $r25, 53, 29 :: +before: $r15=0x5b68a802f26a1804, $r25=0xb4f651115b84591b +after: $r15=0x5b708b23726a1804, $r25=0xb4f651115b84591b +bstrins.d $r9, $r9, 61, 40 :: +before: $r9=0x3394218c965d5f1a, $r9=0xf3d30b5d4d4089b4 +after: $r9=0xc089b45d4d4089b4, $r9=0xc089b45d4d4089b4 +bstrpick.d $r27, $r27, 63, 33 :: +before: $r27=0x503c8fae2d6d7b58, $r27=0x9fd9869ca812de0c +after: $r27=0x000000004fecc34e, $r27=0x000000004fecc34e +bstrpick.d $r14, $r5, 52, 40 :: +before: $r14=0x65f05eaa5e13856a, $r5=0xd52c72fbeccc39f5 +after: $r14=0x0000000000000c72, $r5=0xd52c72fbeccc39f5 +bstrpick.d $r13, $r20, 48, 14 :: +before: $r13=0x9cea777df4d2eae0, $r20=0x6326727a36499800 +after: $r13=0x00000001c9e8d926, $r20=0x6326727a36499800 +bstrpick.d $r10, $r17, 43, 20 :: +before: $r10=0xf30a073a4a56604b, $r17=0x0c12d112f6a0c8f1 +after: $r10=0x0000000000112f6a, $r17=0x0c12d112f6a0c8f1 +bstrpick.d $r13, $r25, 55, 37 :: +before: $r13=0xe559d975e0d9ac85, $r25=0xcf41f30cc4a46713 +after: $r13=0x0000000000020f98, $r25=0xcf41f30cc4a46713 +bstrpick.d $r29, $r4, 34, 20 :: +before: $r29=0x41843db6c2a206cb, $r4=0x343f795d45fcff8c +after: $r29=0x000000000000545f, $r4=0x343f795d45fcff8c +bstrpick.d $r27, $r28, 27, 10 :: +before: $r27=0xb359821297377fee, $r28=0x4fc51c5773e64f69 +after: $r27=0x000000000000f993, $r28=0x4fc51c5773e64f69 +bstrpick.d $r24, $r24, 63, 20 :: +before: $r24=0xed3cb5d1e8f0e55e, $r24=0x9cdbb70a8b8d3945 +after: $r24=0x000009cdbb70a8b8, $r24=0x000009cdbb70a8b8 +bstrpick.d $r7, $r30, 34, 30 :: +before: $r7=0x11b7344343be1ccf, $r30=0xa3422c671803480f +after: $r7=0x000000000000001c, $r30=0xa3422c671803480f +bstrpick.d $r15, $r4, 55, 4 :: +before: $r15=0x3670c6b869f28085, $r4=0x2caa9d9c1351e402 +after: $r15=0x000aa9d9c1351e40, $r4=0x2caa9d9c1351e402 +crc.w.b.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x4b154113f7d32514, $r14=0xcce230caafbf9cc9 +after: $r12=0xfffffffff8cd11f5, $r13=0x4b154113f7d32514, $r14=0xcce230caafbf9cc9 +crc.w.b.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x33d5d595721d4f13, $r14=0xf4509311f443a7ce +after: $r12=0xfffffffff896edce, $r13=0x33d5d595721d4f13, $r14=0xf4509311f443a7ce +crc.w.b.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x4a3c6de6954cbc17, $r14=0x111b21e39fbd7254 +after: $r12=0xffffffffef4aad58, $r13=0x4a3c6de6954cbc17, $r14=0x111b21e39fbd7254 +crc.w.b.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0xfbb5c64ed1b044c6, $r14=0x33ca4c4fb3960326 +after: $r12=0xffffffffa0b9747b, $r13=0xfbb5c64ed1b044c6, $r14=0x33ca4c4fb3960326 +crc.w.b.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x2b7c5939d7c0f528, $r14=0xb73870a5a6630162 +after: $r12=0xffffffff96afcb8f, $r13=0x2b7c5939d7c0f528, $r14=0xb73870a5a6630162 +crc.w.b.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x02fe41918ac5cdba, $r14=0x48e0815289728f05 +after: $r12=0x000000005b57dc92, $r13=0x02fe41918ac5cdba, $r14=0x48e0815289728f05 +crc.w.b.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0xb60a8f381f187bae, $r14=0x008c208cc413ff72 +after: $r12=0xffffffff8fa18d00, $r13=0xb60a8f381f187bae, $r14=0x008c208cc413ff72 +crc.w.h.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x4b154113f7d32514, $r14=0xcce230caafbf9cc9 +after: $r12=0xffffffff862b1fc5, $r13=0x4b154113f7d32514, $r14=0xcce230caafbf9cc9 +crc.w.h.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x33d5d595721d4f13, $r14=0xf4509311f443a7ce +after: $r12=0xffffffff9a47255b, $r13=0x33d5d595721d4f13, $r14=0xf4509311f443a7ce +crc.w.h.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x4a3c6de6954cbc17, $r14=0x111b21e39fbd7254 +after: $r12=0xffffffffa7886ccc, $r13=0x4a3c6de6954cbc17, $r14=0x111b21e39fbd7254 +crc.w.h.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0xfbb5c64ed1b044c6, $r14=0x33ca4c4fb3960326 +after: $r12=0xffffffffb6c69449, $r13=0xfbb5c64ed1b044c6, $r14=0x33ca4c4fb3960326 +crc.w.h.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x2b7c5939d7c0f528, $r14=0xb73870a5a6630162 +after: $r12=0xffffffffb04637e9, $r13=0x2b7c5939d7c0f528, $r14=0xb73870a5a6630162 +crc.w.h.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x02fe41918ac5cdba, $r14=0x48e0815289728f05 +after: $r12=0xfffffffffb8f1bb9, $r13=0x02fe41918ac5cdba, $r14=0x48e0815289728f05 +crc.w.h.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0xb60a8f381f187bae, $r14=0x008c208cc413ff72 +after: $r12=0xffffffffc7580939, $r13=0xb60a8f381f187bae, $r14=0x008c208cc413ff72 +crc.w.w.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x4b154113f7d32514, $r14=0xcce230caafbf9cc9 +after: $r12=0xffffffffb24959b6, $r13=0x4b154113f7d32514, $r14=0xcce230caafbf9cc9 +crc.w.w.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x33d5d595721d4f13, $r14=0xf4509311f443a7ce +after: $r12=0x00000000532cb693, $r13=0x33d5d595721d4f13, $r14=0xf4509311f443a7ce +crc.w.w.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x4a3c6de6954cbc17, $r14=0x111b21e39fbd7254 +after: $r12=0xffffffffffe2757b, $r13=0x4a3c6de6954cbc17, $r14=0x111b21e39fbd7254 +crc.w.w.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0xfbb5c64ed1b044c6, $r14=0x33ca4c4fb3960326 +after: $r12=0xffffffffc3c8592d, $r13=0xfbb5c64ed1b044c6, $r14=0x33ca4c4fb3960326 +crc.w.w.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x2b7c5939d7c0f528, $r14=0xb73870a5a6630162 +after: $r12=0xffffffffe44ccdd5, $r13=0x2b7c5939d7c0f528, $r14=0xb73870a5a6630162 +crc.w.w.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x02fe41918ac5cdba, $r14=0x48e0815289728f05 +after: $r12=0x0000000004826ea7, $r13=0x02fe41918ac5cdba, $r14=0x48e0815289728f05 +crc.w.w.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0xb60a8f381f187bae, $r14=0x008c208cc413ff72 +after: $r12=0x00000000784b67ea, $r13=0xb60a8f381f187bae, $r14=0x008c208cc413ff72 +crc.w.d.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x4b154113f7d32514, $r14=0xcce230caafbf9cc9 +after: $r12=0xffffffffbaef431f, $r13=0x4b154113f7d32514, $r14=0xcce230caafbf9cc9 +crc.w.d.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x33d5d595721d4f13, $r14=0xf4509311f443a7ce +after: $r12=0xffffffffe7361109, $r13=0x33d5d595721d4f13, $r14=0xf4509311f443a7ce +crc.w.d.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x4a3c6de6954cbc17, $r14=0x111b21e39fbd7254 +after: $r12=0xfffffffff9af6423, $r13=0x4a3c6de6954cbc17, $r14=0x111b21e39fbd7254 +crc.w.d.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0xfbb5c64ed1b044c6, $r14=0x33ca4c4fb3960326 +after: $r12=0x000000006d4f1805, $r13=0xfbb5c64ed1b044c6, $r14=0x33ca4c4fb3960326 +crc.w.d.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x2b7c5939d7c0f528, $r14=0xb73870a5a6630162 +after: $r12=0xffffffffb22e077e, $r13=0x2b7c5939d7c0f528, $r14=0xb73870a5a6630162 +crc.w.d.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x02fe41918ac5cdba, $r14=0x48e0815289728f05 +after: $r12=0xffffffff8cb8356f, $r13=0x02fe41918ac5cdba, $r14=0x48e0815289728f05 +crc.w.d.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0xb60a8f381f187bae, $r14=0x008c208cc413ff72 +after: $r12=0xffffffffbe1261f9, $r13=0xb60a8f381f187bae, $r14=0x008c208cc413ff72 +crcc.w.b.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x4b154113f7d32514, $r14=0xcce230caafbf9cc9 +after: $r12=0x000000006c5412e4, $r13=0x4b154113f7d32514, $r14=0xcce230caafbf9cc9 +crcc.w.b.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x33d5d595721d4f13, $r14=0xf4509311f443a7ce +after: $r12=0x000000006c0feedf, $r13=0x33d5d595721d4f13, $r14=0xf4509311f443a7ce +crcc.w.b.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x4a3c6de6954cbc17, $r14=0x111b21e39fbd7254 +after: $r12=0x0000000052b4533a, $r13=0x4a3c6de6954cbc17, $r14=0x111b21e39fbd7254 +crcc.w.b.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0xfbb5c64ed1b044c6, $r14=0x33ca4c4fb3960326 +after: $r12=0xffffffffe3833e19, $r13=0xfbb5c64ed1b044c6, $r14=0x33ca4c4fb3960326 +crcc.w.b.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x2b7c5939d7c0f528, $r14=0xb73870a5a6630162 +after: $r12=0x000000002a3f5685, $r13=0x2b7c5939d7c0f528, $r14=0xb73870a5a6630162 +crcc.w.b.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x02fe41918ac5cdba, $r14=0x48e0815289728f05 +after: $r12=0xffffffffec8f3c62, $r13=0x02fe41918ac5cdba, $r14=0x48e0815289728f05 +crcc.w.b.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0xb60a8f381f187bae, $r14=0x008c208cc413ff72 +after: $r12=0xffffffff9e543d84, $r13=0xb60a8f381f187bae, $r14=0x008c208cc413ff72 +crcc.w.h.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x4b154113f7d32514, $r14=0xcce230caafbf9cc9 +after: $r12=0x00000000318af1d5, $r13=0x4b154113f7d32514, $r14=0xcce230caafbf9cc9 +crcc.w.h.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x33d5d595721d4f13, $r14=0xf4509311f443a7ce +after: $r12=0xffffffff92c4f3f9, $r13=0x33d5d595721d4f13, $r14=0xf4509311f443a7ce +crcc.w.h.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x4a3c6de6954cbc17, $r14=0x111b21e39fbd7254 +after: $r12=0xffffffffa40568c3, $r13=0x4a3c6de6954cbc17, $r14=0x111b21e39fbd7254 +crcc.w.h.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0xfbb5c64ed1b044c6, $r14=0x33ca4c4fb3960326 +after: $r12=0xffffffffeeee153e, $r13=0xfbb5c64ed1b044c6, $r14=0x33ca4c4fb3960326 +crcc.w.h.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x2b7c5939d7c0f528, $r14=0xb73870a5a6630162 +after: $r12=0x0000000071b26b5b, $r13=0x2b7c5939d7c0f528, $r14=0xb73870a5a6630162 +crcc.w.h.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x02fe41918ac5cdba, $r14=0x48e0815289728f05 +after: $r12=0xfffffffffcb406be, $r13=0x02fe41918ac5cdba, $r14=0x48e0815289728f05 +crcc.w.h.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0xb60a8f381f187bae, $r14=0x008c208cc413ff72 +after: $r12=0xffffffffade3076c, $r13=0xb60a8f381f187bae, $r14=0x008c208cc413ff72 +crcc.w.w.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x4b154113f7d32514, $r14=0xcce230caafbf9cc9 +after: $r12=0x000000004f6e8750, $r13=0x4b154113f7d32514, $r14=0xcce230caafbf9cc9 +crcc.w.w.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x33d5d595721d4f13, $r14=0xf4509311f443a7ce +after: $r12=0x000000004548949c, $r13=0x33d5d595721d4f13, $r14=0xf4509311f443a7ce +crcc.w.w.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x4a3c6de6954cbc17, $r14=0x111b21e39fbd7254 +after: $r12=0x0000000050fc77a7, $r13=0x4a3c6de6954cbc17, $r14=0x111b21e39fbd7254 +crcc.w.w.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0xfbb5c64ed1b044c6, $r14=0x33ca4c4fb3960326 +after: $r12=0x000000000b0f3746, $r13=0xfbb5c64ed1b044c6, $r14=0x33ca4c4fb3960326 +crcc.w.w.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x2b7c5939d7c0f528, $r14=0xb73870a5a6630162 +after: $r12=0xffffffff92a3acf2, $r13=0x2b7c5939d7c0f528, $r14=0xb73870a5a6630162 +crcc.w.w.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x02fe41918ac5cdba, $r14=0x48e0815289728f05 +after: $r12=0xffffffffd91fb7ba, $r13=0x02fe41918ac5cdba, $r14=0x48e0815289728f05 +crcc.w.w.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0xb60a8f381f187bae, $r14=0x008c208cc413ff72 +after: $r12=0x000000006b548718, $r13=0xb60a8f381f187bae, $r14=0x008c208cc413ff72 +crcc.w.d.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x4b154113f7d32514, $r14=0xcce230caafbf9cc9 +after: $r12=0xffffffff8547ffea, $r13=0x4b154113f7d32514, $r14=0xcce230caafbf9cc9 +crcc.w.d.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x33d5d595721d4f13, $r14=0xf4509311f443a7ce +after: $r12=0x000000001a265977, $r13=0x33d5d595721d4f13, $r14=0xf4509311f443a7ce +crcc.w.d.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x4a3c6de6954cbc17, $r14=0x111b21e39fbd7254 +after: $r12=0x000000000e1737b7, $r13=0x4a3c6de6954cbc17, $r14=0x111b21e39fbd7254 +crcc.w.d.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0xfbb5c64ed1b044c6, $r14=0x33ca4c4fb3960326 +after: $r12=0x000000007c13f4c5, $r13=0xfbb5c64ed1b044c6, $r14=0x33ca4c4fb3960326 +crcc.w.d.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x2b7c5939d7c0f528, $r14=0xb73870a5a6630162 +after: $r12=0xffffffff9d9455e3, $r13=0x2b7c5939d7c0f528, $r14=0xb73870a5a6630162 +crcc.w.d.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0x02fe41918ac5cdba, $r14=0x48e0815289728f05 +after: $r12=0x000000006df1745f, $r13=0x02fe41918ac5cdba, $r14=0x48e0815289728f05 +crcc.w.d.w $r12, $r13, $r14 :: +before: $r12=0x0123456789abcdef, $r13=0xb60a8f381f187bae, $r14=0x008c208cc413ff72 +after: $r12=0xffffffffb7862239, $r13=0xb60a8f381f187bae, $r14=0x008c208cc413ff72 diff --git a/none/tests/loongarch64/integer.vgtest b/none/tests/loongarch64/integer.vgtest new file mode 100644 index 0000000..daa0591 --- /dev/null +++ b/none/tests/loongarch64/integer.vgtest @@ -0,0 +1,2 @@ +prog: integer +vgopts: -q diff --git a/none/tests/loongarch64/llsc.c b/none/tests/loongarch64/llsc.c new file mode 100644 index 0000000..fcb7e3c --- /dev/null +++ b/none/tests/loongarch64/llsc.c @@ -0,0 +1,69 @@ +#include + +#define TESTINST_LLSC_W(insn, res, addr, offs) \ + { \ + __asm__ __volatile__( \ + "move $t1, %1 \n\t" \ + "ll.w $t0, $t1, %2 \n\t" \ + insn " \n\t" \ + "sc.w $t0, $t1, %2 \n\t" \ + "move %0, $t0 \n\t" \ + : "=r" (res) \ + : "r" (addr), "i" (offs) \ + : "$t0", "$t1", "memory"); \ + } + +#define TESTINST_LLSC_D(insn, res, addr, offs) \ + { \ + __asm__ __volatile__( \ + "move $t1, %1 \n\t" \ + "ll.d $t0, $t1, %2 \n\t" \ + insn " \n\t" \ + "sc.d $t0, $t1, %2 \n\t" \ + "move %0, $t0 \n\t" \ + : "=r" (res) \ + : "r" (addr), "i" (offs) \ + : "$t0", "$t1", "memory"); \ + } + +void test(void) +{ + int res_i; + long res_l; + int val_i[2] = { 6, 10 }; + long val_l[2] = { 6, 10 }; + + /* ---------------- ll.w rd, rj, si14 ---------------- */ + /* ---------------- sc.w rd, rj, si14 ---------------- */ + printf("ll.w sc.w ::\n"); + + do { + TESTINST_LLSC_W("addi.w $t0, $t0, 1", res_i, val_i, 0); + } while (res_i != 1); + printf("res: %d val: %d\n", res_i, val_i[0]); + + do { + TESTINST_LLSC_W("sub.w $t0, $zero, $t0", res_i, val_i, 4); + } while (res_i != 1); + printf("res: %d val: %d\n", res_i, val_i[1]); + + /* ---------------- ll.d rd, rj, si14 ---------------- */ + /* ---------------- sc.d rd, rj, si14 ---------------- */ + printf("ll.d sc.d ::\n"); + + do { + TESTINST_LLSC_D("addi.d $t0, $t0, 1", res_l, val_l, 0); + } while (res_l != 1); + printf("res: %ld val: %ld\n", res_l, val_l[0]); + + do { + TESTINST_LLSC_D("sub.d $t0, $zero, $t0", res_l, val_l, 8); + } while (res_l != 1); + printf("res: %ld val: %ld\n", res_l, val_l[1]); +} + +int main(void) +{ + test(); + return 0; +} diff --git a/none/tests/loongarch64/llsc.stderr.exp b/none/tests/loongarch64/llsc.stderr.exp new file mode 100644 index 0000000..e69de29 diff --git a/none/tests/loongarch64/llsc.stdout.exp b/none/tests/loongarch64/llsc.stdout.exp new file mode 100644 index 0000000..dd19251 --- /dev/null +++ b/none/tests/loongarch64/llsc.stdout.exp @@ -0,0 +1,6 @@ +ll.w sc.w :: +res: 1 val: 7 +res: 1 val: -10 +ll.d sc.d :: +res: 1 val: 7 +res: 1 val: -10 diff --git a/none/tests/loongarch64/llsc.vgtest b/none/tests/loongarch64/llsc.vgtest new file mode 100644 index 0000000..685c279 --- /dev/null +++ b/none/tests/loongarch64/llsc.vgtest @@ -0,0 +1,2 @@ +prog: llsc +vgopts: -q diff --git a/none/tests/loongarch64/memory.c b/none/tests/loongarch64/memory.c new file mode 100644 index 0000000..385efc0 --- /dev/null +++ b/none/tests/loongarch64/memory.c @@ -0,0 +1,345 @@ +#include + +#define NUM 24 + +unsigned long mem[NUM] = { + 0x121f1e1f0000e680, 0x0000000000010700, 0x000000030000e7dc, + 0xffffffff0000b0d0, 0x232f2e2f2ab05fd0, 0x242c2b2b0000b6a0, + 0x252a2e2b0000be80, 0x262d2d2a0000de10, 0x3f343f3e0000df20, + 0x3e353d3c2ab05fe0, 0x363a3c3b0000dfd0, 0x3b373b3a00010300, + 0x0000e680121f1e1f, 0x0001070000000000, 0x0000e7dc00000003, + 0x0000b0d0ffffffff, 0x2ab05fd0232f2e2f, 0x0000b6a0242c2b2b, + 0x0000be80252a2e2b, 0x0000de10262d2d2a, 0x0000df203f343f3e, + 0x2ab05fe03e353d3c, 0x0000dfd0363a3c3b, 0x000103003b373b3a +}; + +#define TESTINST_LOAD_RRI(insn, val, addr, offs) \ + { \ + __asm__ __volatile__( \ + insn " %0, %1, " #offs " \n\t" \ + : "=r" (val) \ + : "r" (addr) \ + : "memory"); \ + } + +#define TESTINST_LOAD_RRR(insn, val, addr, offs) \ + { \ + __asm__ __volatile__( \ + insn " %0, %1, %2 \n\t" \ + : "=r" (val) \ + : "r" (addr), "r" (offs) \ + : "memory"); \ + } + +#define TESTINST_LOAD_FRI(insn, val, addr, offs) \ + { \ + __asm__ __volatile__( \ + insn " %0, %1, " #offs " \n\t" \ + : "=f" (val) \ + : "r" (addr) \ + : "memory"); \ + } + +#define TESTINST_LOAD_FRR(insn, val, addr, offs) \ + { \ + __asm__ __volatile__( \ + insn " %0, %1, %2 \n\t" \ + : "=f" (val) \ + : "r" (addr), "r" (offs) \ + : "memory"); \ + } + +#define TESTINST_STORE_RRI(insn, val, addr, offs) \ + { \ + __asm__ __volatile__( \ + insn " %0, %1, " #offs " \n\t" \ + : \ + : "r" (val), "r" (addr) \ + : "memory"); \ + } + +#define TESTINST_STORE_RRR(insn, val, addr, offs) \ + { \ + __asm__ __volatile__( \ + insn " %0, %1, %2 \n\t" \ + : \ + : "r" (val), "r" (addr), "r" (offs) \ + : "memory"); \ + } + +#define TESTINST_STORE_FRI(insn, val, addr, offs) \ + { \ + __asm__ __volatile__( \ + insn " %0, %1, " #offs " \n\t" \ + : \ + : "f" (val), "r" (addr) \ + : "memory"); \ + } + +#define TESTINST_STORE_FRR(insn, val, addr, offs) \ + { \ + __asm__ __volatile__( \ + insn " %0, %1, %2 \n\t" \ + : \ + : "f" (val), "r" (addr), "r" (offs) \ + : "memory"); \ + } + +static inline void show(void) +{ + int i; + printf("memory block:\n"); + for (i = 0; i < NUM; i++) + printf("0x%lx:\t%#018lx\n", i * sizeof(unsigned long), mem[i]); +} + +void test(void) +{ + char s8; + unsigned char u8; + short s16; + unsigned short u16; + int s32; + unsigned int u32; + long s64; + unsigned long u64; + + show(); + + /* ---------------- ld.b rd, rj, si12 ---------------- */ + printf("test ld.b: "); + TESTINST_LOAD_RRI("ld.b", s8, mem, 0); + printf("%d ", (int)s8); + TESTINST_LOAD_RRI("ld.b", s8, mem, 24); + printf("%d\n", (int)s8); + + /* ---------------- ld.bu rd, rj, si12 ---------------- */ + printf("test ld.bu: "); + TESTINST_LOAD_RRI("ld.b", u8, mem, 0); + printf("%u ", (unsigned)s8); + TESTINST_LOAD_RRI("ld.b", u8, mem, 24); + printf("%u\n", (unsigned)s8); + + /* ---------------- ld.h rd, rj, si12 ---------------- */ + printf("test ld.h: "); + TESTINST_LOAD_RRI("ld.h", s16, mem, 0); + printf("%hd ", s16); + TESTINST_LOAD_RRI("ld.h", s16, mem, 24); + printf("%hd\n", s16); + + /* ---------------- ld.hu rd, rj, si12 ---------------- */ + printf("test ld.hu: "); + TESTINST_LOAD_RRI("ld.hu", u16, mem, 0); + printf("%hu ", u16); + TESTINST_LOAD_RRI("ld.hu", u16, mem, 24); + printf("%hu\n", u16); + + /* ---------------- ld.w rd, rj, si12 ---------------- */ + printf("test ld.w: "); + TESTINST_LOAD_RRI("ld.w", s32, mem, 0); + printf("%d ", s32); + TESTINST_LOAD_RRI("ld.w", s32, mem, 24); + printf("%d\n", s32); + + /* ---------------- ld.wu rd, rj, si12 ---------------- */ + printf("test ld.wu: "); + TESTINST_LOAD_RRI("ld.wu", u32, mem, 0); + printf("%u ", u32); + TESTINST_LOAD_RRI("ld.wu", u32, mem, 24); + printf("%u\n", u32); + + /* ---------------- ld.d rd, rj, si12 ---------------- */ + printf("test ld.d: "); + TESTINST_LOAD_RRI("ld.d", s64, mem, 0); + printf("%ld ", s64); + TESTINST_LOAD_RRI("ld.d", s64, mem, 24); + printf("%ld ", s64); + TESTINST_LOAD_RRI("ld.d", u64, mem, 0); + printf("%lu ", u64); + TESTINST_LOAD_RRI("ld.d", u64, mem, 24); + printf("%lu\n", u64); + + /* ---------------- ldx.b rd, rj, rk ---------------- */ + printf("test ldx.b: "); + TESTINST_LOAD_RRR("ldx.b", s8, mem, 0); + printf("%d ", (int)s8); + TESTINST_LOAD_RRR("ldx.b", s8, mem, 24); + printf("%d\n", (int)s8); + + /* ---------------- ldx.bu rd, rj, rk ---------------- */ + printf("test ldx.bu: "); + TESTINST_LOAD_RRR("ldx.b", u8, mem, 0); + printf("%u ", (unsigned)s8); + TESTINST_LOAD_RRR("ldx.b", u8, mem, 24); + printf("%u\n", (unsigned)s8); + + /* ---------------- ldx.h rd, rj, rk ---------------- */ + printf("test ldx.h: "); + TESTINST_LOAD_RRR("ldx.h", s16, mem, 0); + printf("%hd ", s16); + TESTINST_LOAD_RRR("ldx.h", s16, mem, 24); + printf("%hd\n", s16); + + /* ---------------- ldx.hu rd, rj, rk ---------------- */ + printf("test ld.hu: "); + TESTINST_LOAD_RRR("ldx.hu", u16, mem, 0); + printf("%hu ", u16); + TESTINST_LOAD_RRR("ldx.hu", u16, mem, 24); + printf("%hu\n", u16); + + /* ---------------- ldx.w rd, rj, rk ---------------- */ + printf("test ldx.w: "); + TESTINST_LOAD_RRR("ldx.w", s32, mem, 0); + printf("%d ", s32); + TESTINST_LOAD_RRR("ldx.w", s32, mem, 24); + printf("%d\n", s32); + + /* ---------------- ldx.wu rd, rj, rk ---------------- */ + printf("test ldx.wu: "); + TESTINST_LOAD_RRR("ldx.wu", u32, mem, 0); + printf("%u ", u32); + TESTINST_LOAD_RRR("ldx.wu", u32, mem, 24); + printf("%u\n", u32); + + /* ---------------- ldx.d rd, rj, rk ---------------- */ + printf("test ldx.d: "); + TESTINST_LOAD_RRR("ldx.d", s64, mem, 0); + printf("%ld ", s64); + TESTINST_LOAD_RRR("ldx.d", s64, mem, 24); + printf("%ld ", s64); + TESTINST_LOAD_RRR("ldx.d", u64, mem, 0); + printf("%lu ", u64); + TESTINST_LOAD_RRR("ldx.d", u64, mem, 24); + printf("%lu\n", u64); + + /* ---------------- ldptr.w rd, rj, si14 ---------------- */ + printf("test ldptr.w: "); + TESTINST_LOAD_RRI("ldptr.w", s32, mem, 0); + printf("%d ", s32); + TESTINST_LOAD_RRI("ldptr.w", s32, mem, 24); + printf("%d\n", s32); + + /* ---------------- ldptr.d rd, rj, si14 ---------------- */ + printf("test ldptr.d: "); + TESTINST_LOAD_RRI("ldptr.d", s64, mem, 0); + printf("%ld ", s64); + TESTINST_LOAD_RRI("ldptr.d", s64, mem, 24); + printf("%ld\n", s64); + + /* ---------------- fld.s fd, rj, si12 ---------------- */ + printf("test fld.s: "); + TESTINST_LOAD_FRI("fld.s", u32, mem, 0); + printf("%#x ", u32); + TESTINST_LOAD_FRI("fld.s", u32, mem, 24); + printf("%#x\n", u32); + + /* ---------------- fld.d fd, rj, si12 ---------------- */ + printf("test fld.d: "); + TESTINST_LOAD_FRI("fld.d", u64, mem, 0); + printf("%#lx ", u64); + TESTINST_LOAD_FRI("fld.d", u64, mem, 24); + printf("%#lx\n", u64); + + /* ---------------- fldx.s fd, rj, rk ---------------- */ + printf("test fldx.s: "); + TESTINST_LOAD_FRR("fldx.s", u32, mem, 0); + printf("%#x ", u32); + TESTINST_LOAD_FRR("fldx.s", u32, mem, 24); + printf("%#x\n", u32); + + /* ---------------- fldx.d fd, rj, rk ---------------- */ + printf("test fldx.d: "); + TESTINST_LOAD_FRR("fldx.d", u64, mem, 0); + printf("%#lx ", u64); + TESTINST_LOAD_FRR("fldx.d", u64, mem, 24); + printf("%#lx\n", u64); + + show(); + + u8 = 0xfe; + s8 = (char)u8; + u16 = 0xfedc; + s16 = (short)u16; + u32 = 0xfedcba98; + s32 = (int)u32; + u64 = 0xfedcba9876543210; + s64 = (long)u64; + + /* ---------------- st.b rd, rj, si12 ---------------- */ + printf("test st.b\n"); + TESTINST_STORE_RRI("st.b", s8, mem, 0); + TESTINST_STORE_RRI("st.b", u8, mem, 1); + + /* ---------------- st.h rd, rj, si12 ---------------- */ + printf("test st.h\n"); + TESTINST_STORE_RRI("st.h", s16, mem, 2); + TESTINST_STORE_RRI("st.h", u16, mem, 4); + + /* ---------------- st.w rd, rj, si12 ---------------- */ + printf("test st.w\n"); + TESTINST_STORE_RRI("st.w", s32, mem, 8); + TESTINST_STORE_RRI("st.w", u32, mem, 12); + + /* ---------------- st.d rd, rj, si12 ---------------- */ + printf("test st.d\n"); + TESTINST_STORE_RRI("st.d", s64, mem, 16); + TESTINST_STORE_RRI("st.d", u64, mem, 24); + + /* ---------------- stx.b rd, rj, rk ---------------- */ + printf("test stx.b\n"); + TESTINST_STORE_RRR("stx.b", s8, mem, 32); + TESTINST_STORE_RRR("stx.b", u8, mem, 33); + + /* ---------------- stx.h rd, rj, rk ---------------- */ + printf("test stx.h\n"); + TESTINST_STORE_RRR("stx.h", s16, mem, 34); + TESTINST_STORE_RRR("stx.h", u16, mem, 36); + + /* ---------------- stx.w rd, rj, rk ---------------- */ + printf("test stx.w\n"); + TESTINST_STORE_RRR("stx.w", s32, mem, 40); + TESTINST_STORE_RRR("stx.w", u32, mem, 44); + + /* ---------------- stx.d rd, rj, rk ---------------- */ + printf("test stx.d\n"); + TESTINST_STORE_RRR("stx.d", s64, mem, 48); + TESTINST_STORE_RRR("stx.d", u64, mem, 56); + + /* ---------------- stptr.w rd, rj, si14 ---------------- */ + printf("test stptr.w\n"); + TESTINST_STORE_RRI("stptr.w", s64, mem, 64); + TESTINST_STORE_RRI("stptr.w", u64, mem, 68); + + /* ---------------- stptr.d rd, rj, si14 ---------------- */ + printf("test stptr.d\n"); + TESTINST_STORE_RRI("stptr.d", s64, mem, 72); + TESTINST_STORE_RRI("stptr.d", u64, mem, 80); + + /* ---------------- fst.s rd, rj, si12 ---------------- */ + printf("test fst.w\n"); + TESTINST_STORE_FRI("fst.s", u32, mem, 84); + TESTINST_STORE_FRI("fst.s", u32, mem, 88); + + /* ---------------- fst.d rd, rj, si12 ---------------- */ + printf("test fst.d\n"); + TESTINST_STORE_FRI("fst.d", u64, mem, 96); + TESTINST_STORE_FRI("fst.d", u64, mem, 104); + + /* ---------------- fstx.s rd, rj, rk ---------------- */ + printf("test fstx.w\n"); + TESTINST_STORE_FRR("fstx.s", u32, mem, 108); + TESTINST_STORE_FRR("fstx.s", u32, mem, 112); + + /* ---------------- fstx.d rd, rj, rk ---------------- */ + printf("test fstx.d\n"); + TESTINST_STORE_FRR("fstx.d", u64, mem, 120); + TESTINST_STORE_FRR("fstx.d", u64, mem, 128); + + show(); +} + +int main(void) +{ + test(); + return 0; +} diff --git a/none/tests/loongarch64/memory.stderr.exp b/none/tests/loongarch64/memory.stderr.exp new file mode 100644 index 0000000..e69de29 diff --git a/none/tests/loongarch64/memory.stdout.exp b/none/tests/loongarch64/memory.stdout.exp new file mode 100644 index 0000000..928961d --- /dev/null +++ b/none/tests/loongarch64/memory.stdout.exp @@ -0,0 +1,109 @@ +memory block: +0x0: 0x121f1e1f0000e680 +0x8: 0x0000000000010700 +0x10: 0x000000030000e7dc +0x18: 0xffffffff0000b0d0 +0x20: 0x232f2e2f2ab05fd0 +0x28: 0x242c2b2b0000b6a0 +0x30: 0x252a2e2b0000be80 +0x38: 0x262d2d2a0000de10 +0x40: 0x3f343f3e0000df20 +0x48: 0x3e353d3c2ab05fe0 +0x50: 0x363a3c3b0000dfd0 +0x58: 0x3b373b3a00010300 +0x60: 0x0000e680121f1e1f +0x68: 0x0001070000000000 +0x70: 0x0000e7dc00000003 +0x78: 0x0000b0d0ffffffff +0x80: 0x2ab05fd0232f2e2f +0x88: 0x0000b6a0242c2b2b +0x90: 0x0000be80252a2e2b +0x98: 0x0000de10262d2d2a +0xa0: 0x0000df203f343f3e +0xa8: 0x2ab05fe03e353d3c +0xb0: 0x0000dfd0363a3c3b +0xb8: 0x000103003b373b3a +test ld.b: -128 -48 +test ld.bu: 4294967248 4294967248 +test ld.h: -6528 -20272 +test ld.hu: 59008 45264 +test ld.w: 59008 45264 +test ld.wu: 59008 45264 +test ld.d: 1305795535453611648 -4294922032 1305795535453611648 18446744069414629584 +test ldx.b: -128 -48 +test ldx.bu: 4294967248 4294967248 +test ldx.h: -6528 -20272 +test ld.hu: 59008 45264 +test ldx.w: 59008 45264 +test ldx.wu: 59008 45264 +test ldx.d: 1305795535453611648 -4294922032 1305795535453611648 18446744069414629584 +test ldptr.w: 59008 45264 +test ldptr.d: 1305795535453611648 -4294922032 +test fld.s: 0xe680 0xb0d0 +test fld.d: 0x121f1e1f0000e680 0xffffffff0000b0d0 +test fldx.s: 0xe680 0xb0d0 +test fldx.d: 0x121f1e1f0000e680 0xffffffff0000b0d0 +memory block: +0x0: 0x121f1e1f0000e680 +0x8: 0x0000000000010700 +0x10: 0x000000030000e7dc +0x18: 0xffffffff0000b0d0 +0x20: 0x232f2e2f2ab05fd0 +0x28: 0x242c2b2b0000b6a0 +0x30: 0x252a2e2b0000be80 +0x38: 0x262d2d2a0000de10 +0x40: 0x3f343f3e0000df20 +0x48: 0x3e353d3c2ab05fe0 +0x50: 0x363a3c3b0000dfd0 +0x58: 0x3b373b3a00010300 +0x60: 0x0000e680121f1e1f +0x68: 0x0001070000000000 +0x70: 0x0000e7dc00000003 +0x78: 0x0000b0d0ffffffff +0x80: 0x2ab05fd0232f2e2f +0x88: 0x0000b6a0242c2b2b +0x90: 0x0000be80252a2e2b +0x98: 0x0000de10262d2d2a +0xa0: 0x0000df203f343f3e +0xa8: 0x2ab05fe03e353d3c +0xb0: 0x0000dfd0363a3c3b +0xb8: 0x000103003b373b3a +test st.b +test st.h +test st.w +test st.d +test stx.b +test stx.h +test stx.w +test stx.d +test stptr.w +test stptr.d +test fst.w +test fst.d +test fstx.w +test fstx.d +memory block: +0x0: 0x121ffedcfedcfefe +0x8: 0xfedcba98fedcba98 +0x10: 0xfedcba9876543210 +0x18: 0xfedcba9876543210 +0x20: 0x232ffedcfedcfefe +0x28: 0xfedcba98fedcba98 +0x30: 0xfedcba9876543210 +0x38: 0xfedcba9876543210 +0x40: 0x7654321076543210 +0x48: 0xfedcba9876543210 +0x50: 0xfedcba9876543210 +0x58: 0x3b373b3afedcba98 +0x60: 0xfedcba9876543210 +0x68: 0xfedcba9876543210 +0x70: 0x0000e7dcfedcba98 +0x78: 0xfedcba9876543210 +0x80: 0xfedcba9876543210 +0x88: 0x0000b6a0242c2b2b +0x90: 0x0000be80252a2e2b +0x98: 0x0000de10262d2d2a +0xa0: 0x0000df203f343f3e +0xa8: 0x2ab05fe03e353d3c +0xb0: 0x0000dfd0363a3c3b +0xb8: 0x000103003b373b3a diff --git a/none/tests/loongarch64/memory.vgtest b/none/tests/loongarch64/memory.vgtest new file mode 100644 index 0000000..be6895e --- /dev/null +++ b/none/tests/loongarch64/memory.vgtest @@ -0,0 +1,2 @@ +prog: memory +vgopts: -q diff --git a/none/tests/loongarch64/move.c b/none/tests/loongarch64/move.c new file mode 100644 index 0000000..3b7f46d --- /dev/null +++ b/none/tests/loongarch64/move.c @@ -0,0 +1,112 @@ +#include + +#define TESTINST_MOV(v1, v2, v3, v4, v5, v6, val) \ + { \ + unsigned long res1 = (unsigned long)v1; \ + unsigned long res2 = (unsigned long)v2; \ + unsigned long res3 = (unsigned long)v3; \ + unsigned long res4 = (unsigned long)v4; \ + unsigned long res5 = (unsigned long)v5; \ + unsigned long res6 = (unsigned long)v6; \ + __asm__ __volatile__( \ + "movgr2fr.w %0, %6 \n\t" \ + "movgr2fr.d %1, %6 \n\t" \ + "movgr2frh.w %2, %6 \n\t" \ + "movfr2gr.s %3, %7 \n\t" \ + "movfrh2gr.s %4, %7 \n\t" \ + "movfr2gr.d %5, %7 \n\t" \ + : "+f" (res1), "+f" (res2), "+f" (res3), \ + "+r" (res4), "+r" (res5), "+r" (res6) \ + : "r" (val), "f" (val) \ + : "memory"); \ + printf("movgr2fr.w ::\n"); \ + printf("input: %#018lx %#018lx\n", v1, val); \ + printf("output: %#018lx\n", res1); \ + printf("movgr2fr.d ::\n"); \ + printf("input: %#018lx %#018lx\n", v2, val); \ + printf("output: %#018lx\n", res2); \ + printf("movgr2frh.w ::\n"); \ + printf("input: %#018lx %#018lx\n", v3, val); \ + printf("output: %#018lx\n", res3); \ + printf("movfr2gr.s ::\n"); \ + printf("input: %#018lx %#018lx\n", v4, val); \ + printf("output: %#018lx\n", res4); \ + printf("movfrh2gr.s ::\n"); \ + printf("input: %#018lx %#018lx\n", v5, val); \ + printf("output: %#018lx\n", res5); \ + printf("movfr2gr.d ::\n"); \ + printf("input: %#018lx %#018lx\n", v6, val); \ + printf("output: %#018lx\n", res6); \ + } + +#define TESTINST_FSCR(fcsr, val) \ + { \ + unsigned long res; \ + __asm__ __volatile__( \ + "movgr2fcsr " fcsr ", %1 \n\t" \ + "movfcsr2gr %0, " fcsr " \n\t" \ + : "=r" (res) \ + : "r" (val) \ + : "memory"); \ + printf("movgr2fcsr movfcsr2gr ::\n"); \ + printf("input: %#018lx\n", val); \ + printf("output: %#018lx\n", res); \ + } + +#define TESTINST_CF(fcc, v1, v2, val) \ + { \ + unsigned long res1 = (unsigned long)v1; \ + unsigned long res2 = (unsigned long)v2; \ + __asm__ __volatile__( \ + "movfr2cf " fcc ", %2 \n\t" \ + "movcf2fr %0, " fcc " \n\t" \ + "movgr2cf " fcc ", %3 \n\t" \ + "movcf2gr %1, " fcc " \n\t" \ + : "+f" (res1), "+r" (res2) \ + : "f" (val), "r" (val) \ + : "memory"); \ + printf("movfr2cf movcf2fr ::\n"); \ + printf("input: %#018lx %#018lx\n", v1, val); \ + printf("output: %lx\n", res1); \ + printf("movgr2cf movcf2gr ::\n"); \ + printf("input: %#018lx %#018lx\n", v2, val); \ + printf("output: %lx\n", res2); \ + } + +void test(void) +{ + TESTINST_MOV(0x1234123412341234UL, 0x5678567856785678UL, 0x9abc9abc9abc9abcUL, 0xdef0def0def0def0UL, 0x2468246824682468UL, 0x3579357935793579UL, 0x0123456789abcdefUL); + TESTINST_MOV(0x1234123412341234UL, 0x5678567856785678UL, 0x9abc9abc9abc9abcUL, 0xdef0def0def0def0UL, 0x2468246824682468UL, 0x3579357935793579UL, 0xfedcba9876543210UL); + + TESTINST_FSCR("$r0", 0x0123456789abcdefUL); + TESTINST_FSCR("$r0", 0xfedcba9876543210UL); + TESTINST_FSCR("$r1", 0x0123456789abcdefUL); + TESTINST_FSCR("$r1", 0xfedcba9876543210UL); + TESTINST_FSCR("$r2", 0x0123456789abcdefUL); + TESTINST_FSCR("$r2", 0xfedcba9876543210UL); + TESTINST_FSCR("$r3", 0x0123456789abcdefUL); + TESTINST_FSCR("$r3", 0xfedcba9876543210UL); + + TESTINST_CF("$fcc0", 0x1234123412341234UL, 0x5678567856785678UL, 0xffffffffffffffffUL); + TESTINST_CF("$fcc0", 0x1234123412341234UL, 0x5678567856785678UL, 0xdef0def0def0def0UL); + TESTINST_CF("$fcc1", 0x1234123412341234UL, 0x5678567856785678UL, 0xffffffffffffffffUL); + TESTINST_CF("$fcc1", 0x1234123412341234UL, 0x5678567856785678UL, 0xdef0def0def0def0UL); + TESTINST_CF("$fcc2", 0x1234123412341234UL, 0x5678567856785678UL, 0xffffffffffffffffUL); + TESTINST_CF("$fcc2", 0x1234123412341234UL, 0x5678567856785678UL, 0xdef0def0def0def0UL); + TESTINST_CF("$fcc3", 0x1234123412341234UL, 0x5678567856785678UL, 0xffffffffffffffffUL); + TESTINST_CF("$fcc3", 0x1234123412341234UL, 0x5678567856785678UL, 0xdef0def0def0def0UL); + TESTINST_CF("$fcc4", 0x1234123412341234UL, 0x5678567856785678UL, 0xffffffffffffffffUL); + TESTINST_CF("$fcc4", 0x1234123412341234UL, 0x5678567856785678UL, 0xdef0def0def0def0UL); + TESTINST_CF("$fcc5", 0x1234123412341234UL, 0x5678567856785678UL, 0xffffffffffffffffUL); + TESTINST_CF("$fcc5", 0x1234123412341234UL, 0x5678567856785678UL, 0xdef0def0def0def0UL); + TESTINST_CF("$fcc6", 0x1234123412341234UL, 0x5678567856785678UL, 0xffffffffffffffffUL); + TESTINST_CF("$fcc6", 0x1234123412341234UL, 0x5678567856785678UL, 0xdef0def0def0def0UL); + TESTINST_CF("$fcc7", 0x1234123412341234UL, 0x5678567856785678UL, 0xffffffffffffffffUL); + TESTINST_CF("$fcc7", 0x1234123412341234UL, 0x5678567856785678UL, 0xdef0def0def0def0UL); +} + +int main(void) +{ + test(); + return 0; +} diff --git a/none/tests/loongarch64/move.stderr.exp b/none/tests/loongarch64/move.stderr.exp new file mode 100644 index 0000000..e69de29 diff --git a/none/tests/loongarch64/move.stdout.exp b/none/tests/loongarch64/move.stdout.exp new file mode 100644 index 0000000..12baf38 --- /dev/null +++ b/none/tests/loongarch64/move.stdout.exp @@ -0,0 +1,156 @@ +movgr2fr.w :: +input: 0x1234123412341234 0x0123456789abcdef +output: 0x0123456789abcdef +movgr2fr.d :: +input: 0x5678567856785678 0x0123456789abcdef +output: 0x0123456789abcdef +movgr2frh.w :: +input: 0x9abc9abc9abc9abc 0x0123456789abcdef +output: 0x89abcdef9abc9abc +movfr2gr.s :: +input: 0xdef0def0def0def0 0x0123456789abcdef +output: 0xffffffff89abcdef +movfrh2gr.s :: +input: 0x2468246824682468 0x0123456789abcdef +output: 0x0000000001234567 +movfr2gr.d :: +input: 0x3579357935793579 0x0123456789abcdef +output: 0x0123456789abcdef +movgr2fr.w :: +input: 0x1234123412341234 0xfedcba9876543210 +output: 0xfedcba9876543210 +movgr2fr.d :: +input: 0x5678567856785678 0xfedcba9876543210 +output: 0xfedcba9876543210 +movgr2frh.w :: +input: 0x9abc9abc9abc9abc 0xfedcba9876543210 +output: 0x765432109abc9abc +movfr2gr.s :: +input: 0xdef0def0def0def0 0xfedcba9876543210 +output: 0x0000000076543210 +movfrh2gr.s :: +input: 0x2468246824682468 0xfedcba9876543210 +output: 0xfffffffffedcba98 +movfr2gr.d :: +input: 0x3579357935793579 0xfedcba9876543210 +output: 0xfedcba9876543210 +movgr2fcsr movfcsr2gr :: +input: 0x0123456789abcdef +output: 0x00000000090b01cf +movgr2fcsr movfcsr2gr :: +input: 0xfedcba9876543210 +output: 0x0000000016140210 +movgr2fcsr movfcsr2gr :: +input: 0x0123456789abcdef +output: 0x000000000000008f +movgr2fcsr movfcsr2gr :: +input: 0xfedcba9876543210 +output: 0x0000000000000010 +movgr2fcsr movfcsr2gr :: +input: 0x0123456789abcdef +output: 0x00000000090b0000 +movgr2fcsr movfcsr2gr :: +input: 0xfedcba9876543210 +output: 0x0000000016140000 +movgr2fcsr movfcsr2gr :: +input: 0x0123456789abcdef +output: 0x0000000000000100 +movgr2fcsr movfcsr2gr :: +input: 0xfedcba9876543210 +output: 0x0000000000000200 +movfr2cf movcf2fr :: +input: 0x1234123412341234 0xffffffffffffffff +output: 1 +movgr2cf movcf2gr :: +input: 0x5678567856785678 0xffffffffffffffff +output: 1 +movfr2cf movcf2fr :: +input: 0x1234123412341234 0xdef0def0def0def0 +output: 0 +movgr2cf movcf2gr :: +input: 0x5678567856785678 0xdef0def0def0def0 +output: 0 +movfr2cf movcf2fr :: +input: 0x1234123412341234 0xffffffffffffffff +output: 1 +movgr2cf movcf2gr :: +input: 0x5678567856785678 0xffffffffffffffff +output: 1 +movfr2cf movcf2fr :: +input: 0x1234123412341234 0xdef0def0def0def0 +output: 0 +movgr2cf movcf2gr :: +input: 0x5678567856785678 0xdef0def0def0def0 +output: 0 +movfr2cf movcf2fr :: +input: 0x1234123412341234 0xffffffffffffffff +output: 1 +movgr2cf movcf2gr :: +input: 0x5678567856785678 0xffffffffffffffff +output: 1 +movfr2cf movcf2fr :: +input: 0x1234123412341234 0xdef0def0def0def0 +output: 0 +movgr2cf movcf2gr :: +input: 0x5678567856785678 0xdef0def0def0def0 +output: 0 +movfr2cf movcf2fr :: +input: 0x1234123412341234 0xffffffffffffffff +output: 1 +movgr2cf movcf2gr :: +input: 0x5678567856785678 0xffffffffffffffff +output: 1 +movfr2cf movcf2fr :: +input: 0x1234123412341234 0xdef0def0def0def0 +output: 0 +movgr2cf movcf2gr :: +input: 0x5678567856785678 0xdef0def0def0def0 +output: 0 +movfr2cf movcf2fr :: +input: 0x1234123412341234 0xffffffffffffffff +output: 1 +movgr2cf movcf2gr :: +input: 0x5678567856785678 0xffffffffffffffff +output: 1 +movfr2cf movcf2fr :: +input: 0x1234123412341234 0xdef0def0def0def0 +output: 0 +movgr2cf movcf2gr :: +input: 0x5678567856785678 0xdef0def0def0def0 +output: 0 +movfr2cf movcf2fr :: +input: 0x1234123412341234 0xffffffffffffffff +output: 1 +movgr2cf movcf2gr :: +input: 0x5678567856785678 0xffffffffffffffff +output: 1 +movfr2cf movcf2fr :: +input: 0x1234123412341234 0xdef0def0def0def0 +output: 0 +movgr2cf movcf2gr :: +input: 0x5678567856785678 0xdef0def0def0def0 +output: 0 +movfr2cf movcf2fr :: +input: 0x1234123412341234 0xffffffffffffffff +output: 1 +movgr2cf movcf2gr :: +input: 0x5678567856785678 0xffffffffffffffff +output: 1 +movfr2cf movcf2fr :: +input: 0x1234123412341234 0xdef0def0def0def0 +output: 0 +movgr2cf movcf2gr :: +input: 0x5678567856785678 0xdef0def0def0def0 +output: 0 +movfr2cf movcf2fr :: +input: 0x1234123412341234 0xffffffffffffffff +output: 1 +movgr2cf movcf2gr :: +input: 0x5678567856785678 0xffffffffffffffff +output: 1 +movfr2cf movcf2fr :: +input: 0x1234123412341234 0xdef0def0def0def0 +output: 0 +movgr2cf movcf2gr :: +input: 0x5678567856785678 0xdef0def0def0def0 +output: 0 diff --git a/none/tests/loongarch64/move.vgtest b/none/tests/loongarch64/move.vgtest new file mode 100644 index 0000000..358d44b --- /dev/null +++ b/none/tests/loongarch64/move.vgtest @@ -0,0 +1,3 @@ +prereq: ../../../tests/loongarch64_features fpu +prog: move +vgopts: -q diff --git a/none/tests/loongarch64/pc.c b/none/tests/loongarch64/pc.c new file mode 100644 index 0000000..a493846 --- /dev/null +++ b/none/tests/loongarch64/pc.c @@ -0,0 +1,66 @@ +#include +#include + +#define TESTINST_RI(insn, imm, offs, clear) \ + { \ + unsigned long res, exp; \ + __asm__ __volatile__( \ + " la.local $t0, 1f \n\t" \ + " jirl %0, $t0, 0 \n\t" \ + "1: \n\t" \ + insn " %1," #imm " \n\t" \ + : "=r" (exp), "=r" (res) \ + : \ + : "$t0", "memory"); \ + printf("test %s\n", insn); \ + exp += (long)imm << 40 >> (40 - offs); \ + if (clear) \ + exp &= 0xfffffffffffff000UL; \ + if (res != exp) \ + printf("res: %#lx, exp: %#lx\n", res, exp); \ + } + +void test(void) +{ + /* ---------------- pcaddi rd, si20 ---------------- */ + TESTINST_RI("pcaddi", 0, 2, false); + TESTINST_RI("pcaddi", 1, 2, false); + TESTINST_RI("pcaddi", 100, 2, false); + TESTINST_RI("pcaddi", 12345, 2, false); + TESTINST_RI("pcaddi", -12345, 2, false); + TESTINST_RI("pcaddi", 524287, 2, false); + TESTINST_RI("pcaddi", -524288, 2, false); + + /* ---------------- pcaddu12i rd, si20 ---------------- */ + TESTINST_RI("pcaddu12i", 0, 12, false); + TESTINST_RI("pcaddu12i", 1, 12, false); + TESTINST_RI("pcaddu12i", 100, 12, false); + TESTINST_RI("pcaddu12i", 12345, 12, false); + TESTINST_RI("pcaddu12i", -12345, 12, false); + TESTINST_RI("pcaddu12i", 524287, 12, false); + TESTINST_RI("pcaddu12i", -524288, 12, false); + + /* ---------------- pcaddu18i rd, si20 ---------------- */ + TESTINST_RI("pcaddu18i", 0, 18, false); + TESTINST_RI("pcaddu18i", 1, 18, false); + TESTINST_RI("pcaddu18i", 100, 18, false); + TESTINST_RI("pcaddu18i", 12345, 18, false); + TESTINST_RI("pcaddu18i", -12345, 18, false); + TESTINST_RI("pcaddu18i", 524287, 18, false); + TESTINST_RI("pcaddu18i", -524288, 18, false); + + /* ---------------- pcalau12i rd, si20 ---------------- */ + TESTINST_RI("pcalau12i", 0, 12, true); + TESTINST_RI("pcalau12i", 1, 12, true); + TESTINST_RI("pcalau12i", 100, 12, true); + TESTINST_RI("pcalau12i", 12345, 12, true); + TESTINST_RI("pcalau12i", -12345, 12, true); + TESTINST_RI("pcalau12i", 524287, 12, true); + TESTINST_RI("pcalau12i", -524288, 12, true); +} + +int main(void) +{ + test(); + return 0; +} diff --git a/none/tests/loongarch64/pc.stderr.exp b/none/tests/loongarch64/pc.stderr.exp new file mode 100644 index 0000000..e69de29 diff --git a/none/tests/loongarch64/pc.stdout.exp b/none/tests/loongarch64/pc.stdout.exp new file mode 100644 index 0000000..422ea40 --- /dev/null +++ b/none/tests/loongarch64/pc.stdout.exp @@ -0,0 +1,28 @@ +test pcaddi +test pcaddi +test pcaddi +test pcaddi +test pcaddi +test pcaddi +test pcaddi +test pcaddu12i +test pcaddu12i +test pcaddu12i +test pcaddu12i +test pcaddu12i +test pcaddu12i +test pcaddu12i +test pcaddu18i +test pcaddu18i +test pcaddu18i +test pcaddu18i +test pcaddu18i +test pcaddu18i +test pcaddu18i +test pcalau12i +test pcalau12i +test pcalau12i +test pcalau12i +test pcalau12i +test pcalau12i +test pcalau12i diff --git a/none/tests/loongarch64/pc.vgtest b/none/tests/loongarch64/pc.vgtest new file mode 100644 index 0000000..468226d --- /dev/null +++ b/none/tests/loongarch64/pc.vgtest @@ -0,0 +1,2 @@ +prog: pc +vgopts: -q diff --git a/none/tests/loongarch64/special.c b/none/tests/loongarch64/special.c new file mode 100644 index 0000000..e1e8c94 --- /dev/null +++ b/none/tests/loongarch64/special.c @@ -0,0 +1,112 @@ +#include + +#define TESTINST_HRI(insn, hint, addr, offs) \ + { \ + __asm__ __volatile__( \ + insn " " #hint ", %0, " #offs " \n\t" \ + : \ + : "r" (addr) \ + : "memory" \ + ); \ + printf("test %s\n", insn); \ + } + +#define TESTINST_HRR(insn, hint, addr, offs) \ + { \ + __asm__ __volatile__( \ + insn " %0, %1, \n\t" \ + : \ + : "r" (addr), "r" (offs) \ + : "memory" \ + ); \ + printf("test %s\n", insn); \ + } + +#define TESTINST_CODE(insn, code) \ + { \ + __asm__ __volatile__( \ + insn " " #code " \n\t" \ + : \ + : \ + : "memory" \ + ); \ + printf("test %s\n", insn); \ + } + +#define TESTINST_RR(insn, id) \ + { \ + unsigned long res = 0; \ + __asm__ __volatile__( \ + insn " %0, %1 \n\t" \ + : "+r" (res) \ + : "r" (id) \ + : "memory" \ + ); \ + printf("test %s\n", insn); \ + printf("res: %ld\n", res); \ + } + +unsigned long mem[8]; + +void test(void) +{ + /* ---------------- preld hint, rj, si12 ---------------- */ + TESTINST_HRI("preld", 0, mem, 0); + TESTINST_HRI("preld", 1, mem, 1); + TESTINST_HRI("preld", 2, mem, 2); + TESTINST_HRI("preld", 3, mem, 3); + TESTINST_HRI("preld", 4, mem, 4); + TESTINST_HRI("preld", 5, mem, 5); + TESTINST_HRI("preld", 6, mem, 6); + TESTINST_HRI("preld", 7, mem, 7); + TESTINST_HRI("preld", 8, mem, 8); + TESTINST_HRI("preld", 9, mem, 9); + + /* ---------------- preldx hint, rj, rk ---------------- */ + TESTINST_HRI("preld", 31, mem, 10); + TESTINST_HRI("preld", 30, mem, 12); + TESTINST_HRI("preld", 29, mem, 14); + TESTINST_HRI("preld", 28, mem, 16); + TESTINST_HRI("preld", 27, mem, 18); + TESTINST_HRI("preld", 26, mem, 20); + TESTINST_HRI("preld", 25, mem, 22); + TESTINST_HRI("preld", 24, mem, 24); + TESTINST_HRI("preld", 23, mem, 26); + TESTINST_HRI("preld", 22, mem, 28); + + /* ---------------- dbar code ---------------- */ + TESTINST_CODE("dbar", 0); + TESTINST_CODE("dbar", 2); + TESTINST_CODE("dbar", 4); + TESTINST_CODE("dbar", 6); + TESTINST_CODE("dbar", 8); + + /* ---------------- ibar code ---------------- */ + TESTINST_CODE("ibar", 9); + TESTINST_CODE("ibar", 7); + TESTINST_CODE("ibar", 5); + TESTINST_CODE("ibar", 3); + TESTINST_CODE("ibar", 1); + + /* ---------------- rdtimel.w rd, rj ---------------- */ + TESTINST_RR("rdtimel.w", 0); + TESTINST_RR("rdtimel.w", 1); + TESTINST_RR("rdtimel.w", 2); + + /* ---------------- rdtimeh.w rd, rj ---------------- */ + TESTINST_RR("rdtimeh.w", 0); + TESTINST_RR("rdtimeh.w", 1); + TESTINST_RR("rdtimeh.w", 2); + + + /* ---------------- rdtime.d rd, rj ---------------- */ + TESTINST_RR("rdtime.d", 0); + TESTINST_RR("rdtime.d", 1); + TESTINST_RR("rdtime.d", 2); +} + +int main(void) +{ + test(); + return 0; +} diff --git a/none/tests/loongarch64/special.stderr.exp b/none/tests/loongarch64/special.stderr.exp new file mode 100644 index 0000000..e69de29 diff --git a/none/tests/loongarch64/special.stdout.exp b/none/tests/loongarch64/special.stdout.exp new file mode 100644 index 0000000..7bd523e --- /dev/null +++ b/none/tests/loongarch64/special.stdout.exp @@ -0,0 +1,48 @@ +test preld +test preld +test preld +test preld +test preld +test preld +test preld +test preld +test preld +test preld +test preld +test preld +test preld +test preld +test preld +test preld +test preld +test preld +test preld +test preld +test dbar +test dbar +test dbar +test dbar +test dbar +test ibar +test ibar +test ibar +test ibar +test ibar +test rdtimel.w +res: 0 +test rdtimel.w +res: 0 +test rdtimel.w +res: 0 +test rdtimeh.w +res: 0 +test rdtimeh.w +res: 0 +test rdtimeh.w +res: 0 +test rdtime.d +res: 0 +test rdtime.d +res: 0 +test rdtime.d +res: 0 diff --git a/none/tests/loongarch64/special.vgtest b/none/tests/loongarch64/special.vgtest new file mode 100644 index 0000000..b2f2ae9 --- /dev/null +++ b/none/tests/loongarch64/special.vgtest @@ -0,0 +1,2 @@ +prog: special +vgopts: -q diff --git a/none/tests/mips32/Makefile.in b/none/tests/mips32/Makefile.in index fb829ca..d06aa79 100644 --- a/none/tests/mips32/Makefile.in +++ b/none/tests/mips32/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -368,8 +368,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -392,6 +390,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -405,6 +405,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -550,6 +551,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -689,6 +691,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -734,6 +742,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -1215,7 +1224,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/mips64/Makefile.in b/none/tests/mips64/Makefile.in index ae75e7d..b9dc70d 100644 --- a/none/tests/mips64/Makefile.in +++ b/none/tests/mips64/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -439,8 +439,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -463,6 +461,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -476,6 +476,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -621,6 +622,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -760,6 +762,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -805,6 +813,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -1459,7 +1468,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/nanomips/Makefile.in b/none/tests/nanomips/Makefile.in index d08d56c..dc99b29 100644 --- a/none/tests/nanomips/Makefile.in +++ b/none/tests/nanomips/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -233,8 +233,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -257,6 +255,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -270,6 +270,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -415,6 +416,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -554,6 +556,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -599,6 +607,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -879,7 +888,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/ppc32/Makefile.in b/none/tests/ppc32/Makefile.in index 39c2b2b..c5b896a 100644 --- a/none/tests/ppc32/Makefile.in +++ b/none/tests/ppc32/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -368,8 +368,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -392,6 +390,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -405,6 +405,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -550,6 +551,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -689,6 +691,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -734,6 +742,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -1361,7 +1370,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/ppc64/Makefile.in b/none/tests/ppc64/Makefile.in index 69bc94e..9851cad 100644 --- a/none/tests/ppc64/Makefile.in +++ b/none/tests/ppc64/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -349,8 +349,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -373,6 +371,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -386,6 +386,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -531,6 +532,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -670,6 +672,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -715,6 +723,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -1335,7 +1344,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/s390x/Makefile.in b/none/tests/s390x/Makefile.in index eec470c..0f3bca3 100644 --- a/none/tests/s390x/Makefile.in +++ b/none/tests/s390x/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -771,8 +771,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -795,6 +793,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -808,6 +808,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -953,6 +954,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -1092,6 +1094,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -1137,6 +1145,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -2172,7 +2181,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/scripts/Makefile.in b/none/tests/scripts/Makefile.in index f57abea..12f393c 100644 --- a/none/tests/scripts/Makefile.in +++ b/none/tests/scripts/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -177,6 +177,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -190,6 +192,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -335,6 +338,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -474,6 +478,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -519,6 +529,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -609,7 +620,6 @@ ctags CTAGS: cscope cscopelist: - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/solaris/Makefile.in b/none/tests/solaris/Makefile.in index ff75dbd..e585cb7 100644 --- a/none/tests/solaris/Makefile.in +++ b/none/tests/solaris/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -299,8 +299,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -323,6 +321,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -336,6 +336,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -481,6 +482,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -620,6 +622,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -665,6 +673,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -951,7 +960,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/x86-darwin/Makefile.in b/none/tests/x86-darwin/Makefile.in index c17dd46..9a807d2 100644 --- a/none/tests/x86-darwin/Makefile.in +++ b/none/tests/x86-darwin/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -200,8 +200,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -224,6 +222,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -237,6 +237,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -382,6 +383,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -521,6 +523,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -566,6 +574,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -729,7 +738,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/x86-linux/Makefile.in b/none/tests/x86-linux/Makefile.in index 01f2612..11f5644 100644 --- a/none/tests/x86-linux/Makefile.in +++ b/none/tests/x86-linux/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -214,8 +214,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -238,6 +236,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -251,6 +251,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -396,6 +397,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -535,6 +537,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -580,6 +588,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -761,7 +770,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/x86-solaris/Makefile.in b/none/tests/x86-solaris/Makefile.in index 231a346..0c5bf16 100644 --- a/none/tests/x86-solaris/Makefile.in +++ b/none/tests/x86-solaris/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -208,8 +208,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -232,6 +230,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -245,6 +245,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -390,6 +391,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -529,6 +531,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -574,6 +582,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -746,7 +755,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/none/tests/x86/Makefile.in b/none/tests/x86/Makefile.in index fd2d2ff..15ebf2e 100644 --- a/none/tests/x86/Makefile.in +++ b/none/tests/x86/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -441,8 +441,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -465,6 +463,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -478,6 +478,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -623,6 +624,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -762,6 +764,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -807,6 +815,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -1341,7 +1350,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/perf/Makefile.in b/perf/Makefile.in index 2eeadfd..f154372 100644 --- a/perf/Makefile.in +++ b/perf/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -238,8 +238,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/vg_perf.in \ $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp \ @@ -264,6 +262,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -277,6 +277,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -422,6 +423,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -561,6 +563,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -606,6 +614,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -865,7 +874,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/shared/Makefile.in b/shared/Makefile.in index bfe7bb2..e81ade4 100644 --- a/shared/Makefile.in +++ b/shared/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -138,6 +138,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -151,6 +153,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -296,6 +299,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -346,7 +350,6 @@ ctags CTAGS: cscope cscopelist: - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/solaris/Makefile.in b/solaris/Makefile.in index ad7d084..7e6c84e 100644 --- a/solaris/Makefile.in +++ b/solaris/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -144,6 +144,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -157,6 +159,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -302,6 +305,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -354,7 +358,6 @@ ctags CTAGS: cscope cscopelist: - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/tests/Makefile.am b/tests/Makefile.am index 7233626..7478970 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -51,7 +51,8 @@ check_PROGRAMS = \ mips_features \ power_insn_available \ is_ppc64_BE \ - min_power_isa + min_power_isa \ + loongarch64_features AM_CFLAGS += $(AM_FLAG_M3264_PRI) AM_CXXFLAGS += $(AM_FLAG_M3264_PRI) diff --git a/tests/Makefile.in b/tests/Makefile.in index c623887..bd47701 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -128,7 +128,7 @@ check_PROGRAMS = arch_test$(EXEEXT) os_test$(EXEEXT) \ libc_test$(EXEEXT) true$(EXEEXT) x86_amd64_features$(EXEEXT) \ s390x_features$(EXEEXT) mips_features$(EXEEXT) \ power_insn_available$(EXEEXT) is_ppc64_BE$(EXEEXT) \ - min_power_isa$(EXEEXT) + min_power_isa$(EXEEXT) loongarch64_features$(EXEEXT) subdir = tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac @@ -149,6 +149,9 @@ is_ppc64_BE_LDADD = $(LDADD) libc_test_SOURCES = libc_test.c libc_test_OBJECTS = libc_test.$(OBJEXT) libc_test_LDADD = $(LDADD) +loongarch64_features_SOURCES = loongarch64_features.c +loongarch64_features_OBJECTS = loongarch64_features.$(OBJEXT) +loongarch64_features_LDADD = $(LDADD) min_power_isa_SOURCES = min_power_isa.c min_power_isa_OBJECTS = min_power_isa-min_power_isa.$(OBJEXT) min_power_isa_LDADD = $(LDADD) @@ -193,6 +196,7 @@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/arch_test.Po \ ./$(DEPDIR)/is_ppc64_BE.Po ./$(DEPDIR)/libc_test.Po \ + ./$(DEPDIR)/loongarch64_features.Po \ ./$(DEPDIR)/min_power_isa-min_power_isa.Po \ ./$(DEPDIR)/mips_features.Po ./$(DEPDIR)/os_test.Po \ ./$(DEPDIR)/power_insn_available.Po \ @@ -215,12 +219,14 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = -SOURCES = arch_test.c is_ppc64_BE.c libc_test.c min_power_isa.c \ - mips_features.c os_test.c power_insn_available.c \ - s390x_features.c true.c x86_amd64_features.c -DIST_SOURCES = arch_test.c is_ppc64_BE.c libc_test.c min_power_isa.c \ - mips_features.c os_test.c power_insn_available.c \ - s390x_features.c true.c x86_amd64_features.c +SOURCES = arch_test.c is_ppc64_BE.c libc_test.c loongarch64_features.c \ + min_power_isa.c mips_features.c os_test.c \ + power_insn_available.c s390x_features.c true.c \ + x86_amd64_features.c +DIST_SOURCES = arch_test.c is_ppc64_BE.c libc_test.c \ + loongarch64_features.c min_power_isa.c mips_features.c \ + os_test.c power_insn_available.c s390x_features.c true.c \ + x86_amd64_features.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -244,8 +250,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/vg_regtest.in \ $(top_srcdir)/Makefile.all.am \ $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/depcomp @@ -269,6 +273,8 @@ CFLAGS = @CFLAGS@ CFLAGS_MPI = @CFLAGS_MPI@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ @@ -282,6 +288,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLAG_FALIGNED_NEW = @FLAG_FALIGNED_NEW@ FLAG_FINLINE_FUNCTIONS = @FLAG_FINLINE_FUNCTIONS@ @@ -427,6 +434,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -566,6 +574,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ $(AM_CFLAGS_PSO_BASE) AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) +AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ + $(AM_CFLAGS_PSO_BASE) + +AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer \ @@ -611,6 +625,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ @@ -715,6 +730,10 @@ libc_test$(EXEEXT): $(libc_test_OBJECTS) $(libc_test_DEPENDENCIES) $(EXTRA_libc_ @rm -f libc_test$(EXEEXT) $(AM_V_CCLD)$(LINK) $(libc_test_OBJECTS) $(libc_test_LDADD) $(LIBS) +loongarch64_features$(EXEEXT): $(loongarch64_features_OBJECTS) $(loongarch64_features_DEPENDENCIES) $(EXTRA_loongarch64_features_DEPENDENCIES) + @rm -f loongarch64_features$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(loongarch64_features_OBJECTS) $(loongarch64_features_LDADD) $(LIBS) + min_power_isa$(EXEEXT): $(min_power_isa_OBJECTS) $(min_power_isa_DEPENDENCIES) $(EXTRA_min_power_isa_DEPENDENCIES) @rm -f min_power_isa$(EXEEXT) $(AM_V_CCLD)$(min_power_isa_LINK) $(min_power_isa_OBJECTS) $(min_power_isa_LDADD) $(LIBS) @@ -752,6 +771,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arch_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_ppc64_BE.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libc_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loongarch64_features.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/min_power_isa-min_power_isa.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mips_features.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/os_test.Po@am__quote@ # am--include-marker @@ -861,7 +881,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am @@ -939,6 +958,7 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/arch_test.Po -rm -f ./$(DEPDIR)/is_ppc64_BE.Po -rm -f ./$(DEPDIR)/libc_test.Po + -rm -f ./$(DEPDIR)/loongarch64_features.Po -rm -f ./$(DEPDIR)/min_power_isa-min_power_isa.Po -rm -f ./$(DEPDIR)/mips_features.Po -rm -f ./$(DEPDIR)/os_test.Po @@ -994,6 +1014,7 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/arch_test.Po -rm -f ./$(DEPDIR)/is_ppc64_BE.Po -rm -f ./$(DEPDIR)/libc_test.Po + -rm -f ./$(DEPDIR)/loongarch64_features.Po -rm -f ./$(DEPDIR)/min_power_isa-min_power_isa.Po -rm -f ./$(DEPDIR)/mips_features.Po -rm -f ./$(DEPDIR)/os_test.Po diff --git a/tests/arch_test.c b/tests/arch_test.c index f132ea3..a3fda27 100644 --- a/tests/arch_test.c +++ b/tests/arch_test.c @@ -34,6 +34,7 @@ char* all_archs[] = { "mips32", "mips64", "nanomips", + "loongarch64", NULL }; @@ -79,6 +80,10 @@ static Bool go(char* arch) #elif defined(VGP_nanomips_linux) if ( 0 == strcmp( arch, "nanomips" ) ) return True; + +#elif defined(VGP_loongarch64_linux) + if ( 0 == strcmp( arch, "loongarch64" ) ) return True; + #else # error Unknown platform #endif // VGP_* diff --git a/tests/loongarch64_features.c b/tests/loongarch64_features.c new file mode 100644 index 0000000..45ba2d1 --- /dev/null +++ b/tests/loongarch64_features.c @@ -0,0 +1,81 @@ +#include +#include +#include + +// This file determines loongarch64 features a processor supports. +// For now, we only support loongarch64-linux. +// +// We return: +// - 0 if the machine has the asked-for feature. +// - 1 if the machine doesn't have the asked-for feature. +// - 2 if the asked-for feature isn't recognised (this will always be the case +// for any feature if run on a non-loongarch64 machine). +// - 3 if there was a usage error (it also prints an error message). +#define FEATURE_PRESENT 0 +#define FEATURE_NOT_PRESENT 1 +#define UNRECOGNISED_FEATURE 2 +#define USAGE_ERROR 3 + +#if defined(VGA_loongarch64) + +static int go(const char* feature_name) +{ + int i, len, found; + FILE* fp; + char buf[256]; + const char* features[] = { + "cpucfg", "lam", "ual", "fpu", + "lsx", "lasx", "complex", "crypto", + "lvz", "lbt_x86", "lbt_arm", "lbt_mips" + }; + + found = 0; + len = sizeof(features) / sizeof(features[0]); + for (i = 0; i < len; i++) { + if (strcmp(feature_name, features[i]) == 0) { + found = 1; + break; + } + } + + if (!found) + return UNRECOGNISED_FEATURE; + + fp = fopen("/proc/cpuinfo", "r"); + if(fp == NULL) + return UNRECOGNISED_FEATURE; + + while (fgets(buf, sizeof(buf), fp) != NULL) { + if (strstr(buf, feature_name) != NULL) { + fclose(fp); + return FEATURE_PRESENT; + } + } + + fclose(fp); + return FEATURE_NOT_PRESENT; +} + +#else + +static int go(const char* feature_name) +{ + // Feature not recognised (non-loongarch64 machine!) + return UNRECOGNISED_FEATURE; +} + +#endif // defined(VGA_loongarch64) + + +//--------------------------------------------------------------------------- +// main +//--------------------------------------------------------------------------- +int main(int argc, char **argv) +{ + if (argc != 2) { + fprintf(stderr, "usage: loongarch64_features \n"); + exit(USAGE_ERROR); + } + + return go(argv[1]); +} diff --git a/tests/platform_test b/tests/platform_test index 376f62e..bd926fd 100644 --- a/tests/platform_test +++ b/tests/platform_test @@ -14,6 +14,7 @@ all_platforms= all_platforms="$all_platforms x86-linux amd64-linux ppc32-linux ppc64-linux" all_platforms="$all_platforms arm-linux arm64-linux" all_platforms="$all_platforms s390x-linux mips32-linux mips64-linux" +all_platforms="$all_platforms loongarch64-linux" all_platforms="$all_platforms x86-darwin amd64-darwin" all_platforms="$all_platforms x86-solaris amd64-solaris" -- 2.33.0