From 78e1fd0948ebc96d5a4dba23c35463486576f624 Mon Sep 17 00:00:00 2001 From: tinyboxvk <13696594+tinyboxvk@users.noreply.github.com> Date: Sat, 16 Nov 2024 20:35:59 -0400 Subject: [PATCH 1/3] Update links Signed-off-by: tinyboxvk <13696594+tinyboxvk@users.noreply.github.com> --- CMakeLists.txt | 2 +- README.md | 4 ++-- cmake/Modules/VolkAddTest.cmake | 2 +- cmake/cmake_uninstall.cmake.in | 2 +- cmake/msvc/sys/time.h | 2 +- docs/CHANGELOG.md | 4 ++-- docs/Doxyfile.in | 20 ++++++++++--------- docs/versioning.md | 6 +++--- gen/volk_kernel_defs.py | 2 +- include/volk/volk_common.h | 2 +- include/volk/volk_complex.h | 2 +- kernels/volk/volk_32f_log2_32f.h | 2 +- kernels/volk/volk_32u_reverse_32u.h | 6 +++--- kernels/volk/volk_8u_x2_encodeframepolar_8u.h | 2 +- .../volk/volk_8u_x3_encodepolarpuppet_8u.h | 2 +- lib/testqa.cc | 2 +- 16 files changed, 32 insertions(+), 30 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 971b48d7e..6d7291a72 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -298,7 +298,7 @@ endif() ######################################################################## # Install our Cmake modules into $prefix/lib/cmake/volk # See "Package Configuration Files" on page: -# http://www.cmake.org/Wiki/CMake/Tutorials/Packaging +# https://gitlab.kitware.com/cmake/community/-/wikis/doc/tutorials/Packaging ######################################################################## configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/VolkConfig.cmake.in diff --git a/README.md b/README.md index 9f1f0d040..b598c97b3 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ # Welcome to VOLK! -VOLK is a sub-project of GNU Radio. Please see http://libvolk.org for bug +VOLK is a sub-project of GNU Radio. Please see https://www.libvolk.org/ for bug tracking, documentation, source code, and contact information about VOLK. See https://www.gnuradio.org/ for information about GNU Radio. @@ -20,7 +20,7 @@ https://www.gnuradio.org/git/volk.git/. ## How to use VOLK: -For detailed instructions see http://libvolk.org/doxygen/using_volk.html +For detailed instructions see https://www.libvolk.org/doxygen/using_volk.html See these steps for a quick build guide. diff --git a/cmake/Modules/VolkAddTest.cmake b/cmake/Modules/VolkAddTest.cmake index 653a9e5c6..810491983 100644 --- a/cmake/Modules/VolkAddTest.cmake +++ b/cmake/Modules/VolkAddTest.cmake @@ -57,7 +57,7 @@ function(VOLK_ADD_TEST test_name executable_name) file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR} srcdir) list(APPEND environs "srcdir=\"${srcdir}\"") - #http://www.cmake.org/pipermail/cmake/2009-May/029464.html + #https://cmake.org/pipermail/cmake/2009-May/029464.html #Replaced this add test + set environs code with the shell script generation. #Its nicer to be able to manually run the shell script to diagnose problems. if(UNIX) diff --git a/cmake/cmake_uninstall.cmake.in b/cmake/cmake_uninstall.cmake.in index 1c11ba746..43631fac4 100644 --- a/cmake/cmake_uninstall.cmake.in +++ b/cmake/cmake_uninstall.cmake.in @@ -5,7 +5,7 @@ # SPDX-License-Identifier: LGPL-3.0-or-later # -# http://www.vtk.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F +# https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#can-i-do-make-uninstall-with-cmake if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") message( diff --git a/cmake/msvc/sys/time.h b/cmake/msvc/sys/time.h index d1f7ed282..027d5d96f 100644 --- a/cmake/msvc/sys/time.h +++ b/cmake/msvc/sys/time.h @@ -18,7 +18,7 @@ #define NOMINMAX #endif -// http://social.msdn.microsoft.com/Forums/en/vcgeneral/thread/430449b3-f6dd-4e18-84de-eebd26a8d668 +// https://learn.microsoft.com/en-us/archive/msdn-technet-forums/430449b3-f6dd-4e18-84de-eebd26a8d668 #include < time.h > #include //I've omitted this line. #if defined(_MSC_VER) || defined(_MSC_EXTENSIONS) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 33fe3818e..4e7fed12b 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,8 +1,8 @@ # Changelog All notable changes to VOLK will be documented in this file. -The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html), starting with version 2.0.0. +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html), starting with version 2.0.0. ## [2.0.0] - 2019-08-06 diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in index f6fa80f31..1f3e2882a 100644 --- a/docs/Doxyfile.in +++ b/docs/Doxyfile.in @@ -1152,7 +1152,7 @@ VERBATIM_HEADERS = YES # If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the # clang parser (see: -# http://clang.llvm.org/) for more accurate parsing at the cost of reduced +# https://clang.llvm.org/) for more accurate parsing at the cost of reduced # performance. This can be particularly helpful with template rich C++ code for # which doxygen's built-in parser lacks the necessary type information. # Note: The availability of this option depends on whether or not doxygen was @@ -1178,7 +1178,7 @@ CLANG_OPTIONS = # If clang assisted parsing is enabled you can provide the clang parser with the # path to the directory containing a file called compile_commands.json. This # file is the compilation database (see: -# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the +# https://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the # options used when the source files were built. This is equivalent to # specifying the -p option to a clang tool, such as clang-check. These options # will then be passed to the parser. Any options specified with CLANG_OPTIONS @@ -1659,7 +1659,7 @@ USE_MATHJAX = NO # When MathJax is enabled you can set the default output format to be used for # the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. +# https://docs.mathjax.org/en/v2.7-latest/output.html) for more details. # Possible values are: HTML-CSS (which is slower, but has the best # compatibility), NativeMML (i.e. MathML) and SVG. # The default value is: HTML-CSS. @@ -1675,10 +1675,12 @@ MATHJAX_FORMAT = HTML-CSS # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of # MathJax from https://www.mathjax.org before deployment. -# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2. +# The default value is: +# in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 # This tag requires that the tag USE_MATHJAX is set to YES. -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest +MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax@2 # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example @@ -1690,7 +1692,7 @@ MATHJAX_EXTENSIONS = # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces # of code that will be used on startup of the MathJax code. See the MathJax site # (see: -# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an +# https://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an # example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. @@ -2153,7 +2155,7 @@ DOCBOOK_PROGRAMLISTING = NO #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an -# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures +# AutoGen Definitions (see https://autogen.sourceforge.net/) file that captures # the structure of the code including all documentation. Note that this feature # is still experimental and incomplete at the moment. # The default value is: NO. @@ -2357,7 +2359,7 @@ HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz (see: -# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent +# https://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent # Bell Labs. The other options in this section have no effect if this option is # set to NO # The default value is: YES. @@ -2534,7 +2536,7 @@ DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. For an explanation of the image formats see the section # output formats in the documentation of the dot tool (Graphviz (see: -# http://www.graphviz.org/)). +# https://www.graphviz.org/)). # Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order # to make the SVG files visible in IE 9+ (other browsers do not have this # requirement). diff --git a/docs/versioning.md b/docs/versioning.md index 470966c42..d8d749dd8 100644 --- a/docs/versioning.md +++ b/docs/versioning.md @@ -70,7 +70,7 @@ Semantic Versioning Specification (SemVer) The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be -interpreted as described in [RFC 2119](http://tools.ietf.org/html/rfc2119). +interpreted as described in [RFC 2119](https://datatracker.ietf.org/doc/html/rfc2119). 1. Software using Semantic Versioning MUST declare a public API. This API could be declared in the code itself or exist strictly in documentation. @@ -265,7 +265,7 @@ About ----- The Semantic Versioning specification is authored by [Tom -Preston-Werner](http://tom.preston-werner.com), inventor of Gravatars and +Preston-Werner](https://tom.preston-werner.com/), inventor of Gravatars and cofounder of GitHub. If you'd like to leave feedback, please [open an issue on @@ -276,4 +276,4 @@ License ------- Creative Commons - CC BY 3.0 -http://creativecommons.org/licenses/by/3.0/ +https://creativecommons.org/licenses/by/3.0/ diff --git a/gen/volk_kernel_defs.py b/gen/volk_kernel_defs.py index 36e36132e..95c48a81e 100644 --- a/gen/volk_kernel_defs.py +++ b/gen/volk_kernel_defs.py @@ -14,7 +14,7 @@ ######################################################################## # Strip comments from a c/cpp file. # Input is code string, output is code string without comments. -# http://stackoverflow.com/questions/241327/python-snippet-to-remove-c-and-c-comments +# https://stackoverflow.com/questions/241327/remove-c-and-c-comments-using-python ######################################################################## def comment_remover(text): def replacer(match): diff --git a/include/volk/volk_common.h b/include/volk/volk_common.h index 1785dbdae..f14affcdd 100644 --- a/include/volk/volk_common.h +++ b/include/volk/volk_common.h @@ -92,7 +92,7 @@ //////////////////////////////////////////////////////////////////////// // Define VOLK_API for library symbols -// http://gcc.gnu.org/wiki/Visibility +// https://gcc.gnu.org/wiki/Visibility //////////////////////////////////////////////////////////////////////// #ifdef volk_EXPORTS #define VOLK_API __VOLK_ATTR_EXPORT diff --git a/include/volk/volk_complex.h b/include/volk/volk_complex.h index c7dd83d07..e444d0226 100644 --- a/include/volk/volk_complex.h +++ b/include/volk/volk_complex.h @@ -78,7 +78,7 @@ typedef double complex lv_64fc_t; // When GNUC is available, use the complex extensions. // The extensions always return the correct value type. -// http://gcc.gnu.org/onlinedocs/gcc/Complex.html +// https://gcc.gnu.org/onlinedocs/gcc/Complex.html #ifdef __GNUC__ #define lv_creal(x) (__real__(x)) diff --git a/kernels/volk/volk_32f_log2_32f.h b/kernels/volk/volk_32f_log2_32f.h index 47a7cbe38..23382749f 100644 --- a/kernels/volk/volk_32f_log2_32f.h +++ b/kernels/volk/volk_32f_log2_32f.h @@ -18,7 +18,7 @@ * +-Inf outputs are mapped to +-127.0f and +-NaN input values are not supported. * * This kernel was adapted from Jose Fonseca's Fast SSE2 log implementation - * http://jrfonseca.blogspot.in/2008/09/fast-sse2-pow-tables-or-polynomials.htm + * https://jrfonseca.blogspot.com/2008/09/fast-sse2-pow-tables-or-polynomials.html * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the diff --git a/kernels/volk/volk_32u_reverse_32u.h b/kernels/volk/volk_32u_reverse_32u.h index ece8f48b1..3be939165 100644 --- a/kernels/volk/volk_32u_reverse_32u.h +++ b/kernels/volk/volk_32u_reverse_32u.h @@ -30,7 +30,7 @@ #ifndef INCLUDED_VOLK_32u_REVERSE_32u_U_H // Idea from "Bit Twiddling Hacks", which dedicates this method to public domain -// http://graphics.stanford.edu/~seander/bithacks.html#BitReverseTable +// https://graphics.stanford.edu/~seander/bithacks.html#BitReverseTable static const unsigned char BitReverseTable256[] = { 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0, 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8, 0x18, 0x98, 0x58, 0xD8, @@ -120,7 +120,7 @@ static inline void volk_32u_reverse_32u_byte_shuffle(uint32_t* out, #endif /* LV_HAVE_GENERIC */ // Idea from "Bit Twiddling Hacks", which dedicates this method to public domain -// http://graphics.stanford.edu/~seander/bithacks.html#BitReverseTable +// https://graphics.stanford.edu/~seander/bithacks.html#BitReverseTable #ifdef LV_HAVE_GENERIC static inline void volk_32u_reverse_32u_lut(uint32_t* out, const uint32_t* in, unsigned int num_points) @@ -140,7 +140,7 @@ volk_32u_reverse_32u_lut(uint32_t* out, const uint32_t* in, unsigned int num_poi #endif /* LV_HAVE_GENERIC */ // Single-Byte code from "Bit Twiddling Hacks", which dedicates this method to public -// domain http://graphics.stanford.edu/~seander/bithacks.html#ReverseByteWith64Bits +// domain https://graphics.stanford.edu/~seander/bithacks.html#ReverseByteWith64Bits #ifdef LV_HAVE_GENERIC static inline void volk_32u_reverse_32u_2001magic(uint32_t* out, const uint32_t* in, unsigned int num_points) diff --git a/kernels/volk/volk_8u_x2_encodeframepolar_8u.h b/kernels/volk/volk_8u_x2_encodeframepolar_8u.h index 5d03f03d2..daa867ddf 100644 --- a/kernels/volk/volk_8u_x2_encodeframepolar_8u.h +++ b/kernels/volk/volk_8u_x2_encodeframepolar_8u.h @@ -17,7 +17,7 @@ static inline unsigned int log2_of_power_of_2(unsigned int val) { - // algorithm from: http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog + // algorithm from: https://graphics.stanford.edu/~seander/bithacks.html#IntegerLog static const unsigned int b[] = { 0xAAAAAAAA, 0xCCCCCCCC, 0xF0F0F0F0, 0xFF00FF00, 0xFFFF0000 }; diff --git a/kernels/volk/volk_8u_x3_encodepolarpuppet_8u.h b/kernels/volk/volk_8u_x3_encodepolarpuppet_8u.h index 792168e0d..133b497e8 100644 --- a/kernels/volk/volk_8u_x3_encodepolarpuppet_8u.h +++ b/kernels/volk/volk_8u_x3_encodepolarpuppet_8u.h @@ -19,7 +19,7 @@ static inline unsigned int next_lower_power_of_two(const unsigned int val) { // algorithm found and adopted from: - // http://acius2.blogspot.de/2007/11/calculating-next-power-of-2.html + // https://acius2.blogspot.com/2007/11/calculating-next-power-of-2.html unsigned int res = val; res = (res >> 1) | res; res = (res >> 2) | res; diff --git a/lib/testqa.cc b/lib/testqa.cc index 36e0ef187..342c7ca5f 100644 --- a/lib/testqa.cc +++ b/lib/testqa.cc @@ -104,7 +104,7 @@ int main(int argc, char* argv[]) /* * This function prints qa results as XML output similar to output - * from Junit. For reference output see http://llg.cubic.org/docs/junit/ + * from Junit. For reference output see https://llg.cubic.org/docs/junit/ */ void print_qa_xml(std::vector results, unsigned int nfails) { From 99d92ad03a95b77c9400ed742fa0795fc4d6f550 Mon Sep 17 00:00:00 2001 From: tinyboxvk <13696594+tinyboxvk@users.noreply.github.com> Date: Sat, 16 Nov 2024 21:01:12 -0400 Subject: [PATCH 2/3] Update links Signed-off-by: tinyboxvk <13696594+tinyboxvk@users.noreply.github.com> --- include/volk/volk_avx_intrinsics.h | 2 +- include/volk/volk_malloc.h | 4 ++-- kernels/volk/volk_32fc_x2_divide_32fc.h | 4 ++-- lib/volk_malloc.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/volk/volk_avx_intrinsics.h b/include/volk/volk_avx_intrinsics.h index 2fc0f064e..affdd0fe4 100644 --- a/include/volk/volk_avx_intrinsics.h +++ b/include/volk/volk_avx_intrinsics.h @@ -174,7 +174,7 @@ static inline __m256 _mm256_polar_sign_mask(__m128i fbits) _mm256_insertf128_ps(sign_mask_dummy, _mm_castsi128_ps(sign_bits0), 0x0); return _mm256_insertf128_ps(sign_mask, _mm_castsi128_ps(sign_bits1), 0x1); // // This is the desired function call. Though it seems to be missing in GCC. - // // Compare: https://software.intel.com/sites/landingpage/IntrinsicsGuide/# + // // Compare: https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html // return _mm256_set_m128(_mm_castsi128_ps(sign_bits1), // _mm_castsi128_ps(sign_bits0)); } diff --git a/include/volk/volk_malloc.h b/include/volk/volk_malloc.h index a26f5f682..2af133ee3 100644 --- a/include/volk/volk_malloc.h +++ b/include/volk/volk_malloc.h @@ -28,7 +28,7 @@ __VOLK_DECL_BEGIN * see: https://linux.die.net/man/3/aligned_alloc * For MSVC, we fall back to `_aligned_malloc`. * see: - * https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/aligned-malloc?view=vs-2019 + * https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/aligned-malloc?view=msvc-170 * * Because of the ways in which volk_malloc may allocate memory, it is * important to always free volk_malloc pointers using volk_free. @@ -51,7 +51,7 @@ VOLK_API void* volk_malloc(size_t size, size_t alignment); * see: https://en.cppreference.com/w/c/memory/free * In case `_aligned_malloc` was used, we call `_aligned_free`. * see: - * https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/aligned-free?view=vs-2019 + * https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/aligned-free?view=msvc-170 * * \param aptr The aligned pointer allocated by volk_malloc. */ diff --git a/kernels/volk/volk_32fc_x2_divide_32fc.h b/kernels/volk/volk_32fc_x2_divide_32fc.h index ceee6559d..a5b1b5496 100644 --- a/kernels/volk/volk_32fc_x2_divide_32fc.h +++ b/kernels/volk/volk_32fc_x2_divide_32fc.h @@ -213,7 +213,7 @@ static inline void volk_32fc_x2_divide_32fc_u_avx(lv_32fc_t* cVector, sq, sq); // obtain the actual squared magnitude, although out of order mag_sq = _mm256_permute_ps(mag_sq_un, 0xd8); // I order them // best guide I found on using these functions: - // https://software.intel.com/sites/landingpage/IntrinsicsGuide/#expand=2738,2059,2738,2738,3875,3874,3875,2738,3870 + // https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=2738,2059,2738,2738,3875,3874,3875,2738,3870 div = _mm256_div_ps(mul_conj, mag_sq); _mm256_storeu_ps((float*)c, div); // Store the results back into the C container @@ -313,7 +313,7 @@ static inline void volk_32fc_x2_divide_32fc_a_avx(lv_32fc_t* cVector, { /* * Guide to AVX intrisics: - * https://software.intel.com/sites/landingpage/IntrinsicsGuide/# + * https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html * * we'll do the "classical" * a a b* diff --git a/lib/volk_malloc.c b/lib/volk_malloc.c index 61ad162d6..ce3978f36 100644 --- a/lib/volk_malloc.c +++ b/lib/volk_malloc.c @@ -19,7 +19,7 @@ * * MSVC is broken * see: - * https://docs.microsoft.com/en-us/cpp/overview/visual-cpp-language-conformance?view=vs-2019 + * https://learn.microsoft.com/en-us/cpp/overview/visual-cpp-language-conformance?view=msvc-170 * This section: * C11 The Universal CRT implemented the parts of the * C11 Standard Library that are required by C++17, From 4451fddbe0ef6ce30750cad6a5146c315b2576b4 Mon Sep 17 00:00:00 2001 From: tinyboxvk <13696594+tinyboxvk@users.noreply.github.com> Date: Sat, 16 Nov 2024 21:20:43 -0400 Subject: [PATCH 3/3] Fix clang-format issue Signed-off-by: tinyboxvk <13696594+tinyboxvk@users.noreply.github.com> --- include/volk/volk_avx_intrinsics.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/volk/volk_avx_intrinsics.h b/include/volk/volk_avx_intrinsics.h index affdd0fe4..fd63f681f 100644 --- a/include/volk/volk_avx_intrinsics.h +++ b/include/volk/volk_avx_intrinsics.h @@ -173,10 +173,10 @@ static inline __m256 _mm256_polar_sign_mask(__m128i fbits) __m256 sign_mask = _mm256_insertf128_ps(sign_mask_dummy, _mm_castsi128_ps(sign_bits0), 0x0); return _mm256_insertf128_ps(sign_mask, _mm_castsi128_ps(sign_bits1), 0x1); - // // This is the desired function call. Though it seems to be missing in GCC. - // // Compare: https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html - // return _mm256_set_m128(_mm_castsi128_ps(sign_bits1), - // _mm_castsi128_ps(sign_bits0)); + // This is the desired function call. Though it seems to be missing in GCC. + // Compare: https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html + // return _mm256_set_m128(_mm_castsi128_ps(sign_bits1), + // _mm_castsi128_ps(sign_bits0)); } static inline void