ffi 1.16.2 → 1.17.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +36 -0
- data/Gemfile +9 -2
- data/README.md +2 -2
- data/Rakefile +17 -5
- data/ext/ffi_c/AbstractMemory.c +42 -40
- data/ext/ffi_c/ArrayType.c +2 -2
- data/ext/ffi_c/Buffer.c +4 -4
- data/ext/ffi_c/Call.c +18 -9
- data/ext/ffi_c/Call.h +3 -2
- data/ext/ffi_c/DynamicLibrary.c +2 -2
- data/ext/ffi_c/Function.c +4 -2
- data/ext/ffi_c/FunctionInfo.c +4 -2
- data/ext/ffi_c/LastError.c +4 -4
- data/ext/ffi_c/MemoryPointer.c +2 -2
- data/ext/ffi_c/Pointer.c +14 -11
- data/ext/ffi_c/Struct.c +18 -7
- data/ext/ffi_c/StructLayout.c +6 -6
- data/ext/ffi_c/Type.c +17 -16
- data/ext/ffi_c/Types.c +7 -1
- data/ext/ffi_c/Types.h +0 -1
- data/ext/ffi_c/Variadic.c +5 -2
- data/ext/ffi_c/libffi/.allow-ai-service +0 -0
- data/ext/ffi_c/libffi/.github/workflows/build.yml +34 -15
- data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +2 -1
- data/ext/ffi_c/libffi/LICENSE +1 -1
- data/ext/ffi_c/libffi/README.md +10 -5
- data/ext/ffi_c/libffi/compile +9 -8
- data/ext/ffi_c/libffi/configure +15 -15
- data/ext/ffi_c/libffi/configure.ac +2 -2
- data/ext/ffi_c/libffi/configure.host +1 -1
- data/ext/ffi_c/libffi/doc/libffi.texi +1 -1
- data/ext/ffi_c/libffi/doc/version.texi +4 -4
- data/ext/ffi_c/libffi/include/ffi.h.in +2 -11
- data/ext/ffi_c/libffi/include/ffi_common.h +4 -2
- data/ext/ffi_c/libffi/libffi.map.in +5 -0
- data/ext/ffi_c/libffi/libtool-version +1 -1
- data/ext/ffi_c/libffi/ltmain.sh +8 -20
- data/ext/ffi_c/libffi/msvc_build/aarch64/aarch64_include/ffi.h +1 -1
- data/ext/ffi_c/libffi/src/aarch64/ffi.c +26 -13
- data/ext/ffi_c/libffi/src/aarch64/sysv.S +198 -46
- data/ext/ffi_c/libffi/src/closures.c +3 -3
- data/ext/ffi_c/libffi/src/debug.c +2 -2
- data/ext/ffi_c/libffi/src/dlmalloc.c +1 -1
- data/ext/ffi_c/libffi/src/loongarch64/ffi.c +3 -0
- data/ext/ffi_c/libffi/src/mips/ffi.c +12 -4
- data/ext/ffi_c/libffi/src/mips/n32.S +65 -14
- data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +36 -24
- data/ext/ffi_c/libffi/src/sparc/ffi64.c +7 -1
- data/ext/ffi_c/libffi/src/tramp.c +1 -1
- data/ext/ffi_c/libffi/src/types.c +4 -6
- data/ext/ffi_c/libffi/src/wasm32/ffi.c +13 -0
- data/ext/ffi_c/libffi/src/x86/ffiw64.c +1 -1
- data/ext/ffi_c/libffi/testsuite/Makefile.am +79 -127
- data/ext/ffi_c/libffi/testsuite/Makefile.in +79 -127
- data/ext/ffi_c/libffi/testsuite/emscripten/conftest.py +6 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback.c +99 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback2.c +108 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback3.c +114 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/callback4.c +119 -0
- data/ext/ffi_c/libffi.darwin.mk +2 -2
- data/lib/ffi/dynamic_library.rb +34 -5
- data/lib/ffi/enum.rb +0 -1
- data/lib/ffi/function.rb +1 -1
- data/lib/ffi/io.rb +2 -2
- data/lib/ffi/library.rb +23 -23
- data/lib/ffi/platform/aarch64-linux/types.conf +74 -3
- data/lib/ffi/pointer.rb +6 -6
- data/lib/ffi/struct.rb +4 -4
- data/lib/ffi/struct_layout.rb +2 -2
- data/lib/ffi/struct_layout_builder.rb +8 -8
- data/lib/ffi/types.rb +51 -48
- data/lib/ffi/version.rb +1 -1
- data/samples/hello_ractor.rb +11 -0
- data/samples/qsort_ractor.rb +28 -0
- data/sig/ffi/abstract_memory.rbs +164 -0
- data/sig/ffi/auto_pointer.rbs +27 -0
- data/sig/ffi/buffer.rbs +18 -0
- data/sig/ffi/data_converter.rbs +10 -0
- data/sig/ffi/dynamic_library.rbs +9 -0
- data/sig/ffi/enum.rbs +38 -0
- data/sig/ffi/function.rbs +39 -0
- data/sig/ffi/library.rbs +42 -0
- data/sig/ffi/native_type.rbs +86 -0
- data/sig/ffi/pointer.rbs +42 -0
- data/sig/ffi/struct.rbs +76 -0
- data/sig/ffi/struct_by_reference.rbs +11 -0
- data/sig/ffi/struct_by_value.rbs +7 -0
- data/sig/ffi/struct_layout.rbs +9 -0
- data/sig/ffi/struct_layout_builder.rbs +5 -0
- data/sig/ffi/type.rbs +39 -0
- data/sig/ffi.rbs +26 -0
- data.tar.gz.sig +0 -0
- metadata +39 -15
- metadata.gz.sig +0 -0
data/ext/ffi_c/libffi/configure
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#! /bin/sh
|
2
2
|
# Guess values for system-dependent variables and create Makefiles.
|
3
|
-
# Generated by GNU Autoconf 2.71 for libffi 3.4.
|
3
|
+
# Generated by GNU Autoconf 2.71 for libffi 3.4.6.
|
4
4
|
#
|
5
5
|
# Report bugs to <http://github.com/libffi/libffi/issues>.
|
6
6
|
#
|
@@ -621,8 +621,8 @@ MAKEFLAGS=
|
|
621
621
|
# Identity of this package.
|
622
622
|
PACKAGE_NAME='libffi'
|
623
623
|
PACKAGE_TARNAME='libffi'
|
624
|
-
PACKAGE_VERSION='3.4.
|
625
|
-
PACKAGE_STRING='libffi 3.4.
|
624
|
+
PACKAGE_VERSION='3.4.6'
|
625
|
+
PACKAGE_STRING='libffi 3.4.6'
|
626
626
|
PACKAGE_BUGREPORT='http://github.com/libffi/libffi/issues'
|
627
627
|
PACKAGE_URL=''
|
628
628
|
|
@@ -1412,7 +1412,7 @@ if test "$ac_init_help" = "long"; then
|
|
1412
1412
|
# Omit some internal or obsolete options to make the list less imposing.
|
1413
1413
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
1414
1414
|
cat <<_ACEOF
|
1415
|
-
\`configure' configures libffi 3.4.
|
1415
|
+
\`configure' configures libffi 3.4.6 to adapt to many kinds of systems.
|
1416
1416
|
|
1417
1417
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
1418
1418
|
|
@@ -1484,7 +1484,7 @@ fi
|
|
1484
1484
|
|
1485
1485
|
if test -n "$ac_init_help"; then
|
1486
1486
|
case $ac_init_help in
|
1487
|
-
short | recursive ) echo "Configuration of libffi 3.4.
|
1487
|
+
short | recursive ) echo "Configuration of libffi 3.4.6:";;
|
1488
1488
|
esac
|
1489
1489
|
cat <<\_ACEOF
|
1490
1490
|
|
@@ -1620,7 +1620,7 @@ fi
|
|
1620
1620
|
test -n "$ac_init_help" && exit $ac_status
|
1621
1621
|
if $ac_init_version; then
|
1622
1622
|
cat <<\_ACEOF
|
1623
|
-
libffi configure 3.4.
|
1623
|
+
libffi configure 3.4.6
|
1624
1624
|
generated by GNU Autoconf 2.71
|
1625
1625
|
|
1626
1626
|
Copyright (C) 2021 Free Software Foundation, Inc.
|
@@ -2194,7 +2194,7 @@ cat >config.log <<_ACEOF
|
|
2194
2194
|
This file contains any messages produced by compilers while
|
2195
2195
|
running configure, to aid debugging if configure makes a mistake.
|
2196
2196
|
|
2197
|
-
It was created by libffi $as_me 3.4.
|
2197
|
+
It was created by libffi $as_me 3.4.6, which was
|
2198
2198
|
generated by GNU Autoconf 2.71. Invocation command line was
|
2199
2199
|
|
2200
2200
|
$ $0$ac_configure_args_raw
|
@@ -3913,7 +3913,7 @@ fi
|
|
3913
3913
|
|
3914
3914
|
# Define the identity of the package.
|
3915
3915
|
PACKAGE='libffi'
|
3916
|
-
VERSION='3.4.
|
3916
|
+
VERSION='3.4.6'
|
3917
3917
|
|
3918
3918
|
|
3919
3919
|
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
|
@@ -5556,11 +5556,11 @@ if test x$ac_prog_cxx_stdcxx = xno
|
|
5556
5556
|
then :
|
5557
5557
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5
|
5558
5558
|
printf %s "checking for $CXX option to enable C++11 features... " >&6; }
|
5559
|
-
if test ${
|
5559
|
+
if test ${ac_cv_prog_cxx_cxx11+y}
|
5560
5560
|
then :
|
5561
5561
|
printf %s "(cached) " >&6
|
5562
5562
|
else $as_nop
|
5563
|
-
|
5563
|
+
ac_cv_prog_cxx_cxx11=no
|
5564
5564
|
ac_save_CXX=$CXX
|
5565
5565
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
5566
5566
|
/* end confdefs.h. */
|
@@ -5602,11 +5602,11 @@ if test x$ac_prog_cxx_stdcxx = xno
|
|
5602
5602
|
then :
|
5603
5603
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5
|
5604
5604
|
printf %s "checking for $CXX option to enable C++98 features... " >&6; }
|
5605
|
-
if test ${
|
5605
|
+
if test ${ac_cv_prog_cxx_cxx98+y}
|
5606
5606
|
then :
|
5607
5607
|
printf %s "(cached) " >&6
|
5608
5608
|
else $as_nop
|
5609
|
-
|
5609
|
+
ac_cv_prog_cxx_cxx98=no
|
5610
5610
|
ac_save_CXX=$CXX
|
5611
5611
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
5612
5612
|
/* end confdefs.h. */
|
@@ -19523,7 +19523,7 @@ else $as_nop
|
|
19523
19523
|
ac_status=$?
|
19524
19524
|
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
19525
19525
|
test $ac_status = 0; }; }; then
|
19526
|
-
if $EGREP '(\.hidden|\.private_extern).*foo' conftest.s >/dev/null; then
|
19526
|
+
if $EGREP '(\.hidden|\.private_extern).*foo|foo.*,hidden' conftest.s >/dev/null; then
|
19527
19527
|
libffi_cv_hidden_visibility_attribute=yes
|
19528
19528
|
fi
|
19529
19529
|
fi
|
@@ -20588,7 +20588,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
|
20588
20588
|
# report actual input values of CONFIG_FILES etc. instead of their
|
20589
20589
|
# values after options handling.
|
20590
20590
|
ac_log="
|
20591
|
-
This file was extended by libffi $as_me 3.4.
|
20591
|
+
This file was extended by libffi $as_me 3.4.6, which was
|
20592
20592
|
generated by GNU Autoconf 2.71. Invocation command line was
|
20593
20593
|
|
20594
20594
|
CONFIG_FILES = $CONFIG_FILES
|
@@ -20656,7 +20656,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
|
|
20656
20656
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
20657
20657
|
ac_cs_config='$ac_cs_config_escaped'
|
20658
20658
|
ac_cs_version="\\
|
20659
|
-
libffi config.status 3.4.
|
20659
|
+
libffi config.status 3.4.6
|
20660
20660
|
configured by $0, generated by GNU Autoconf 2.71,
|
20661
20661
|
with options \\"\$ac_cs_config\\"
|
20662
20662
|
|
@@ -2,7 +2,7 @@ dnl Process this with autoconf to create configure
|
|
2
2
|
|
3
3
|
AC_PREREQ([2.71])
|
4
4
|
|
5
|
-
AC_INIT([libffi],[3.4.
|
5
|
+
AC_INIT([libffi],[3.4.6],[http://github.com/libffi/libffi/issues])
|
6
6
|
AC_CONFIG_HEADERS([fficonfig.h])
|
7
7
|
|
8
8
|
AC_CANONICAL_TARGET
|
@@ -298,7 +298,7 @@ if test "x$GCC" = "xyes"; then
|
|
298
298
|
echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c
|
299
299
|
libffi_cv_hidden_visibility_attribute=no
|
300
300
|
if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
|
301
|
-
if $EGREP '(\.hidden|\.private_extern).*foo' conftest.s >/dev/null; then
|
301
|
+
if $EGREP '(\.hidden|\.private_extern).*foo|foo.*,hidden' conftest.s >/dev/null; then
|
302
302
|
libffi_cv_hidden_visibility_attribute=yes
|
303
303
|
fi
|
304
304
|
fi
|
@@ -18,7 +18,7 @@
|
|
18
18
|
This manual is for libffi, a portable foreign function interface
|
19
19
|
library.
|
20
20
|
|
21
|
-
Copyright @copyright{} 2008--
|
21
|
+
Copyright @copyright{} 2008--2024 Anthony Green and Red Hat, Inc.
|
22
22
|
|
23
23
|
Permission is hereby granted, free of charge, to any person obtaining
|
24
24
|
a copy of this software and associated documentation files (the
|
@@ -1,4 +1,4 @@
|
|
1
|
-
@set UPDATED
|
2
|
-
@set UPDATED-MONTH
|
3
|
-
@set EDITION 3.4.
|
4
|
-
@set VERSION 3.4.
|
1
|
+
@set UPDATED 15 February 2024
|
2
|
+
@set UPDATED-MONTH February 2024
|
3
|
+
@set EDITION 3.4.6
|
4
|
+
@set VERSION 3.4.6
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -----------------------------------------------------------------*-C-*-
|
2
2
|
libffi @VERSION@
|
3
|
-
- Copyright (c) 2011, 2014, 2019, 2021, 2022 Anthony Green
|
3
|
+
- Copyright (c) 2011, 2014, 2019, 2021, 2022, 2024 Anthony Green
|
4
4
|
- Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
|
5
5
|
|
6
6
|
Permission is hereby granted, free of charge, to any person
|
@@ -220,21 +220,12 @@ FFI_EXTERN ffi_type ffi_type_sint64;
|
|
220
220
|
FFI_EXTERN ffi_type ffi_type_float;
|
221
221
|
FFI_EXTERN ffi_type ffi_type_double;
|
222
222
|
FFI_EXTERN ffi_type ffi_type_pointer;
|
223
|
-
|
224
|
-
#if @HAVE_LONG_DOUBLE@
|
225
223
|
FFI_EXTERN ffi_type ffi_type_longdouble;
|
226
|
-
#else
|
227
|
-
#define ffi_type_longdouble ffi_type_double
|
228
|
-
#endif
|
229
224
|
|
230
225
|
#ifdef FFI_TARGET_HAS_COMPLEX_TYPE
|
231
226
|
FFI_EXTERN ffi_type ffi_type_complex_float;
|
232
227
|
FFI_EXTERN ffi_type ffi_type_complex_double;
|
233
|
-
#if @HAVE_LONG_DOUBLE@
|
234
228
|
FFI_EXTERN ffi_type ffi_type_complex_longdouble;
|
235
|
-
#else
|
236
|
-
#define ffi_type_complex_longdouble ffi_type_complex_double
|
237
|
-
#endif
|
238
229
|
#endif
|
239
230
|
#endif /* LIBFFI_HIDE_BASIC_TYPES */
|
240
231
|
|
@@ -464,7 +455,7 @@ ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*,
|
|
464
455
|
|
465
456
|
#endif /* FFI_CLOSURES */
|
466
457
|
|
467
|
-
#
|
458
|
+
#ifdef FFI_GO_CLOSURES
|
468
459
|
|
469
460
|
typedef struct {
|
470
461
|
void *tramp;
|
@@ -49,8 +49,10 @@ extern "C" {
|
|
49
49
|
# endif
|
50
50
|
# endif
|
51
51
|
# define MAYBE_UNUSED __attribute__((__unused__))
|
52
|
+
# define NORETURN __attribute__((__noreturn__))
|
52
53
|
#else
|
53
54
|
# define MAYBE_UNUSED
|
55
|
+
# define NORETURN
|
54
56
|
# if HAVE_ALLOCA_H
|
55
57
|
# include <alloca.h>
|
56
58
|
# else
|
@@ -82,9 +84,9 @@ char *alloca ();
|
|
82
84
|
#endif
|
83
85
|
|
84
86
|
#ifdef FFI_DEBUG
|
85
|
-
void ffi_assert(char *expr, char *file, int line);
|
87
|
+
NORETURN void ffi_assert(const char *expr, const char *file, int line);
|
86
88
|
void ffi_stop_here(void);
|
87
|
-
void ffi_type_test(ffi_type *a, char *file, int line);
|
89
|
+
void ffi_type_test(ffi_type *a, const char *file, int line);
|
88
90
|
|
89
91
|
#define FFI_ASSERT(x) ((x) ? (void)0 : ffi_assert(#x, __FILE__,__LINE__))
|
90
92
|
#define FFI_ASSERT_AT(x, f, l) ((x) ? 0 : ffi_assert(#x, (f), (l)))
|
@@ -33,7 +33,10 @@ LIBFFI_BASE_8.0 {
|
|
33
33
|
ffi_raw_to_ptrarray;
|
34
34
|
ffi_raw_size;
|
35
35
|
|
36
|
+
#if !FFI_NATIVE_RAW_API
|
36
37
|
ffi_java_raw_call;
|
38
|
+
#endif
|
39
|
+
|
37
40
|
ffi_java_ptrarray_to_raw;
|
38
41
|
ffi_java_raw_to_ptrarray;
|
39
42
|
ffi_java_raw_size;
|
@@ -62,8 +65,10 @@ LIBFFI_CLOSURE_8.0 {
|
|
62
65
|
ffi_prep_closure_loc;
|
63
66
|
ffi_prep_raw_closure;
|
64
67
|
ffi_prep_raw_closure_loc;
|
68
|
+
#if !FFI_NATIVE_RAW_API
|
65
69
|
ffi_prep_java_raw_closure;
|
66
70
|
ffi_prep_java_raw_closure_loc;
|
71
|
+
#endif
|
67
72
|
} LIBFFI_BASE_8.0;
|
68
73
|
#endif
|
69
74
|
|
data/ext/ffi_c/libffi/ltmain.sh
CHANGED
@@ -31,7 +31,7 @@
|
|
31
31
|
|
32
32
|
PROGRAM=libtool
|
33
33
|
PACKAGE=libtool
|
34
|
-
VERSION="2.4.7 Debian-2.4.7-
|
34
|
+
VERSION="2.4.7 Debian-2.4.7-7"
|
35
35
|
package_revision=2.4.7
|
36
36
|
|
37
37
|
|
@@ -572,27 +572,15 @@ func_require_term_colors ()
|
|
572
572
|
# ---------------------
|
573
573
|
# Append VALUE onto the existing contents of VAR.
|
574
574
|
|
575
|
-
# We should try to minimise forks, especially on Windows where they are
|
576
|
-
# unreasonably slow, so skip the feature probes when bash or zsh are
|
577
|
-
# being used:
|
578
|
-
if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
|
579
|
-
: ${_G_HAVE_ARITH_OP="yes"}
|
580
|
-
: ${_G_HAVE_XSI_OPS="yes"}
|
581
|
-
# The += operator was introduced in bash 3.1
|
582
|
-
case $BASH_VERSION in
|
583
|
-
[12].* | 3.0 | 3.0*) ;;
|
584
|
-
*)
|
585
|
-
: ${_G_HAVE_PLUSEQ_OP="yes"}
|
586
|
-
;;
|
587
|
-
esac
|
588
|
-
fi
|
589
|
-
|
590
575
|
# _G_HAVE_PLUSEQ_OP
|
591
576
|
# Can be empty, in which case the shell is probed, "yes" if += is
|
592
577
|
# useable or anything else if it does not work.
|
593
|
-
test -z "$_G_HAVE_PLUSEQ_OP" \
|
594
|
-
|
595
|
-
|
578
|
+
if test -z "$_G_HAVE_PLUSEQ_OP" && \
|
579
|
+
__PLUSEQ_TEST="a" && \
|
580
|
+
__PLUSEQ_TEST+=" b" 2>/dev/null && \
|
581
|
+
test "a b" = "$__PLUSEQ_TEST"; then
|
582
|
+
_G_HAVE_PLUSEQ_OP=yes
|
583
|
+
fi
|
596
584
|
|
597
585
|
if test yes = "$_G_HAVE_PLUSEQ_OP"
|
598
586
|
then
|
@@ -2308,7 +2296,7 @@ include the following information:
|
|
2308
2296
|
compiler: $LTCC
|
2309
2297
|
compiler flags: $LTCFLAGS
|
2310
2298
|
linker: $LD (gnu? $with_gnu_ld)
|
2311
|
-
version: $progname $scriptversion Debian-2.4.7-
|
2299
|
+
version: $progname $scriptversion Debian-2.4.7-7
|
2312
2300
|
automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
|
2313
2301
|
autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q`
|
2314
2302
|
|
@@ -386,51 +386,64 @@ extend_hfa_type (void *dest, void *src, int h)
|
|
386
386
|
ssize_t f = h - AARCH64_RET_S4;
|
387
387
|
void *x0;
|
388
388
|
|
389
|
+
#define BTI_J "hint #36"
|
389
390
|
asm volatile (
|
390
391
|
"adr %0, 0f\n"
|
391
392
|
" add %0, %0, %1\n"
|
392
393
|
" br %0\n"
|
393
|
-
"0:
|
394
|
+
"0: "BTI_J"\n" /* S4 */
|
395
|
+
" ldp s16, s17, [%3]\n"
|
394
396
|
" ldp s18, s19, [%3, #8]\n"
|
395
397
|
" b 4f\n"
|
396
|
-
"
|
398
|
+
" "BTI_J"\n" /* S3 */
|
399
|
+
" ldp s16, s17, [%3]\n"
|
397
400
|
" ldr s18, [%3, #8]\n"
|
398
401
|
" b 3f\n"
|
399
|
-
"
|
402
|
+
" "BTI_J"\n" /* S2 */
|
403
|
+
" ldp s16, s17, [%3]\n"
|
400
404
|
" b 2f\n"
|
401
405
|
" nop\n"
|
402
|
-
"
|
406
|
+
" "BTI_J"\n" /* S1 */
|
407
|
+
" ldr s16, [%3]\n"
|
403
408
|
" b 1f\n"
|
404
409
|
" nop\n"
|
405
|
-
"
|
410
|
+
" "BTI_J"\n" /* D4 */
|
411
|
+
" ldp d16, d17, [%3]\n"
|
406
412
|
" ldp d18, d19, [%3, #16]\n"
|
407
413
|
" b 4f\n"
|
408
|
-
"
|
414
|
+
" "BTI_J"\n" /* D3 */
|
415
|
+
" ldp d16, d17, [%3]\n"
|
409
416
|
" ldr d18, [%3, #16]\n"
|
410
417
|
" b 3f\n"
|
411
|
-
"
|
418
|
+
" "BTI_J"\n" /* D2 */
|
419
|
+
" ldp d16, d17, [%3]\n"
|
412
420
|
" b 2f\n"
|
413
421
|
" nop\n"
|
414
|
-
"
|
422
|
+
" "BTI_J"\n" /* D1 */
|
423
|
+
" ldr d16, [%3]\n"
|
415
424
|
" b 1f\n"
|
416
425
|
" nop\n"
|
417
|
-
"
|
426
|
+
" "BTI_J"\n" /* Q4 */
|
427
|
+
" ldp q16, q17, [%3]\n"
|
418
428
|
" ldp q18, q19, [%3, #32]\n"
|
419
429
|
" b 4f\n"
|
420
|
-
"
|
430
|
+
" "BTI_J"\n" /* Q3 */
|
431
|
+
" ldp q16, q17, [%3]\n"
|
421
432
|
" ldr q18, [%3, #32]\n"
|
422
433
|
" b 3f\n"
|
423
|
-
"
|
434
|
+
" "BTI_J"\n" /* Q2 */
|
435
|
+
" ldp q16, q17, [%3]\n"
|
424
436
|
" b 2f\n"
|
425
437
|
" nop\n"
|
426
|
-
"
|
438
|
+
" "BTI_J"\n" /* Q1 */
|
439
|
+
" ldr q16, [%3]\n"
|
427
440
|
" b 1f\n"
|
428
441
|
"4: str q19, [%2, #48]\n"
|
429
442
|
"3: str q18, [%2, #32]\n"
|
430
443
|
"2: str q17, [%2, #16]\n"
|
431
444
|
"1: str q16, [%2]"
|
432
445
|
: "=&r"(x0)
|
433
|
-
: "r"(f *
|
446
|
+
: "r"(f * 16), "r"(dest), "r"(src)
|
434
447
|
: "memory", "v16", "v17", "v18", "v19");
|
435
448
|
}
|
436
449
|
#endif
|