1 # Buildsheet autogenerated by ravenadm tool -- Do not edit.
5 KEYWORDS= mail net_im news
7 SDESC[standard]= Mozilla Thunderbird mail/newsgroup client
8 HOMEPAGE= https://www.thunderbird.net/
12 SITES[main]= MOZILLA/thunderbird/releases/78.10.2/source
13 DISTFILE[1]= thunderbird-78.10.2.source.tar.xz:main
15 SPKGS[standard]= single
17 OPTIONS_AVAILABLE= none
18 OPTIONS_STANDARD= none
20 BUILD_DEPENDS= rust:single:standard
21 cbindgen:single:standard
22 autoconf213:single:standard
26 nodejs:primary:standard
27 libvpx:single:standard
28 evdev-proto:single:standard
29 python-sqlite3:single:python_used
30 BUILDRUN_DEPENDS= nss:primary:standard
32 libffi:single:standard
33 libproxy:single:standard
34 libevent:single:standard
35 libcanberra:primary:standard
36 libnotify:primary:standard
37 harfbuzz:primary:standard
41 ffmpeg:primary:standard
42 dbus-glib:primary:standard
43 startup-notification:single:standard
45 USES= cpe desktop-utils:single gmake jpeg png zlib
46 perl:build pkgconfig iconv bz2 python:build
47 gettext-runtime clang:keepcc
48 GNOME_COMPONENTS= gconf gtk2 gtk3 gdkpixbuf pango
49 XORG_COMPONENTS= x11 xcb xcomposite xdamage xext xfixes xrender xt
53 LICENSE_TERMS= single:{{WRKSRC}}/toolkit/content/license.html
54 LICENSE_FILE= MPL:stock
58 FPC_EQUIVALENT= mail/thunderbird
61 CONFIGURE_OUTSOURCE= yes
62 CONFIGURE_ENV= PYTHON3={{PYTHON_CMD}}
63 SETUPTOOLS_USE_DISTUTILS=stdlib
65 MAKE_ENV= PYTHON3={{PYTHON_CMD}}
68 QMAKE_ARGS= --prefix="{{PREFIX}}"
73 --with-system-png="{{LOCALBASE}}"
74 --with-system-jpeg="{{LOCALBASE}}"
75 --with-system-libevent
76 --with-system-harfbuzz
77 --with-system-graphite2
81 --enable-system-pixman
82 --enable-install-strip
88 --enable-official-branding
89 --enable-application=comm/mail
90 --enable-update-channel=release
95 --disable-debug-symbols
104 VAR_OPSYS[linux]= QMAKE_ARGS=--disable-elf-hack
107 ${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
108 ${WRKSRC}/comm/mail/app/nsMailApp.cpp \
109 ${WRKSRC}/browser/app/nsBrowserApp.cpp
110 (cd ${WRKSRC}/gfx/angle/checkout/src/compiler/translator && \
111 ${REINPLACE_CMD} -e 's|<math.h>|<cmath>|' \
112 InfoSink.h IntermNode.cpp)
114 ${REINPLACE_CMD} -e 's|MOZ_SCTP|MOZ_DISABLE_SCTP|' \
115 ${WRKSRC}/netwerk/moz.build
116 # alsa headers use 'u_int32_t' and other BerkeleyDB/nvi
117 # fixed types (_XOPEN_SOURCE)
118 ${REINPLACE_CMD} -e 's@_XOPEN_SOURCE@&___@g' \
119 ${WRKSRC}/media/libcubeb/src/cubeb_alsa.c
120 ${REINPLACE_CMD} -e 's@_POSIX_SOURCE@&___@g' \
121 ${WRKSRC}/media/libcubeb/src/cubeb_jack.cpp
122 # Set mozilla options
123 @${ECHO_CMD} "--=> Setting configuration <=--"
124 @for arg in ${QMAKE_ARGS}; do \
125 ${ECHO_CMD} ".mozconfig << $$arg" ;\
126 ${ECHO_CMD} ac_add_options $$arg >> ${WRKSRC}/.mozconfig ;\
128 @${ECHO_CMD} LDFLAGS=\"-Wl,-rpath,${PREFIX}/lib/thunderbird\" \
129 >> ${WRKSRC}/.mozconfig
131 ${MV} ${WRKSRC}/third_party/rust/packed_simd/readme.md \
132 ${WRKSRC}/third_party/rust/packed_simd/README.md
134 post-patch-dragonfly:
135 ${REINPLACE_CMD} -e '/<malloc.h>/d' \
136 ${WRKSRC}/comm/ldap/c-sdk/libraries/liblber/lber-int.h
139 ${MKDIR} ${STAGEDIR}${PREFIX}/share/applications
140 ${MKDIR} ${STAGEDIR}${PREFIX}/share/pixmaps
141 ${INSTALL_DATA} ${FILESDIR}/thunderbird.desktop \
142 ${STAGEDIR}${PREFIX}/share/applications
143 (cd ${STAGEDIR}${PREFIX}/share/pixmaps && ${LN} -sf \
144 ../../lib/thunderbird/chrome/icons/default/default48.png \
146 # regenerate symlink to avoid absolute paths
147 ${RM} ${STAGEDIR}${PREFIX}/bin/thunderbird
148 (cd ${STAGEDIR}${PREFIX}/bin && \
149 ${LN} -sf ../lib/thunderbird/thunderbird thunderbird)
152 (cd ${WRKSRC} && ${LOCALBASE}/bin/autoconf-2.13)
153 (cd ${WRKSRC}/js/src/ && ${LOCALBASE}/bin/autoconf-2.13)
155 [FILE:391:descriptions/desc.single]
156 Thunderbird is a free and open source email, newsfeed, chat, and
157 calendaring client, that's easy to set up and customize. One of the core
158 principles of Thunderbird is the use and promotion of open standards -
159 this focus is a rejection of our world of closed platforms and services
160 that can't communicate with each other. We want our users to have
161 freedom and choice in how they communicate.
165 ad070eb27ed5087819b62495e8f96ec0c8d8827598c415648c69ef989c634676 353926908 thunderbird-78.10.2.source.tar.xz
168 [FILE:949:manifests/plist.single]
188 lib/thunderbird/chrome/icons/default/
189 calendar-alarm-dialog.png
190 calendar-event-dialog.png
191 calendar-event-summary-dialog.png
192 calendar-task-dialog.png
193 calendar-task-summary-dialog.png
202 lib/thunderbird/defaults/messenger/mailViews.dat
203 lib/thunderbird/defaults/pref/channel-prefs.js
204 lib/thunderbird/features/wetransfer@extensions.thunderbird.net.xpi
205 lib/thunderbird/gtk2/libmozgtk.so
212 share/applications/thunderbird.desktop
213 share/pixmaps/thunderbird.png
216 [FILE:5540:patches/patch-addon-search]
217 https://github.com/mozilla/addons/issues/708
218 https://github.com/mozilla/addons-frontend/issues/4610
220 diff --git mail/app/profile/all-thunderbird.js mail/app/profile/all-thunderbird.js
221 index 75c2c5e435e35..4d8c09c02759b 100644
222 --- comm/mail/app/profile/all-thunderbird.js
223 +++ comm/mail/app/profile/all-thunderbird.js
224 @@ -153,10 +153,10 @@ pref("extensions.getAddons.maxResults", 15);
225 pref("extensions.getAddons.get.url", "https://services.addons.thunderbird.net/api/v3/addons/search/?guid=%IDS%&lang=%LOCALE%");
226 pref("extensions.getAddons.compatOverides.url", "https://services.addons.thunderbird.net/api/v3/addons/compat-override/?guid=%IDS%&lang=%LOCALE%");
227 pref("extensions.getAddons.link.url", "https://addons.thunderbird.net/%LOCALE%/%APP%/");
228 -pref("extensions.getAddons.recommended.url", "https://services.addons.thunderbird.net/%LOCALE%/%APP%/api/%API_VERSION%/list/recommended/all/%MAX_RESULTS%/%OS%/%VERSION%?src=thunderbird");
229 +pref("extensions.getAddons.recommended.url", "https://services.addons.thunderbird.net/%LOCALE%/%APP%/api/%API_VERSION%/list/recommended/all/%MAX_RESULTS%/Linux/%VERSION%?src=thunderbird");
230 pref("extensions.getAddons.search.browseURL", "https://addons.thunderbird.net/%LOCALE%/%APP%/search/?q=%TERMS%");
231 -pref("extensions.getAddons.search.url", "https://services.addons.thunderbird.net/%LOCALE%/%APP%/api/%API_VERSION%/search/%TERMS%/all/%MAX_RESULTS%/%OS%/%VERSION%/%COMPATIBILITY_MODE%?src=thunderbird");
232 -pref("extensions.webservice.discoverURL", "https://services.addons.thunderbird.net/%LOCALE%/%APP%/discovery/pane/%VERSION%/%OS%");
233 +pref("extensions.getAddons.search.url", "https://services.addons.thunderbird.net/%LOCALE%/%APP%/api/%API_VERSION%/search/%TERMS%/all/%MAX_RESULTS%/Linux/%VERSION%/%COMPATIBILITY_MODE%?src=thunderbird");
234 +pref("extensions.webservice.discoverURL", "https://services.addons.thunderbird.net/%LOCALE%/%APP%/discovery/pane/%VERSION%/Linux");
235 pref("extensions.getAddons.siteRegExp", "^https://.*addons\\.thunderbird\\.net");
236 pref("extensions.getAddons.langpacks.url", "https://services.addons.thunderbird.net/api/v3/addons/language-tools/?app=thunderbird&type=language&appversion=%VERSION%");
238 @@ -180,9 +180,9 @@ pref("security.cert_pinning.enforcement_level", 1);
241 pref("extensions.update.enabled", true);
242 -pref("extensions.update.url", "https://versioncheck.addons.thunderbird.net/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%¤tAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%");
243 +pref("extensions.update.url", "https://versioncheck.addons.thunderbird.net/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=Linux&appABI=%APP_ABI%&locale=%APP_LOCALE%¤tAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%");
245 -pref("extensions.update.background.url", "https://versioncheck-bg.addons.thunderbird.net/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%¤tAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%");
246 +pref("extensions.update.background.url", "https://versioncheck-bg.addons.thunderbird.net/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=Linux&appABI=%APP_ABI%&locale=%APP_LOCALE%¤tAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%");
248 pref("extensions.update.interval", 86400); // Check for updates to Extensions and
250 diff --git toolkit/mozapps/extensions/internal/AddonRepository.jsm toolkit/mozapps/extensions/internal/AddonRepository.jsm
251 index f70fd8d7e3bd8..81e8cd7764fdf 100644
252 --- toolkit/mozapps/extensions/internal/AddonRepository.jsm
253 +++ toolkit/mozapps/extensions/internal/AddonRepository.jsm
254 @@ -602,7 +602,7 @@ var AddonRepository = {
255 addon.version = String(aEntry.current_version.version);
256 if (Array.isArray(aEntry.current_version.files)) {
257 for (let file of aEntry.current_version.files) {
258 - if (file.platform == "all" || file.platform == PLATFORM) {
259 + if (file.platform == "all" || file.platform == "linux" || file.platform == PLATFORM) {
261 addon.sourceURI = NetUtil.newURI(file.url);
263 diff --git toolkit/mozapps/extensions/internal/XPIDatabase.jsm toolkit/mozapps/extensions/internal/XPIDatabase.jsm
264 index f70fd8d7e3bd8..81e8cd7764fdf 100644
265 --- toolkit/mozapps/extensions/internal/XPIDatabase.jsm
266 +++ toolkit/mozapps/extensions/internal/XPIDatabase.jsm
267 @@ -355,7 +355,7 @@ class AddonInternal {
268 // Something is causing errors in here
270 for (let platform of this.targetPlatforms) {
271 - if (platform.os == Services.appinfo.OS) {
272 + if (platform.os == "Linux" || platform.os == Services.appinfo.OS) {
275 if (platform.abi === abi)
278 [FILE:445:patches/patch-browser-app-nsBrowserApp.cpp]
279 --- browser/app/nsBrowserApp.cpp.orig 2016-09-19 16:19:28 UTC
280 +++ browser/app/nsBrowserApp.cpp
281 @@ -324,6 +324,9 @@ int main(int argc, char* argv[], char* e
283 mozilla::TimeStamp start = mozilla::TimeStamp::Now();
285 + setenv("MOZ_GMP_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
286 + setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
288 #ifdef HAS_DLL_BLOCKLIST
289 DllBlocklist_Initialize();
293 [FILE:1817:patches/patch-bug1288587]
294 diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
295 index 855214a..1e91d51 100644
296 --- build/moz.configure/init.configure
297 +++ build/moz.configure/init.configure
298 @@ -251,6 +251,7 @@ option(env='PYTHON3', nargs=1, help='Python 3 interpre
299 @imports(_from='mozbuild.pythonutil', _import='find_python3_executable')
300 @imports(_from='mozbuild.pythonutil', _import='python_executable_version')
301 @imports(_from='six', _import='ensure_text')
302 +@imports(_from='__builtin__', _import='KeyError')
303 def virtualenv_python3(env_python, virtualenv_name, build_env, mozconfig, help):
304 # Avoid re-executing python when running configure --help.
306 @@ -283,6 +284,12 @@ def virtualenv_python3(env_python, build_env, mozconfi
307 python = mozconfig['vars']['added']['PYTHON3']
308 elif 'PYTHON3' in mozconfig['vars']['modified']:
309 python = mozconfig['vars']['modified']['PYTHON3'][1]
310 + for i in ('env', 'vars'):
311 + for j in ('added', 'modified'):
313 + del mozconfig[i][j]['PYTHON3']
317 log.debug("python3: executable from configuration: %r" % python)
319 @@ -365,7 +372,10 @@ def virtualenv_python3(env_python, build_env, mozconfi
320 sys.executable, manager.python_path))
321 log.info('Re-executing in the virtualenv')
323 - del os.environ['PYTHON3']
325 + del os.environ['PYTHON3']
328 # Homebrew on macOS will change Python's sys.executable to a custom
329 # value which messes with mach's virtualenv handling code. Override
330 # Homebrew's changes with the correct sys.executable value.
333 [FILE:3590:patches/patch-bug1559213]
335 Author: Jory A. Pratt <anarchy@gentoo.org>
336 Date: Thu Jun 13 11:53:00 2019 -0700
338 Bug 1559213 - Allow to use system av1 libs instead of bundled.
340 config/external/moz.build | 5 +++--
341 config/system-headers.mozbuild | 8 ++++++++
342 dom/media/platforms/moz.build | 5 +++++
343 toolkit/moz.configure | 19 ++++++++++++++++++-
344 4 files changed, 34 insertions(+), 3 deletions(-)
346 diff --git config/external/moz.build config/external/moz.build
347 index 03e4fa143bd1..a67d10b11fe6 100644
348 --- config/external/moz.build
349 +++ config/external/moz.build
350 @@ -37,8 +37,9 @@ if not CONFIG['MOZ_SYSTEM_LIBVPX']:
351 external_dirs += ['media/libvpx']
353 if CONFIG['MOZ_AV1']:
354 - external_dirs += ['media/libaom']
355 - external_dirs += ['media/libdav1d']
356 + if not CONFIG['MOZ_SYSTEM_AV1']:
357 + external_dirs += ['media/libaom']
358 + external_dirs += ['media/libdav1d']
360 if not CONFIG['MOZ_SYSTEM_PNG']:
361 external_dirs += ['media/libpng']
362 diff --git config/system-headers.mozbuild config/system-headers.mozbuild
363 index bcf5c4925564..48964a999a9b 100644
364 --- config/system-headers.mozbuild
365 +++ config/system-headers.mozbuild
366 @@ -1304,6 +1304,14 @@ if CONFIG['MOZ_ENABLE_CONTENTMANAGER']:
367 'SelectSingleContentItemPage.h',
370 +if CONFIG['MOZ_SYSTEM_AV1']:
371 + system_headers += [
372 + 'aom/aom_decoder.h',
378 if CONFIG['MOZ_SYSTEM_LIBVPX']:
381 diff --git dom/media/platforms/moz.build dom/media/platforms/moz.build
382 index 092cee0c9b66..38e45de5b5f0 100644
383 --- dom/media/platforms/moz.build
384 +++ dom/media/platforms/moz.build
385 @@ -80,6 +80,11 @@ if CONFIG['MOZ_AV1']:
386 'agnostic/AOMDecoder.cpp',
387 'agnostic/DAV1DDecoder.cpp',
389 + if CONFIG['MOZ_SYSTEM_AV1']:
390 + CXXFLAGS += CONFIG['MOZ_SYSTEM_LIBAOM_CFLAGS']
391 + OS_LIBS += CONFIG['MOZ_SYSTEM_LIBAOM_LIBS']
392 + CXXFLAGS += CONFIG['MOZ_SYSTEM_LIBDAV1D_CFLAGS']
393 + OS_LIBS += CONFIG['MOZ_SYSTEM_LIBDAV1D_LIBS']
395 if CONFIG['MOZ_OMX']:
397 diff --git toolkit/moz.configure toolkit/moz.configure
398 index 82b5a59acf42..e2329560b42b 100644
399 --- toolkit/moz.configure
400 +++ toolkit/moz.configure
401 @@ -441,7 +441,23 @@ def av1(value):
405 -@depends(target, nasm_version, when=av1 & compile_environment)
406 +option('--with-system-av1',
407 + help="Use system av1 (located with pkgconfig)")
409 +system_libaom_info = pkg_check_modules('MOZ_SYSTEM_LIBAOM', 'aom >= 1.0.0',
410 + when='--with-system-av1')
412 +system_libdav1d_info = pkg_check_modules('MOZ_SYSTEM_LIBDAV1D', 'dav1d >= 0.1.1',
413 + when='--with-system-av1')
415 +@depends(system_libaom_info, system_libdav1d_info)
416 +def system_av1(system_libaom_info, system_libdav1d_info):
417 + has_av1_libs = False
418 + if system_libaom_info and system_libdav1d_info:
419 + has_av1_libs = True
420 + return has_av1_libs
422 +@depends(target, nasm_version, when=av1 & depends(system_av1)(lambda v: not v) & compile_environment)
423 def dav1d_asm(target, nasm_version):
424 if target.os != 'Android':
425 if target.cpu == 'aarch64':
426 @@ -457,6 +473,7 @@ set_config('MOZ_DAV1D_ASM', dav1d_asm)
427 set_define('MOZ_DAV1D_ASM', dav1d_asm)
428 set_config('MOZ_AV1', av1)
429 set_define('MOZ_AV1', av1)
430 +set_config('MOZ_SYSTEM_AV1', depends_if(system_av1)(lambda _: True))
432 # Built-in fragmented MP4 support.
433 # ==============================================================
436 [FILE:1254:patches/patch-bug1618914]
437 [Wayland] Fall back to ftruncate if posix_fallocate isn't supported by filesystem.
439 diff --git widget/gtk/WindowSurfaceWayland.cpp widget/gtk/WindowSurfaceWayland.cpp
440 index 9a73326399bd5..9e42a7f1c5d18 100644
441 --- widget/gtk/WindowSurfaceWayland.cpp
442 +++ widget/gtk/WindowSurfaceWayland.cpp
443 @@ -222,20 +222,21 @@ static int WaylandAllocateShmMemory(int aSize) {
444 #ifdef HAVE_POSIX_FALLOCATE
446 ret = posix_fallocate(fd, 0, aSize);
447 } while (ret == EINTR);
451 + } else if (ret != ENODEV && ret != EINVAL && ret != EOPNOTSUPP) {
453 MOZ_CRASH("posix_fallocate() fails to allocate shm memory");
458 ret = ftruncate(fd, aSize);
459 } while (ret < 0 && errno == EINTR);
462 MOZ_CRASH("ftruncate() fails to allocate shm memory");
468 @@ -265,8 +266,8 @@ bool WaylandShmPool::Resize(int aSize) {
469 #ifdef HAVE_POSIX_FALLOCATE
471 errno = posix_fallocate(mShmPoolFd, 0, aSize);
472 } while (errno == EINTR);
473 - if (errno != 0) return false;
474 + if (errno != 0 && errno != ENODEV && errno != EINVAL && errno != EOPNOTSUPP) return false;
477 wl_shm_pool_resize(mShmPool, aSize);
480 [FILE:173909:patches/patch-bug1667736]
482 Author: Henri Sivonen <hsivonen@hsivonen.fi>
483 Date: Fri Oct 30 08:29:53 2020 +0000
485 Bug 1667736 - Update packed_simd to compile on Rust 1.48. r=glandium
487 Differential Revision: https://phabricator.services.mozilla.com/D91572
489 .cargo/config.in | 2 +-
492 third_party/rust/packed_simd/.cargo-checksum.json | 2 +-
493 third_party/rust/packed_simd/.travis.yml | 237 +++++--------
494 third_party/rust/packed_simd/Cargo.toml | 14 +-
495 .../rust/packed_simd/{readme.md => README.md} | 111 +++----
496 third_party/rust/packed_simd/build.rs | 2 +-
497 third_party/rust/packed_simd/ci/all.sh | 2 +-
498 .../ci/docker/aarch64-unknown-linux-gnu/Dockerfile | 2 +-
499 .../ci/docker/arm-unknown-linux-gnueabi/Dockerfile | 2 +-
500 .../docker/arm-unknown-linux-gnueabihf/Dockerfile | 2 +-
501 .../armv7-unknown-linux-gnueabihf/Dockerfile | 2 +-
502 .../ci/docker/i586-unknown-linux-gnu/Dockerfile | 2 +-
503 .../ci/docker/i686-unknown-linux-gnu/Dockerfile | 2 +-
504 .../ci/docker/mips-unknown-linux-gnu/Dockerfile | 2 +-
505 .../mips64-unknown-linux-gnuabi64/Dockerfile | 2 +-
506 .../mips64el-unknown-linux-gnuabi64/Dockerfile | 2 +-
507 .../ci/docker/mipsel-unknown-linux-musl/Dockerfile | 4 +-
508 .../ci/docker/powerpc-unknown-linux-gnu/Dockerfile | 3 +-
509 .../docker/powerpc64-unknown-linux-gnu/Dockerfile | 2 +-
510 .../powerpc64le-unknown-linux-gnu/Dockerfile | 2 +-
511 .../thumbv7neon-unknown-linux-gnueabihf/Dockerfile | 2 +-
512 .../ci/docker/x86_64-unknown-linux-gnu/Dockerfile | 2 +-
513 third_party/rust/packed_simd/ci/dox.sh | 7 +-
514 third_party/rust/packed_simd/ci/run.sh | 6 +-
515 .../rust/packed_simd/ci/setup_benchmarks.sh | 3 -
516 third_party/rust/packed_simd/src/api.rs | 13 +-
517 third_party/rust/packed_simd/src/api/bit_manip.rs | 1 +
518 third_party/rust/packed_simd/src/api/bitmask.rs | 82 +++++
519 third_party/rust/packed_simd/src/api/cast/v128.rs | 2 +-
520 third_party/rust/packed_simd/src/api/cast/v16.rs | 2 +-
521 third_party/rust/packed_simd/src/api/cast/v256.rs | 2 +-
522 third_party/rust/packed_simd/src/api/cast/v32.rs | 2 +-
523 third_party/rust/packed_simd/src/api/cast/v512.rs | 2 +-
524 third_party/rust/packed_simd/src/api/cast/v64.rs | 2 +-
525 third_party/rust/packed_simd/src/api/default.rs | 2 +
526 .../rust/packed_simd/src/api/from/from_array.rs | 2 +
527 third_party/rust/packed_simd/src/api/hash.rs | 2 +
528 .../packed_simd/src/api/into_bits/arch_specific.rs | 3 +-
529 .../rust/packed_simd/src/api/into_bits/v128.rs | 2 +-
530 .../rust/packed_simd/src/api/into_bits/v16.rs | 2 +-
531 .../rust/packed_simd/src/api/into_bits/v256.rs | 2 +-
532 .../rust/packed_simd/src/api/into_bits/v32.rs | 2 +-
533 .../rust/packed_simd/src/api/into_bits/v512.rs | 2 +-
534 .../rust/packed_simd/src/api/into_bits/v64.rs | 2 +-
535 .../rust/packed_simd/src/api/minimal/iuf.rs | 6 +-
536 .../rust/packed_simd/src/api/minimal/mask.rs | 6 +-
537 .../rust/packed_simd/src/api/minimal/ptr.rs | 28 +-
538 .../src/api/ops/vector_float_min_max.rs | 5 +
539 .../rust/packed_simd/src/api/ptr/gather_scatter.rs | 36 +-
540 .../src/api/reductions/float_arithmetic.rs | 13 +-
541 .../rust/packed_simd/src/api/reductions/min_max.rs | 4 +
542 .../rust/packed_simd/src/api/slice/from_slice.rs | 6 +-
543 .../packed_simd/src/api/slice/write_to_slice.rs | 6 +-
544 third_party/rust/packed_simd/src/codegen.rs | 3 +
545 .../rust/packed_simd/src/codegen/bit_manip.rs | 2 +-
546 third_party/rust/packed_simd/src/codegen/llvm.rs | 8 +
547 .../packed_simd/src/codegen/reductions/mask/x86.rs | 8 +-
548 .../src/codegen/reductions/mask/x86/sse.rs | 32 --
549 .../rust/packed_simd/src/codegen/shuffle.rs | 370 ++++++---------------
550 .../rust/packed_simd/src/codegen/shuffle1_dyn.rs | 35 +-
551 third_party/rust/packed_simd/src/codegen/vPtr.rs | 2 +
552 third_party/rust/packed_simd/src/lib.rs | 29 +-
553 third_party/rust/packed_simd/src/masks.rs | 2 +
554 third_party/rust/packed_simd/src/sealed.rs | 15 +-
555 third_party/rust/packed_simd/src/testing/utils.rs | 25 +-
556 third_party/rust/packed_simd/src/v128.rs | 32 +-
557 third_party/rust/packed_simd/src/v16.rs | 6 +-
558 third_party/rust/packed_simd/src/v256.rs | 32 +-
559 third_party/rust/packed_simd/src/v32.rs | 12 +-
560 third_party/rust/packed_simd/src/v512.rs | 32 +-
561 third_party/rust/packed_simd/src/v64.rs | 26 +-
562 third_party/rust/packed_simd/src/vPtr.rs | 2 +-
563 third_party/rust/packed_simd/src/vSize.rs | 20 +-
564 third_party/rust/packed_simd/tests/endianness.rs | 62 ++--
565 76 files changed, 618 insertions(+), 801 deletions(-)
567 diff --git .cargo/config.in .cargo/config.in
568 index 1d25dffe4e49..7a321d933326 100644
571 @@ -45,7 +45,7 @@ tag = "v0.4.2"
572 [source."https://github.com/hsivonen/packed_simd"]
573 git = "https://github.com/hsivonen/packed_simd"
574 replace-with = "vendored-sources"
575 -rev = "3541e3818fdc7c2a24f87e3459151a4ce955a67a"
576 +rev = "0917fe780032a6bbb23d71be545f9c1834128d75"
578 [source."https://github.com/gfx-rs/naga"]
579 git = "https://github.com/gfx-rs/naga"
580 diff --git Cargo.lock Cargo.lock
581 index ea0a543b7397..5c030b1ef875 100644
584 @@ -3578,8 +3578,8 @@ dependencies = [
589 -source = "git+https://github.com/hsivonen/packed_simd?rev=3541e3818fdc7c2a24f87e3459151a4ce955a67a#3541e3818fdc7c2a24f87e3459151a4ce955a67a"
591 +source = "git+https://github.com/hsivonen/packed_simd?rev=0917fe780032a6bbb23d71be545f9c1834128d75#0917fe780032a6bbb23d71be545f9c1834128d75"
595 diff --git Cargo.toml Cargo.toml
596 index d1b826e2b388..f78c9a7408d9 100644
599 @@ -66,7 +66,7 @@ panic = "abort"
602 libudev-sys = { path = "dom/webauthn/libudev-sys" }
603 -packed_simd = { git = "https://github.com/hsivonen/packed_simd", rev="3541e3818fdc7c2a24f87e3459151a4ce955a67a" }
604 +packed_simd = { git = "https://github.com/hsivonen/packed_simd", rev="0917fe780032a6bbb23d71be545f9c1834128d75" }
605 rlbox_lucet_sandbox = { git = "https://github.com/PLSysSec/rlbox_lucet_sandbox/", rev="d510da5999a744c563b0acd18056069d1698273f" }
606 nix = { git = "https://github.com/shravanrn/nix/", branch = "r0.13.1", rev="4af6c367603869a30fddb5ffb0aba2b9477ba92e" }
607 spirv_cross = { git = "https://github.com/kvark/spirv_cross", branch = "wgpu3", rev = "20191ad2f370afd6d247edcb9ff9da32d3bedb9c" }
608 diff --git third_party/rust/packed_simd/.cargo-checksum.json third_party/rust/packed_simd/.cargo-checksum.json
609 index 01afcc1efdac..1512803e5729 100644
610 --- third_party/rust/packed_simd/.cargo-checksum.json
611 +++ third_party/rust/packed_simd/.cargo-checksum.json
613 -{"files":{".appveyor.yml":"f1ed01850e0d725f9498f52a1a63ddf40702ad6e0bf5b2d7c4c04d76e96794a3",".travis.yml":"e9258d9a54fdaf4cbc12405fe5993ac4497eb2b29021691dbc91b19cb9b52227","Cargo.toml":"089941ba3c89ea111cbea3cc3abdcdcf2b9d0ae0db268d7269ee38226db950e5","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","bors.toml":"dee881dc69b9b7834e4eba5d95c3ed5a416d4628815a167d6a22d4cb4fb064b8","build.rs":"f3baefc5e5bb9b250e762a1466371b922fd7ee4243c217b2d014307603c2f57a","ci/all.sh":"a23d14e10cb26a0eb719e389c30eb955fa53cddcd436890646df09af640bd2eb","ci/android-install-ndk.sh":"0f1746108cc30bf9b9ba45bcde7b19fc1a8bdf5b0258035b4eb8dc69b75efac4","ci/android-install-sdk.sh":"3490432022c5c8f5a115c084f7a9aca1626f96c0c87ffb62019228c4346b47e4","ci/android-sysimage.sh":"ebf4e5daa1f0fe1b2092b79f0f3f161c4c4275cb744e52352c4d81ab451e4c5a","ci/benchmark.sh":"b61d19ef6b90deba8fb79dee74c8b062d94844676293da346da87bb78a9a49a4","ci/deploy_and_run_on_ios_simulator.rs":"ec8ecf82d92072676aa47f0d1a3d021b60a7ae3531153ef12d2ff4541fc294dc","ci/docker/aarch64-linux-android/Dockerfile":"ace2e7d33c87bc0f6d3962a4a3408c04557646f7f51ab99cfbf574906796b016","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"1ecdac757101d951794fb2ab0deaa278199cf25f2e08a15c7d40ff31a8556184","ci/docker/arm-linux-androideabi/Dockerfile":"370e55d3330a413a3ccf677b3afb3e0ef9018a5fab263faa97ae8ac017fc2286","ci/docker/arm-unknown-linux-gnueabi/Dockerfile":"e25d88f6c0c94aada3d2e3f08243f755feb7e869dc5dc505b3799719cb1af591","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"f126f4c7bae8c11ab8b16df06ad997863f0838825a9c08c9899a3eedb6d570bd","ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile":"b647545c158ee480a4c581dbdc1f57833aef056c8d498acc04b573e842bf803c","ci/docker/i586-unknown-linux-gnu/Dockerfile":"0d492759017307ccf74dc2aa4a8cf6623daf3dc728c708dc2b18fa7940800cba","ci/docker/i686-unknown-linux-gnu/Dockerfile":"0d492759017307ccf74dc2aa4a8cf6623daf3dc728c708dc2b18fa7940800cba","ci/docker/mips-unknown-linux-gnu/Dockerfile":"323776469bb7b160385f3621d66e3ee14c75242f8180f916e65af048a29d4ea0","ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile":"c647f6948a9a43b0be695cbed4eac752120d0faf28e5e69c718cb10406921dab","ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile":"77bfd00cc8639509be381b394f077e39b45a00158ad61b4e1656714c714665d1","ci/docker/mipsel-unknown-linux-musl/Dockerfile":"ec5bea6c98a3b626731fdb95f9ff2d1182639c76e8fb16d3271d0fc884901524","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"4f2b662de66e83d1354f650b7077692309637f786c2ea5516c31b5c2ee10af2d","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"a9595402b772bc365982e22a0096a8988825d90b09b5faa97ab192e76072f71d","ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile":"df3c381c157439695ae8cd10ab71664702c061e3b4ab22906a5ad6c2680acfed","ci/docker/s390x-unknown-linux-gnu/Dockerfile":"93fb44df3d7fd31ead158570667c97b5076a05c3d968af4a84bc13819a8f2db8","ci/docker/sparc64-unknown-linux-gnu/Dockerfile":"da1c39a3ff1fe22e41395fa7c8934e90b4c1788e551b9aec6e38bfd94effc437","ci/docker/thumbv7neon-linux-androideabi/Dockerfile":"c2decd5591bd7a09378901bef629cd944acf052eb55e4f35b79eb9cb4d62246a","ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile":"75c0c56161c7382b439de74c00de1c0e3dc9d59560cd6720976a751034b78714","ci/docker/wasm32-unknown-unknown/Dockerfile":"3e5f294bc1e004aa599086c2af49d6f3e7459fa250f5fbdd60cf67d53db78758","ci/docker/x86_64-linux-android/Dockerfile":"685040273cf350d5509e580ac451555efa19790c8723ca2af066adadc6880ad2","ci/docker/x86_64-unknown-linux-gnu-emulated/Dockerfile":"44b6203d9290bfdc53d81219f0937e1110847a23dd982ec8c4de388354f01536","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"d253c86803b22da428fa9cc671a05f18d3318eca7733b8dccb4f7be1ddf524c5","ci/dox.sh":"5b61711be47a4e3dde0ddd15ba73d256ea95fd75af3897732c24db1dc7e66366","ci/linux-s390x.sh":"d6b732d7795b4ba131326aff893bca6228a7d2eb0e9402f135705413dbbe0dce","ci/linux-sparc64.sh":"c92966838b1ab7ad3b7a344833ee726aba6b647cf5952e56f0ad1ba420b13325","ci/lld-shim.rs":"3d7f71ec23a49e2b67f694a0168786f9a954dda15f5a138815d966643fd3fcc3","ci/max_line_width.sh":"0a1518bba4c9ecaa55694cb2e9930d0e19c265baabf73143f17f9cf285aaa5bb","ci/run-docker.sh":"92e036390ad9b0d16f109579df1b5ced2e72e9afea40c7d011400ebd3a2a90de","ci/run.sh":"63259e22a96ba539f53c06b1b39f53e3a78a71171652e7afc170836110ccd913","ci/run_examples.sh":"d1a23c6c35374a0678ba5114b9b8fefd8be0a79e774872a8bf0898d1baca18d0","ci/runtest-android.rs":"145a8e9799a5223975061fe7e586ade5669ee4877a7d7a4cf6b4ab48e8e36c7c","ci/setup_benchmarks.sh":"73fb981a8fdb1dcd54409d3c0fbbfb8f77a3ceabf8626a6b9bf9d21d6bc8ce72","ci/test-runner-linux":"c8aa6025cff5306f4f31d0c61dc5f9d4dd5a1d189ab613ef8d4c367c694d9ccd","contributing.md":"2cc8c9c560ae17867e69b06d09b758dbf7bc39eb774ada50a743724b10acc0a2","perf-guide/.gitignore":"fe82c7da551079d832cf74200b0b359b4df9828cb4a0416fa7384f07a2ae6a13","perf-guide/book.toml":"115a98284126c6b180178b44713314cc494f08a71662ee2ce15cf67f17a51064","perf-guide/src/SUMMARY.md":"3e03bffc991fdc2050f3d51842d72d9d21ea6abab56a3baf3b2d5973a78b89e1","perf-guide/src/ascii.css":"29afb08833b2fe2250f0412e1fa1161a2432a0820a14953c87124407417c741a","perf-guide/src/bound_checks.md":"5e4991ff58a183ef0cd9fdc1feb4cd12d083b44bdf87393bbb0927808ef3ce7d","perf-guide/src/float-math/approx.md":"8c09032fa2d795a0c5db1775826c850d28eb2627846d0965c60ee72de63735ad","perf-guide/src/float-math/fma.md":"311076ba4b741d604a82e74b83a8d7e8c318fcbd7f64c4392d1cf5af95c60243","perf-guide/src/float-math/fp.md":"04153e775ab6e4f0d7837bcc515230d327b04edfa34c84ce9c9e10ebaeef2be8","perf-guide/src/float-math/svml.md":"0798873b8eedaeda5fed62dc91645b57c20775a02d3cd74d8bd06958f1516506","perf-guide/src/introduction.md":"9f5a19e9e6751f25d2daad39891a0cc600974527ec4c8305843f9618910671bd","perf-guide/src/prof/linux.md":"447731eb5de7d69166728fdbc5ecb0c0c9db678ea493b45a592d67dd002184c0","perf-guide/src/prof/mca.md":"f56d54f3d20e7aa4d32052186e8237b03d65971eb5d112802b442570ff11d344","perf-guide/src/prof/profiling.md":"8a650c0fd6ede0964789bb6577557eeef1d8226a896788602ce61528e260e43c","perf-guide/src/target-feature/attribute.md":"615f88dca0a707b6c416fa605435dd6e1fb5361cc639429cbf68cd87624bd78b","perf-guide/src/target-feature/features.md":"17077760ff24c006b606dd21889c53d87228f4311f3ba3a574f9afdeacd86165","perf-guide/src/target-feature/inlining.md":"7ed1d7068d8173a00d84c16cfe5871cd68b9f04f8d0cca2d01ebc84957ebf2f6","perf-guide/src/target-feature/practice.md":"c4b371842e0086df178488fec97f20def8f0c62ee588bcd25fd948b9b1fa227e","perf-guide/src/target-feature/runtime.md":"835425f5ee597fb3e51d36e725a81ebee29f4561231d19563cd4da81dbb1cfcb","perf-guide/src/target-feature/rustflags.md":"ab49712e9293a65d74d540ba4784fcb57ff1119ec05a575d895c071f1a620f64","perf-guide/src/vert-hor-ops.md":"c6211c0ee91e60552ec592d89d9d957eedc21dee3cbd89e1ad6765ea06a27471","readme.md":"585a8f0e16877fb9abb00cd17a175fcb9d7857840c6c61209f1827ffab095070","rustfmt.toml":"de6101d0670bad65fb3b337d56957d2a024e017e5ab146ec784d77312daaf8ff","src/api.rs":"331a3a4abb19cee2df5f2df4ad7c3e88b45e62cf23fdacfc9bbaa633dc5cf788","src/api/bit_manip.rs":"e68290ee679cc5abc9c73afbe635c1035f8cbfe849e5c751a1680e459244c39e","src/api/cast.rs":"03b94a3d316ac7b7be7068810044911e965e889a0ace7bae762749ca74a92747","src/api/cast/macros.rs":"b0a14d0c83ad2ebb7a275180f6d9e3f2bc312ba57a7d3d6c39fad4e0f20f9408","src/api/cast/v128.rs":"63e28c6a3edf1a7a635f51b8d3c6adbb1d46f884d92a196b3d4a6e743d809416","src/api/cast/v16.rs":"2a584eeb57fd47baad6f3533764301b04aaaac23702b7a8db12598ac02899262","src/api/cast/v256.rs":"b91c15ed8d1536ecd97b4eb79ff9d5aba0552cd9b6f0ea6435b05f2273e23b3a","src/api/cast/v32.rs":"62ec89fcce7fa7f28497ee5770adc8f81d2d3a6b2925b02f7dc06504c40e8f38","src/api/cast/v512.rs":"d855cb943ae7106e9599ef38e30a3afb1c6bd5433178baca54cb128fd9a7d143","src/api/cast/v64.rs":"fe0f7dfaf4fc0c0c1a78c96fcfcdfdc2a1e2845843b11aa797a0c6fb52a8f774","src/api/cmp.rs":"357c3a2a09c6d4611c32dd7fa95be2fae933d513e229026ec9b44451a77b884e","src/api/cmp/eq.rs":"60f70f355bae4cb5b17db53204cacc3890f70670611c17df638d4c04f7cc8075","src/api/cmp/ord.rs":"589f7234761c294fa5df8f525bc4acd5a47cdb602207d524a0d4e19804cd9695","src/api/cmp/partial_eq.rs":"3ed23d2a930b0f9750c3a5309da766b03dc4f9c4d375b42ad3c50fe732693d15","src/api/cmp/partial_ord.rs":"e16b11805c94048acd058c93994b5bc74bb187f8d7e3b86a87df60e1601467f9","src/api/cmp/vertical.rs":"de3d62f38eba817299aa16f1e1939954c9a447e316509397465c2830852ba053","src/api/default.rs":"b61f92fc0e33a2633b3375eb405beba480da071cde03df4d437d8a6058afcd97","src/api/fmt.rs":"67fb804bb86b6cd77cf8cd492b5733ce437071b66fe3297278b8a6552c325dda","src/api/fmt/binary.rs":"35cb5c266197d6224d598fb3d286e5fe48ef0c01ed356c2ff6fe9ba946f96a92","src/api/fmt/debug.rs":"aa18eea443bf353fea3db8b1a025132bbcaf91e747ecfa43b8d9fce9af395a0c","src/api/fmt/lower_hex.rs":"69d5be366631af309f214e8031c8c20267fcc27a695eac6f45c6bc1df72a67e6","src/api/fmt/octal.rs":"9eb11ba3d990213f3c7f1ec25edba7ce997cb1320e16d308c83498ba6b9bfbd9","src/api/fmt/upper_hex.rs":"a4637d085b7bb20e759ce58e08435b510a563ba3dd468af2b03560fdc5511562","src/api/from.rs":"2e599d8329cb05eaf06224cc441355c4b7b51254fc19256619333be8c149d444","src/api/from/from_array.rs":"4151593c7bba7455821fffa5b59867005a77c95d32f1f0cc3fd87294000157d9","src/api/from/from_vector.rs":"9764371aa9e6005aace74dea14f59e5611a095b7cf42707940924749282c52f0","src/api/hash.rs":"562cfa3f1d8eb9a733c035a3665a599c2f1e341ee820d8fbdd102a4398a441bc","src/api/into_bits.rs":"82297f0697d67b5a015e904e7e6e7b2a7066ba825bc54b94b4ff3e22d7a1eefb","src/api/into_bits/arch_specific.rs":"1f925390b0ce7132587d95f2419c6e2ad3e1a9d17eb1d9c120a1c1c4bdf4277e","src/api/into_bits/macros.rs":"d762406de25aedff88d460dec7a80dc8e825a2a419d53218ce007efa6a1d3e04","src/api/into_bits/v128.rs":"ecdc5893664c71d7ab1ff3697c3fbe490d20d8748b9b76881d05e7625e40d74c","src/api/into_bits/v16.rs":"5459ec7dad1ad7bd30dc7e48374580b993abf23701d9c3cb22203fa0a9aabb6d","src/api/into_bits/v256.rs":"90ea351da0380ead1bf0f63b620afd40d01d638d09f7e7be31840bd2c1d9c663","src/api/into_bits/v32.rs":"ee1dc5a430050e16f51154b5fe85b1536f5feddf2ea23dd1d3859b67c4afc6fc","src/api/into_bits/v512.rs":"f72098ed1c9a23944f3d01abaf5e0f2d0e81d35a06fdadd2183e896d41b59867","src/api/into_bits/v64.rs":"6394462facdfe7827349c742b7801f1291e75a720dfb8c0b52100df46f371c98","src/api/math.rs":"8b2a2fc651917a850539f993aa0b9e5bf4da67b11685285b8de8cdca311719ec","src/api/math/float.rs":"61d2794d68262a1090ae473bd30793b5f65cf732f32a6694a3af2ce5d9225616","src/api/math/float/abs.rs":"5b6b2701e2e11135b7ce58a05052ea8120e10e4702c95d046b9d21b827b26bf8","src/api/math/float/consts.rs":"78acba000d3fa527111300b6327c1932de9c4c1e02d4174e1a5615c01463d38c","src/api/math/float/cos.rs":"4c2dd7173728ef189314f1576c9486e03be21b7da98843b2f9011282a7979e31","src/api/math/float/exp.rs":"7c6d5f1e304f498a01cfa23b92380c815d7da0ad94eae3483783bc377d287eef","src/api/math/float/ln.rs":"54c7583f3df793b39ff57534fade27b41bb992439e5dc178252f5ca3190a3e54","src/api/math/float/mul_add.rs":"62cac77660d20159276d4c9ef066eb90c81cbddb808e8e157182c607625ad2eb","src/api/math/float/mul_adde.rs":"bae056ee9f3a70df39ec3c3b2f6437c65303888a7b843ef1a5bcf1f5aca0e602","src/api/math/float/powf.rs":"9ddb938984b36d39d82a82f862f80df8f7fb013f1d222d45698d41d88472f568","src/api/math/float/recpre.rs":"589225794ff1dbf31158dff660e6d4509ecc8befbb57c633900dea5ac0b840d6","src/api/math/float/rsqrte.rs":"a32abdcc318d7ccc8448231f54d75b884b7cbeb03a7d595713ab6243036f4dbf","src/api/math/float/sin.rs":"cbd3622b7df74f19691743001c8cf747a201f8977ad90542fee915f37dcd1e49","src/api/math/float/sqrt.rs":"0c66d5d63fb08e4d99c6b82a8828e41173aff1ac9fa1a2764a11fac217ccf2ac","src/api/math/float/sqrte.rs":"731e1c9f321b662accdd27dacb3aac2e8043b7aecb2f2161dde733bd9f025362","src/api/minimal.rs":"1f22bcc528555444e76de569ec0ae2029b9ae9d04805efeafa93369c8098036b","src/api/minimal/iuf.rs":"c501a6696950cf5e521765f178de548af64fdfb6e10d026616d09fab93ca2d17","src/api/minimal/mask.rs":"42e415f536c5193d0218f5a754b34b87fd7c971bff068009f958712166ff056d","src/api/minimal/ptr.rs":"a9ee482d1dd1c956fb8f3f179e6e620b1de4e9d713961461d4c6923a4ef2e67c","src/api/ops.rs":"3e273b277a0f3019d42c3c59ca94a5afd4885d5ae6d2182e5089bbeec9de42ee","src/api/ops/scalar_arithmetic.rs":"d2d5ad897a59dd0787544f927e0e7ca4072c3e58b0f4a2324083312b0d5a21d7","src/api/ops/scalar_bitwise.rs":"482204e459ca6be79568e1c9f70adbe2d2151412ddf122fb2161be8ebb51c40c","src/api/ops/scalar_mask_bitwise.rs":"c250f52042e37b22d57256c80d4604104cfd2fbe2a2e127c676267270ca5d350","src/api/ops/scalar_shifts.rs":"987f8fdebeedc16e3d77c1b732e7826ef70633c541d16dfa290845d5c6289150","src/api/ops/vector_arithmetic.rs":"ddca15d09ddeef502c2ed66117a62300ca65d87e959e8b622d767bdf1c307910","src/api/ops/vector_bitwise.rs":"b3968f7005b649edcc22a54e2379b14d5ee19045f2e784029805781ae043b5ee","src/api/ops/vector_float_min_max.rs":"f5155dce75219f4ba11275b1f295d2fdcddd49d174a6f1fb2ace7ea42813ce41","src/api/ops/vector_int_min_max.rs":"a378789c6ff9b32a51fbd0a97ffd36ed102cd1fe6a067d2b02017c1df342def6","src/api/ops/vector_mask_bitwise.rs":"5052d18517d765415d40327e6e8e55a312daaca0a5e2aec959bfa54b1675f9c8","src/api/ops/vector_neg.rs":"5c62f6b0221983cdbd23cd0a3af3672e6ba1255f0dfe8b19aae6fbd6503e231b","src/api/ops/vector_rotates.rs":"03cbe8a400fd7c688e4ee771a990a6754f2031b1a59b19ae81158b21471167e5","src/api/ops/vector_shifts.rs":"9bf69d0087268f61009e39aea52e03a90f378910206b6a28e8393178b6a5d0e0","src/api/ptr.rs":"8a793251bed6130dcfb2f1519ceaa18b751bbb15875928d0fb6deb5a5e07523a","src/api/ptr/gather_scatter.rs":"9ddd960365e050674b25b2fd3116e24d94669b4375d74e71c03e3f1469576066","src/api/reductions.rs":"ae5baca81352ecd44526d6c30c0a1feeda475ec73ddd3c3ec6b14e944e5448ee","src/api/reductions/bitwise.rs":"8bf910ae226188bd15fc7e125f058cd2566b6186fcd0cd8fd020f352c39ce139","src/api/reductions/float_arithmetic.rs":"e58c8c87806a95df2b2b5b48ac5991036df024096d9d7c171a480fe9282896a4","src/api/reductions/integer_arithmetic.rs":"47471da1c5f859489680bb5d34ced3d3aa20081c16053a3af121a4496fcb57bf","src/api/reductions/mask.rs":"db83327a950e33a317f37fd33ca4e20c347fb415975ec024f3e23da8509425af","src/api/reductions/min_max.rs":"f27be3aa28e1c1f46de7890198db6e12f00c207085e89ef2de7e57ee443cdb98","src/api/select.rs":"a98e2ccf9fc6bdeed32d337c8675bc96c2fbe2cc34fbf149ad6047fb8e749774","src/api/shuffle.rs":"da58200790868c09659819322a489929a5b6e56c596ed07e6a44293ea02e7d09","src/api/shuffle1_dyn.rs":"bfea5a91905b31444e9ef7ca6eddb7a9606b7e22d3f71bb842eb2795a0346620","src/api/slice.rs":"ee87484e8af329547b9a5d4f2a69e8bed6ea10bbd96270d706083843d4eea2ac","src/api/slice/from_slice.rs":"4d4fe8a329c885fcb4fbcbedf99efb15a95296fe6b3f595056cc37037450d5ac","src/api/slice/write_to_slice.rs":"f5b23b2c4b91cfb26b713a9013a6c0da7f45eaefb79ba06dcbc27f3f23bda679","src/api/swap_bytes.rs":"4a6792a2e49a77475e1b237592b4b2804dbddb79c474331acd0dd71b36934259","src/codegen.rs":"c6eebc3d3665420aa6a2f317977e3c41a4f43e0550ac630cdbe8e4bbed5e2031","src/codegen/bit_manip.rs":"5559e095105a80003e0de35af1d19b0c65c9ab04eb743c7e01c5442d882eb34e","src/codegen/llvm.rs":"d1299c189abb17a6133f047574cffc7a6db4c1be37cb7d4785491cb5e8f8cf54","src/codegen/math.rs":"35f96e37a78fcf0cdb02146b7f27a45108fe06a37fc2a54d8851ce131a326178","src/codegen/math/float.rs":"dd86c0449e576c83b719700962ac017c332987fac08d91f2b7a2b1b883598170","src/codegen/math/float/abs.rs":"f56e2b4b8055ea861c1f5cbc6b6e1d8e7e5af163b62c13574ddee4e09513bfbc","src/codegen/math/float/cos.rs":"ef3b511a24d23045b310315e80348a9b7fedb576fc2de52d74290616a0abeb2a","src/codegen/math/float/cos_pi.rs":"4e7631a5d73dac21531e09ef1802d1180f8997509c2c8fa9f67f322194263a97","src/codegen/math/float/exp.rs":"61b691598c41b5622f24e4320c1bdd08701e612a516438bdddcc728fc3405c8c","src/codegen/math/float/ln.rs":"46b718b1ba8c9d99e1ad40f53d20dfde08a3063ca7bd2a9fdd6698e060da687e","src/codegen/math/float/macros.rs":"dd42135fff13f9aca4fd3a1a4e14c7e6c31aadc6d817d63b0d2fb9e62e062744","src/codegen/math/float/mul_add.rs":"a37bf764345d4b1714f97e83897b7cf0855fc2811704bcbc0012db91825339e1","src/codegen/math/float/mul_adde.rs":"c75702bfcb361de45964a93caf959a695ef2376bd069227600b8c6872665c755","src/codegen/math/float/powf.rs":"642346e982bc4c39203de0864d2149c4179cd7b21cf67a2951687932b4675872","src/codegen/math/float/sin.rs":"9d68164c90cdca6a85155040cdac42e27342ebe0b925273ef1593df721af4258","src/codegen/math/float/sin_cos_pi.rs":"9be02ad48585a1e8d99129382fbffbaed47852f15459256a708850b6b7a75405","src/codegen/math/float/sin_pi.rs":"9890347905b4d4a3c7341c3eb06406e46e60582bcf6960688bd727e5dadc6c57","src/codegen/math/float/sqrt.rs":"e3c60dcfb0c6d2fc62adabcc931b2d4040b83cab294dea36443fb4b89eb79e34","src/codegen/math/float/sqrte.rs":"f0f4ef9eb475ae41bcc7ec6a95ad744ba6b36925faa8b2c2814004396d196b63","src/codegen/pointer_sized_int.rs":"a70697169c28218b56fd2e8d5353f2e00671d1150d0c8cef77d613bdfacd84cb","src/codegen/reductions.rs":"645e2514746d01387ddd07f0aa4ffd8430cc9ab428d4fb13773ea319fa25dd95","src/codegen/reductions/mask.rs":"8f1afe6aabf096a3278e1fc3a30f736e04aa8b9ce96373cee22162d18cfe2702","src/codegen/reductions/mask/aarch64.rs":"cba6e17603d39795dcfe8339b6b7d8714c3e162a1f0a635979f037aa24fe4206","src/codegen/reductions/mask/arm.rs":"9447904818aa2c7c25d0963eead452a639a11ca7dbd6d21eedbfcaade07a0f33","src/codegen/reductions/mask/fallback.rs":"7a0ef9f7fd03ae318b495b95e121350cd61caffc5cc6ee17fabf130d5d933453","src/codegen/reductions/mask/fallback_impl.rs":"76547f396e55ef403327c77c314cf8db8c7a5c9b9819bfb925abeacf130249e5","src/codegen/reductions/mask/x86.rs":"14bd2c482071f2355beebcf7b7ecf950ff2dfcdb08c3ca50993092434a9de717","src/codegen/reductions/mask/x86/avx.rs":"b4913d87844c522903641cbbf10db4551addb1ce5e9e78278e21612fa65c733b","src/codegen/reductions/mask/x86/avx2.rs":"677aed3f056285285daa3adff8bc65e739630b4424defa6d9665e160f027507e","src/codegen/reductions/mask/x86/sse.rs":"226610b4ff88c676d5187114dd57b4a8800de6ce40884675e9198445b1ed0306","src/codegen/reductions/mask/x86/sse2.rs":"bc38e6c31cb4b3d62147eba6cac264e519e2a48e0f7ce9010cfa9ef0cf0ec9fd","src/codegen/shuffle.rs":"0abca97e92cdce49a58a39cc447eb09dc7d7715ef256c8dbd2181a186e61bb64","src/codegen/shuffle1_dyn.rs":"04523e9338133bdedb012dd076c2c564b79ce5593b0fc56d0fb6910e04190a81","src/codegen/swap_bytes.rs":"1d6cdc716eadddc92b4fd506b2445a821caa8dc00860447de09d7ebd69c2087f","src/codegen/v128.rs":"94226b31ec403d18d9d2fe06713f147c9c79e9b5f9105089088266313f843185","src/codegen/v16.rs":"ddec4ffb66b6f7aaffb9a1780c5ddba82557abd74f45073d335047e04cf74924","src/codegen/v256.rs":"6b63917f0444118d6b1595bff2045e59b97c4d24012bd575f69f1f0efc5a0241","src/codegen/v32.rs":"3477b3c5540aed86e61e2f5807dd31db947413cec9181c587d93ed6ec74f0eba","src/codegen/v512.rs":"5854f99d3aabc4cd42b28a20d9ce447756dc2ba024a409a69b6a8ae1f1842fc5","src/codegen/v64.rs":"e9e89caebfe63d10c0cbca61e4dfdba3b7e02ee0989170f80beed23237ddd950","src/codegen/vPtr.rs":"96d609a9eece4dcbbcc01ba0b8744d7f5958be12774176a2945bc676f4e6b5cb","src/codegen/vSize.rs":"eeee9858749aa82142b27bc120d1989bb74a6b82e1e4efbbeaccc9634dc9acfc","src/lib.rs":"1b5d419ff05ee0370d671810423ccc254708cc8d415c1dbac2a7a36be4bf63a8","src/masks.rs":"870f429967b2d7d5133f4d28d6c753fc5cef0570b27b29d4e966a066d22d2d0e","src/sealed.rs":"ff7f0324276408ae8249941cfa32c90b8835a54d750896b683efea857af19db2","src/testing.rs":"1d3a7862ef625e235a5734ad7204e68d350f902c0695182b1f08a0552432416e","src/testing/macros.rs":"6378856d7a40ba5ec5c7c0dad6327d79f0c77266921c24296d10aed6c68e9b98","src/testing/utils.rs":"d6fd5a5017f1f85d9d99585754f8f6ad06fc3d683b34083543e67a7cc6c1772c","src/v128.rs":"18fe263c4aa28cd06461c7070b0269f69f4a2e75749b8f142a83dfdfe4d22bf5","src/v16.rs":"e5c663c9fb3547eaeac78a5f7db9969f4d8b5ec96112bf2954602fff11f0aebd","src/v256.rs":"68732cd688ad12a56d8b4f8ddf279f77bdfe1be2943c7dc0c1b4f1a76798aa0f","src/v32.rs":"785b22a1ccb4a41bb53dfeb0670f624c0ce42e6cdf62d1747e3283777a1c70bd","src/v512.rs":"d1337bfe07f06a8f37f8e8fa7d4315b9307476ee435ad80dd5269eaed564fbfa","src/v64.rs":"3077468d65125b8f085e9454c8b2463a4d5225697464ba6a1300f8799528fd4b","src/vPtr.rs":"c9a53f41f466e17b6648a4ce390fd8f4d3a848d440eb8a9a803a11608d76eb05","src/vSize.rs":"5c46d3e8c3ee5863d9b6e37e681f871386e0efc254d6d84ba711edb529ce7b3c","tests/endianness.rs":"541a144be017e3dd7da7c8ea49d907dc02538245e8c5f3deb5bd43da92c929e1"},"package":null}
614 \ No newline at end of file
615 +{"files":{".appveyor.yml":"f1ed01850e0d725f9498f52a1a63ddf40702ad6e0bf5b2d7c4c04d76e96794a3",".travis.yml":"d56de6531d3c4880e3aada85ac8e6d7388e5d781871e181cb8ade2a746d5d5f5","Cargo.toml":"e94ccb82002e8b55680c2c5fec554a9e864c5f354e113278d0aa927df279330d","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"49d01e49a33393af64fa6c813b6a724f68a4d1abfbedcb96413651ed105aa820","bors.toml":"dee881dc69b9b7834e4eba5d95c3ed5a416d4628815a167d6a22d4cb4fb064b8","build.rs":"c3312e786c7fcb8f16c0785fe235ebbcf43fbeab6d7d683752f62043ca92d887","ci/all.sh":"2ae6b2445b4db83833e40b37efd0016c6b9879ee988b9b3ef94db5439a3e1606","ci/android-install-ndk.sh":"0f1746108cc30bf9b9ba45bcde7b19fc1a8bdf5b0258035b4eb8dc69b75efac4","ci/android-install-sdk.sh":"3490432022c5c8f5a115c084f7a9aca1626f96c0c87ffb62019228c4346b47e4","ci/android-sysimage.sh":"ebf4e5daa1f0fe1b2092b79f0f3f161c4c4275cb744e52352c4d81ab451e4c5a","ci/benchmark.sh":"b61d19ef6b90deba8fb79dee74c8b062d94844676293da346da87bb78a9a49a4","ci/deploy_and_run_on_ios_simulator.rs":"ec8ecf82d92072676aa47f0d1a3d021b60a7ae3531153ef12d2ff4541fc294dc","ci/docker/aarch64-linux-android/Dockerfile":"ace2e7d33c87bc0f6d3962a4a3408c04557646f7f51ab99cfbf574906796b016","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"da88c0d50f16dc08448c7fdf1fa5ed2cbe576acf9e7dd85b5b818621b2a8c702","ci/docker/arm-linux-androideabi/Dockerfile":"370e55d3330a413a3ccf677b3afb3e0ef9018a5fab263faa97ae8ac017fc2286","ci/docker/arm-unknown-linux-gnueabi/Dockerfile":"bb5f8ae890707c128652290ffc544447643bf12037ddd73c6ad6989f848cb380","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"1afaefcbc05b740859acd4e067bc92439be6bcbe8f2e9678474fb434bcd398d9","ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile":"8282ea707a94109beed47a57574755e2d58401735904a03f85fb64c578c53b4f","ci/docker/i586-unknown-linux-gnu/Dockerfile":"49792922269f371bd29da4727e9085101b27be67a6b97755d0196c63317f7abb","ci/docker/i686-unknown-linux-gnu/Dockerfile":"49792922269f371bd29da4727e9085101b27be67a6b97755d0196c63317f7abb","ci/docker/mips-unknown-linux-gnu/Dockerfile":"b2ebc25797612c4f8395fe9d407725156044955bfbcf442036b7f55b43a5f9da","ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile":"b0c1692ac65bc56dd30494b1993d8e929c48cc9c4b92029b7c7592af6d4f9220","ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile":"4e9249c179300138141d0b2b7401b11897f64aed69f541f078c1db4594df2827","ci/docker/mipsel-unknown-linux-musl/Dockerfile":"3164c52b0dcbb01afa78292b15b5c43503ccf0491cf6eb801ec2bf22ae274e52","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"786f799d0b56eb54d7b6c4b00e1aed4ce81776e14e44767e083c89d014b72004","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"e8bc363837cd9c2d8b22402acb8c1c329efc11ba5d12170603d2fe2eae9da059","ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile":"47998d45b781d797b9e6085ebe898d90de0c952b54537a8db4e8d7503eb032d9","ci/docker/s390x-unknown-linux-gnu/Dockerfile":"93fb44df3d7fd31ead158570667c97b5076a05c3d968af4a84bc13819a8f2db8","ci/docker/sparc64-unknown-linux-gnu/Dockerfile":"da1c39a3ff1fe22e41395fa7c8934e90b4c1788e551b9aec6e38bfd94effc437","ci/docker/thumbv7neon-linux-androideabi/Dockerfile":"c2decd5591bd7a09378901bef629cd944acf052eb55e4f35b79eb9cb4d62246a","ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile":"51955a8bf3c4d440f47382af6f5426ebff94ab01a04da36175babda9a057740f","ci/docker/wasm32-unknown-unknown/Dockerfile":"3e5f294bc1e004aa599086c2af49d6f3e7459fa250f5fbdd60cf67d53db78758","ci/docker/x86_64-linux-android/Dockerfile":"685040273cf350d5509e580ac451555efa19790c8723ca2af066adadc6880ad2","ci/docker/x86_64-unknown-linux-gnu-emulated/Dockerfile":"44b6203d9290bfdc53d81219f0937e1110847a23dd982ec8c4de388354f01536","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"7f4e3ca5fa288ea70edb4d1f75309708cd30b192e2e4444e61c4d5b3b58f89cf","ci/dox.sh":"434e9611c52e389312d2b03564adf09429f10cc76fe66a8644adb104903b87b7","ci/linux-s390x.sh":"d6b732d7795b4ba131326aff893bca6228a7d2eb0e9402f135705413dbbe0dce","ci/linux-sparc64.sh":"c92966838b1ab7ad3b7a344833ee726aba6b647cf5952e56f0ad1ba420b13325","ci/lld-shim.rs":"3d7f71ec23a49e2b67f694a0168786f9a954dda15f5a138815d966643fd3fcc3","ci/max_line_width.sh":"0a1518bba4c9ecaa55694cb2e9930d0e19c265baabf73143f17f9cf285aaa5bb","ci/run-docker.sh":"92e036390ad9b0d16f109579df1b5ced2e72e9afea40c7d011400ebd3a2a90de","ci/run.sh":"41dd6a60efaaeae9661a01370cce98b631f78392859a0cf68c946c0a16edf5f7","ci/run_examples.sh":"d1a23c6c35374a0678ba5114b9b8fefd8be0a79e774872a8bf0898d1baca18d0","ci/runtest-android.rs":"145a8e9799a5223975061fe7e586ade5669ee4877a7d7a4cf6b4ab48e8e36c7c","ci/setup_benchmarks.sh":"fae3960023f6f3d1388cd2ad22fdbab4b075f1f29dd4292d7994a20783beb6cf","ci/test-runner-linux":"c8aa6025cff5306f4f31d0c61dc5f9d4dd5a1d189ab613ef8d4c367c694d9ccd","contributing.md":"2cc8c9c560ae17867e69b06d09b758dbf7bc39eb774ada50a743724b10acc0a2","perf-guide/.gitignore":"fe82c7da551079d832cf74200b0b359b4df9828cb4a0416fa7384f07a2ae6a13","perf-guide/book.toml":"115a98284126c6b180178b44713314cc494f08a71662ee2ce15cf67f17a51064","perf-guide/src/SUMMARY.md":"3e03bffc991fdc2050f3d51842d72d9d21ea6abab56a3baf3b2d5973a78b89e1","perf-guide/src/ascii.css":"29afb08833b2fe2250f0412e1fa1161a2432a0820a14953c87124407417c741a","perf-guide/src/bound_checks.md":"5e4991ff58a183ef0cd9fdc1feb4cd12d083b44bdf87393bbb0927808ef3ce7d","perf-guide/src/float-math/approx.md":"8c09032fa2d795a0c5db1775826c850d28eb2627846d0965c60ee72de63735ad","perf-guide/src/float-math/fma.md":"311076ba4b741d604a82e74b83a8d7e8c318fcbd7f64c4392d1cf5af95c60243","perf-guide/src/float-math/fp.md":"04153e775ab6e4f0d7837bcc515230d327b04edfa34c84ce9c9e10ebaeef2be8","perf-guide/src/float-math/svml.md":"0798873b8eedaeda5fed62dc91645b57c20775a02d3cd74d8bd06958f1516506","perf-guide/src/introduction.md":"9f5a19e9e6751f25d2daad39891a0cc600974527ec4c8305843f9618910671bd","perf-guide/src/prof/linux.md":"447731eb5de7d69166728fdbc5ecb0c0c9db678ea493b45a592d67dd002184c0","perf-guide/src/prof/mca.md":"f56d54f3d20e7aa4d32052186e8237b03d65971eb5d112802b442570ff11d344","perf-guide/src/prof/profiling.md":"8a650c0fd6ede0964789bb6577557eeef1d8226a896788602ce61528e260e43c","perf-guide/src/target-feature/attribute.md":"615f88dca0a707b6c416fa605435dd6e1fb5361cc639429cbf68cd87624bd78b","perf-guide/src/target-feature/features.md":"17077760ff24c006b606dd21889c53d87228f4311f3ba3a574f9afdeacd86165","perf-guide/src/target-feature/inlining.md":"7ed1d7068d8173a00d84c16cfe5871cd68b9f04f8d0cca2d01ebc84957ebf2f6","perf-guide/src/target-feature/practice.md":"c4b371842e0086df178488fec97f20def8f0c62ee588bcd25fd948b9b1fa227e","perf-guide/src/target-feature/runtime.md":"835425f5ee597fb3e51d36e725a81ebee29f4561231d19563cd4da81dbb1cfcb","perf-guide/src/target-feature/rustflags.md":"ab49712e9293a65d74d540ba4784fcb57ff1119ec05a575d895c071f1a620f64","perf-guide/src/vert-hor-ops.md":"c6211c0ee91e60552ec592d89d9d957eedc21dee3cbd89e1ad6765ea06a27471","rustfmt.toml":"de6101d0670bad65fb3b337d56957d2a024e017e5ab146ec784d77312daaf8ff","src/api.rs":"f6e92f056565e6fd93f98829a408aee9e790251e0cbd8a8bc30c8662b4d6fabb","src/api/bit_manip.rs":"c47a4d0f7451f7e35d07715e4f39a472e07457fd456fdb726864a4f6887252a3","src/api/bitmask.rs":"6d2beefd62ee5d9c8eb060bee6abc641616bf828c99f82abf97b21bf004e894b","src/api/cast.rs":"03b94a3d316ac7b7be7068810044911e965e889a0ace7bae762749ca74a92747","src/api/cast/macros.rs":"b0a14d0c83ad2ebb7a275180f6d9e3f2bc312ba57a7d3d6c39fad4e0f20f9408","src/api/cast/v128.rs":"2107ea6a426a0fe37a0aa6a03a579ff0bdeb5a1599ea76e2d81734a82f41276d","src/api/cast/v16.rs":"d785cf93b8e61200c9ae1c32b9f5e9d9518e87c261c56bcaf92f2e47b0009eb4","src/api/cast/v256.rs":"b81fcfd367a5de532d922dedf18579e53666facef7957c0e1bc827825e500ae6","src/api/cast/v32.rs":"2aac9ec0a67a97328ba908b13a1ff98da3dcd7781910d592d31f9207cbd9a7d2","src/api/cast/v512.rs":"33b33de818f8d4eccc982bc2f3951a8b3d03e9762ec02789b3df82e3f5ed3fc3","src/api/cast/v64.rs":"ec878917d52a8c952633251b3a938a2cbe0a63fee6d12c15840d9f1343d1f394","src/api/cmp.rs":"357c3a2a09c6d4611c32dd7fa95be2fae933d513e229026ec9b44451a77b884e","src/api/cmp/eq.rs":"60f70f355bae4cb5b17db53204cacc3890f70670611c17df638d4c04f7cc8075","src/api/cmp/ord.rs":"589f7234761c294fa5df8f525bc4acd5a47cdb602207d524a0d4e19804cd9695","src/api/cmp/partial_eq.rs":"3ed23d2a930b0f9750c3a5309da766b03dc4f9c4d375b42ad3c50fe732693d15","src/api/cmp/partial_ord.rs":"e16b11805c94048acd058c93994b5bc74bb187f8d7e3b86a87df60e1601467f9","src/api/cmp/vertical.rs":"de3d62f38eba817299aa16f1e1939954c9a447e316509397465c2830852ba053","src/api/default.rs":"67bf21c134127d12a7028c8b88a57f0ceee8ccbd74976da8ca74eb9f16a174d5","src/api/fmt.rs":"67fb804bb86b6cd77cf8cd492b5733ce437071b66fe3297278b8a6552c325dda","src/api/fmt/binary.rs":"35cb5c266197d6224d598fb3d286e5fe48ef0c01ed356c2ff6fe9ba946f96a92","src/api/fmt/debug.rs":"aa18eea443bf353fea3db8b1a025132bbcaf91e747ecfa43b8d9fce9af395a0c","src/api/fmt/lower_hex.rs":"69d5be366631af309f214e8031c8c20267fcc27a695eac6f45c6bc1df72a67e6","src/api/fmt/octal.rs":"9eb11ba3d990213f3c7f1ec25edba7ce997cb1320e16d308c83498ba6b9bfbd9","src/api/fmt/upper_hex.rs":"a4637d085b7bb20e759ce58e08435b510a563ba3dd468af2b03560fdc5511562","src/api/from.rs":"2e599d8329cb05eaf06224cc441355c4b7b51254fc19256619333be8c149d444","src/api/from/from_array.rs":"dd3fc64fb17d6184bb60343f8da26a05edf0e5f3c14caf55d49fa15e21d948dc","src/api/from/from_vector.rs":"9764371aa9e6005aace74dea14f59e5611a095b7cf42707940924749282c52f0","src/api/hash.rs":"5076ece87969592c876486f5b1ea8affbeaec379d1a14a30859e0aa5592019de","src/api/into_bits.rs":"82297f0697d67b5a015e904e7e6e7b2a7066ba825bc54b94b4ff3e22d7a1eefb","src/api/into_bits/arch_specific.rs":"4acab22af90112072a2608fafc66fccf18cbf2e641b72af28404d30833cfe5c6","src/api/into_bits/macros.rs":"d762406de25aedff88d460dec7a80dc8e825a2a419d53218ce007efa6a1d3e04","src/api/into_bits/v128.rs":"3c502b9ce85bfcc727d6f053d49030b0ba9f46bd8e9fa5aa109382a2033f9f87","src/api/into_bits/v16.rs":"f4f4f61ba88aa51b158ec56ca3dce234349aea0daf2b3029a14ab5125d1e41e5","src/api/into_bits/v256.rs":"c24c3676707a0feb868dabe00766d74deab176794f905f79056337198c7cf790","src/api/into_bits/v32.rs":"905ba683d342fa32f4202b80bb46530807bd0a5b588f6c2e8c9f475223c47775","src/api/into_bits/v512.rs":"7cd89005215a9326eed8a742125dcbf981cba1aca72a313478eabf3df71b1160","src/api/into_bits/v64.rs":"d6238022ccff7b92e55b3f6017fc269acb6f36330a6d7e8fb389853a0f1b6478","src/api/math.rs":"8b2a2fc651917a850539f993aa0b9e5bf4da67b11685285b8de8cdca311719ec","src/api/math/float.rs":"61d2794d68262a1090ae473bd30793b5f65cf732f32a6694a3af2ce5d9225616","src/api/math/float/abs.rs":"5b6b2701e2e11135b7ce58a05052ea8120e10e4702c95d046b9d21b827b26bf8","src/api/math/float/consts.rs":"78acba000d3fa527111300b6327c1932de9c4c1e02d4174e1a5615c01463d38c","src/api/math/float/cos.rs":"4c2dd7173728ef189314f1576c9486e03be21b7da98843b2f9011282a7979e31","src/api/math/float/exp.rs":"7c6d5f1e304f498a01cfa23b92380c815d7da0ad94eae3483783bc377d287eef","src/api/math/float/ln.rs":"54c7583f3df793b39ff57534fade27b41bb992439e5dc178252f5ca3190a3e54","src/api/math/float/mul_add.rs":"62cac77660d20159276d4c9ef066eb90c81cbddb808e8e157182c607625ad2eb","src/api/math/float/mul_adde.rs":"bae056ee9f3a70df39ec3c3b2f6437c65303888a7b843ef1a5bcf1f5aca0e602","src/api/math/float/powf.rs":"9ddb938984b36d39d82a82f862f80df8f7fb013f1d222d45698d41d88472f568","src/api/math/float/recpre.rs":"589225794ff1dbf31158dff660e6d4509ecc8befbb57c633900dea5ac0b840d6","src/api/math/float/rsqrte.rs":"a32abdcc318d7ccc8448231f54d75b884b7cbeb03a7d595713ab6243036f4dbf","src/api/math/float/sin.rs":"cbd3622b7df74f19691743001c8cf747a201f8977ad90542fee915f37dcd1e49","src/api/math/float/sqrt.rs":"0c66d5d63fb08e4d99c6b82a8828e41173aff1ac9fa1a2764a11fac217ccf2ac","src/api/math/float/sqrte.rs":"731e1c9f321b662accdd27dacb3aac2e8043b7aecb2f2161dde733bd9f025362","src/api/minimal.rs":"1f22bcc528555444e76de569ec0ae2029b9ae9d04805efeafa93369c8098036b","src/api/minimal/iuf.rs":"819cff26d3e196f807645bcc1d79eb27d9f175edb89910f2274d52a1e913cd11","src/api/minimal/mask.rs":"0cae10ae1fc65f5070e686c0c79bfba27b86b33d6c399367bd4848fb367dcec4","src/api/minimal/ptr.rs":"f65ebf21866a863485344432d9a7a9b7418f7fad5fdf841a4e2fa56ec0766ad0","src/api/ops.rs":"3e273b277a0f3019d42c3c59ca94a5afd4885d5ae6d2182e5089bbeec9de42ee","src/api/ops/scalar_arithmetic.rs":"d2d5ad897a59dd0787544f927e0e7ca4072c3e58b0f4a2324083312b0d5a21d7","src/api/ops/scalar_bitwise.rs":"482204e459ca6be79568e1c9f70adbe2d2151412ddf122fb2161be8ebb51c40c","src/api/ops/scalar_mask_bitwise.rs":"c250f52042e37b22d57256c80d4604104cfd2fbe2a2e127c676267270ca5d350","src/api/ops/scalar_shifts.rs":"987f8fdebeedc16e3d77c1b732e7826ef70633c541d16dfa290845d5c6289150","src/api/ops/vector_arithmetic.rs":"ddca15d09ddeef502c2ed66117a62300ca65d87e959e8b622d767bdf1c307910","src/api/ops/vector_bitwise.rs":"b3968f7005b649edcc22a54e2379b14d5ee19045f2e784029805781ae043b5ee","src/api/ops/vector_float_min_max.rs":"76bf8cb607e2c442923c1da1061a6b80d742d607408033c2a3761161114cf2a0","src/api/ops/vector_int_min_max.rs":"a378789c6ff9b32a51fbd0a97ffd36ed102cd1fe6a067d2b02017c1df342def6","src/api/ops/vector_mask_bitwise.rs":"5052d18517d765415d40327e6e8e55a312daaca0a5e2aec959bfa54b1675f9c8","src/api/ops/vector_neg.rs":"5c62f6b0221983cdbd23cd0a3af3672e6ba1255f0dfe8b19aae6fbd6503e231b","src/api/ops/vector_rotates.rs":"03cbe8a400fd7c688e4ee771a990a6754f2031b1a59b19ae81158b21471167e5","src/api/ops/vector_shifts.rs":"9bf69d0087268f61009e39aea52e03a90f378910206b6a28e8393178b6a5d0e0","src/api/ptr.rs":"8a793251bed6130dcfb2f1519ceaa18b751bbb15875928d0fb6deb5a5e07523a","src/api/ptr/gather_scatter.rs":"138b02b0fa1fdd785b95fc7048488be7e3ef277e0bc6ac5affb26af6a11d41a6","src/api/reductions.rs":"ae5baca81352ecd44526d6c30c0a1feeda475ec73ddd3c3ec6b14e944e5448ee","src/api/reductions/bitwise.rs":"8bf910ae226188bd15fc7e125f058cd2566b6186fcd0cd8fd020f352c39ce139","src/api/reductions/float_arithmetic.rs":"3997125f87c7bac07fffda3a1d814e0e6c77ca83099546a9e2fb8dc92231129f","src/api/reductions/integer_arithmetic.rs":"47471da1c5f859489680bb5d34ced3d3aa20081c16053a3af121a4496fcb57bf","src/api/reductions/mask.rs":"db83327a950e33a317f37fd33ca4e20c347fb415975ec024f3e23da8509425af","src/api/reductions/min_max.rs":"d40ccad10220ae5982785015bef92e4b0749583c2b060cad0aa4f92d99491c3b","src/api/select.rs":"a98e2ccf9fc6bdeed32d337c8675bc96c2fbe2cc34fbf149ad6047fb8e749774","src/api/shuffle.rs":"da58200790868c09659819322a489929a5b6e56c596ed07e6a44293ea02e7d09","src/api/shuffle1_dyn.rs":"bfea5a91905b31444e9ef7ca6eddb7a9606b7e22d3f71bb842eb2795a0346620","src/api/slice.rs":"ee87484e8af329547b9a5d4f2a69e8bed6ea10bbd96270d706083843d4eea2ac","src/api/slice/from_slice.rs":"53691dc9958dec4180004a42d140552b405e8cd875caa282e89af378dd63c8bc","src/api/slice/write_to_slice.rs":"3dd2e511af43dc6fa911dd0b12f6f00323e0acd1202a01365db400557d52a89b","src/api/swap_bytes.rs":"4a6792a2e49a77475e1b237592b4b2804dbddb79c474331acd0dd71b36934259","src/codegen.rs":"a29d38fa0a85eaf787fb49989e625bf64effd5f39c126fbb2a24be206d2a3917","src/codegen/bit_manip.rs":"17ecebcff1f080e712fea5eb51602a73f4201ed56a198220342c8eb55bb92692","src/codegen/llvm.rs":"b1f24237f61b7c5ddb8d47f3943aab79a95ce0e75af87ab2d1c88d842faffd39","src/codegen/math.rs":"35f96e37a78fcf0cdb02146b7f27a45108fe06a37fc2a54d8851ce131a326178","src/codegen/math/float.rs":"dd86c0449e576c83b719700962ac017c332987fac08d91f2b7a2b1b883598170","src/codegen/math/float/abs.rs":"f56e2b4b8055ea861c1f5cbc6b6e1d8e7e5af163b62c13574ddee4e09513bfbc","src/codegen/math/float/cos.rs":"ef3b511a24d23045b310315e80348a9b7fedb576fc2de52d74290616a0abeb2a","src/codegen/math/float/cos_pi.rs":"4e7631a5d73dac21531e09ef1802d1180f8997509c2c8fa9f67f322194263a97","src/codegen/math/float/exp.rs":"61b691598c41b5622f24e4320c1bdd08701e612a516438bdddcc728fc3405c8c","src/codegen/math/float/ln.rs":"46b718b1ba8c9d99e1ad40f53d20dfde08a3063ca7bd2a9fdd6698e060da687e","src/codegen/math/float/macros.rs":"dd42135fff13f9aca4fd3a1a4e14c7e6c31aadc6d817d63b0d2fb9e62e062744","src/codegen/math/float/mul_add.rs":"a37bf764345d4b1714f97e83897b7cf0855fc2811704bcbc0012db91825339e1","src/codegen/math/float/mul_adde.rs":"c75702bfcb361de45964a93caf959a695ef2376bd069227600b8c6872665c755","src/codegen/math/float/powf.rs":"642346e982bc4c39203de0864d2149c4179cd7b21cf67a2951687932b4675872","src/codegen/math/float/sin.rs":"9d68164c90cdca6a85155040cdac42e27342ebe0b925273ef1593df721af4258","src/codegen/math/float/sin_cos_pi.rs":"9be02ad48585a1e8d99129382fbffbaed47852f15459256a708850b6b7a75405","src/codegen/math/float/sin_pi.rs":"9890347905b4d4a3c7341c3eb06406e46e60582bcf6960688bd727e5dadc6c57","src/codegen/math/float/sqrt.rs":"e3c60dcfb0c6d2fc62adabcc931b2d4040b83cab294dea36443fb4b89eb79e34","src/codegen/math/float/sqrte.rs":"f0f4ef9eb475ae41bcc7ec6a95ad744ba6b36925faa8b2c2814004396d196b63","src/codegen/pointer_sized_int.rs":"a70697169c28218b56fd2e8d5353f2e00671d1150d0c8cef77d613bdfacd84cb","src/codegen/reductions.rs":"645e2514746d01387ddd07f0aa4ffd8430cc9ab428d4fb13773ea319fa25dd95","src/codegen/reductions/mask.rs":"8f1afe6aabf096a3278e1fc3a30f736e04aa8b9ce96373cee22162d18cfe2702","src/codegen/reductions/mask/aarch64.rs":"cba6e17603d39795dcfe8339b6b7d8714c3e162a1f0a635979f037aa24fe4206","src/codegen/reductions/mask/arm.rs":"9447904818aa2c7c25d0963eead452a639a11ca7dbd6d21eedbfcaade07a0f33","src/codegen/reductions/mask/fallback.rs":"7a0ef9f7fd03ae318b495b95e121350cd61caffc5cc6ee17fabf130d5d933453","src/codegen/reductions/mask/fallback_impl.rs":"76547f396e55ef403327c77c314cf8db8c7a5c9b9819bfb925abeacf130249e5","src/codegen/reductions/mask/x86.rs":"4c0457b6276f9809223590092a4c77e73812330326cdabd28df06820de10a310","src/codegen/reductions/mask/x86/avx.rs":"b4913d87844c522903641cbbf10db4551addb1ce5e9e78278e21612fa65c733b","src/codegen/reductions/mask/x86/avx2.rs":"677aed3f056285285daa3adff8bc65e739630b4424defa6d9665e160f027507e","src/codegen/reductions/mask/x86/sse.rs":"5a827c6f8e1074e324f6e4c778942badb6c09d747a7142de01cadec1240b3428","src/codegen/reductions/mask/x86/sse2.rs":"bc38e6c31cb4b3d62147eba6cac264e519e2a48e0f7ce9010cfa9ef0cf0ec9fd","src/codegen/shuffle.rs":"99a0b52c2470097b028af134221099baba383446a01c7dc3ae560209880bcdb7","src/codegen/shuffle1_dyn.rs":"abbc95305dad815ab2ded3e8357791bcff080414668b55a4d397558a1d202d01","src/codegen/swap_bytes.rs":"1d6cdc716eadddc92b4fd506b2445a821caa8dc00860447de09d7ebd69c2087f","src/codegen/v128.rs":"94226b31ec403d18d9d2fe06713f147c9c79e9b5f9105089088266313f843185","src/codegen/v16.rs":"ddec4ffb66b6f7aaffb9a1780c5ddba82557abd74f45073d335047e04cf74924","src/codegen/v256.rs":"6b63917f0444118d6b1595bff2045e59b97c4d24012bd575f69f1f0efc5a0241","src/codegen/v32.rs":"3477b3c5540aed86e61e2f5807dd31db947413cec9181c587d93ed6ec74f0eba","src/codegen/v512.rs":"5854f99d3aabc4cd42b28a20d9ce447756dc2ba024a409a69b6a8ae1f1842fc5","src/codegen/v64.rs":"e9e89caebfe63d10c0cbca61e4dfdba3b7e02ee0989170f80beed23237ddd950","src/codegen/vPtr.rs":"711c753a08d53a2879c4fb87a0762c46ce4e34c22f0ca88d2e4c557a0f679969","src/codegen/vSize.rs":"eeee9858749aa82142b27bc120d1989bb74a6b82e1e4efbbeaccc9634dc9acfc","src/lib.rs":"b842b5e47008b9bd59af4d2e309b84204d90a53d36595684082adc46b6934987","src/masks.rs":"be05e923ac58fe6eb61311561b5583cd306574f206dc09fe8e3c7de3dd0c1433","src/sealed.rs":"ae7fdeaf5d84cd7710ed730ca72ca7eaba93df6cb0acb183e5c0a7327acf197f","src/testing.rs":"1d3a7862ef625e235a5734ad7204e68d350f902c0695182b1f08a0552432416e","src/testing/macros.rs":"6378856d7a40ba5ec5c7c0dad6327d79f0c77266921c24296d10aed6c68e9b98","src/testing/utils.rs":"5ec6a47b836f364ec6dede19750a19eaac704162327d03041eb0f007d5f8d75c","src/v128.rs":"16cf9a8e7156b899ee9b9cd3f2dba9d13ec63289bea8c3ee9ae2e43ad9510288","src/v16.rs":"cb6465cf1e00bf530183af1819b9fe3d7eec978f8765d5e85d9b58a39a4b4045","src/v256.rs":"fe235017da18c7f3c361831c60e3173ad304d8ea1e95d64ebebc79da2d708511","src/v32.rs":"145d347855bac59b2de6508f9e594654e6c330423af9edc0e2ac8f4d1abdf45e","src/v512.rs":"f372f277f3e62eb5c945bb1c460333fdb17b6974fcc876633788ff53bded9599","src/v64.rs":"0b8079881b71575e3414be0b7f8f7eaba65281ba6732f2b2f61f73e95b6f48f7","src/vPtr.rs":"8b3e433d487180bb4304ff71245ecad90f0010f43e139a72027b672abe58facc","src/vSize.rs":"eda5aa020706cbf94d15bada41a0c2a35fc8f3f37cb7c2cd6f34d201399a495e","tests/endianness.rs":"7db22078f31fe1421fc2d21f2e6b9df5eb0bdc99c10f6985d3a74c0df8f205dc"},"package":null}
616 \ No newline at end of file
617 diff --git third_party/rust/packed_simd/.travis.yml third_party/rust/packed_simd/.travis.yml
618 index 8d8ed54ab737..be3fb2369341 100644
619 --- third_party/rust/packed_simd/.travis.yml
620 +++ third_party/rust/packed_simd/.travis.yml
635 + - build-test-verify # Passes full test suite, permit no regressions (unless it's rustup :/)
646 - - env: TARGET=x86_64-linux-android NOVERIFY=1
647 + - env: TARGET=x86_64-linux-android
648 name: "x86_64-unknown-linux-android + SSE2"
650 + stage: build-test-verify
651 - env: TARGET=arm-linux-androideabi
652 name: "arm-linux-androideabi"
654 + stage: build-test-verify
655 - env: TARGET=arm-linux-androideabi RUSTFLAGS="-C target-feature=+v7,+neon"
656 name: "arm-linux-androideabi + NEON"
658 - - env: TARGET=aarch64-linux-android
659 - name: "aarch64-unknown-linux-android"
661 - - env: TARGET=aarch64-linux-android RUSTFLAGS="-C target-feature=+neon"
662 - name: "aarch64-unknown-linux-android + NEON"
664 + stage: build-test-verify
665 + - name: "aarch64-unknown-linux-android + NEON"
666 + env: TARGET=aarch64-linux-android RUSTFLAGS="-C target-feature=+neon"
667 + stage: build-test-verify
668 - env: TARGET="thumbv7neon-linux-androideabi"
669 name: "thumbv7neon-linux-androideabi"
673 - env: TARGET=i586-unknown-linux-gnu
674 name: "i586-unknown-linux-gnu"
677 - env: TARGET=i586-unknown-linux-gnu RUSTFLAGS="-C target-feature=+sse"
678 name: "i586-unknown-linux-gnu + SSE"
681 - env: TARGET=i586-unknown-linux-gnu RUSTFLAGS="-C target-feature=+sse2"
682 name: "i586-unknown-linux-gnu + SSE2"
685 - env: TARGET=i686-unknown-linux-gnu
686 name: "i686-unknown-linux-gnu + SSE2"
689 - env: TARGET=i686-unknown-linux-gnu RUSTFLAGS="-C target-feature=+sse4.2"
690 name: "i686-unknown-linux-gnu + SSE4.2"
693 - env: TARGET=i686-unknown-linux-gnu RUSTFLAGS="-C target-feature=+avx2"
694 name: "i686-unknown-linux-gnu + AVX2"
696 - - env: TARGET=x86_64-unknown-linux-gnu
697 - name: "x86_64-unknown-linux-gnu + SSE2"
698 - install: rustup component add rustfmt-preview
701 - env: TARGET=x86_64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+sse4.2"
702 name: "x86_64-unknown-linux-gnu + SSE4.2"
703 install: rustup component add rustfmt-preview
705 - - env: TARGET=x86_64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+avx"
706 - name: "x86_64-unknown-linux-gnu + AVX"
707 - install: rustup component add rustfmt-preview
709 + stage: build-test-verify
710 - env: TARGET=x86_64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+avx2"
711 name: "x86_64-unknown-linux-gnu + AVX2"
712 install: rustup component add rustfmt-preview
714 - - env: TARGET=x86_64-unknown-linux-gnu-emulated
715 - name: "Intel SDE + SSE2"
718 - - env: TARGET=x86_64-unknown-linux-gnu-emulated RUSTFLAGS="-C target-feature=+sse4.2"
719 - name: "Intel SDE + SSE4.2"
722 - - env: TARGET=x86_64-unknown-linux-gnu-emulated RUSTFLAGS="-C target-feature=+avx"
723 - name: "Intel SDE + AVX"
726 - - env: TARGET=x86_64-unknown-linux-gnu-emulated RUSTFLAGS="-C target-feature=+avx2"
727 - name: "Intel SDE + AVX2"
730 - - env: TARGET=x86_64-unknown-linux-gnu-emulated RUSTFLAGS="-C target-feature=+avx-512f"
731 - name: "Intel SDE + AVX-512"
734 - - env: TARGET=arm-unknown-linux-gnueabi
735 - name: "arm-unknown-linux-gnueabi"
737 + stage: build-test-verify
738 - env: TARGET=arm-unknown-linux-gnueabi RUSTFLAGS="-C target-feature=+v7,+neon"
739 name: "arm-unknown-linux-gnueabi + NEON"
741 + stage: build-test-verify
742 - env: TARGET=arm-unknown-linux-gnueabihf
743 name: "arm-unknown-linux-gnueabihf"
745 + stage: build-test-verify
746 - env: TARGET=arm-unknown-linux-gnueabihf RUSTFLAGS="-C target-feature=+v7,+neon"
747 name: "arm-unknown-linux-gnueabihf + NEON"
749 + stage: build-test-verify
750 - env: TARGET=armv7-unknown-linux-gnueabihf
751 name: "armv7-unknown-linux-gnueabihf"
753 + stage: build-test-verify
754 - env: TARGET=armv7-unknown-linux-gnueabihf RUSTFLAGS="-C target-feature=+neon"
755 name: "armv7-unknown-linux-gnueabihf + NEON"
757 + stage: build-test-verify
758 - env: TARGET="thumbv7neon-unknown-linux-gnueabihf"
759 name: "thumbv7neon-unknown-linux-gnueabihf"
761 - - env: TARGET=aarch64-unknown-linux-gnu
762 - name: "aarch64-unknown-linux-gnu"
764 - - env: TARGET=aarch64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+neon"
765 - name: "aarch64-unknown-linux-gnu + NEON"
768 + - name: "aarch64-unknown-linux-gnu + NEON"
769 + env: TARGET=aarch64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+neon"
770 + stage: build-test-verify
771 - env: TARGET=mips-unknown-linux-gnu
772 name: "mips-unknown-linux-gnu"
775 - env: TARGET=mipsel-unknown-linux-musl
776 name: "mipsel-unknown-linux-musl"
779 - env: TARGET=mips64-unknown-linux-gnuabi64
780 name: "mips64-unknown-linux-gnuabi64"
783 - env: TARGET=mips64el-unknown-linux-gnuabi64
784 name: "mips64el-unknown-linux-gnuabi64"
787 # FIXME: https://github.com/rust-lang-nursery/packed_simd/issues/18
788 # env: TARGET=mips64el-unknown-linux-gnuabi64 RUSTFLAGS="-C target-feature=+msa -C target-cpu=mips64r6"
789 - env: TARGET=powerpc-unknown-linux-gnu
790 name: "powerpc-unknown-linux-gnu"
793 - env: TARGET=powerpc64-unknown-linux-gnu
794 name: "powerpc64-unknown-linux-gnu"
796 - - env: TARGET=powerpc64le-unknown-linux-gnu
797 - name: "powerpc64le-unknown-linux-gnu"
799 - - env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+altivec"
800 - name: "powerpc64le-unknown-linux-gnu + ALTIVEC"
802 - - env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+vsx"
803 - name: "powerpc64le-unknown-linux-gnu + VSX"
805 - - env: TARGET=s390x-unknown-linux-gnu
806 - name: "s390x-unknown-linux-gnu"
809 + - name: "powerpc64le-unknown-linux-gnu"
810 + env: TARGET=powerpc64le-unknown-linux-gnu
811 + stage: build-test-verify
812 + - name: "powerpc64le-unknown-linux-gnu + ALTIVEC"
813 + env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+altivec"
814 + stage: build-test-verify
815 + - name: "powerpc64le-unknown-linux-gnu + VSX"
816 + env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+vsx"
817 + stage: build-test-verify
818 + - name: "s390x-unknown-linux-gnu"
819 + env: TARGET=s390x-unknown-linux-gnu
821 - env: TARGET=sparc64-unknown-linux-gnu
822 name: "sparc64-unknown-linux-gnu"
826 - env: TARGET=wasm32-unknown-unknown
827 name: "wasm32-unknown-unknown"
828 - stage: osx-tier1 # For now
832 - env: TARGET=i686-apple-darwin
833 - name: "i686-apple-darwin + SSE2"
838 - env: TARGET=i686-apple-darwin RUSTFLAGS="-C target-feature=+sse4.2"
839 - name: "i686-apple-darwin + SSE4.2"
843 - # Travis-CI OSX build bots do not support AVX2:
845 - env: TARGET=i686-apple-darwin RUSTFLAGS="-C target-feature=+avx"
846 - name: "i686-apple-darwin + AVX"
851 - env: TARGET=x86_64-apple-darwin
852 - name: "x86_64-apple-darwin + SSE2"
858 env: TARGET=x86_64-apple-darwin RUSTFLAGS="-C target-feature=+sse4.2"
859 name: "x86_64-apple-darwin + SSE4.2"
864 + stage: build-test-verify
865 # Travis-CI OSX build bots do not support AVX2:
867 env: TARGET=x86_64-apple-darwin RUSTFLAGS="-C target-feature=+avx"
868 @@ -194,7 +131,7 @@ matrix:
873 + stage: build-test-verify
875 #- env: TARGET=i686-unknown-freebsd NORUN=1
877 @@ -206,81 +143,75 @@ matrix:
878 #- env: TARGET=x86_64-sun-solaris NORUN=1
882 - env: TARGET=i386-apple-ios
883 - name: "i386-apple-ios"
885 - osx_image: xcode9.4
888 env: TARGET=x86_64-apple-ios
889 name: "x86_64-apple-ios + SSE2"
894 - env: TARGET=armv7-apple-ios NORUN=1
895 - name: "armv7-apple-ios [Build only]"
898 + - name: "aarch64-apple-ios + NEON"
899 + env: TARGET=aarch64-apple-ios RUSTFLAGS="-C target-feature=+neon"
904 - env: TARGET=aarch64-apple-ios NORUN=1
905 - name: "aarch64-apple-ios [Build only]"
907 - osx_image: xcode9.4
911 - name: "Benchmarks - x86_64-unknown-linux-gnu"
912 install: TARGET=x86_64-unknown-linux-gnu ./ci/setup_benchmarks.sh
913 - script: PATH=$(pwd):$PATH NORUN=1 VERIFY=1 FEATURES=core_arch,ispc,sleef-sys ci/benchmark.sh
914 + # FIXME: Use `core_arch,sleef-sys` features once they works again
915 + script: PATH=$(pwd):$PATH NORUN=1 VERIFY=1 FEATURES=ispc ci/benchmark.sh
917 - name: "Benchmarks - x86_64-apple-darwin"
918 install: TARGET=x86_64-apple-darwin ./ci/setup_benchmarks.sh
919 - script: PATH=$(pwd):$PATH NORUN=1 VERIFY=1 FEATURES=core_arch,ispc,sleef-sys ci/benchmark.sh
920 + # FIXME: Use `core_arch,sleef-sys` features once they works again
921 + script: PATH=$(pwd):$PATH NORUN=1 VERIFY=1 FEATURES=ispc ci/benchmark.sh
926 - name: "Documentation"
927 - install: cargo install mdbook
929 + - sudo add-apt-repository -y ppa:deadsnakes/ppa
930 + - sudo apt-get update -y
931 + - sudo apt-get install -y python3.9
933 + - cargo install mdbook
938 - before_script: rustup component add rustfmt-preview
939 - script: ci/all.sh check_fmt || true
941 + if rustup component add rustfmt-preview ; then
942 + ci/all.sh check_fmt || true
947 - before_script: rustup component add clippy-preview
948 - script: ci/all.sh clippy
950 + if rustup component add clippy-preview ; then
956 # FIXME: ISPC cannot be found?
957 - name: "Benchmarks - x86_64-apple-darwin"
959 - - env: TARGET=powerpc-unknown-linux-gnu
960 - - env: TARGET=powerpc64-unknown-linux-gnu
961 - - env: TARGET=powerpc64le-unknown-linux-gnu
962 - - env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+altivec"
963 - - env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+vsx"
964 + # FIXME: i686 fails in inlining, apparently
965 + - stage: 32bit-tier1
966 #- env: TARGET=i686-unknown-freebsd NORUN=1
967 #- env: TARGET=x86_64-unknown-freebsd NORUN=1
968 #- env: TARGET=x86_64-unknown-netbsd NORUN=1
969 #- env: TARGET=x86_64-sun-solaris NORUN=1
972 - - env: TARGET=arm-linux-androideabi
973 - - env: TARGET=arm-linux-androideabi RUSTFLAGS="-C target-feature=+v7,+neon"
974 - - env: TARGET=aarch64-linux-android
975 - - env: TARGET=aarch64-linux-android RUSTFLAGS="-C target-feature=+neon"
976 + - stage: 64bit-tier2
977 + - stage: 32bit-tier2
980 # https://github.com/rust-lang-nursery/packed_simd/issues/26
981 - - env: TARGET=i386-apple-ios
982 - env: TARGET=x86_64-apple-ios
983 + # Is this related to the above? Mysterious test failure
984 + - name: "aarch64-apple-ios + NEON"
986 # FIXME: https://github.com/rust-lang-nursery/packed_simd/issues/182
987 - env: TARGET=arm-unknown-linux-gnueabi RUSTFLAGS="-C target-feature=+v7,+neon"
988 diff --git third_party/rust/packed_simd/Cargo.toml third_party/rust/packed_simd/Cargo.toml
989 index 3db9354c9407..70bbf26ed259 100644
990 --- third_party/rust/packed_simd/Cargo.toml
991 +++ third_party/rust/packed_simd/Cargo.toml
997 authors = ["Gonzalo Brito Gadeschi <gonzalobg88@gmail.com>"]
998 description = "Portable Packed SIMD vectors"
999 documentation = "https://docs.rs/crate/packed_simd/"
1000 @@ -21,8 +21,8 @@ is-it-maintained-open-issues = { repository = "rust-lang-nursery/packed_simd" }
1001 maintenance = { status = "experimental" }
1005 -core_arch = { version = "^0.1.3", optional = true }
1007 +core_arch = { version = "0.1.5", optional = true }
1011 @@ -31,12 +31,12 @@ libcore_neon = []
1015 -arrayvec = { version = "^0.4", default-features = false }
1016 +arrayvec = { version = "^0.5", default-features = false }
1018 [target.'cfg(target_arch = "x86_64")'.dependencies.sleef-sys]
1023 [target.wasm32-unknown-unknown.dev-dependencies]
1024 -wasm-bindgen = "=0.2.19"
1025 -wasm-bindgen-test = "=0.2.19"
1026 \ No newline at end of file
1027 +wasm-bindgen = "=0.2.52"
1028 +wasm-bindgen-test = "=0.3.2"
1029 diff --git third_party/rust/packed_simd/readme.md third_party/rust/packed_simd/README.md
1030 similarity index 54%
1031 rename from third_party/rust/packed_simd/readme.md
1032 rename to third_party/rust/packed_simd/README.md
1033 index 3b27a2bba0d6..ad4f3f27093f 100644
1034 --- third_party/rust/packed_simd/readme.md
1035 +++ third_party/rust/packed_simd/README.md
1038 [![Travis-CI Status]][travis] [![Appveyor Status]][appveyor] [![Latest Version]][crates.io] [![docs]][master_docs]
1040 -> This aims to be a 100% conforming implementation of Rust RFC 2366 for stabilization.
1042 -**WARNING**: this crate only supports the most recent nightly Rust toolchain.
1043 +**WARNING**: this crate only supports the most recent nightly Rust toolchain
1044 +and will be superceded by [stdsimd](https://github.com/rust-lang/stdsimd).
1048 * [API docs (`master` branch)][master_docs]
1049 * [Performance guide][perf_guide]
1050 -* [API docs (`docs.rs`)][docs.rs]: **CURRENTLY DOWN** due to
1051 - https://github.com/rust-lang-nursery/packed_simd/issues/110
1052 +* [API docs (`docs.rs`)][docs.rs]
1053 * [RFC2366 `std::simd`][rfc2366]: - contains motivation, design rationale,
1056 @@ -39,17 +37,6 @@ Most of the examples come with both a scalar and a vectorized implementation.
1057 vector type as those of another vector type safely by just using the
1058 `.into_bits()` method.
1060 -* `core_arch` (default: disabled): enable this feature to recompile `core::arch`
1061 - for the target-features enabled. `packed_simd` includes optimizations for some
1062 - target feature combinations that are enabled by this feature. Note, however,
1063 - that this is an unstable dependency, that rustc might break at any time.
1065 -* `sleef-sys` (default: disabled - `x86_64` only): internally uses the [SLEEF]
1066 - short-vector math library when profitable via the [`sleef-sys`][sleef_sys]
1067 - crate. [SLEEF] is licensed under the [Boost Software License
1068 - v1.0][boost_license], an extremely permissive license, and can be statically
1069 - linked without issues.
1073 The following [ISPC] examples are also part of `packed_simd`'s
1074 @@ -75,60 +62,40 @@ slowdown:
1078 -The following table describes the supported platforms: `build` shows whether the
1079 -library compiles without issues for a given target, while `run` shows whether
1080 -the full testsuite passes on the target.
1082 -| Linux targets: | build | run |
1083 -|-----------------------------------|-----------|---------|
1084 -| `i586-unknown-linux-gnu` | ✓ | ✓ |
1085 -| `i686-unknown-linux-gnu` | ✓ | ✓ |
1086 -| `x86_64-unknown-linux-gnu` | ✓ | ✓ |
1087 -| `arm-unknown-linux-gnueabi` | ✗ | ✗ |
1088 -| `arm-unknown-linux-gnueabihf` | ✓ | ✓ |
1089 -| `armv7-unknown-linux-gnueabi` | ✓ | ✓ |
1090 -| `aarch64-unknown-linux-gnu` | ✓ | ✓ |
1091 -| `mips-unknown-linux-gnu` | ✓ | ✓ |
1092 -| `mipsel-unknown-linux-musl` | ✓ | ✓ |
1093 -| `mips64-unknown-linux-gnuabi64` | ✓ | ✓ |
1094 -| `mips64el-unknown-linux-gnuabi64` | ✓ | ✓ |
1095 -| `powerpc-unknown-linux-gnu` | ✗ | ✗ |
1096 -| `powerpc64-unknown-linux-gnu` | ✗ | ✗ |
1097 -| `powerpc64le-unknown-linux-gnu` | ✗ | ✗ |
1098 -| `s390x-unknown-linux-gnu` | ✓ | ✓* |
1099 -| `sparc64-unknown-linux-gnu` | ✓ | ✓* |
1100 -| `thumbv7neon-unknown-linux-gnueabihf` | ✓ | ✓ |
1101 -| **MacOSX targets:** | **build** | **run** |
1102 -| `x86_64-apple-darwin` | ✓ | ✓ |
1103 -| `i686-apple-darwin` | ✓ | ✓ |
1104 -| **Windows targets:** | **build** | **run** |
1105 -| `x86_64-pc-windows-msvc` | ✓ | ✓ |
1106 -| `i686-pc-windows-msvc` | ✓ | ✓ |
1107 -| `x86_64-pc-windows-gnu` | ✗ | ✗ |
1108 -| `i686-pc-windows-gnu` | ✗ | ✗ |
1109 -| **WebAssembly targets:** | **build** | **run** |
1110 -| `wasm32-unknown-unknown` | ✓ | ✓ |
1111 -| **Android targets:** | **build** | **run** |
1112 -| `x86_64-linux-android` | ✓ | ✓ |
1113 -| `arm-linux-androideabi` | ✓ | ✓ |
1114 -| `aarch64-linux-android` | ✓ | ✗ |
1115 -| `thumbv7neon-linux-androideabi` | ✓ | ✓ |
1116 -| **iOS targets:** | **build** | **run** |
1117 -| `i386-apple-ios` | ✓ | ✗ |
1118 -| `x86_64-apple-ios` | ✓ | ✗ |
1119 -| `armv7-apple-ios` | ✓ | ✗** |
1120 -| `aarch64-apple-ios` | ✓ | ✗** |
1121 -| **xBSD targets:** | **build** | **run** |
1122 -| `i686-unknown-freebsd` | ✗ | ✗** |
1123 -| `x86_64-unknown-freebsd` | ✗ | ✗** |
1124 -| `x86_64-unknown-netbsd` | ✗ | ✗** |
1125 -| **Solaris targets:** | **build** | **run** |
1126 -| `x86_64-sun-solaris` | ✗ | ✗** |
1128 -[*] most of the test suite passes correctly on these platform but
1129 -there are correctness bugs open in the issue tracker.
1131 -[**] it is currently not easily possible to run these platforms on CI.
1132 +The following table describes the supported platforms: `build` shows whether
1133 +the library compiles without issues for a given target, while `run` shows
1134 +whether the test suite passes for a given target.
1136 +| **Linux** | **build** | **run** |
1137 +|---------------------------------------|-----------|---------|
1138 +| `i586-unknown-linux-gnu` | ✓ | ✗ |
1139 +| `i686-unknown-linux-gnu` | ✓ | ✗ |
1140 +| `x86_64-unknown-linux-gnu` | ✓ | ✓ |
1141 +| `arm-unknown-linux-gnueabi` | ✗ | ✗ |
1142 +| `arm-unknown-linux-gnueabihf` | ✓ | ✓ |
1143 +| `armv7-unknown-linux-gnueabi` | ✓ | ✓ |
1144 +| `aarch64-unknown-linux-gnu` | ✓ | ✓ |
1145 +| `mips-unknown-linux-gnu` | ✓ | ✗ |
1146 +| `mipsel-unknown-linux-musl` | ✓ | ✗ |
1147 +| `mips64-unknown-linux-gnuabi64` | ✓ | ✗ |
1148 +| `mips64el-unknown-linux-gnuabi64` | ✓ | ✗ |
1149 +| `powerpc-unknown-linux-gnu` | ✗ | ✗ |
1150 +| `powerpc64-unknown-linux-gnu` | ✗ | ✗ |
1151 +| `powerpc64le-unknown-linux-gnu` | ✓ | ✓ |
1152 +| `s390x-unknown-linux-gnu` | ✗ | ✗ |
1153 +| `sparc64-unknown-linux-gnu` | ✓ | ✗ |
1154 +| `thumbv7neon-unknown-linux-gnueabihf` | ✓ | ✓ |
1155 +| **MacOSX** | **build** | **run** |
1156 +| `x86_64-apple-darwin` | ✓ | ✓ |
1157 +| **Android** | **build** | **run** |
1158 +| `x86_64-linux-android` | ✓ | ✓ |
1159 +| `arm-linux-androideabi` | ✓ | ✓ |
1160 +| `aarch64-linux-android` | ✓ | ✓ |
1161 +| `thumbv7neon-linux-androideabi` | ✗ | ✗ |
1162 +| **iOS** | **build** | **run** |
1163 +| `x86_64-apple-ios` | ✓ | ✗ |
1164 +| `aarch64-apple-ios` | ✓ | ✗ |
1167 ## Machine code verification
1169 @@ -162,8 +129,8 @@ Unless you explicitly state otherwise, any contribution intentionally submitted
1170 for inclusion in `packed_simd` by you, as defined in the Apache-2.0 license, shall be
1171 dual licensed as above, without any additional terms or conditions.
1173 -[travis]: https://travis-ci.org/rust-lang-nursery/packed_simd
1174 -[Travis-CI Status]: https://travis-ci.org/rust-lang-nursery/packed_simd.svg?branch=master
1175 +[travis]: https://travis-ci.com/rust-lang-nursery/packed_simd
1176 +[Travis-CI Status]: https://travis-ci.com/rust-lang-nursery/packed_simd.svg?branch=master
1177 [appveyor]: https://ci.appveyor.com/project/gnzlbg/packed-simd
1178 [Appveyor Status]: https://ci.appveyor.com/api/projects/status/hd7v9dvr442hgdix?svg=true
1179 [Latest Version]: https://img.shields.io/crates/v/packed_simd.svg
1180 diff --git third_party/rust/packed_simd/build.rs third_party/rust/packed_simd/build.rs
1181 index 85639ff9d085..5958b9b7856e 100644
1182 --- third_party/rust/packed_simd/build.rs
1183 +++ third_party/rust/packed_simd/build.rs
1186 - println!("cargo:rustc-env=RUSTC_BOOTSTRAP=1");
1187 + println!("cargo:rustc-env=RUSTC_BOOTSTRAP=1");
1188 let target = std::env::var("TARGET")
1189 .expect("TARGET environment variable not defined");
1190 if target.contains("neon") {
1191 diff --git third_party/rust/packed_simd/ci/all.sh third_party/rust/packed_simd/ci/all.sh
1192 index 273562d4a9bb..55a1fa2efefe 100755
1193 --- third_party/rust/packed_simd/ci/all.sh
1194 +++ third_party/rust/packed_simd/ci/all.sh
1195 @@ -21,7 +21,7 @@ cargo_fmt() {
1199 - cargo clippy --all -- -D clippy::pedantic
1200 + cargo clippy --all -- -D clippy::perf
1204 diff --git third_party/rust/packed_simd/ci/docker/aarch64-unknown-linux-gnu/Dockerfile third_party/rust/packed_simd/ci/docker/aarch64-unknown-linux-gnu/Dockerfile
1205 index 68261a2f033d..41ff4729ac59 100644
1206 --- third_party/rust/packed_simd/ci/docker/aarch64-unknown-linux-gnu/Dockerfile
1207 +++ third_party/rust/packed_simd/ci/docker/aarch64-unknown-linux-gnu/Dockerfile
1211 RUN apt-get update && apt-get install -y --no-install-recommends \
1214 diff --git third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabi/Dockerfile third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabi/Dockerfile
1215 index cb4de6a57eaa..e1c591dd979a 100644
1216 --- third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabi/Dockerfile
1217 +++ third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabi/Dockerfile
1221 RUN apt-get update && apt-get install -y --no-install-recommends \
1224 diff --git third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile
1225 index c7bd61f0a796..757b79e7ecc1 100644
1226 --- third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile
1227 +++ third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile
1231 RUN apt-get update && apt-get install -y --no-install-recommends \
1234 diff --git third_party/rust/packed_simd/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile third_party/rust/packed_simd/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile
1235 index e01b87afdf56..253906293374 100644
1236 --- third_party/rust/packed_simd/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile
1237 +++ third_party/rust/packed_simd/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile
1241 RUN apt-get update && apt-get install -y --no-install-recommends \
1244 diff --git third_party/rust/packed_simd/ci/docker/i586-unknown-linux-gnu/Dockerfile third_party/rust/packed_simd/ci/docker/i586-unknown-linux-gnu/Dockerfile
1245 index 857974a858f1..01093698f679 100644
1246 --- third_party/rust/packed_simd/ci/docker/i586-unknown-linux-gnu/Dockerfile
1247 +++ third_party/rust/packed_simd/ci/docker/i586-unknown-linux-gnu/Dockerfile
1251 RUN apt-get update && apt-get install -y --no-install-recommends \
1254 diff --git third_party/rust/packed_simd/ci/docker/i686-unknown-linux-gnu/Dockerfile third_party/rust/packed_simd/ci/docker/i686-unknown-linux-gnu/Dockerfile
1255 index 857974a858f1..01093698f679 100644
1256 --- third_party/rust/packed_simd/ci/docker/i686-unknown-linux-gnu/Dockerfile
1257 +++ third_party/rust/packed_simd/ci/docker/i686-unknown-linux-gnu/Dockerfile
1261 RUN apt-get update && apt-get install -y --no-install-recommends \
1264 diff --git third_party/rust/packed_simd/ci/docker/mips-unknown-linux-gnu/Dockerfile third_party/rust/packed_simd/ci/docker/mips-unknown-linux-gnu/Dockerfile
1265 index 4711cead372a..3bd471e87d4d 100644
1266 --- third_party/rust/packed_simd/ci/docker/mips-unknown-linux-gnu/Dockerfile
1267 +++ third_party/rust/packed_simd/ci/docker/mips-unknown-linux-gnu/Dockerfile
1272 RUN apt-get update && apt-get install -y --no-install-recommends \
1273 gcc libc6-dev qemu-user ca-certificates \
1274 diff --git third_party/rust/packed_simd/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile third_party/rust/packed_simd/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile
1275 index 1422e8c80924..f26f1f38eb22 100644
1276 --- third_party/rust/packed_simd/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile
1277 +++ third_party/rust/packed_simd/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile
1282 RUN apt-get update && apt-get install -y --no-install-recommends \
1283 gcc libc6-dev qemu-user ca-certificates \
1284 diff --git third_party/rust/packed_simd/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile third_party/rust/packed_simd/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile
1285 index d94deb5b2013..7d9f0bd99250 100644
1286 --- third_party/rust/packed_simd/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile
1287 +++ third_party/rust/packed_simd/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile
1292 RUN apt-get update && apt-get install -y --no-install-recommends \
1293 gcc libc6-dev qemu-user ca-certificates \
1294 diff --git third_party/rust/packed_simd/ci/docker/mipsel-unknown-linux-musl/Dockerfile third_party/rust/packed_simd/ci/docker/mipsel-unknown-linux-musl/Dockerfile
1295 index 40ac50675bd9..7488662ef281 100644
1296 --- third_party/rust/packed_simd/ci/docker/mipsel-unknown-linux-musl/Dockerfile
1297 +++ third_party/rust/packed_simd/ci/docker/mipsel-unknown-linux-musl/Dockerfile
1298 @@ -16,10 +16,10 @@ RUN mkdir /toolchain
1300 # Note that this originally came from:
1301 # https://downloads.openwrt.org/snapshots/trunk/malta/generic/OpenWrt-Toolchain-malta-le_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2
1302 -RUN curl -L https://s3-us-west-1.amazonaws.com/rust-lang-ci2/libc/OpenWrt-Toolchain-malta-le_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2 | \
1303 +RUN curl -L https://ci-mirrors.rust-lang.org/libc/OpenWrt-Toolchain-malta-le_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2 | \
1304 tar xjf - -C /toolchain --strip-components=2
1306 ENV PATH=$PATH:/rust/bin:/toolchain/bin \
1307 CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
1308 CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_MUSL_LINKER=mipsel-openwrt-linux-gcc \
1309 - CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_MUSL_RUNNER="qemu-mipsel -L /toolchain"
1310 \ No newline at end of file
1311 + CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_MUSL_RUNNER="qemu-mipsel -L /toolchain"
1312 diff --git third_party/rust/packed_simd/ci/docker/powerpc-unknown-linux-gnu/Dockerfile third_party/rust/packed_simd/ci/docker/powerpc-unknown-linux-gnu/Dockerfile
1313 index 43b174ed87fc..80cfee8ab5b9 100644
1314 --- third_party/rust/packed_simd/ci/docker/powerpc-unknown-linux-gnu/Dockerfile
1315 +++ third_party/rust/packed_simd/ci/docker/powerpc-unknown-linux-gnu/Dockerfile
1320 RUN apt-get update && apt-get install -y --no-install-recommends \
1321 gcc libc6-dev qemu-user ca-certificates \
1322 @@ -9,4 +9,5 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
1324 ENV CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_LINKER=powerpc-linux-gnu-gcc \
1325 CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc -cpu Vger -L /usr/powerpc-linux-gnu" \
1326 + CC=powerpc-linux-gnu-gcc \
1327 OBJDUMP=powerpc-linux-gnu-objdump
1328 diff --git third_party/rust/packed_simd/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile third_party/rust/packed_simd/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile
1329 index 7757ad28a42d..74031a2a3e6f 100644
1330 --- third_party/rust/packed_simd/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile
1331 +++ third_party/rust/packed_simd/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile
1336 RUN apt-get update && apt-get install -y --no-install-recommends \
1338 diff --git third_party/rust/packed_simd/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile third_party/rust/packed_simd/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile
1339 index 0b0c214fdf1b..471a7d9651f7 100644
1340 --- third_party/rust/packed_simd/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile
1341 +++ third_party/rust/packed_simd/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile
1346 RUN apt-get update && apt-get install -y --no-install-recommends \
1347 gcc libc6-dev qemu-user ca-certificates \
1348 diff --git third_party/rust/packed_simd/ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile third_party/rust/packed_simd/ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile
1349 index 696cb6c3fb52..588d23c65ae5 100644
1350 --- third_party/rust/packed_simd/ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile
1351 +++ third_party/rust/packed_simd/ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile
1355 RUN apt-get update && apt-get install -y --no-install-recommends \
1358 diff --git third_party/rust/packed_simd/ci/docker/x86_64-unknown-linux-gnu/Dockerfile third_party/rust/packed_simd/ci/docker/x86_64-unknown-linux-gnu/Dockerfile
1359 index e6b000d0516e..ce5bb88e625d 100644
1360 --- third_party/rust/packed_simd/ci/docker/x86_64-unknown-linux-gnu/Dockerfile
1361 +++ third_party/rust/packed_simd/ci/docker/x86_64-unknown-linux-gnu/Dockerfile
1365 RUN apt-get update && apt-get install -y --no-install-recommends \
1368 diff --git third_party/rust/packed_simd/ci/dox.sh third_party/rust/packed_simd/ci/dox.sh
1369 index 1743366407e3..560eaadcc880 100755
1370 --- third_party/rust/packed_simd/ci/dox.sh
1371 +++ third_party/rust/packed_simd/ci/dox.sh
1372 @@ -18,7 +18,10 @@ cp -r perf-guide/book target/doc/perf-guide
1374 # If we're on travis, not a PR, and on the right branch, publish!
1375 if [ "$TRAVIS_PULL_REQUEST" = "false" ] && [ "$TRAVIS_BRANCH" = "master" ]; then
1376 - pip install ghp_import --install-option="--prefix=$HOME/.local"
1377 - $HOME/.local/bin/ghp-import -n target/doc
1381 + pip install ghp_import --user
1382 + ghp-import -n target/doc
1383 git push -qf https://${GH_PAGES}@github.com/${TRAVIS_REPO_SLUG}.git gh-pages
1385 diff --git third_party/rust/packed_simd/ci/run.sh third_party/rust/packed_simd/ci/run.sh
1386 index 7bb825883680..428a5d890257 100755
1387 --- third_party/rust/packed_simd/ci/run.sh
1388 +++ third_party/rust/packed_simd/ci/run.sh
1389 @@ -78,9 +78,11 @@ fi
1391 if [[ "${TARGET}" == "x86_64-unknown-linux-gnu" ]] || [[ "${TARGET}" == "x86_64-pc-windows-msvc" ]]; then
1392 # use sleef on linux and windows x86_64 builds
1393 - cargo_test_impl --release --features=into_bits,core_arch,sleef-sys
1394 + # FIXME: Use `core_arch,sleef-sys` features once they works again
1395 + cargo_test_impl --release --features=into_bits
1397 - cargo_test_impl --release --features=into_bits,core_arch
1398 + # FIXME: Use `core_arch` feature once it works again
1399 + cargo_test_impl --release --features=into_bits
1402 # Verify code generation
1403 diff --git third_party/rust/packed_simd/ci/setup_benchmarks.sh third_party/rust/packed_simd/ci/setup_benchmarks.sh
1404 index ddc4765d5ceb..cd41a7851303 100755
1405 --- third_party/rust/packed_simd/ci/setup_benchmarks.sh
1406 +++ third_party/rust/packed_simd/ci/setup_benchmarks.sh
1407 @@ -5,6 +5,3 @@ set -ex
1408 # Get latest ISPC binary for the target and put it in the path
1409 git clone https://github.com/gnzlbg/ispc-binaries
1410 cp ispc-binaries/ispc-${TARGET} ispc
1412 -# Rust-bindgen requires RUSTFMT
1413 -rustup component add rustfmt-preview
1414 diff --git third_party/rust/packed_simd/src/api.rs third_party/rust/packed_simd/src/api.rs
1415 index 9959a052ae96..4e9c4292e06c 100644
1416 --- third_party/rust/packed_simd/src/api.rs
1417 +++ third_party/rust/packed_simd/src/api.rs
1419 //! Implements the Simd<[T; N]> APIs
1426 @@ -39,7 +41,7 @@ crate mod into_bits;
1428 macro_rules! impl_i {
1429 ([$elem_ty:ident; $elem_n:expr]: $tuple_id:ident, $mask_ty:ident
1430 - | $ielem_ty:ident | $test_tt:tt | $($elem_ids:ident),*
1431 + | $ielem_ty:ident, $ibitmask_ty:ident | $test_tt:tt | $($elem_ids:ident),*
1432 | From: $($from_vec_ty:ident),* | $(#[$doc:meta])*) => {
1433 impl_minimal_iuf!([$elem_ty; $elem_n]: $tuple_id | $ielem_ty | $test_tt
1434 | $($elem_ids),* | $(#[$doc])*);
1435 @@ -93,6 +95,7 @@ macro_rules! impl_i {
1437 impl_cmp_partial_ord!([$elem_ty; $elem_n]: $tuple_id | $test_tt);
1438 impl_cmp_ord!([$elem_ty; $elem_n]: $tuple_id | $test_tt | (0, 1));
1439 + impl_bitmask!($tuple_id | $ibitmask_ty | (-1, 0) | $test_tt);
1441 test_select!($elem_ty, $mask_ty, $tuple_id, (1, 2) | $test_tt);
1442 test_cmp_partial_ord_int!([$elem_ty; $elem_n]: $tuple_id | $test_tt);
1443 @@ -102,7 +105,7 @@ macro_rules! impl_i {
1445 macro_rules! impl_u {
1446 ([$elem_ty:ident; $elem_n:expr]: $tuple_id:ident, $mask_ty:ident
1447 - | $ielem_ty:ident | $test_tt:tt | $($elem_ids:ident),*
1448 + | $ielem_ty:ident, $ibitmask_ty:ident | $test_tt:tt | $($elem_ids:ident),*
1449 | From: $($from_vec_ty:ident),* | $(#[$doc:meta])*) => {
1450 impl_minimal_iuf!([$elem_ty; $elem_n]: $tuple_id | $ielem_ty | $test_tt
1451 | $($elem_ids),* | $(#[$doc])*);
1452 @@ -155,6 +158,8 @@ macro_rules! impl_u {
1454 impl_cmp_partial_ord!([$elem_ty; $elem_n]: $tuple_id | $test_tt);
1455 impl_cmp_ord!([$elem_ty; $elem_n]: $tuple_id | $test_tt | (0, 1));
1456 + impl_bitmask!($tuple_id | $ibitmask_ty | ($ielem_ty::max_value(), 0) |
1459 test_select!($elem_ty, $mask_ty, $tuple_id, (1, 2) | $test_tt);
1460 test_cmp_partial_ord_int!([$elem_ty; $elem_n]: $tuple_id | $test_tt);
1461 @@ -222,7 +227,8 @@ macro_rules! impl_f {
1464 macro_rules! impl_m {
1465 - ([$elem_ty:ident; $elem_n:expr]: $tuple_id:ident | $ielem_ty:ident
1466 + ([$elem_ty:ident; $elem_n:expr]: $tuple_id:ident
1467 + | $ielem_ty:ident, $ibitmask_ty:ident
1468 | $test_tt:tt | $($elem_ids:ident),* | From: $($from_vec_ty:ident),*
1469 | $(#[$doc:meta])*) => {
1471 @@ -265,6 +271,7 @@ macro_rules! impl_m {
1472 [$elem_ty; $elem_n]: $tuple_id | $test_tt | (false, true)
1474 impl_shuffle1_dyn!([$elem_ty; $elem_n]: $tuple_id | $test_tt);
1475 + impl_bitmask!($tuple_id | $ibitmask_ty | (true, false) | $test_tt);
1477 test_cmp_partial_ord_mask!([$elem_ty; $elem_n]: $tuple_id | $test_tt);
1478 test_shuffle1_dyn_mask!([$elem_ty; $elem_n]: $tuple_id | $test_tt);
1479 diff --git third_party/rust/packed_simd/src/api/bit_manip.rs third_party/rust/packed_simd/src/api/bit_manip.rs
1480 index 3d3c4eb8850a..6d8865706d3e 100644
1481 --- third_party/rust/packed_simd/src/api/bit_manip.rs
1482 +++ third_party/rust/packed_simd/src/api/bit_manip.rs
1483 @@ -37,6 +37,7 @@ macro_rules! impl_bit_manip {
1484 paste::item_with_macros! {
1485 #[allow(overflowing_literals)]
1486 pub mod [<$id _bit_manip>] {
1487 + #![allow(const_item_mutation)]
1490 const LANE_WIDTH: usize = mem::size_of::<$elem_ty>() * 8;
1491 diff --git third_party/rust/packed_simd/src/api/bitmask.rs third_party/rust/packed_simd/src/api/bitmask.rs
1492 new file mode 100644
1493 index 000000000000..a06ff0fab1f4
1495 +++ third_party/rust/packed_simd/src/api/bitmask.rs
1499 +macro_rules! impl_bitmask {
1500 + ($id:ident | $ibitmask_ty:ident | ($set:expr, $clear:expr)
1501 + | $test_tt:tt) => {
1503 + /// Creates a bitmask with the MSB of each vector lane.
1505 + /// If the vector has less than 8 lanes, the bits that do not
1506 + /// correspond to any vector lanes are cleared.
1508 + pub fn bitmask(self) -> $ibitmask_ty {
1509 + unsafe { codegen::llvm::simd_bitmask(self.0) }
1517 + // FIXME: https://github.com/rust-lang-nursery/packed_simd/issues/210
1518 + all(target_arch = "mips", target_endian = "big"),
1519 + all(target_arch = "mips64", target_endian = "big"),
1520 + target_arch = "sparc64",
1521 + target_arch = "s390x",
1523 + pub mod [<$id _bitmask>] {
1525 + #[cfg_attr(not(target_arch = "wasm32"), test)]
1526 + #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
1528 + // clear all lanes
1529 + let vec = $id::splat($clear as _);
1530 + let bitmask: $ibitmask_ty = 0;
1531 + assert_eq!(vec.bitmask(), bitmask);
1534 + let mut vec = $id::splat($clear as _);
1535 + for i in 0..$id::lanes() {
1537 + vec = vec.replace(i, $set as _);
1540 + // create bitmask with even lanes set:
1541 + let mut bitmask: $ibitmask_ty = 0;
1542 + for i in 0..$id::lanes() {
1544 + bitmask |= 1 << i;
1547 + assert_eq!(vec.bitmask(), bitmask);
1551 + let mut vec = $id::splat($clear as _);
1552 + for i in 0..$id::lanes() {
1554 + vec = vec.replace(i, $set as _);
1557 + // create bitmask with odd lanes set:
1558 + let mut bitmask: $ibitmask_ty = 0;
1559 + for i in 0..$id::lanes() {
1561 + bitmask |= 1 << i;
1564 + assert_eq!(vec.bitmask(), bitmask);
1567 + let vec = $id::splat($set as _);
1568 + let mut bitmask: $ibitmask_ty = 0;
1569 + for i in 0..$id::lanes() {
1570 + bitmask |= 1 << i;
1572 + assert_eq!(vec.bitmask(), bitmask);
1579 diff --git third_party/rust/packed_simd/src/api/cast/v128.rs third_party/rust/packed_simd/src/api/cast/v128.rs
1580 index 78c07f3a5597..ab47ddc006d6 100644
1581 --- third_party/rust/packed_simd/src/api/cast/v128.rs
1582 +++ third_party/rust/packed_simd/src/api/cast/v128.rs
1584 //! `FromCast` and `IntoCast` implementations for portable 128-bit wide vectors
1590 diff --git third_party/rust/packed_simd/src/api/cast/v16.rs third_party/rust/packed_simd/src/api/cast/v16.rs
1591 index d292936baa41..cf974bb08e70 100644
1592 --- third_party/rust/packed_simd/src/api/cast/v16.rs
1593 +++ third_party/rust/packed_simd/src/api/cast/v16.rs
1595 //! `FromCast` and `IntoCast` implementations for portable 16-bit wide vectors
1601 diff --git third_party/rust/packed_simd/src/api/cast/v256.rs third_party/rust/packed_simd/src/api/cast/v256.rs
1602 index 0a669e0beebe..9389dcb4c7f7 100644
1603 --- third_party/rust/packed_simd/src/api/cast/v256.rs
1604 +++ third_party/rust/packed_simd/src/api/cast/v256.rs
1606 //! `FromCast` and `IntoCast` implementations for portable 256-bit wide vectors
1612 diff --git third_party/rust/packed_simd/src/api/cast/v32.rs third_party/rust/packed_simd/src/api/cast/v32.rs
1613 index 65050cdacb4e..2b254ba0cf12 100644
1614 --- third_party/rust/packed_simd/src/api/cast/v32.rs
1615 +++ third_party/rust/packed_simd/src/api/cast/v32.rs
1617 //! `FromCast` and `IntoCast` implementations for portable 32-bit wide vectors
1623 diff --git third_party/rust/packed_simd/src/api/cast/v512.rs third_party/rust/packed_simd/src/api/cast/v512.rs
1624 index 9ae1caed35e2..5a10ab066677 100644
1625 --- third_party/rust/packed_simd/src/api/cast/v512.rs
1626 +++ third_party/rust/packed_simd/src/api/cast/v512.rs
1628 //! `FromCast` and `IntoCast` implementations for portable 512-bit wide vectors
1634 diff --git third_party/rust/packed_simd/src/api/cast/v64.rs third_party/rust/packed_simd/src/api/cast/v64.rs
1635 index 0e2f78f7335b..192a4638a362 100644
1636 --- third_party/rust/packed_simd/src/api/cast/v64.rs
1637 +++ third_party/rust/packed_simd/src/api/cast/v64.rs
1639 //! `FromCast` and `IntoCast` implementations for portable 64-bit wide vectors
1645 diff --git third_party/rust/packed_simd/src/api/default.rs third_party/rust/packed_simd/src/api/default.rs
1646 index 843d51bcc4bb..7af55ea77a85 100644
1647 --- third_party/rust/packed_simd/src/api/default.rs
1648 +++ third_party/rust/packed_simd/src/api/default.rs
1649 @@ -12,6 +12,8 @@ macro_rules! impl_default {
1653 + // Comparisons use integer casts within mantissa^1 range.
1654 + #[allow(clippy::float_cmp)]
1655 pub mod [<$id _default>] {
1657 #[cfg_attr(not(target_arch = "wasm32"), test)] #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
1658 diff --git third_party/rust/packed_simd/src/api/from/from_array.rs third_party/rust/packed_simd/src/api/from/from_array.rs
1659 index 964d1501df6a..b83f93816262 100644
1660 --- third_party/rust/packed_simd/src/api/from/from_array.rs
1661 +++ third_party/rust/packed_simd/src/api/from/from_array.rs
1662 @@ -56,6 +56,8 @@ macro_rules! impl_from_array {
1666 + // Comparisons use integer casts within mantissa^1 range.
1667 + #[allow(clippy::float_cmp)]
1671 diff --git third_party/rust/packed_simd/src/api/hash.rs third_party/rust/packed_simd/src/api/hash.rs
1672 index 08d42496ea8b..ee80eff939c3 100644
1673 --- third_party/rust/packed_simd/src/api/hash.rs
1674 +++ third_party/rust/packed_simd/src/api/hash.rs
1675 @@ -36,6 +36,8 @@ macro_rules! impl_hash {
1676 let mut v_hash = a_hash.clone();
1677 a.hash(&mut a_hash);
1679 + // Integer within mantissa^1 range.
1680 + #[allow(clippy::float_cmp)]
1681 let v = $id::splat(42 as $elem_ty);
1682 v.hash(&mut v_hash);
1683 assert_eq!(a_hash.finish(), v_hash.finish());
1684 diff --git third_party/rust/packed_simd/src/api/into_bits/arch_specific.rs third_party/rust/packed_simd/src/api/into_bits/arch_specific.rs
1685 index 6cc2fa37b728..fee6140052f9 100644
1686 --- third_party/rust/packed_simd/src/api/into_bits/arch_specific.rs
1687 +++ third_party/rust/packed_simd/src/api/into_bits/arch_specific.rs
1689 //! `FromBits` and `IntoBits` between portable vector types and the
1690 //! architecture-specific vector types.
1694 // FIXME: MIPS FromBits/IntoBits
1696 @@ -84,7 +84,6 @@ macro_rules! impl_arch {
1697 // FIXME: 64-bit single element types
1698 // FIXME: arm/aarch float16x4_t missing
1700 - [x86["x86"]: __m64], [x86_64["x86_64"]: __m64],
1701 [arm["arm"]: int8x8_t, uint8x8_t, poly8x8_t, int16x4_t, uint16x4_t,
1702 poly16x4_t, int32x2_t, uint32x2_t, float32x2_t, int64x1_t,
1704 diff --git third_party/rust/packed_simd/src/api/into_bits/v128.rs third_party/rust/packed_simd/src/api/into_bits/v128.rs
1705 index 804dbf282d53..e32cd7f9f099 100644
1706 --- third_party/rust/packed_simd/src/api/into_bits/v128.rs
1707 +++ third_party/rust/packed_simd/src/api/into_bits/v128.rs
1709 //! `FromBits` and `IntoBits` implementations for portable 128-bit wide vectors
1713 #[allow(unused)] // wasm_bindgen_test
1715 diff --git third_party/rust/packed_simd/src/api/into_bits/v16.rs third_party/rust/packed_simd/src/api/into_bits/v16.rs
1716 index 1162a62e5bd1..e44d0e7f9a18 100644
1717 --- third_party/rust/packed_simd/src/api/into_bits/v16.rs
1718 +++ third_party/rust/packed_simd/src/api/into_bits/v16.rs
1720 //! `FromBits` and `IntoBits` implementations for portable 16-bit wide vectors
1724 #[allow(unused)] // wasm_bindgen_test
1726 diff --git third_party/rust/packed_simd/src/api/into_bits/v256.rs third_party/rust/packed_simd/src/api/into_bits/v256.rs
1727 index cc7a6646b535..c4c373e0d0b8 100644
1728 --- third_party/rust/packed_simd/src/api/into_bits/v256.rs
1729 +++ third_party/rust/packed_simd/src/api/into_bits/v256.rs
1731 //! `FromBits` and `IntoBits` implementations for portable 256-bit wide vectors
1735 #[allow(unused)] // wasm_bindgen_test
1737 diff --git third_party/rust/packed_simd/src/api/into_bits/v32.rs third_party/rust/packed_simd/src/api/into_bits/v32.rs
1738 index 2c183ecf1c77..5dba38a17976 100644
1739 --- third_party/rust/packed_simd/src/api/into_bits/v32.rs
1740 +++ third_party/rust/packed_simd/src/api/into_bits/v32.rs
1742 //! `FromBits` and `IntoBits` implementations for portable 32-bit wide vectors
1746 #[allow(unused)] // wasm_bindgen_test
1748 diff --git third_party/rust/packed_simd/src/api/into_bits/v512.rs third_party/rust/packed_simd/src/api/into_bits/v512.rs
1749 index 8dec6a7f63a0..4a771962c348 100644
1750 --- third_party/rust/packed_simd/src/api/into_bits/v512.rs
1751 +++ third_party/rust/packed_simd/src/api/into_bits/v512.rs
1753 //! `FromBits` and `IntoBits` implementations for portable 512-bit wide vectors
1757 #[allow(unused)] // wasm_bindgen_test
1759 diff --git third_party/rust/packed_simd/src/api/into_bits/v64.rs third_party/rust/packed_simd/src/api/into_bits/v64.rs
1760 index 8999d98e13f8..5b065f1bd5f7 100644
1761 --- third_party/rust/packed_simd/src/api/into_bits/v64.rs
1762 +++ third_party/rust/packed_simd/src/api/into_bits/v64.rs
1764 //! `FromBits` and `IntoBits` implementations for portable 64-bit wide vectors
1768 #[allow(unused)] // wasm_bindgen_test
1770 diff --git third_party/rust/packed_simd/src/api/minimal/iuf.rs third_party/rust/packed_simd/src/api/minimal/iuf.rs
1771 index 58ffabab994f..a155ac178a26 100644
1772 --- third_party/rust/packed_simd/src/api/minimal/iuf.rs
1773 +++ third_party/rust/packed_simd/src/api/minimal/iuf.rs
1774 @@ -53,7 +53,7 @@ macro_rules! impl_minimal_iuf {
1776 /// Extracts the value at `index`.
1778 - /// # Precondition
1781 /// If `index >= Self::lanes()` the behavior is undefined.
1783 @@ -80,7 +80,7 @@ macro_rules! impl_minimal_iuf {
1785 /// Returns a new vector where the value at `index` is replaced by `new_value`.
1787 - /// # Precondition
1790 /// If `index >= Self::lanes()` the behavior is undefined.
1792 @@ -101,6 +101,8 @@ macro_rules! impl_minimal_iuf {
1796 + // Comparisons use integer casts within mantissa^1 range.
1797 + #[allow(clippy::float_cmp)]
1798 pub mod [<$id _minimal>] {
1800 #[cfg_attr(not(target_arch = "wasm32"), test)]
1801 diff --git third_party/rust/packed_simd/src/api/minimal/mask.rs third_party/rust/packed_simd/src/api/minimal/mask.rs
1802 index e65be95db12c..a420060b423d 100644
1803 --- third_party/rust/packed_simd/src/api/minimal/mask.rs
1804 +++ third_party/rust/packed_simd/src/api/minimal/mask.rs
1805 @@ -58,6 +58,8 @@ macro_rules! impl_minimal_mask {
1807 /// Extracts the value at `index`.
1811 /// If `index >= Self::lanes()` the behavior is undefined.
1813 pub unsafe fn extract_unchecked(self, index: usize) -> bool {
1814 @@ -85,9 +87,9 @@ macro_rules! impl_minimal_mask {
1815 /// Returns a new vector where the value at `index` is replaced by
1821 - /// If `index >= Self::lanes()`.
1822 + /// If `index >= Self::lanes()` the behavior is undefined.
1824 #[must_use = "replace_unchecked does not modify the original value - \
1825 it returns a new vector with the value at `index` \
1826 diff --git third_party/rust/packed_simd/src/api/minimal/ptr.rs third_party/rust/packed_simd/src/api/minimal/ptr.rs
1827 index 75e5aad5c065..c3d61fbf6d5e 100644
1828 --- third_party/rust/packed_simd/src/api/minimal/ptr.rs
1829 +++ third_party/rust/packed_simd/src/api/minimal/ptr.rs
1830 @@ -68,7 +68,7 @@ macro_rules! impl_minimal_p {
1832 /// Extracts the value at `index`.
1834 - /// # Precondition
1837 /// If `index >= Self::lanes()` the behavior is undefined.
1839 @@ -96,7 +96,7 @@ macro_rules! impl_minimal_p {
1841 /// Returns a new vector where the value at `index` is replaced by `new_value`.
1843 - /// # Precondition
1846 /// If `index >= Self::lanes()` the behavior is undefined.
1848 @@ -215,7 +215,7 @@ macro_rules! impl_minimal_p {
1852 - unsafe { crate::intrinsics::type_name::<T>() }
1853 + crate::intrinsics::type_name::<T>()
1855 for i in 0..$elem_count {
1857 @@ -550,11 +550,7 @@ macro_rules! impl_minimal_p {
1860 for i in 0..$elem_count {
1861 - let ptr = unsafe {
1862 - crate::mem::transmute(
1863 - &values[i] as *const i32
1866 + let ptr = &values[i] as *const i32 as *mut i32;
1867 vec = vec.replace(i, ptr);
1870 @@ -611,7 +607,7 @@ macro_rules! impl_minimal_p {
1872 /// Instantiates a new vector with the values of the `slice`.
1874 - /// # Precondition
1877 /// If `slice.len() < Self::lanes()` or `&slice[0]` is not aligned
1878 /// to an `align_of::<Self>()` boundary, the behavior is undefined.
1879 @@ -624,7 +620,7 @@ macro_rules! impl_minimal_p {
1881 /// Instantiates a new vector with the values of the `slice`.
1883 - /// # Precondition
1886 /// If `slice.len() < Self::lanes()` the behavior is undefined.
1888 @@ -827,7 +823,7 @@ macro_rules! impl_minimal_p {
1890 /// Writes the values of the vector to the `slice`.
1892 - /// # Precondition
1895 /// If `slice.len() < Self::lanes()` or `&slice[0]` is not
1896 /// aligned to an `align_of::<Self>()` boundary, the behavior is
1897 @@ -843,7 +839,7 @@ macro_rules! impl_minimal_p {
1899 /// Writes the values of the vector to the `slice`.
1901 - /// # Precondition
1904 /// If `slice.len() < Self::lanes()` the behavior is undefined.
1906 @@ -1025,11 +1021,7 @@ macro_rules! impl_minimal_p {
1909 for i in 0..$elem_count {
1910 - let ptr = unsafe {
1911 - crate::mem::transmute(
1912 - &values[i] as *const i32
1915 + let ptr = &values[i] as *const i32 as *mut i32;
1916 vec = vec.replace(i, ptr);
1919 @@ -1151,7 +1143,7 @@ macro_rules! impl_minimal_p {
1920 /// As such, memory acquired directly from allocators or memory
1921 /// mapped files may be too large to handle with this function.
1923 - /// Consider using wrapping_offset_from instead if these constraints
1924 + /// Consider using `wrapping_offset_from` instead if these constraints
1925 /// are difficult to satisfy. The only advantage of this method is
1926 /// that it enables more aggressive compiler optimizations.
1928 diff --git third_party/rust/packed_simd/src/api/ops/vector_float_min_max.rs third_party/rust/packed_simd/src/api/ops/vector_float_min_max.rs
1929 index 4126e87042f5..8310667b7a8d 100644
1930 --- third_party/rust/packed_simd/src/api/ops/vector_float_min_max.rs
1931 +++ third_party/rust/packed_simd/src/api/ops/vector_float_min_max.rs
1932 @@ -26,6 +26,11 @@ macro_rules! impl_ops_vector_float_min_max {
1937 + // FIXME: https://github.com/rust-lang-nursery/packed_simd/issues/223
1938 + all(target_arch = "mips", target_endian = "big"),
1939 + target_arch = "mips64",
1941 pub mod [<$id _ops_vector_min_max>] {
1943 #[cfg_attr(not(target_arch = "wasm32"), test)] #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
1944 diff --git third_party/rust/packed_simd/src/api/ptr/gather_scatter.rs third_party/rust/packed_simd/src/api/ptr/gather_scatter.rs
1945 index 9d8e113bb44f..430435620939 100644
1946 --- third_party/rust/packed_simd/src/api/ptr/gather_scatter.rs
1947 +++ third_party/rust/packed_simd/src/api/ptr/gather_scatter.rs
1948 @@ -49,9 +49,9 @@ macro_rules! impl_ptr_read {
1949 let mut ptr = $id::<i32>::null();
1951 for i in 0..$elem_count {
1952 - ptr = ptr.replace(i, unsafe {
1953 - crate::mem::transmute(&v[i] as *const i32)
1955 + ptr = ptr.replace(i,
1956 + &v[i] as *const i32 as *mut i32
1960 // all mask elements are true:
1961 @@ -135,32 +135,8 @@ macro_rules! impl_ptr_write {
1963 [M; $elem_count]: sealed::SimdArray,
1966 - // https://github.com/rust-lang-nursery/packed_simd/issues/85
1967 - #[cfg(not(target_arch = "mips"))]
1969 - use crate::llvm::simd_scatter;
1970 - simd_scatter(value.0, self.0, mask.0)
1972 - #[cfg(target_arch = "mips")]
1975 - &mask as *const Simd<[M; $elem_count]> as *const M;
1976 - for i in 0..$elem_count {
1977 - let m = ptr::read(m_ptr.add(i));
1980 - as *const Simd<[*mut T; $elem_count]>
1982 - let v_ptr = &value as *const Simd<[T; $elem_count]>
1985 - ptr::read(t_ptr.add(i)),
1986 - ptr::read(v_ptr.add(i)),
1991 + use crate::llvm::simd_scatter;
1992 + simd_scatter(value.0, self.0, mask.0)
1996 @@ -185,7 +161,7 @@ macro_rules! impl_ptr_write {
1997 let mut ptr = $id::<i32>::null();
1998 for i in 0..$elem_count {
1999 ptr = ptr.replace(i, unsafe {
2000 - crate::mem::transmute(arr.as_ptr().add(i))
2001 + arr.as_ptr().add(i) as *mut i32
2004 // ptr = [&arr[0], &arr[1], ...]
2005 diff --git third_party/rust/packed_simd/src/api/reductions/float_arithmetic.rs third_party/rust/packed_simd/src/api/reductions/float_arithmetic.rs
2006 index dd722ae25fdd..4a47452e5006 100644
2007 --- third_party/rust/packed_simd/src/api/reductions/float_arithmetic.rs
2008 +++ third_party/rust/packed_simd/src/api/reductions/float_arithmetic.rs
2009 @@ -93,6 +93,8 @@ macro_rules! impl_reduction_float_arithmetic {
2013 + // Comparisons use integer casts within mantissa^1 range.
2014 + #[allow(clippy::float_cmp)]
2015 pub mod [<$id _reduction_float_arith>] {
2017 fn alternating(x: usize) -> $id {
2018 @@ -225,7 +227,7 @@ macro_rules! impl_reduction_float_arithmetic {
2019 let mut v = $id::splat(0. as $elem_ty);
2020 for i in 0..$id::lanes() {
2021 let c = if i % 2 == 0 { 1e3 } else { -1. };
2022 - start *= 3.14 * c;
2023 + start *= ::core::$elem_ty::consts::PI * c;
2024 scalar_reduction += start;
2025 v = v.replace(i, start);
2027 @@ -257,6 +259,7 @@ macro_rules! impl_reduction_float_arithmetic {
2028 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
2029 #[allow(unused, dead_code)]
2030 fn product_roundoff() {
2031 + use ::core::convert::TryInto;
2032 // Performs a tree-reduction
2033 fn tree_reduce_product(a: &[$elem_ty]) -> $elem_ty {
2034 assert!(!a.is_empty());
2035 @@ -278,7 +281,7 @@ macro_rules! impl_reduction_float_arithmetic {
2036 let mut v = $id::splat(0. as $elem_ty);
2037 for i in 0..$id::lanes() {
2038 let c = if i % 2 == 0 { 1e3 } else { -1. };
2039 - start *= 3.14 * c;
2040 + start *= ::core::$elem_ty::consts::PI * c;
2041 scalar_reduction *= start;
2042 v = v.replace(i, start);
2044 @@ -288,7 +291,9 @@ macro_rules! impl_reduction_float_arithmetic {
2045 v.write_to_slice_unaligned(&mut a);
2046 let tree_reduction = tree_reduce_product(&a);
2048 - // tolerate 1 ULP difference:
2049 + // FIXME: Too imprecise, even only for product(f32x8).
2050 + // Figure out how to narrow this down.
2051 + let ulp_limit = $id::lanes() / 2;
2052 let red_bits = simd_reduction.to_bits();
2053 let tree_bits = tree_reduction.to_bits();
2055 @@ -296,7 +301,7 @@ macro_rules! impl_reduction_float_arithmetic {
2056 red_bits - tree_bits
2058 tree_bits - red_bits
2060 + } < ulp_limit.try_into().unwrap(),
2061 "vector: {:?} | simd_reduction: {:?} | \
2062 tree_reduction: {} | scalar_reduction: {}",
2064 diff --git third_party/rust/packed_simd/src/api/reductions/min_max.rs third_party/rust/packed_simd/src/api/reductions/min_max.rs
2065 index c4d3aa10f15c..c4c1400a8fc4 100644
2066 --- third_party/rust/packed_simd/src/api/reductions/min_max.rs
2067 +++ third_party/rust/packed_simd/src/api/reductions/min_max.rs
2068 @@ -76,6 +76,8 @@ macro_rules! impl_reduction_min_max {
2072 + // Comparisons use integer casts within mantissa^1 range.
2073 + #[allow(clippy::float_cmp)]
2074 pub mod [<$id _reduction_min_max>] {
2076 #[cfg_attr(not(target_arch = "wasm32"), test)]
2077 @@ -124,6 +126,8 @@ macro_rules! test_reduction_float_min_max {
2081 + // Comparisons use integer casts within mantissa^1 range.
2082 + #[allow(clippy::float_cmp)]
2083 pub mod [<$id _reduction_min_max_nan>] {
2085 #[cfg_attr(not(target_arch = "wasm32"), test)]
2086 diff --git third_party/rust/packed_simd/src/api/slice/from_slice.rs third_party/rust/packed_simd/src/api/slice/from_slice.rs
2087 index 109cd1f10b01..25082d1e6800 100644
2088 --- third_party/rust/packed_simd/src/api/slice/from_slice.rs
2089 +++ third_party/rust/packed_simd/src/api/slice/from_slice.rs
2090 @@ -38,7 +38,7 @@ macro_rules! impl_slice_from_slice {
2092 /// Instantiates a new vector with the values of the `slice`.
2094 - /// # Precondition
2097 /// If `slice.len() < Self::lanes()` or `&slice[0]` is not aligned
2098 /// to an `align_of::<Self>()` boundary, the behavior is undefined.
2099 @@ -59,7 +59,7 @@ macro_rules! impl_slice_from_slice {
2101 /// Instantiates a new vector with the values of the `slice`.
2103 - /// # Precondition
2106 /// If `slice.len() < Self::lanes()` the behavior is undefined.
2108 @@ -84,6 +84,8 @@ macro_rules! impl_slice_from_slice {
2112 + // Comparisons use integer casts within mantissa^1 range.
2113 + #[allow(clippy::float_cmp)]
2114 pub mod [<$id _slice_from_slice>] {
2116 use crate::iter::Iterator;
2117 diff --git third_party/rust/packed_simd/src/api/slice/write_to_slice.rs third_party/rust/packed_simd/src/api/slice/write_to_slice.rs
2118 index fcb288da70fc..b634d98b9962 100644
2119 --- third_party/rust/packed_simd/src/api/slice/write_to_slice.rs
2120 +++ third_party/rust/packed_simd/src/api/slice/write_to_slice.rs
2121 @@ -39,7 +39,7 @@ macro_rules! impl_slice_write_to_slice {
2123 /// Writes the values of the vector to the `slice`.
2125 - /// # Precondition
2128 /// If `slice.len() < Self::lanes()` or `&slice[0]` is not
2129 /// aligned to an `align_of::<Self>()` boundary, the behavior is
2130 @@ -64,7 +64,7 @@ macro_rules! impl_slice_write_to_slice {
2132 /// Writes the values of the vector to the `slice`.
2134 - /// # Precondition
2137 /// If `slice.len() < Self::lanes()` the behavior is undefined.
2139 @@ -86,6 +86,8 @@ macro_rules! impl_slice_write_to_slice {
2143 + // Comparisons use integer casts within mantissa^1 range.
2144 + #[allow(clippy::float_cmp)]
2145 pub mod [<$id _slice_write_to_slice>] {
2147 use crate::iter::Iterator;
2148 diff --git third_party/rust/packed_simd/src/codegen.rs third_party/rust/packed_simd/src/codegen.rs
2149 index b7ccd838603f..9d1517e203d1 100644
2150 --- third_party/rust/packed_simd/src/codegen.rs
2151 +++ third_party/rust/packed_simd/src/codegen.rs
2152 @@ -16,6 +16,8 @@ macro_rules! impl_simd_array {
2153 pub struct $tuple_id($(crate $elem_tys),*);
2154 //^^^^^^^ leaked through SimdArray
2156 + impl crate::sealed::Seal for [$elem_ty; $elem_count] {}
2158 impl crate::sealed::SimdArray for [$elem_ty; $elem_count] {
2159 type Tuple = $tuple_id;
2161 @@ -23,6 +25,7 @@ macro_rules! impl_simd_array {
2162 type NT = [u32; $elem_count];
2165 + impl crate::sealed::Seal for $tuple_id {}
2166 impl crate::sealed::Simd for $tuple_id {
2167 type Element = $elem_ty;
2168 const LANES: usize = $elem_count;
2169 diff --git third_party/rust/packed_simd/src/codegen/bit_manip.rs third_party/rust/packed_simd/src/codegen/bit_manip.rs
2170 index 947266f5bce8..83c7d1987cac 100644
2171 --- third_party/rust/packed_simd/src/codegen/bit_manip.rs
2172 +++ third_party/rust/packed_simd/src/codegen/bit_manip.rs
2174 //! LLVM bit manipulation intrinsics.
2180 diff --git third_party/rust/packed_simd/src/codegen/llvm.rs third_party/rust/packed_simd/src/codegen/llvm.rs
2181 index 91c2b0758dcf..93c6ce6b77ed 100644
2182 --- third_party/rust/packed_simd/src/codegen/llvm.rs
2183 +++ third_party/rust/packed_simd/src/codegen/llvm.rs
2184 @@ -10,31 +10,37 @@ extern "platform-intrinsic" {
2185 // FIXME: Passing this intrinsics an `idx` array with an index that is
2186 // out-of-bounds will produce a monomorphization-time error.
2187 // https://github.com/rust-lang-nursery/packed_simd/issues/21
2188 + #[rustc_args_required_const(2)]
2189 pub fn simd_shuffle2<T, U>(x: T, y: T, idx: [u32; 2]) -> U
2192 <T as Simd>::Element: Shuffle<[u32; 2], Output = U>;
2194 + #[rustc_args_required_const(2)]
2195 pub fn simd_shuffle4<T, U>(x: T, y: T, idx: [u32; 4]) -> U
2198 <T as Simd>::Element: Shuffle<[u32; 4], Output = U>;
2200 + #[rustc_args_required_const(2)]
2201 pub fn simd_shuffle8<T, U>(x: T, y: T, idx: [u32; 8]) -> U
2204 <T as Simd>::Element: Shuffle<[u32; 8], Output = U>;
2206 + #[rustc_args_required_const(2)]
2207 pub fn simd_shuffle16<T, U>(x: T, y: T, idx: [u32; 16]) -> U
2210 <T as Simd>::Element: Shuffle<[u32; 16], Output = U>;
2212 + #[rustc_args_required_const(2)]
2213 pub fn simd_shuffle32<T, U>(x: T, y: T, idx: [u32; 32]) -> U
2216 <T as Simd>::Element: Shuffle<[u32; 32], Output = U>;
2218 + #[rustc_args_required_const(2)]
2219 pub fn simd_shuffle64<T, U>(x: T, y: T, idx: [u32; 64]) -> U
2222 @@ -96,4 +102,6 @@ extern "platform-intrinsic" {
2224 crate fn simd_gather<T, P, M>(value: T, pointers: P, mask: M) -> T;
2225 crate fn simd_scatter<T, P, M>(value: T, pointers: P, mask: M);
2227 + crate fn simd_bitmask<T, U>(value: T) -> U;
2229 diff --git third_party/rust/packed_simd/src/codegen/reductions/mask/x86.rs third_party/rust/packed_simd/src/codegen/reductions/mask/x86.rs
2230 index 2ae4ed81c416..bcfb1a6e1772 100644
2231 --- third_party/rust/packed_simd/src/codegen/reductions/mask/x86.rs
2232 +++ third_party/rust/packed_simd/src/codegen/reductions/mask/x86.rs
2233 @@ -19,13 +19,7 @@ mod avx2;
2234 /// x86 64-bit m8x8 implementation
2235 macro_rules! x86_m8x8_impl {
2238 - if #[cfg(all(target_arch = "x86_64", target_feature = "sse"))] {
2239 - x86_m8x8_sse_impl!($id);
2241 - fallback_impl!($id);
2244 + fallback_impl!($id);
2248 diff --git third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse.rs third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse.rs
2249 index 7482f9430a14..eb1ef7fac922 100644
2250 --- third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse.rs
2251 +++ third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse.rs
2252 @@ -34,35 +34,3 @@ macro_rules! x86_m32x4_sse_impl {
2257 -macro_rules! x86_m8x8_sse_impl {
2259 - impl All for $id {
2261 - #[target_feature(enable = "sse")]
2262 - unsafe fn all(self) -> bool {
2263 - #[cfg(target_arch = "x86")]
2264 - use crate::arch::x86::_mm_movemask_pi8;
2265 - #[cfg(target_arch = "x86_64")]
2266 - use crate::arch::x86_64::_mm_movemask_pi8;
2267 - // _mm_movemask_pi8(a) creates an 8bit mask containing the most
2268 - // significant bit of each byte of `a`. If all bits are set,
2269 - // then all 8 lanes of the mask are true.
2270 - _mm_movemask_pi8(crate::mem::transmute(self))
2271 - == u8::max_value() as i32
2274 - impl Any for $id {
2276 - #[target_feature(enable = "sse")]
2277 - unsafe fn any(self) -> bool {
2278 - #[cfg(target_arch = "x86")]
2279 - use crate::arch::x86::_mm_movemask_pi8;
2280 - #[cfg(target_arch = "x86_64")]
2281 - use crate::arch::x86_64::_mm_movemask_pi8;
2283 - _mm_movemask_pi8(crate::mem::transmute(self)) != 0
2288 diff --git third_party/rust/packed_simd/src/codegen/shuffle.rs third_party/rust/packed_simd/src/codegen/shuffle.rs
2289 index 35a9db905339..d92c9ee22427 100644
2290 --- third_party/rust/packed_simd/src/codegen/shuffle.rs
2291 +++ third_party/rust/packed_simd/src/codegen/shuffle.rs
2293 //! lanes and vector element types.
2295 use crate::masks::*;
2296 -use crate::sealed::Shuffle;
2298 -impl Shuffle<[u32; 2]> for i8 {
2299 - type Output = crate::codegen::i8x2;
2301 -impl Shuffle<[u32; 4]> for i8 {
2302 - type Output = crate::codegen::i8x4;
2304 -impl Shuffle<[u32; 8]> for i8 {
2305 - type Output = crate::codegen::i8x8;
2307 -impl Shuffle<[u32; 16]> for i8 {
2308 - type Output = crate::codegen::i8x16;
2310 -impl Shuffle<[u32; 32]> for i8 {
2311 - type Output = crate::codegen::i8x32;
2313 -impl Shuffle<[u32; 64]> for i8 {
2314 - type Output = crate::codegen::i8x64;
2317 -impl Shuffle<[u32; 2]> for u8 {
2318 - type Output = crate::codegen::u8x2;
2320 -impl Shuffle<[u32; 4]> for u8 {
2321 - type Output = crate::codegen::u8x4;
2323 -impl Shuffle<[u32; 8]> for u8 {
2324 - type Output = crate::codegen::u8x8;
2326 -impl Shuffle<[u32; 16]> for u8 {
2327 - type Output = crate::codegen::u8x16;
2329 -impl Shuffle<[u32; 32]> for u8 {
2330 - type Output = crate::codegen::u8x32;
2332 -impl Shuffle<[u32; 64]> for u8 {
2333 - type Output = crate::codegen::u8x64;
2336 -impl Shuffle<[u32; 2]> for m8 {
2337 - type Output = crate::codegen::m8x2;
2339 -impl Shuffle<[u32; 4]> for m8 {
2340 - type Output = crate::codegen::m8x4;
2342 -impl Shuffle<[u32; 8]> for m8 {
2343 - type Output = crate::codegen::m8x8;
2345 -impl Shuffle<[u32; 16]> for m8 {
2346 - type Output = crate::codegen::m8x16;
2348 -impl Shuffle<[u32; 32]> for m8 {
2349 - type Output = crate::codegen::m8x32;
2351 -impl Shuffle<[u32; 64]> for m8 {
2352 - type Output = crate::codegen::m8x64;
2355 -impl Shuffle<[u32; 2]> for i16 {
2356 - type Output = crate::codegen::i16x2;
2358 -impl Shuffle<[u32; 4]> for i16 {
2359 - type Output = crate::codegen::i16x4;
2361 -impl Shuffle<[u32; 8]> for i16 {
2362 - type Output = crate::codegen::i16x8;
2364 -impl Shuffle<[u32; 16]> for i16 {
2365 - type Output = crate::codegen::i16x16;
2367 -impl Shuffle<[u32; 32]> for i16 {
2368 - type Output = crate::codegen::i16x32;
2371 -impl Shuffle<[u32; 2]> for u16 {
2372 - type Output = crate::codegen::u16x2;
2374 -impl Shuffle<[u32; 4]> for u16 {
2375 - type Output = crate::codegen::u16x4;
2377 -impl Shuffle<[u32; 8]> for u16 {
2378 - type Output = crate::codegen::u16x8;
2380 -impl Shuffle<[u32; 16]> for u16 {
2381 - type Output = crate::codegen::u16x16;
2383 -impl Shuffle<[u32; 32]> for u16 {
2384 - type Output = crate::codegen::u16x32;
2387 -impl Shuffle<[u32; 2]> for m16 {
2388 - type Output = crate::codegen::m16x2;
2390 -impl Shuffle<[u32; 4]> for m16 {
2391 - type Output = crate::codegen::m16x4;
2393 -impl Shuffle<[u32; 8]> for m16 {
2394 - type Output = crate::codegen::m16x8;
2396 -impl Shuffle<[u32; 16]> for m16 {
2397 - type Output = crate::codegen::m16x16;
2399 -impl Shuffle<[u32; 32]> for m16 {
2400 - type Output = crate::codegen::m16x32;
2403 -impl Shuffle<[u32; 2]> for i32 {
2404 - type Output = crate::codegen::i32x2;
2406 -impl Shuffle<[u32; 4]> for i32 {
2407 - type Output = crate::codegen::i32x4;
2409 -impl Shuffle<[u32; 8]> for i32 {
2410 - type Output = crate::codegen::i32x8;
2412 -impl Shuffle<[u32; 16]> for i32 {
2413 - type Output = crate::codegen::i32x16;
2416 -impl Shuffle<[u32; 2]> for u32 {
2417 - type Output = crate::codegen::u32x2;
2419 -impl Shuffle<[u32; 4]> for u32 {
2420 - type Output = crate::codegen::u32x4;
2422 -impl Shuffle<[u32; 8]> for u32 {
2423 - type Output = crate::codegen::u32x8;
2425 -impl Shuffle<[u32; 16]> for u32 {
2426 - type Output = crate::codegen::u32x16;
2429 -impl Shuffle<[u32; 2]> for f32 {
2430 - type Output = crate::codegen::f32x2;
2432 -impl Shuffle<[u32; 4]> for f32 {
2433 - type Output = crate::codegen::f32x4;
2435 -impl Shuffle<[u32; 8]> for f32 {
2436 - type Output = crate::codegen::f32x8;
2438 -impl Shuffle<[u32; 16]> for f32 {
2439 - type Output = crate::codegen::f32x16;
2442 -impl Shuffle<[u32; 2]> for m32 {
2443 - type Output = crate::codegen::m32x2;
2445 -impl Shuffle<[u32; 4]> for m32 {
2446 - type Output = crate::codegen::m32x4;
2448 -impl Shuffle<[u32; 8]> for m32 {
2449 - type Output = crate::codegen::m32x8;
2451 -impl Shuffle<[u32; 16]> for m32 {
2452 - type Output = crate::codegen::m32x16;
2454 +use crate::sealed::{Shuffle, Seal};
2456 +macro_rules! impl_shuffle {
2457 + ($array:ty, $base:ty, $out:ty) => {
2458 + impl Seal<$array> for $base {}
2459 + impl Shuffle<$array> for $base {
2460 + type Output = $out;
2465 +impl_shuffle! { [u32; 2], i8, crate::codegen::i8x2 }
2466 +impl_shuffle! { [u32; 4], i8, crate::codegen::i8x4 }
2467 +impl_shuffle! { [u32; 8], i8, crate::codegen::i8x8 }
2468 +impl_shuffle! { [u32; 16], i8, crate::codegen::i8x16 }
2469 +impl_shuffle! { [u32; 32], i8, crate::codegen::i8x32 }
2470 +impl_shuffle! { [u32; 64], i8, crate::codegen::i8x64 }
2472 +impl_shuffle! { [u32; 2], u8, crate::codegen::u8x2 }
2473 +impl_shuffle! { [u32; 4], u8, crate::codegen::u8x4 }
2474 +impl_shuffle! { [u32; 8], u8, crate::codegen::u8x8 }
2475 +impl_shuffle! { [u32; 16], u8, crate::codegen::u8x16 }
2476 +impl_shuffle! { [u32; 32], u8, crate::codegen::u8x32 }
2477 +impl_shuffle! { [u32; 64], u8, crate::codegen::u8x64 }
2479 +impl_shuffle! { [u32; 2], m8, crate::codegen::m8x2 }
2480 +impl_shuffle! { [u32; 4], m8, crate::codegen::m8x4 }
2481 +impl_shuffle! { [u32; 8], m8, crate::codegen::m8x8 }
2482 +impl_shuffle! { [u32; 16], m8, crate::codegen::m8x16 }
2483 +impl_shuffle! { [u32; 32], m8, crate::codegen::m8x32 }
2484 +impl_shuffle! { [u32; 64], m8, crate::codegen::m8x64 }
2486 +impl_shuffle! { [u32; 2], i16, crate::codegen::i16x2 }
2487 +impl_shuffle! { [u32; 4], i16, crate::codegen::i16x4 }
2488 +impl_shuffle! { [u32; 8], i16, crate::codegen::i16x8 }
2489 +impl_shuffle! { [u32; 16], i16, crate::codegen::i16x16 }
2490 +impl_shuffle! { [u32; 32], i16, crate::codegen::i16x32 }
2492 +impl_shuffle! { [u32; 2], u16, crate::codegen::u16x2 }
2493 +impl_shuffle! { [u32; 4], u16, crate::codegen::u16x4 }
2494 +impl_shuffle! { [u32; 8], u16, crate::codegen::u16x8 }
2495 +impl_shuffle! { [u32; 16], u16, crate::codegen::u16x16 }
2496 +impl_shuffle! { [u32; 32], u16, crate::codegen::u16x32 }
2498 +impl_shuffle! { [u32; 2], m16, crate::codegen::m16x2 }
2499 +impl_shuffle! { [u32; 4], m16, crate::codegen::m16x4 }
2500 +impl_shuffle! { [u32; 8], m16, crate::codegen::m16x8 }
2501 +impl_shuffle! { [u32; 16], m16, crate::codegen::m16x16 }
2503 +impl_shuffle! { [u32; 2], i32, crate::codegen::i32x2 }
2504 +impl_shuffle! { [u32; 4], i32, crate::codegen::i32x4 }
2505 +impl_shuffle! { [u32; 8], i32, crate::codegen::i32x8 }
2506 +impl_shuffle! { [u32; 16], i32, crate::codegen::i32x16 }
2508 +impl_shuffle! { [u32; 2], u32, crate::codegen::u32x2 }
2509 +impl_shuffle! { [u32; 4], u32, crate::codegen::u32x4 }
2510 +impl_shuffle! { [u32; 8], u32, crate::codegen::u32x8 }
2511 +impl_shuffle! { [u32; 16], u32, crate::codegen::u32x16 }
2513 +impl_shuffle! { [u32; 2], f32, crate::codegen::f32x2 }
2514 +impl_shuffle! { [u32; 4], f32, crate::codegen::f32x4 }
2515 +impl_shuffle! { [u32; 8], f32, crate::codegen::f32x8 }
2516 +impl_shuffle! { [u32; 16], f32, crate::codegen::f32x16 }
2518 +impl_shuffle! { [u32; 2], m32, crate::codegen::m32x2 }
2519 +impl_shuffle! { [u32; 4], m32, crate::codegen::m32x4 }
2520 +impl_shuffle! { [u32; 8], m32, crate::codegen::m32x8 }
2521 +impl_shuffle! { [u32; 16], m32, crate::codegen::m32x16 }
2523 /* FIXME: 64-bit single element vector
2524 -impl Shuffle<[u32; 1]> for i64 {
2525 - type Output = crate::codegen::i64x1;
2527 +impl_shuffle! { [u32; 1], i64, crate::codegen::i64x1 }
2529 -impl Shuffle<[u32; 2]> for i64 {
2530 - type Output = crate::codegen::i64x2;
2532 -impl Shuffle<[u32; 4]> for i64 {
2533 - type Output = crate::codegen::i64x4;
2535 -impl Shuffle<[u32; 8]> for i64 {
2536 - type Output = crate::codegen::i64x8;
2538 +impl_shuffle! { [u32; 2], i64, crate::codegen::i64x2 }
2539 +impl_shuffle! { [u32; 4], i64, crate::codegen::i64x4 }
2540 +impl_shuffle! { [u32; 8], i64, crate::codegen::i64x8 }
2542 /* FIXME: 64-bit single element vector
2543 -impl Shuffle<[u32; 1]> for u64 {
2544 - type Output = crate::codegen::u64x1;
2546 +impl_shuffle! { [u32; 1], i64, crate::codegen::i64x1 }
2548 -impl Shuffle<[u32; 2]> for u64 {
2549 - type Output = crate::codegen::u64x2;
2551 -impl Shuffle<[u32; 4]> for u64 {
2552 - type Output = crate::codegen::u64x4;
2554 -impl Shuffle<[u32; 8]> for u64 {
2555 - type Output = crate::codegen::u64x8;
2557 +impl_shuffle! { [u32; 2], u64, crate::codegen::u64x2 }
2558 +impl_shuffle! { [u32; 4], u64, crate::codegen::u64x4 }
2559 +impl_shuffle! { [u32; 8], u64, crate::codegen::u64x8 }
2561 /* FIXME: 64-bit single element vector
2562 -impl Shuffle<[u32; 1]> for f64 {
2563 - type Output = crate::codegen::f64x1;
2565 +impl_shuffle! { [u32; 1], i64, crate::codegen::i64x1 }
2567 -impl Shuffle<[u32; 2]> for f64 {
2568 - type Output = crate::codegen::f64x2;
2570 -impl Shuffle<[u32; 4]> for f64 {
2571 - type Output = crate::codegen::f64x4;
2573 -impl Shuffle<[u32; 8]> for f64 {
2574 - type Output = crate::codegen::f64x8;
2576 +impl_shuffle! { [u32; 2], f64, crate::codegen::f64x2 }
2577 +impl_shuffle! { [u32; 4], f64, crate::codegen::f64x4 }
2578 +impl_shuffle! { [u32; 8], f64, crate::codegen::f64x8 }
2580 /* FIXME: 64-bit single element vector
2581 -impl Shuffle<[u32; 1]> for m64 {
2582 - type Output = crate::codegen::m64x1;
2584 +impl_shuffle! { [u32; 1], i64, crate::codegen::i64x1 }
2586 -impl Shuffle<[u32; 2]> for m64 {
2587 - type Output = crate::codegen::m64x2;
2589 -impl Shuffle<[u32; 4]> for m64 {
2590 - type Output = crate::codegen::m64x4;
2592 -impl Shuffle<[u32; 8]> for m64 {
2593 - type Output = crate::codegen::m64x8;
2595 +impl_shuffle! { [u32; 2], m64, crate::codegen::m64x2 }
2596 +impl_shuffle! { [u32; 4], m64, crate::codegen::m64x4 }
2597 +impl_shuffle! { [u32; 8], m64, crate::codegen::m64x8 }
2599 -impl Shuffle<[u32; 2]> for isize {
2600 - type Output = crate::codegen::isizex2;
2602 -impl Shuffle<[u32; 4]> for isize {
2603 - type Output = crate::codegen::isizex4;
2605 -impl Shuffle<[u32; 8]> for isize {
2606 - type Output = crate::codegen::isizex8;
2608 +impl_shuffle! { [u32; 2], isize, crate::codegen::isizex2 }
2609 +impl_shuffle! { [u32; 4], isize, crate::codegen::isizex4 }
2610 +impl_shuffle! { [u32; 8], isize, crate::codegen::isizex8 }
2612 -impl Shuffle<[u32; 2]> for usize {
2613 - type Output = crate::codegen::usizex2;
2615 -impl Shuffle<[u32; 4]> for usize {
2616 - type Output = crate::codegen::usizex4;
2618 -impl Shuffle<[u32; 8]> for usize {
2619 - type Output = crate::codegen::usizex8;
2621 +impl_shuffle! { [u32; 2], usize, crate::codegen::usizex2 }
2622 +impl_shuffle! { [u32; 4], usize, crate::codegen::usizex4 }
2623 +impl_shuffle! { [u32; 8], usize, crate::codegen::usizex8 }
2625 +impl_shuffle! { [u32; 2], msize, crate::codegen::msizex2 }
2626 +impl_shuffle! { [u32; 4], msize, crate::codegen::msizex4 }
2627 +impl_shuffle! { [u32; 8], msize, crate::codegen::msizex8 }
2629 +impl<T> Seal<[u32; 2]> for *const T {}
2630 impl<T> Shuffle<[u32; 2]> for *const T {
2631 type Output = crate::codegen::cptrx2<T>;
2633 +impl<T> Seal<[u32; 4]> for *const T {}
2634 impl<T> Shuffle<[u32; 4]> for *const T {
2635 type Output = crate::codegen::cptrx4<T>;
2637 +impl<T> Seal<[u32; 8]> for *const T {}
2638 impl<T> Shuffle<[u32; 8]> for *const T {
2639 type Output = crate::codegen::cptrx8<T>;
2642 +impl<T> Seal<[u32; 2]> for *mut T {}
2643 impl<T> Shuffle<[u32; 2]> for *mut T {
2644 type Output = crate::codegen::mptrx2<T>;
2646 +impl<T> Seal<[u32; 4]> for *mut T {}
2647 impl<T> Shuffle<[u32; 4]> for *mut T {
2648 type Output = crate::codegen::mptrx4<T>;
2650 +impl<T> Seal<[u32; 8]> for *mut T {}
2651 impl<T> Shuffle<[u32; 8]> for *mut T {
2652 type Output = crate::codegen::mptrx8<T>;
2655 -impl Shuffle<[u32; 2]> for msize {
2656 - type Output = crate::codegen::msizex2;
2658 -impl Shuffle<[u32; 4]> for msize {
2659 - type Output = crate::codegen::msizex4;
2661 -impl Shuffle<[u32; 8]> for msize {
2662 - type Output = crate::codegen::msizex8;
2664 +impl_shuffle! { [u32; 1], i128, crate::codegen::i128x1 }
2665 +impl_shuffle! { [u32; 2], i128, crate::codegen::i128x2 }
2666 +impl_shuffle! { [u32; 4], i128, crate::codegen::i128x4 }
2668 -impl Shuffle<[u32; 1]> for i128 {
2669 - type Output = crate::codegen::i128x1;
2671 -impl Shuffle<[u32; 2]> for i128 {
2672 - type Output = crate::codegen::i128x2;
2674 -impl Shuffle<[u32; 4]> for i128 {
2675 - type Output = crate::codegen::i128x4;
2677 +impl_shuffle! { [u32; 1], u128, crate::codegen::u128x1 }
2678 +impl_shuffle! { [u32; 2], u128, crate::codegen::u128x2 }
2679 +impl_shuffle! { [u32; 4], u128, crate::codegen::u128x4 }
2681 -impl Shuffle<[u32; 1]> for u128 {
2682 - type Output = crate::codegen::u128x1;
2684 -impl Shuffle<[u32; 2]> for u128 {
2685 - type Output = crate::codegen::u128x2;
2687 -impl Shuffle<[u32; 4]> for u128 {
2688 - type Output = crate::codegen::u128x4;
2691 -impl Shuffle<[u32; 1]> for m128 {
2692 - type Output = crate::codegen::m128x1;
2694 -impl Shuffle<[u32; 2]> for m128 {
2695 - type Output = crate::codegen::m128x2;
2697 -impl Shuffle<[u32; 4]> for m128 {
2698 - type Output = crate::codegen::m128x4;
2700 +impl_shuffle! { [u32; 1], m128, crate::codegen::m128x1 }
2701 +impl_shuffle! { [u32; 2], m128, crate::codegen::m128x2 }
2702 +impl_shuffle! { [u32; 4], m128, crate::codegen::m128x4 }
2703 diff --git third_party/rust/packed_simd/src/codegen/shuffle1_dyn.rs third_party/rust/packed_simd/src/codegen/shuffle1_dyn.rs
2704 index 1e9f5816371a..a5403a06bb6e 100644
2705 --- third_party/rust/packed_simd/src/codegen/shuffle1_dyn.rs
2706 +++ third_party/rust/packed_simd/src/codegen/shuffle1_dyn.rs
2707 @@ -28,31 +28,10 @@ macro_rules! impl_fallback {
2708 macro_rules! impl_shuffle1_dyn {
2711 - if #[cfg(all(any(target_arch = "x86", target_arch = "x86_64"),
2712 - target_feature = "ssse3"))] {
2713 - impl Shuffle1Dyn for u8x8 {
2714 - type Indices = Self;
2716 - fn shuffle1_dyn(self, indices: Self::Indices) -> Self {
2717 - #[cfg(target_arch = "x86")]
2718 - use crate::arch::x86::_mm_shuffle_pi8;
2719 - #[cfg(target_arch = "x86_64")]
2720 - use crate::arch::x86_64::_mm_shuffle_pi8;
2723 - crate::mem::transmute(
2725 - crate::mem::transmute(self.0),
2726 - crate::mem::transmute(indices.0)
2732 - } else if #[cfg(all(
2735 - all(target_aarch = "aarch64", target_feature = "neon"),
2736 - all(target_aarch = "arm", target_feature = "v7",
2737 + all(target_arch = "aarch64", target_feature = "neon"),
2738 + all(target_arch = "doesnotexist", target_feature = "v7",
2739 target_feature = "neon")
2741 any(feature = "core_arch", libcore_neon)
2742 @@ -62,9 +41,9 @@ macro_rules! impl_shuffle1_dyn {
2743 type Indices = Self;
2745 fn shuffle1_dyn(self, indices: Self::Indices) -> Self {
2746 - #[cfg(targt_arch = "aarch64")]
2747 + #[cfg(target_arch = "aarch64")]
2748 use crate::arch::aarch64::vtbl1_u8;
2749 - #[cfg(targt_arch = "arm")]
2750 + #[cfg(target_arch = "doesnotexist")]
2751 use crate::arch::arm::vtbl1_u8;
2753 // This is safe because the binary is compiled with
2754 @@ -106,7 +85,7 @@ macro_rules! impl_shuffle1_dyn {
2758 - } else if #[cfg(all(target_aarch = "aarch64", target_feature = "neon",
2759 + } else if #[cfg(all(target_arch = "aarch64", target_feature = "neon",
2760 any(feature = "core_arch", libcore_neon)))] {
2761 impl Shuffle1Dyn for u8x16 {
2762 type Indices = Self;
2763 @@ -125,7 +104,7 @@ macro_rules! impl_shuffle1_dyn {
2767 - } else if #[cfg(all(target_aarch = "arm", target_feature = "v7",
2768 + } else if #[cfg(all(target_arch = "doesnotexist", target_feature = "v7",
2769 target_feature = "neon",
2770 any(feature = "core_arch", libcore_neon)))] {
2771 impl Shuffle1Dyn for u8x16 {
2772 diff --git third_party/rust/packed_simd/src/codegen/vPtr.rs third_party/rust/packed_simd/src/codegen/vPtr.rs
2773 index 1f2bc7714dd9..cf4765538178 100644
2774 --- third_party/rust/packed_simd/src/codegen/vPtr.rs
2775 +++ third_party/rust/packed_simd/src/codegen/vPtr.rs
2776 @@ -8,6 +8,7 @@ macro_rules! impl_simd_ptr {
2777 pub struct $tuple_id<$ty>($(crate $tys),*);
2778 //^^^^^^^ leaked through SimdArray
2780 + impl<$ty> crate::sealed::Seal for [$ptr_ty; $elem_count] {}
2781 impl<$ty> crate::sealed::SimdArray for [$ptr_ty; $elem_count] {
2782 type Tuple = $tuple_id<$ptr_ty>;
2784 @@ -15,6 +16,7 @@ macro_rules! impl_simd_ptr {
2785 type NT = [u32; $elem_count];
2788 + impl<$ty> crate::sealed::Seal for $tuple_id<$ptr_ty> {}
2789 impl<$ty> crate::sealed::Simd for $tuple_id<$ptr_ty> {
2790 type Element = $ptr_ty;
2791 const LANES: usize = $elem_count;
2792 diff --git third_party/rust/packed_simd/src/lib.rs third_party/rust/packed_simd/src/lib.rs
2793 index d73645e72fbe..b0b56d4d7461 100644
2794 --- third_party/rust/packed_simd/src/lib.rs
2795 +++ third_party/rust/packed_simd/src/lib.rs
2802 platform_intrinsics,
2804 @@ -209,22 +210,26 @@
2805 link_llvm_intrinsics,
2807 stmt_expr_attributes,
2809 - mmx_target_feature,
2810 crate_visibility_modifier,
2811 custom_inner_attributes
2813 #![allow(non_camel_case_types, non_snake_case,
2814 - clippy::cast_possible_truncation,
2815 - clippy::cast_lossless,
2816 - clippy::cast_possible_wrap,
2817 - clippy::cast_precision_loss,
2818 - // This lint is currently broken for generic code
2819 - // See https://github.com/rust-lang/rust-clippy/issues/3410
2821 + // FIXME: these types are unsound in C FFI already
2822 + // See https://github.com/rust-lang/rust/issues/53346
2823 + improper_ctypes_definitions,
2824 + clippy::cast_possible_truncation,
2825 + clippy::cast_lossless,
2826 + clippy::cast_possible_wrap,
2827 + clippy::cast_precision_loss,
2828 + // TODO: manually add the `#[must_use]` attribute where appropriate
2829 + clippy::must_use_candidate,
2830 + // This lint is currently broken for generic code
2831 + // See https://github.com/rust-lang/rust-clippy/issues/3410
2833 + clippy::wrong_self_convention,
2835 #![cfg_attr(test, feature(hashmap_internals))]
2836 -#![deny(warnings, rust_2018_idioms, clippy::missing_inline_in_public_items)]
2837 +#![deny(rust_2018_idioms, clippy::missing_inline_in_public_items)]
2841 @@ -256,6 +261,8 @@ mod api;
2845 +pub use crate::sealed::{Simd as SimdVector, Shuffle, SimdArray, Mask};
2847 /// Packed SIMD vector type.
2850 @@ -276,6 +283,8 @@ pub struct Simd<A: sealed::SimdArray>(
2851 #[doc(hidden)] pub <A as sealed::SimdArray>::Tuple,
2854 +impl<A: sealed::SimdArray> sealed::Seal for Simd<A> {}
2856 /// Wrapper over `T` implementing a lexicoraphical order via the `PartialOrd`
2857 /// and/or `Ord` traits.
2858 #[repr(transparent)]
2859 diff --git third_party/rust/packed_simd/src/masks.rs third_party/rust/packed_simd/src/masks.rs
2860 index f83c4da95750..aeb36d232804 100644
2861 --- third_party/rust/packed_simd/src/masks.rs
2862 +++ third_party/rust/packed_simd/src/masks.rs
2863 @@ -6,7 +6,9 @@ macro_rules! impl_mask_ty {
2864 #[derive(Copy, Clone)]
2865 pub struct $id($elem_ty);
2867 + impl crate::sealed::Seal for $id {}
2868 impl crate::sealed::Mask for $id {
2870 fn test(&self) -> bool {
2873 diff --git third_party/rust/packed_simd/src/sealed.rs third_party/rust/packed_simd/src/sealed.rs
2874 index 832acd3f1d54..0ec20300fdd4 100644
2875 --- third_party/rust/packed_simd/src/sealed.rs
2876 +++ third_party/rust/packed_simd/src/sealed.rs
2880 +/// A sealed trait, this is logically private to the crate
2881 +/// and will prevent implementations from outside the crate
2882 +pub trait Seal<T = ()> {}
2884 /// Trait implemented by arrays that can be SIMD types.
2886 -pub trait SimdArray {
2887 +pub trait SimdArray: Seal {
2888 /// The type of the #[repr(simd)] type.
2889 type Tuple: Copy + Clone;
2890 /// The element type of the vector.
2891 @@ -16,7 +19,7 @@ pub trait SimdArray {
2892 /// This traits is used to constraint the arguments
2893 /// and result type of the portable shuffles.
2895 -pub trait Shuffle<Lanes> {
2896 +pub trait Shuffle<Lanes>: Seal<Lanes> {
2897 // Lanes is a `[u32; N]` where `N` is the number of vector lanes
2899 /// The result type of the shuffle.
2900 @@ -24,8 +27,7 @@ pub trait Shuffle<Lanes> {
2903 /// This trait is implemented by all SIMD vector types.
2906 +pub trait Simd: Seal {
2907 /// Element type of the SIMD vector
2909 /// The number of elements in the SIMD vector.
2910 @@ -35,7 +37,6 @@ pub trait Simd {
2913 /// This trait is implemented by all mask types
2916 +pub trait Mask: Seal {
2917 fn test(&self) -> bool;
2919 diff --git third_party/rust/packed_simd/src/testing/utils.rs third_party/rust/packed_simd/src/testing/utils.rs
2920 index 7b8f21ac1c55..21f27aae5432 100644
2921 --- third_party/rust/packed_simd/src/testing/utils.rs
2922 +++ third_party/rust/packed_simd/src/testing/utils.rs
2924 //! Testing utilities
2926 #![allow(dead_code)]
2927 +// FIXME: Or don't. But it's true this is a problematic comparison.
2928 +#![allow(clippy::neg_cmp_op_on_partial_ord)]
2930 use crate::{cmp::PartialOrd, fmt::Debug, LexicographicallyOrdered};
2932 @@ -19,14 +21,19 @@ pub fn test_lt<T>(
2933 assert!(a <= b, "{:?}, {:?}", a, b);
2934 assert!(b >= a, "{:?}, {:?}", a, b);
2937 - assert!(!(a < a), "{:?}, {:?}", a, b);
2938 - assert!(!(b < b), "{:?}, {:?}", a, b);
2939 - assert!(!(a > a), "{:?}, {:?}", a, b);
2940 - assert!(!(b > b), "{:?}, {:?}", a, b);
2941 + // The elegance of the mathematical expression of irreflexivity is more
2942 + // than clippy can handle.
2943 + #[allow(clippy::eq_op)]
2946 + assert!(!(a < a), "{:?}, {:?}", a, b);
2947 + assert!(!(b < b), "{:?}, {:?}", a, b);
2948 + assert!(!(a > a), "{:?}, {:?}", a, b);
2949 + assert!(!(b > b), "{:?}, {:?}", a, b);
2951 - assert!(a <= a, "{:?}, {:?}", a, b);
2952 - assert!(b <= b, "{:?}, {:?}", a, b);
2953 + assert!(a <= a, "{:?}, {:?}", a, b);
2954 + assert!(b <= b, "{:?}, {:?}", a, b);
2958 /// Tests PartialOrd for `a` and `b` where `a <= b` is true.
2959 @@ -38,8 +45,8 @@ pub fn test_le<T>(
2960 assert!(a <= b, "{:?}, {:?}", a, b);
2961 assert!(b >= a, "{:?}, {:?}", a, b);
2963 - assert!(a == b || a < b, "{:?}, {:?}", a, b);
2964 - assert!(a == b || b > a, "{:?}, {:?}", a, b);
2965 + assert!(a <= b, "{:?}, {:?}", a, b);
2966 + assert!(b >= a, "{:?}, {:?}", a, b);
2969 assert!(!(a < b), "{:?}, {:?}", a, b);
2970 diff --git third_party/rust/packed_simd/src/v128.rs third_party/rust/packed_simd/src/v128.rs
2971 index 1d0282dc4278..7949f6619a4f 100644
2972 --- third_party/rust/packed_simd/src/v128.rs
2973 +++ third_party/rust/packed_simd/src/v128.rs
2975 //! 128-bit wide vector types
2981 -impl_i!([i8; 16]: i8x16, m8x16 | i8 | test_v128 |
2982 +impl_i!([i8; 16]: i8x16, m8x16 | i8, u16 | test_v128 |
2983 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
2985 /// A 128-bit vector with 16 `i8` lanes.
2987 -impl_u!([u8; 16]: u8x16, m8x16 | u8 | test_v128 |
2988 +impl_u!([u8; 16]: u8x16, m8x16 | u8, u16 | test_v128 |
2989 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
2991 /// A 128-bit vector with 16 `u8` lanes.
2993 -impl_m!([m8; 16]: m8x16 | i8 | test_v128 |
2994 +impl_m!([m8; 16]: m8x16 | i8, u16 | test_v128 |
2995 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
2997 /// A 128-bit vector mask with 16 `m8` lanes.
3000 -impl_i!([i16; 8]: i16x8, m16x8 | i16 | test_v128 | x0, x1, x2, x3, x4, x5, x6, x7 |
3001 +impl_i!([i16; 8]: i16x8, m16x8 | i16, u8 | test_v128 | x0, x1, x2, x3, x4, x5, x6, x7 |
3003 /// A 128-bit vector with 8 `i16` lanes.
3005 -impl_u!([u16; 8]: u16x8, m16x8 | u16| test_v128 | x0, x1, x2, x3, x4, x5, x6, x7 |
3006 +impl_u!([u16; 8]: u16x8, m16x8 | u16, u8 | test_v128 | x0, x1, x2, x3, x4, x5, x6, x7 |
3008 /// A 128-bit vector with 8 `u16` lanes.
3010 -impl_m!([m16; 8]: m16x8 | i16 | test_v128 | x0, x1, x2, x3, x4, x5, x6, x7 |
3011 +impl_m!([m16; 8]: m16x8 | i16, u8 | test_v128 | x0, x1, x2, x3, x4, x5, x6, x7 |
3013 /// A 128-bit vector mask with 8 `m16` lanes.
3016 -impl_i!([i32; 4]: i32x4, m32x4 | i32 | test_v128 | x0, x1, x2, x3 |
3017 +impl_i!([i32; 4]: i32x4, m32x4 | i32, u8 | test_v128 | x0, x1, x2, x3 |
3018 From: i8x4, u8x4, i16x4, u16x4 |
3019 /// A 128-bit vector with 4 `i32` lanes.
3021 -impl_u!([u32; 4]: u32x4, m32x4 | u32| test_v128 | x0, x1, x2, x3 |
3022 +impl_u!([u32; 4]: u32x4, m32x4 | u32, u8 | test_v128 | x0, x1, x2, x3 |
3024 /// A 128-bit vector with 4 `u32` lanes.
3026 @@ -44,16 +44,16 @@ impl_f!([f32; 4]: f32x4, m32x4 | f32 | test_v128 | x0, x1, x2, x3 |
3027 From: i8x4, u8x4, i16x4, u16x4 |
3028 /// A 128-bit vector with 4 `f32` lanes.
3030 -impl_m!([m32; 4]: m32x4 | i32 | test_v128 | x0, x1, x2, x3 |
3031 +impl_m!([m32; 4]: m32x4 | i32, u8 | test_v128 | x0, x1, x2, x3 |
3032 From: m8x4, m16x4, m64x4 |
3033 /// A 128-bit vector mask with 4 `m32` lanes.
3036 -impl_i!([i64; 2]: i64x2, m64x2 | i64 | test_v128 | x0, x1 |
3037 +impl_i!([i64; 2]: i64x2, m64x2 | i64, u8 | test_v128 | x0, x1 |
3038 From: i8x2, u8x2, i16x2, u16x2, i32x2, u32x2 |
3039 /// A 128-bit vector with 2 `i64` lanes.
3041 -impl_u!([u64; 2]: u64x2, m64x2 | u64 | test_v128 | x0, x1 |
3042 +impl_u!([u64; 2]: u64x2, m64x2 | u64, u8 | test_v128 | x0, x1 |
3043 From: u8x2, u16x2, u32x2 |
3044 /// A 128-bit vector with 2 `u64` lanes.
3046 @@ -61,20 +61,20 @@ impl_f!([f64; 2]: f64x2, m64x2 | f64 | test_v128 | x0, x1 |
3047 From: i8x2, u8x2, i16x2, u16x2, i32x2, u32x2, f32x2 |
3048 /// A 128-bit vector with 2 `f64` lanes.
3050 -impl_m!([m64; 2]: m64x2 | i64 | test_v128 | x0, x1 |
3051 +impl_m!([m64; 2]: m64x2 | i64, u8 | test_v128 | x0, x1 |
3052 From: m8x2, m16x2, m32x2, m128x2 |
3053 /// A 128-bit vector mask with 2 `m64` lanes.
3056 -impl_i!([i128; 1]: i128x1, m128x1 | i128 | test_v128 | x0 |
3057 +impl_i!([i128; 1]: i128x1, m128x1 | i128, u8 | test_v128 | x0 |
3058 From: /*i8x1, u8x1, i16x1, u16x1, i32x1, u32x1, i64x1, u64x1 */ | // FIXME: unary small vector types
3059 /// A 128-bit vector with 1 `i128` lane.
3061 -impl_u!([u128; 1]: u128x1, m128x1 | u128 | test_v128 | x0 |
3062 +impl_u!([u128; 1]: u128x1, m128x1 | u128, u8 | test_v128 | x0 |
3063 From: /*u8x1, u16x1, u32x1, u64x1 */ | // FIXME: unary small vector types
3064 /// A 128-bit vector with 1 `u128` lane.
3066 -impl_m!([m128; 1]: m128x1 | i128 | test_v128 | x0 |
3067 +impl_m!([m128; 1]: m128x1 | i128, u8 | test_v128 | x0 |
3068 From: /*m8x1, m16x1, m32x1, m64x1 */ | // FIXME: unary small vector types
3069 /// A 128-bit vector mask with 1 `m128` lane.
3071 diff --git third_party/rust/packed_simd/src/v16.rs third_party/rust/packed_simd/src/v16.rs
3072 index 67a3832d2530..4ca5afb2a7d5 100644
3073 --- third_party/rust/packed_simd/src/v16.rs
3074 +++ third_party/rust/packed_simd/src/v16.rs
3079 -impl_i!([i8; 2]: i8x2, m8x2 | i8 | test_v16 | x0, x1 |
3080 +impl_i!([i8; 2]: i8x2, m8x2 | i8, u8 | test_v16 | x0, x1 |
3082 /// A 16-bit vector with 2 `i8` lanes.
3084 -impl_u!([u8; 2]: u8x2, m8x2 | u8 | test_v16 | x0, x1 |
3085 +impl_u!([u8; 2]: u8x2, m8x2 | u8, u8 | test_v16 | x0, x1 |
3087 /// A 16-bit vector with 2 `u8` lanes.
3089 -impl_m!([m8; 2]: m8x2 | i8 | test_v16 | x0, x1 |
3090 +impl_m!([m8; 2]: m8x2 | i8, u8 | test_v16 | x0, x1 |
3091 From: m16x2, m32x2, m64x2, m128x2 |
3092 /// A 16-bit vector mask with 2 `m8` lanes.
3094 diff --git third_party/rust/packed_simd/src/v256.rs third_party/rust/packed_simd/src/v256.rs
3095 index 6b59336f68b6..f0c3bc281383 100644
3096 --- third_party/rust/packed_simd/src/v256.rs
3097 +++ third_party/rust/packed_simd/src/v256.rs
3099 //! 256-bit wide vector types
3105 -impl_i!([i8; 32]: i8x32, m8x32 | i8 | test_v256 |
3106 +impl_i!([i8; 32]: i8x32, m8x32 | i8, u32 | test_v256 |
3107 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3108 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31 |
3110 /// A 256-bit vector with 32 `i8` lanes.
3112 -impl_u!([u8; 32]: u8x32, m8x32 | u8 | test_v256 |
3113 +impl_u!([u8; 32]: u8x32, m8x32 | u8, u32 | test_v256 |
3114 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3115 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31 |
3117 /// A 256-bit vector with 32 `u8` lanes.
3119 -impl_m!([m8; 32]: m8x32 | i8 | test_v256 |
3120 +impl_m!([m8; 32]: m8x32 | i8, u32 | test_v256 |
3121 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3122 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31 |
3124 /// A 256-bit vector mask with 32 `m8` lanes.
3127 -impl_i!([i16; 16]: i16x16, m16x16 | i16 | test_v256 |
3128 +impl_i!([i16; 16]: i16x16, m16x16 | i16, u16 | test_v256 |
3129 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
3130 From: i8x16, u8x16 |
3131 /// A 256-bit vector with 16 `i16` lanes.
3133 -impl_u!([u16; 16]: u16x16, m16x16 | u16 | test_v256 |
3134 +impl_u!([u16; 16]: u16x16, m16x16 | u16, u16 | test_v256 |
3135 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
3137 /// A 256-bit vector with 16 `u16` lanes.
3139 -impl_m!([m16; 16]: m16x16 | i16 | test_v256 |
3140 +impl_m!([m16; 16]: m16x16 | i16, u16 | test_v256 |
3141 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
3143 /// A 256-bit vector mask with 16 `m16` lanes.
3146 -impl_i!([i32; 8]: i32x8, m32x8 | i32 | test_v256 | x0, x1, x2, x3, x4, x5, x6, x7 |
3147 +impl_i!([i32; 8]: i32x8, m32x8 | i32, u8 | test_v256 | x0, x1, x2, x3, x4, x5, x6, x7 |
3148 From: i8x8, u8x8, i16x8, u16x8 |
3149 /// A 256-bit vector with 8 `i32` lanes.
3151 -impl_u!([u32; 8]: u32x8, m32x8 | u32 | test_v256 | x0, x1, x2, x3, x4, x5, x6, x7 |
3152 +impl_u!([u32; 8]: u32x8, m32x8 | u32, u8 | test_v256 | x0, x1, x2, x3, x4, x5, x6, x7 |
3154 /// A 256-bit vector with 8 `u32` lanes.
3156 @@ -50,16 +50,16 @@ impl_f!([f32; 8]: f32x8, m32x8 | f32 | test_v256 | x0, x1, x2, x3, x4, x5, x6, x
3157 From: i8x8, u8x8, i16x8, u16x8 |
3158 /// A 256-bit vector with 8 `f32` lanes.
3160 -impl_m!([m32; 8]: m32x8 | i32 | test_v256 | x0, x1, x2, x3, x4, x5, x6, x7 |
3161 +impl_m!([m32; 8]: m32x8 | i32, u8 | test_v256 | x0, x1, x2, x3, x4, x5, x6, x7 |
3163 /// A 256-bit vector mask with 8 `m32` lanes.
3166 -impl_i!([i64; 4]: i64x4, m64x4 | i64 | test_v256 | x0, x1, x2, x3 |
3167 +impl_i!([i64; 4]: i64x4, m64x4 | i64, u8 | test_v256 | x0, x1, x2, x3 |
3168 From: i8x4, u8x4, i16x4, u16x4, i32x4, u32x4 |
3169 /// A 256-bit vector with 4 `i64` lanes.
3171 -impl_u!([u64; 4]: u64x4, m64x4 | u64 | test_v256 | x0, x1, x2, x3 |
3172 +impl_u!([u64; 4]: u64x4, m64x4 | u64, u8 | test_v256 | x0, x1, x2, x3 |
3173 From: u8x4, u16x4, u32x4 |
3174 /// A 256-bit vector with 4 `u64` lanes.
3176 @@ -67,20 +67,20 @@ impl_f!([f64; 4]: f64x4, m64x4 | f64 | test_v256 | x0, x1, x2, x3 |
3177 From: i8x4, u8x4, i16x4, u16x4, i32x4, u32x4, f32x4 |
3178 /// A 256-bit vector with 4 `f64` lanes.
3180 -impl_m!([m64; 4]: m64x4 | i64 | test_v256 | x0, x1, x2, x3 |
3181 +impl_m!([m64; 4]: m64x4 | i64, u8 | test_v256 | x0, x1, x2, x3 |
3182 From: m8x4, m16x4, m32x4 |
3183 /// A 256-bit vector mask with 4 `m64` lanes.
3186 -impl_i!([i128; 2]: i128x2, m128x2 | i128 | test_v256 | x0, x1 |
3187 +impl_i!([i128; 2]: i128x2, m128x2 | i128, u8 | test_v256 | x0, x1 |
3188 From: i8x2, u8x2, i16x2, u16x2, i32x2, u32x2, i64x2, u64x2 |
3189 /// A 256-bit vector with 2 `i128` lanes.
3191 -impl_u!([u128; 2]: u128x2, m128x2 | u128 | test_v256 | x0, x1 |
3192 +impl_u!([u128; 2]: u128x2, m128x2 | u128, u8 | test_v256 | x0, x1 |
3193 From: u8x2, u16x2, u32x2, u64x2 |
3194 /// A 256-bit vector with 2 `u128` lanes.
3196 -impl_m!([m128; 2]: m128x2 | i128 | test_v256 | x0, x1 |
3197 +impl_m!([m128; 2]: m128x2 | i128, u8 | test_v256 | x0, x1 |
3198 From: m8x2, m16x2, m32x2, m64x2 |
3199 /// A 256-bit vector mask with 2 `m128` lanes.
3201 diff --git third_party/rust/packed_simd/src/v32.rs third_party/rust/packed_simd/src/v32.rs
3202 index 09cef9bdd472..75a1838e5e0e 100644
3203 --- third_party/rust/packed_simd/src/v32.rs
3204 +++ third_party/rust/packed_simd/src/v32.rs
3209 -impl_i!([i8; 4]: i8x4, m8x4 | i8 | test_v32 | x0, x1, x2, x3 |
3210 +impl_i!([i8; 4]: i8x4, m8x4 | i8, u8 | test_v32 | x0, x1, x2, x3 |
3212 /// A 32-bit vector with 4 `i8` lanes.
3214 -impl_u!([u8; 4]: u8x4, m8x4 | u8 | test_v32 | x0, x1, x2, x3 |
3215 +impl_u!([u8; 4]: u8x4, m8x4 | u8, u8 | test_v32 | x0, x1, x2, x3 |
3217 /// A 32-bit vector with 4 `u8` lanes.
3219 -impl_m!([m8; 4]: m8x4 | i8 | test_v32 | x0, x1, x2, x3 |
3220 +impl_m!([m8; 4]: m8x4 | i8, u8 | test_v32 | x0, x1, x2, x3 |
3221 From: m16x4, m32x4, m64x4 |
3222 /// A 32-bit vector mask with 4 `m8` lanes.
3225 -impl_i!([i16; 2]: i16x2, m16x2 | i16 | test_v32 | x0, x1 |
3226 +impl_i!([i16; 2]: i16x2, m16x2 | i16, u8 | test_v32 | x0, x1 |
3228 /// A 32-bit vector with 2 `i16` lanes.
3230 -impl_u!([u16; 2]: u16x2, m16x2 | u16 | test_v32 | x0, x1 |
3231 +impl_u!([u16; 2]: u16x2, m16x2 | u16, u8 | test_v32 | x0, x1 |
3233 /// A 32-bit vector with 2 `u16` lanes.
3235 -impl_m!([m16; 2]: m16x2 | i16 | test_v32 | x0, x1 |
3236 +impl_m!([m16; 2]: m16x2 | i16, u8 | test_v32 | x0, x1 |
3237 From: m8x2, m32x2, m64x2, m128x2 |
3238 /// A 32-bit vector mask with 2 `m16` lanes.
3240 diff --git third_party/rust/packed_simd/src/v512.rs third_party/rust/packed_simd/src/v512.rs
3241 index b1714aded369..4c8c71338aca 100644
3242 --- third_party/rust/packed_simd/src/v512.rs
3243 +++ third_party/rust/packed_simd/src/v512.rs
3245 //! 512-bit wide vector types
3251 -impl_i!([i8; 64]: i8x64, m8x64 | i8 | test_v512 |
3252 +impl_i!([i8; 64]: i8x64, m8x64 | i8, u64 | test_v512 |
3253 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3254 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31,
3255 x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47,
3256 @@ -11,7 +11,7 @@ impl_i!([i8; 64]: i8x64, m8x64 | i8 | test_v512 |
3258 /// A 512-bit vector with 64 `i8` lanes.
3260 -impl_u!([u8; 64]: u8x64, m8x64 | u8 | test_v512 |
3261 +impl_u!([u8; 64]: u8x64, m8x64 | u8, u64 | test_v512 |
3262 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3263 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31,
3264 x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47,
3265 @@ -19,7 +19,7 @@ impl_u!([u8; 64]: u8x64, m8x64 | u8 | test_v512 |
3267 /// A 512-bit vector with 64 `u8` lanes.
3269 -impl_m!([m8; 64]: m8x64 | i8 | test_v512 |
3270 +impl_m!([m8; 64]: m8x64 | i8, u64 | test_v512 |
3271 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3272 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31,
3273 x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47,
3274 @@ -28,31 +28,31 @@ impl_m!([m8; 64]: m8x64 | i8 | test_v512 |
3275 /// A 512-bit vector mask with 64 `m8` lanes.
3278 -impl_i!([i16; 32]: i16x32, m16x32 | i16 | test_v512 |
3279 +impl_i!([i16; 32]: i16x32, m16x32 | i16, u32 | test_v512 |
3280 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3281 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31 |
3282 From: i8x32, u8x32 |
3283 /// A 512-bit vector with 32 `i16` lanes.
3285 -impl_u!([u16; 32]: u16x32, m16x32 | u16 | test_v512 |
3286 +impl_u!([u16; 32]: u16x32, m16x32 | u16, u32 | test_v512 |
3287 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3288 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31 |
3290 /// A 512-bit vector with 32 `u16` lanes.
3292 -impl_m!([m16; 32]: m16x32 | i16 | test_v512 |
3293 +impl_m!([m16; 32]: m16x32 | i16, u32 | test_v512 |
3294 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3295 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31 |
3297 /// A 512-bit vector mask with 32 `m16` lanes.
3300 -impl_i!([i32; 16]: i32x16, m32x16 | i32 | test_v512 |
3301 +impl_i!([i32; 16]: i32x16, m32x16 | i32, u16 | test_v512 |
3302 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
3303 From: i8x16, u8x16, i16x16, u16x16 |
3304 /// A 512-bit vector with 16 `i32` lanes.
3306 -impl_u!([u32; 16]: u32x16, m32x16 | u32 | test_v512 |
3307 +impl_u!([u32; 16]: u32x16, m32x16 | u32, u16 | test_v512 |
3308 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
3309 From: u8x16, u16x16 |
3310 /// A 512-bit vector with 16 `u32` lanes.
3311 @@ -62,17 +62,17 @@ impl_f!([f32; 16]: f32x16, m32x16 | f32 | test_v512 |
3312 From: i8x16, u8x16, i16x16, u16x16 |
3313 /// A 512-bit vector with 16 `f32` lanes.
3315 -impl_m!([m32; 16]: m32x16 | i32 | test_v512 |
3316 +impl_m!([m32; 16]: m32x16 | i32, u16 | test_v512 |
3317 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
3318 From: m8x16, m16x16 |
3319 /// A 512-bit vector mask with 16 `m32` lanes.
3322 -impl_i!([i64; 8]: i64x8, m64x8 | i64 | test_v512 | x0, x1, x2, x3, x4, x5, x6, x7 |
3323 +impl_i!([i64; 8]: i64x8, m64x8 | i64, u8 | test_v512 | x0, x1, x2, x3, x4, x5, x6, x7 |
3324 From: i8x8, u8x8, i16x8, u16x8, i32x8, u32x8 |
3325 /// A 512-bit vector with 8 `i64` lanes.
3327 -impl_u!([u64; 8]: u64x8, m64x8 | u64 | test_v512 | x0, x1, x2, x3, x4, x5, x6, x7 |
3328 +impl_u!([u64; 8]: u64x8, m64x8 | u64, u8 | test_v512 | x0, x1, x2, x3, x4, x5, x6, x7 |
3329 From: u8x8, u16x8, u32x8 |
3330 /// A 512-bit vector with 8 `u64` lanes.
3332 @@ -80,20 +80,20 @@ impl_f!([f64; 8]: f64x8, m64x8 | f64 | test_v512 | x0, x1, x2, x3, x4, x5, x6, x
3333 From: i8x8, u8x8, i16x8, u16x8, i32x8, u32x8, f32x8 |
3334 /// A 512-bit vector with 8 `f64` lanes.
3336 -impl_m!([m64; 8]: m64x8 | i64 | test_v512 | x0, x1, x2, x3, x4, x5, x6, x7 |
3337 +impl_m!([m64; 8]: m64x8 | i64, u8 | test_v512 | x0, x1, x2, x3, x4, x5, x6, x7 |
3338 From: m8x8, m16x8, m32x8 |
3339 /// A 512-bit vector mask with 8 `m64` lanes.
3342 -impl_i!([i128; 4]: i128x4, m128x4 | i128 | test_v512 | x0, x1, x2, x3 |
3343 +impl_i!([i128; 4]: i128x4, m128x4 | i128, u8 | test_v512 | x0, x1, x2, x3 |
3344 From: i8x4, u8x4, i16x4, u16x4, i32x4, u32x4, i64x4, u64x4 |
3345 /// A 512-bit vector with 4 `i128` lanes.
3347 -impl_u!([u128; 4]: u128x4, m128x4 | u128 | test_v512 | x0, x1, x2, x3 |
3348 +impl_u!([u128; 4]: u128x4, m128x4 | u128, u8 | test_v512 | x0, x1, x2, x3 |
3349 From: u8x4, u16x4, u32x4, u64x4 |
3350 /// A 512-bit vector with 4 `u128` lanes.
3352 -impl_m!([m128; 4]: m128x4 | i128 | test_v512 | x0, x1, x2, x3 |
3353 +impl_m!([m128; 4]: m128x4 | i128, u8 | test_v512 | x0, x1, x2, x3 |
3354 From: m8x4, m16x4, m32x4, m64x4 |
3355 /// A 512-bit vector mask with 4 `m128` lanes.
3357 diff --git third_party/rust/packed_simd/src/v64.rs third_party/rust/packed_simd/src/v64.rs
3358 index 1ee6219c040b..bf6b9de61005 100644
3359 --- third_party/rust/packed_simd/src/v64.rs
3360 +++ third_party/rust/packed_simd/src/v64.rs
3362 //! 64-bit wide vector types
3368 -impl_i!([i8; 8]: i8x8, m8x8 | i8 | test_v64 | x0, x1, x2, x3, x4, x5, x6, x7 |
3369 +impl_i!([i8; 8]: i8x8, m8x8 | i8, u8 | test_v64 | x0, x1, x2, x3, x4, x5, x6, x7 |
3371 /// A 64-bit vector with 8 `i8` lanes.
3373 -impl_u!([u8; 8]: u8x8, m8x8 | u8 | test_v64 | x0, x1, x2, x3, x4, x5, x6, x7 |
3374 +impl_u!([u8; 8]: u8x8, m8x8 | u8, u8 | test_v64 | x0, x1, x2, x3, x4, x5, x6, x7 |
3376 /// A 64-bit vector with 8 `u8` lanes.
3378 -impl_m!([m8; 8]: m8x8 | i8 | test_v64 | x0, x1, x2, x3, x4, x5, x6, x7 |
3379 +impl_m!([m8; 8]: m8x8 | i8, u8 | test_v64 | x0, x1, x2, x3, x4, x5, x6, x7 |
3380 From: m16x8, m32x8 |
3381 /// A 64-bit vector mask with 8 `m8` lanes.
3384 -impl_i!([i16; 4]: i16x4, m16x4 | i16 | test_v64 | x0, x1, x2, x3 |
3385 +impl_i!([i16; 4]: i16x4, m16x4 | i16, u8 | test_v64 | x0, x1, x2, x3 |
3387 /// A 64-bit vector with 4 `i16` lanes.
3389 -impl_u!([u16; 4]: u16x4, m16x4 | u16 | test_v64 | x0, x1, x2, x3 |
3390 +impl_u!([u16; 4]: u16x4, m16x4 | u16, u8 | test_v64 | x0, x1, x2, x3 |
3392 /// A 64-bit vector with 4 `u16` lanes.
3394 -impl_m!([m16; 4]: m16x4 | i16 | test_v64 | x0, x1, x2, x3 |
3395 +impl_m!([m16; 4]: m16x4 | i16, u8 | test_v64 | x0, x1, x2, x3 |
3396 From: m8x4, m32x4, m64x4 |
3397 /// A 64-bit vector mask with 4 `m16` lanes.
3400 -impl_i!([i32; 2]: i32x2, m32x2 | i32 | test_v64 | x0, x1 |
3401 +impl_i!([i32; 2]: i32x2, m32x2 | i32, u8 | test_v64 | x0, x1 |
3402 From: i8x2, u8x2, i16x2, u16x2 |
3403 /// A 64-bit vector with 2 `i32` lanes.
3405 -impl_u!([u32; 2]: u32x2, m32x2 | u32 | test_v64 | x0, x1 |
3406 +impl_u!([u32; 2]: u32x2, m32x2 | u32, u8 | test_v64 | x0, x1 |
3408 /// A 64-bit vector with 2 `u32` lanes.
3410 -impl_m!([m32; 2]: m32x2 | i32 | test_v64 | x0, x1 |
3411 +impl_m!([m32; 2]: m32x2 | i32, u8 | test_v64 | x0, x1 |
3412 From: m8x2, m16x2, m64x2, m128x2 |
3413 /// A 64-bit vector mask with 2 `m32` lanes.
3415 @@ -47,15 +47,15 @@ impl_f!([f32; 2]: f32x2, m32x2 | f32 | test_v64 | x0, x1 |
3419 -impl_i!([i64; 1]: i64x1, m64x1 | i64 | test_v64 | x0 |
3420 +impl_i!([i64; 1]: i64x1, m64x1 | i64, u8 | test_v64 | x0 |
3421 From: /*i8x1, u8x1, i16x1, u16x1, i32x1, u32x1*/ | // FIXME: primitive to vector conversion
3422 /// A 64-bit vector with 1 `i64` lanes.
3424 -impl_u!([u64; 1]: u64x1, m64x1 | u64 | test_v64 | x0 |
3425 +impl_u!([u64; 1]: u64x1, m64x1 | u64, u8 | test_v64 | x0 |
3426 From: /*u8x1, u16x1, u32x1*/ | // FIXME: primitive to vector conversion
3427 /// A 64-bit vector with 1 `u64` lanes.
3429 -impl_m!([m64; 1]: m64x1 | i64 | test_v64 | x0 |
3430 +impl_m!([m64; 1]: m64x1 | i64, u8 | test_v64 | x0 |
3431 From: /*m8x1, m16x1, m32x1, */ m128x1 | // FIXME: unary small vector types
3432 /// A 64-bit vector mask with 1 `m64` lanes.
3434 diff --git third_party/rust/packed_simd/src/vPtr.rs third_party/rust/packed_simd/src/vPtr.rs
3435 index fe9fb28ffa89..e34cb170eb1c 100644
3436 --- third_party/rust/packed_simd/src/vPtr.rs
3437 +++ third_party/rust/packed_simd/src/vPtr.rs
3439 //! Vectors of pointers
3445 diff --git third_party/rust/packed_simd/src/vSize.rs third_party/rust/packed_simd/src/vSize.rs
3446 index 5594323372b4..b5d891006138 100644
3447 --- third_party/rust/packed_simd/src/vSize.rs
3448 +++ third_party/rust/packed_simd/src/vSize.rs
3450 use crate::codegen::pointer_sized_int::{isize_, usize_};
3453 -impl_i!([isize; 2]: isizex2, msizex2 | isize_ | test_v128 |
3454 +impl_i!([isize; 2]: isizex2, msizex2 | isize_, u8 | test_v128 |
3457 /// A vector with 2 `isize` lanes.
3460 -impl_u!([usize; 2]: usizex2, msizex2 | usize_ | test_v128 |
3461 +impl_u!([usize; 2]: usizex2, msizex2 | usize_, u8 | test_v128 |
3464 /// A vector with 2 `usize` lanes.
3466 -impl_m!([msize; 2]: msizex2 | isize_ | test_v128 |
3467 +impl_m!([msize; 2]: msizex2 | isize_, u8 | test_v128 |
3470 /// A vector mask with 2 `msize` lanes.
3473 -impl_i!([isize; 4]: isizex4, msizex4 | isize_ | test_v256 |
3474 +impl_i!([isize; 4]: isizex4, msizex4 | isize_, u8 | test_v256 |
3477 /// A vector with 4 `isize` lanes.
3479 -impl_u!([usize; 4]: usizex4, msizex4 | usize_ | test_v256 |
3480 +impl_u!([usize; 4]: usizex4, msizex4 | usize_, u8 | test_v256 |
3483 /// A vector with 4 `usize` lanes.
3485 -impl_m!([msize; 4]: msizex4 | isize_ | test_v256 |
3486 +impl_m!([msize; 4]: msizex4 | isize_, u8 | test_v256 |
3489 /// A vector mask with 4 `msize` lanes.
3492 -impl_i!([isize; 8]: isizex8, msizex8 | isize_ | test_v512 |
3493 +impl_i!([isize; 8]: isizex8, msizex8 | isize_, u8 | test_v512 |
3494 x0, x1, x2, x3, x4, x5, x6, x7 |
3496 - /// A vector with 4 `isize` lanes.
3497 + /// A vector with 8 `isize` lanes.
3499 -impl_u!([usize; 8]: usizex8, msizex8 | usize_ | test_v512 |
3500 +impl_u!([usize; 8]: usizex8, msizex8 | usize_, u8 | test_v512 |
3501 x0, x1, x2, x3, x4, x5, x6, x7 |
3503 /// A vector with 8 `usize` lanes.
3505 -impl_m!([msize; 8]: msizex8 | isize_ | test_v512 |
3506 +impl_m!([msize; 8]: msizex8 | isize_, u8 | test_v512 |
3507 x0, x1, x2, x3, x4, x5, x6, x7 |
3509 /// A vector mask with 8 `msize` lanes.
3510 diff --git third_party/rust/packed_simd/tests/endianness.rs third_party/rust/packed_simd/tests/endianness.rs
3511 index 1e6b4f354301..31fb7073afb3 100644
3512 --- third_party/rust/packed_simd/tests/endianness.rs
3513 +++ third_party/rust/packed_simd/tests/endianness.rs
3514 @@ -17,7 +17,7 @@ fn endian_indexing() {
3515 #[cfg_attr(not(target_arch = "wasm32"), test)]
3516 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
3517 fn endian_bitcasts() {
3518 - #[cfg_attr(rustfmt, rustfmt_skip)]
3521 0, 1, 2, 3, 4, 5, 6, 7,
3522 8, 9, 10, 11, 12, 13, 14, 15,
3523 @@ -34,13 +34,13 @@ fn endian_bitcasts() {
3524 #[cfg_attr(not(target_arch = "wasm32"), test)]
3525 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
3527 - #[cfg_attr(rustfmt, rustfmt_skip)]
3530 0, 1, 2, 3, 4, 5, 6, 7,
3531 8, 9, 10, 11, 12, 13, 14, 15,
3533 let t: i16x16 = x.into(); // simd_cast
3534 - #[cfg_attr(rustfmt, rustfmt_skip)]
3536 let e = i16x16::new(
3537 0, 1, 2, 3, 4, 5, 6, 7,
3538 8, 9, 10, 11, 12, 13, 14, 15,
3539 @@ -51,7 +51,7 @@ fn endian_casts() {
3540 #[cfg_attr(not(target_arch = "wasm32"), test)]
3541 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
3542 fn endian_load_and_stores() {
3543 - #[cfg_attr(rustfmt, rustfmt_skip)]
3546 0, 1, 2, 3, 4, 5, 6, 7,
3547 8, 9, 10, 11, 12, 13, 14, 15,
3548 @@ -82,10 +82,15 @@ fn endian_array_union() {
3551 let x: [f32; 4] = unsafe { A { vec: f32x4::new(0., 1., 2., 3.) }.data };
3552 - assert_eq!(x[0], 0_f32);
3553 - assert_eq!(x[1], 1_f32);
3554 - assert_eq!(x[2], 2_f32);
3555 - assert_eq!(x[3], 3_f32);
3556 + // As all of these are integer values within the mantissa^1 range, it
3557 + // would be very unusual for them to actually fail to compare.
3558 + #[allow(clippy::float_cmp)]
3560 + assert_eq!(x[0], 0_f32);
3561 + assert_eq!(x[1], 1_f32);
3562 + assert_eq!(x[2], 2_f32);
3563 + assert_eq!(x[3], 3_f32);
3565 let y: f32x4 = unsafe { A { data: [3., 2., 1., 0.] }.vec };
3566 assert_eq!(y, f32x4::new(3., 2., 1., 0.));
3568 @@ -93,23 +98,23 @@ fn endian_array_union() {
3572 - #[cfg_attr(rustfmt, rustfmt_skip)]
3575 0, 1, 2, 3, 4, 5, 6, 7,
3576 8, 9, 10, 11, 12, 13, 14, 15,
3578 let x: [i8; 16] = unsafe { B { vec: x }.data };
3581 - assert_eq!(x[i], i as i8);
3582 + for (i, v) in x.iter().enumerate() {
3583 + assert_eq!(i as i8, *v);
3586 - #[cfg_attr(rustfmt, rustfmt_skip)]
3589 15, 14, 13, 12, 11, 19, 9, 8,
3590 7, 6, 5, 4, 3, 2, 1, 0
3592 - #[cfg_attr(rustfmt, rustfmt_skip)]
3595 15, 14, 13, 12, 11, 19, 9, 8,
3596 7, 6, 5, 4, 3, 2, 1, 0
3597 @@ -121,7 +126,7 @@ fn endian_array_union() {
3601 - #[cfg_attr(rustfmt, rustfmt_skip)]
3604 0, 1, 2, 3, 4, 5, 6, 7,
3605 8, 9, 10, 11, 12, 13, 14, 15,
3606 @@ -145,21 +150,26 @@ fn endian_tuple_access() {
3609 let x: F32x4T = unsafe { A { vec: f32x4::new(0., 1., 2., 3.) }.data };
3610 - assert_eq!(x.0, 0_f32);
3611 - assert_eq!(x.1, 1_f32);
3612 - assert_eq!(x.2, 2_f32);
3613 - assert_eq!(x.3, 3_f32);
3614 + // As all of these are integer values within the mantissa^1 range, it
3615 + // would be very unusual for them to actually fail to compare.
3616 + #[allow(clippy::float_cmp)]
3618 + assert_eq!(x.0, 0_f32);
3619 + assert_eq!(x.1, 1_f32);
3620 + assert_eq!(x.2, 2_f32);
3621 + assert_eq!(x.3, 3_f32);
3623 let y: f32x4 = unsafe { A { data: (3., 2., 1., 0.) }.vec };
3624 assert_eq!(y, f32x4::new(3., 2., 1., 0.));
3626 - #[cfg_attr(rustfmt, rustfmt_skip)]
3628 type I8x16T = (i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8);
3634 - #[cfg_attr(rustfmt, rustfmt_skip)]
3637 0, 1, 2, 3, 4, 5, 6, 7,
3638 8, 9, 10, 11, 12, 13, 14, 15,
3639 @@ -183,27 +193,27 @@ fn endian_tuple_access() {
3640 assert_eq!(x.14, 14);
3641 assert_eq!(x.15, 15);
3643 - #[cfg_attr(rustfmt, rustfmt_skip)]
3646 15, 14, 13, 12, 11, 10, 9, 8,
3647 7, 6, 5, 4, 3, 2, 1, 0
3649 let z: i8x16 = unsafe { B { data: y }.vec };
3650 - #[cfg_attr(rustfmt, rustfmt_skip)]
3653 15, 14, 13, 12, 11, 10, 9, 8,
3654 7, 6, 5, 4, 3, 2, 1, 0
3658 - #[cfg_attr(rustfmt, rustfmt_skip)]
3660 type I16x8T = (i16, i16, i16, i16, i16, i16, i16, i16);
3666 - #[cfg_attr(rustfmt, rustfmt_skip)]
3669 0, 1, 2, 3, 4, 5, 6, 7,
3670 8, 9, 10, 11, 12, 13, 14, 15,
3671 @@ -224,7 +234,7 @@ fn endian_tuple_access() {
3672 assert_eq!(x.6, e[6]);
3673 assert_eq!(x.7, e[7]);
3675 - #[cfg_attr(rustfmt, rustfmt_skip)]
3678 #[derive(Copy ,Clone)]
3679 pub struct Tup(pub i8, pub i8, pub i16, pub i8, pub i8, pub i16,
3680 @@ -235,7 +245,7 @@ fn endian_tuple_access() {
3684 - #[cfg_attr(rustfmt, rustfmt_skip)]
3687 0, 1, 2, 3, 4, 5, 6, 7,
3688 8, 9, 10, 11, 12, 13, 14, 15,
3691 [FILE:11510:patches/patch-bug292127]
3692 --- comm/ldap/c-sdk/include/ldap.h~
3693 +++ comm/ldap/c-sdk/include/ldap.h
3698 +/* rename symbols to not clash with openldap (bug 292127) */
3699 +#define ldap_abandon moz_ldap_abandon
3700 +#define ldap_abandon_ext moz_ldap_abandon_ext
3701 +#define ldap_abandoned moz_ldap_abandoned
3702 +#define ldap_add moz_ldap_add
3703 +#define ldap_add_ext moz_ldap_add_ext
3704 +#define ldap_add_ext_s moz_ldap_add_ext_s
3705 +#define ldap_add_result_entry moz_ldap_add_result_entry
3706 +#define ldap_add_s moz_ldap_add_s
3707 +#define ldap_ber_free moz_ldap_ber_free
3708 +#define ldap_bind moz_ldap_bind
3709 +#define ldap_bind_s moz_ldap_bind_s
3710 +#define ldap_build_filter moz_ldap_build_filter
3711 +#define ldap_cache_flush moz_ldap_cache_flush
3712 +#define ldap_charray_add moz_ldap_charray_add
3713 +#define ldap_charray_dup moz_ldap_charray_dup
3714 +#define ldap_charray_free moz_ldap_charray_free
3715 +#define ldap_charray_inlist moz_ldap_charray_inlist
3716 +#define ldap_charray_merge moz_ldap_charray_merge
3717 +#define ldap_charray_position moz_ldap_charray_position
3718 +#define ldap_compare moz_ldap_compare
3719 +#define ldap_compare_ext moz_ldap_compare_ext
3720 +#define ldap_compare_ext_s moz_ldap_compare_ext_s
3721 +#define ldap_compare_s moz_ldap_compare_s
3722 +#define ldap_control_free moz_ldap_control_free
3723 +#define ldap_controls_free moz_ldap_controls_free
3724 +#define ldap_count_entries moz_ldap_count_entries
3725 +#define ldap_count_messages moz_ldap_count_messages
3726 +#define ldap_count_references moz_ldap_count_references
3727 +#define ldap_count_values moz_ldap_count_values
3728 +#define ldap_count_values_len moz_ldap_count_values_len
3729 +#define ldap_create_authzid_control moz_ldap_create_authzid_control
3730 +#define ldap_create_filter moz_ldap_create_filter
3731 +#define ldap_create_geteffectiveRights_control moz_ldap_create_geteffectiveRights_control
3732 +#define ldap_create_passwordpolicy_control moz_ldap_create_passwordpolicy_control
3733 +#define ldap_create_passwordpolicy_control_ext moz_ldap_create_passwordpolicy_control_ext
3734 +#define ldap_create_persistentsearch_control moz_ldap_create_persistentsearch_control
3735 +#define ldap_create_proxiedauth_control moz_ldap_create_proxiedauth_control
3736 +#define ldap_create_proxyauth_control moz_ldap_create_proxyauth_control
3737 +#define ldap_create_sort_control moz_ldap_create_sort_control
3738 +#define ldap_create_sort_keylist moz_ldap_create_sort_keylist
3739 +#define ldap_create_userstatus_control moz_ldap_create_userstatus_control
3740 +#define ldap_create_virtuallist_control moz_ldap_create_virtuallist_control
3741 +#define ldap_delete moz_ldap_delete
3742 +#define ldap_delete_ext moz_ldap_delete_ext
3743 +#define ldap_delete_ext_s moz_ldap_delete_ext_s
3744 +#define ldap_delete_result_entry moz_ldap_delete_result_entry
3745 +#define ldap_delete_s moz_ldap_delete_s
3746 +#define ldap_dn2ufn moz_ldap_dn2ufn
3747 +#define ldap_entry2html moz_ldap_entry2html
3748 +#define ldap_entry2html_search moz_ldap_entry2html_search
3749 +#define ldap_entry2text moz_ldap_entry2text
3750 +#define ldap_entry2text_search moz_ldap_entry2text_search
3751 +#define ldap_err2string moz_ldap_err2string
3752 +#define ldap_errlist moz_ldap_errlist
3753 +#define ldap_explode moz_ldap_explode
3754 +#define ldap_explode_dn moz_ldap_explode_dn
3755 +#define ldap_explode_dns moz_ldap_explode_dns
3756 +#define ldap_explode_rdn moz_ldap_explode_rdn
3757 +#define ldap_extended_operation moz_ldap_extended_operation
3758 +#define ldap_extended_operation_s moz_ldap_extended_operation_s
3759 +#define ldap_find_control moz_ldap_find_control
3760 +#define ldap_first_attribute moz_ldap_first_attribute
3761 +#define ldap_first_disptmpl moz_ldap_first_disptmpl
3762 +#define ldap_first_entry moz_ldap_first_entry
3763 +#define ldap_first_message moz_ldap_first_message
3764 +#define ldap_first_reference moz_ldap_first_reference
3765 +#define ldap_first_searchobj moz_ldap_first_searchobj
3766 +#define ldap_first_tmplcol moz_ldap_first_tmplcol
3767 +#define ldap_first_tmplrow moz_ldap_first_tmplrow
3768 +#define ldap_free_friendlymap moz_ldap_free_friendlymap
3769 +#define ldap_free_searchprefs moz_ldap_free_searchprefs
3770 +#define ldap_free_sort_keylist moz_ldap_free_sort_keylist
3771 +#define ldap_free_templates moz_ldap_free_templates
3772 +#define ldap_free_urldesc moz_ldap_free_urldesc
3773 +#define ldap_friendly_name moz_ldap_friendly_name
3774 +#define ldap_get_dn moz_ldap_get_dn
3775 +#define ldap_get_entry_controls moz_ldap_get_entry_controls
3776 +#define ldap_get_lang_values moz_ldap_get_lang_values
3777 +#define ldap_get_lang_values_len moz_ldap_get_lang_values_len
3778 +#define ldap_get_lderrno moz_ldap_get_lderrno
3779 +#define ldap_get_option moz_ldap_get_option
3780 +#define ldap_get_values moz_ldap_get_values
3781 +#define ldap_get_values_len moz_ldap_get_values_len
3782 +#define ldap_getfilter_free moz_ldap_getfilter_free
3783 +#define ldap_getfirstfilter moz_ldap_getfirstfilter
3784 +#define ldap_getnextfilter moz_ldap_getnextfilter
3785 +#define ldap_init moz_ldap_init
3786 +#define ldap_init_getfilter moz_ldap_init_getfilter
3787 +#define ldap_init_getfilter_buf moz_ldap_init_getfilter_buf
3788 +#define ldap_init_searchprefs moz_ldap_init_searchprefs
3789 +#define ldap_init_searchprefs_buf moz_ldap_init_searchprefs_buf
3790 +#define ldap_init_templates moz_ldap_init_templates
3791 +#define ldap_init_templates_buf moz_ldap_init_templates_buf
3792 +#define ldap_is_dns_dn moz_ldap_is_dns_dn
3793 +#define ldap_is_ldap_url moz_ldap_is_ldap_url
3794 +#define ldap_keysort_entries moz_ldap_keysort_entries
3795 +#define ldap_ld_free moz_ldap_ld_free
3796 +#define ldap_memcache_abandon moz_ldap_memcache_abandon
3797 +#define ldap_memcache_append moz_ldap_memcache_append
3798 +#define ldap_memcache_createkey moz_ldap_memcache_createkey
3799 +#define ldap_memcache_destroy moz_ldap_memcache_destroy
3800 +#define ldap_memcache_flush moz_ldap_memcache_flush
3801 +#define ldap_memcache_flush_results moz_ldap_memcache_flush_results
3802 +#define ldap_memcache_get moz_ldap_memcache_get
3803 +#define ldap_memcache_init moz_ldap_memcache_init
3804 +#define ldap_memcache_new moz_ldap_memcache_new
3805 +#define ldap_memcache_result moz_ldap_memcache_result
3806 +#define ldap_memcache_set moz_ldap_memcache_set
3807 +#define ldap_memcache_update moz_ldap_memcache_update
3808 +#define ldap_memfree moz_ldap_memfree
3809 +#define ldap_modify moz_ldap_modify
3810 +#define ldap_modify_ext moz_ldap_modify_ext
3811 +#define ldap_modify_ext_s moz_ldap_modify_ext_s
3812 +#define ldap_modify_s moz_ldap_modify_s
3813 +#define ldap_modrdn moz_ldap_modrdn
3814 +#define ldap_modrdn2 moz_ldap_modrdn2
3815 +#define ldap_modrdn2_s moz_ldap_modrdn2_s
3816 +#define ldap_modrdn_s moz_ldap_modrdn_s
3817 +#define ldap_mods_free moz_ldap_mods_free
3818 +#define ldap_msgdelete moz_ldap_msgdelete
3819 +#define ldap_msgfree moz_ldap_msgfree
3820 +#define ldap_msgid moz_ldap_msgid
3821 +#define ldap_msgtype moz_ldap_msgtype
3822 +#define ldap_multisort_entries moz_ldap_multisort_entries
3823 +#define ldap_name2template moz_ldap_name2template
3824 +#define ldap_next_attribute moz_ldap_next_attribute
3825 +#define ldap_next_disptmpl moz_ldap_next_disptmpl
3826 +#define ldap_next_entry moz_ldap_next_entry
3827 +#define ldap_next_message moz_ldap_next_message
3828 +#define ldap_next_reference moz_ldap_next_reference
3829 +#define ldap_next_searchobj moz_ldap_next_searchobj
3830 +#define ldap_next_tmplcol moz_ldap_next_tmplcol
3831 +#define ldap_next_tmplrow moz_ldap_next_tmplrow
3832 +#define ldap_oc2template moz_ldap_oc2template
3833 +#define ldap_open moz_ldap_open
3834 +#define ldap_parse_authzid_control moz_ldap_parse_authzid_control
3835 +#define ldap_parse_entrychange_control moz_ldap_parse_entrychange_control
3836 +#define ldap_parse_extended_result moz_ldap_parse_extended_result
3837 +#define ldap_parse_passwd moz_ldap_parse_passwd
3838 +#define ldap_parse_passwordpolicy_control moz_ldap_parse_passwordpolicy_control
3839 +#define ldap_parse_passwordpolicy_control_ext moz_ldap_parse_passwordpolicy_control_ext
3840 +#define ldap_parse_reference moz_ldap_parse_reference
3841 +#define ldap_parse_result moz_ldap_parse_result
3842 +#define ldap_parse_sasl_bind_result moz_ldap_parse_sasl_bind_result
3843 +#define ldap_parse_sort_control moz_ldap_parse_sort_control
3844 +#define ldap_parse_userstatus_control moz_ldap_parse_userstatus_control
3845 +#define ldap_parse_virtuallist_control moz_ldap_parse_virtuallist_control
3846 +#define ldap_parse_whoami moz_ldap_parse_whoami
3847 +#define ldap_passwd moz_ldap_passwd
3848 +#define ldap_passwd_s moz_ldap_passwd_s
3849 +#define ldap_passwordpolicy_err2txt moz_ldap_passwordpolicy_err2txt
3850 +#define ldap_perror moz_ldap_perror
3851 +#define ldap_rename moz_ldap_rename
3852 +#define ldap_rename_s moz_ldap_rename_s
3853 +#define ldap_result moz_ldap_result
3854 +#define ldap_result2error moz_ldap_result2error
3855 +#define ldap_sasl_bind moz_ldap_sasl_bind
3856 +#define ldap_sasl_bind_s moz_ldap_sasl_bind_s
3857 +#define ldap_sasl_interactive_bind_ext_s moz_ldap_sasl_interactive_bind_ext_s
3858 +#define ldap_sasl_interactive_bind_s moz_ldap_sasl_interactive_bind_s
3859 +#define ldap_search moz_ldap_search
3860 +#define ldap_search_ext moz_ldap_search_ext
3861 +#define ldap_search_ext_s moz_ldap_search_ext_s
3862 +#define ldap_search_s moz_ldap_search_s
3863 +#define ldap_search_st moz_ldap_search_st
3864 +#define ldap_set_filter_additions moz_ldap_set_filter_additions
3865 +#define ldap_set_lderrno moz_ldap_set_lderrno
3866 +#define ldap_set_option moz_ldap_set_option
3867 +#define ldap_set_rebind_proc moz_ldap_set_rebind_proc
3868 +#define ldap_setfilteraffixes moz_ldap_setfilteraffixes
3869 +#define ldap_simple_bind moz_ldap_simple_bind
3870 +#define ldap_simple_bind_s moz_ldap_simple_bind_s
3871 +#define ldap_sort_entries moz_ldap_sort_entries
3872 +#define ldap_sort_strcasecmp moz_ldap_sort_strcasecmp
3873 +#define ldap_sort_values moz_ldap_sort_values
3874 +#define ldap_start_tls_s moz_ldap_start_tls_s
3875 +#define ldap_str2charray moz_ldap_str2charray
3876 +#define ldap_tmplattrs moz_ldap_tmplattrs
3877 +#define ldap_tmplerr2string moz_ldap_tmplerr2string
3878 +#define ldap_tmplerrlist moz_ldap_tmplerrlist
3879 +#define ldap_ufn_search_c moz_ldap_ufn_search_c
3880 +#define ldap_ufn_search_ct moz_ldap_ufn_search_ct
3881 +#define ldap_ufn_search_ctx moz_ldap_ufn_search_ctx
3882 +#define ldap_ufn_search_s moz_ldap_ufn_search_s
3883 +#define ldap_ufn_setfilter moz_ldap_ufn_setfilter
3884 +#define ldap_ufn_setprefix moz_ldap_ufn_setprefix
3885 +#define ldap_ufn_timeout moz_ldap_ufn_timeout
3886 +#define ldap_unbind moz_ldap_unbind
3887 +#define ldap_unbind_ext moz_ldap_unbind_ext
3888 +#define ldap_unbind_s moz_ldap_unbind_s
3889 +#define ldap_url_parse moz_ldap_url_parse
3890 +#define ldap_url_parse_no_defaults moz_ldap_url_parse_no_defaults
3891 +#define ldap_url_search moz_ldap_url_search
3892 +#define ldap_url_search_s moz_ldap_url_search_s
3893 +#define ldap_url_search_st moz_ldap_url_search_st
3894 +#define ldap_utf8characters moz_ldap_utf8characters
3895 +#define ldap_utf8copy moz_ldap_utf8copy
3896 +#define ldap_utf8getcc moz_ldap_utf8getcc
3897 +#define ldap_utf8isalnum moz_ldap_utf8isalnum
3898 +#define ldap_utf8isalpha moz_ldap_utf8isalpha
3899 +#define ldap_utf8isdigit moz_ldap_utf8isdigit
3900 +#define ldap_utf8isspace moz_ldap_utf8isspace
3901 +#define ldap_utf8isxdigit moz_ldap_utf8isxdigit
3902 +#define ldap_utf8len moz_ldap_utf8len
3903 +#define ldap_utf8next moz_ldap_utf8next
3904 +#define ldap_utf8prev moz_ldap_utf8prev
3905 +#define ldap_utf8strtok_r moz_ldap_utf8strtok_r
3906 +#define ldap_vals2html moz_ldap_vals2html
3907 +#define ldap_vals2text moz_ldap_vals2text
3908 +#define ldap_value_free moz_ldap_value_free
3909 +#define ldap_value_free_len moz_ldap_value_free_len
3910 +#define ldap_version moz_ldap_version
3911 +#define ldap_whoami moz_ldap_whoami
3912 +#define ldap_whoami_s moz_ldap_whoami_s
3913 +#define ldap_x_calloc moz_ldap_x_calloc
3914 +#define ldap_x_free moz_ldap_x_free
3915 +#define ldap_x_hostlist_first moz_ldap_x_hostlist_first
3916 +#define ldap_x_hostlist_next moz_ldap_x_hostlist_next
3917 +#define ldap_x_hostlist_statusfree moz_ldap_x_hostlist_statusfree
3918 +#define ldap_x_malloc moz_ldap_x_malloc
3919 +#define ldap_x_realloc moz_ldap_x_realloc
3921 /* Standard LDAP API functions and declarations */
3922 #include "ldap-standard.h"
3926 [FILE:9904:patches/patch-bug847568]
3927 # Allow building against system-wide graphite2/harfbuzz.
3929 diff --git config/system-headers.mozbuild config/system-headers.mozbuild
3930 index 7620b4d00623..09d3db5ca8c0 100644
3931 --- config/system-headers.mozbuild
3932 +++ config/system-headers.mozbuild
3933 @@ -1299,6 +1299,19 @@ if CONFIG['MOZ_ENABLE_LIBPROXY']:
3937 +if CONFIG['MOZ_SYSTEM_GRAPHITE2']:
3938 + system_headers += [
3939 + 'graphite2/Font.h',
3940 + 'graphite2/Segment.h',
3943 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
3944 + system_headers += [
3945 + 'harfbuzz/hb-glib.h',
3946 + 'harfbuzz/hb-ot.h',
3950 if CONFIG['MOZ_SYSTEM_LIBVPX']:
3952 'vpx_mem/vpx_mem.h',
3953 diff --git dom/base/moz.build dom/base/moz.build
3954 index 8e19020315ae..2fcdbb6f7b42 100644
3955 --- dom/base/moz.build
3956 +++ dom/base/moz.build
3957 @@ -543,6 +543,9 @@ if CONFIG['MOZ_BUILD_APP'] in ['browser', 'mobile/android', 'xulrunner']:
3958 if CONFIG['MOZ_X11']:
3959 CXXFLAGS += CONFIG['TK_CFLAGS']
3961 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
3962 + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
3964 GeneratedFile('UseCounterList.h', script='gen-usecounters.py',
3965 entry_point='use_counter_list', inputs=['UseCounters.conf'])
3967 diff --git gfx/graphite2/geckoextra/moz.build gfx/graphite2/geckoextra/moz.build
3968 new file mode 100644
3969 index 0000000000000..24e8d7a03274a
3971 +++ gfx/graphite2/geckoextra/moz.build
3973 +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
3974 +# vim: set filetype=python:
3975 +# This Source Code Form is subject to the terms of the Mozilla Public
3976 +# License, v. 2.0. If a copy of the MPL was not distributed with this
3977 +# file, You can obtain one at http://mozilla.org/MPL/2.0/.
3979 +EXPORTS.graphite2 += [
3980 + 'include/GraphiteExtra.h',
3981 + 'include/GraphiteStructsForRLBox.h',
3984 +UNIFIED_SOURCES += [
3985 + '../geckoextra/src/GraphiteExtra.cpp',
3988 +CXXFLAGS += CONFIG['MOZ_GRAPHITE2_CFLAGS']
3990 +# Match bundled graphite2 configuration
3991 +AllowCompilerWarnings()
3993 +FINAL_LIBRARY = 'gkmedias'
3994 diff --git gfx/graphite2/moz-gr-update.sh gfx/graphite2/moz-gr-update.sh
3995 index faaab1b17971..04eff5f09882 100644
3996 --- gfx/graphite2/moz-gr-update.sh
3997 +++ gfx/graphite2/moz-gr-update.sh
4001 # Script used to update the Graphite2 library in the mozilla source tree
4002 +# and bump version for --with-system-graphite2
4004 # This script lives in gfx/graphite2, along with the library source,
4005 # but must be run from the top level of the mozilla-central tree.
4006 @@ -37,12 +38,16 @@ echo "See" $0 "for update procedure." >> gfx/graphite2/README.mozilla
4007 #find gfx/graphite2/ -name "*.cpp" -exec perl -p -i -e "s/<cstdio>/<stdio.h>/;s/Windows.h/windows.h/;" {} \;
4008 #find gfx/graphite2/ -name "*.h" -exec perl -p -i -e "s/<cstdio>/<stdio.h>/;s/Windows.h/windows.h/;" {} \;
4010 +# chase version for --with-system-graphite2
4011 +perl -p -i -e "s/[0-9]+\,[0-9]+\,[0-9]+/$RELEASE/ and tr/./,/ \
4012 + if /GR2_VERSION_REQUIRE/" old-configure.in
4014 # summarize what's been touched
4015 echo Updated to $RELEASE.
4016 echo Here is what changed in the gfx/graphite2 directory:
4019 -hg stat gfx/graphite2
4020 +hg stat old-configure.in gfx/graphite2
4023 echo If gfx/graphite2/src/files.mk has changed, please make corresponding
4024 diff --git gfx/harfbuzz/README-mozilla gfx/harfbuzz/README-mozilla
4025 index 22c76a7df020..a01490bd49ee 100644
4026 --- gfx/harfbuzz/README-mozilla
4027 +++ gfx/harfbuzz/README-mozilla
4028 @@ -15,3 +15,8 @@ from within the gfx/harfbuzz directory.
4030 If the collection of source files changes, manual updates to moz.build may be
4031 needed as we don't use the upstream makefiles.
4033 +The in-tree copy may be omitted during build by --with-system-harfbuzz.
4034 +Make sure to keep pkg-config version check within toolkit/moz.configure in sync
4035 +with checkout version or increment latest tag by one if it's not based
4036 +on upstream release.
4037 diff --git gfx/moz.build gfx/moz.build
4038 index 771f652e837a..3b358d84e384 100644
4041 @@ -13,6 +13,14 @@ with Files('wr/**'):
4042 if CONFIG['MOZ_TREE_CAIRO']:
4045 +if CONFIG['MOZ_SYSTEM_GRAPHITE2']:
4046 + DIRS += ['graphite2/geckoextra']
4048 + DIRS += ['graphite2/src' ]
4050 +if not CONFIG['MOZ_SYSTEM_HARFBUZZ']:
4051 + DIRS += ['harfbuzz/src']
4056 @@ -21,8 +29,6 @@ DIRS += [
4065 diff --git gfx/skia/generate_mozbuild.py gfx/skia/generate_mozbuild.py
4066 index e06ae3457a47..93faa61594a3 100755
4067 --- gfx/skia/generate_mozbuild.py
4068 +++ gfx/skia/generate_mozbuild.py
4069 @@ -117,6 +117,9 @@ if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'):
4070 '-Wno-unused-private-field',
4073 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
4074 + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
4076 if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk', 'android'):
4077 CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
4078 CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
4079 diff --git gfx/skia/moz.build gfx/skia/moz.build
4080 index 2118677ca3a8..e4978b413784 100644
4081 --- gfx/skia/moz.build
4082 +++ gfx/skia/moz.build
4083 @@ -493,6 +493,9 @@ if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'):
4084 '-Wno-unused-private-field',
4087 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
4088 + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
4090 if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk', 'android'):
4091 CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
4092 CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
4093 diff --git gfx/thebes/moz.build gfx/thebes/moz.build
4094 index 56f1b9fe3f4b..0ac1100b0df3 100644
4095 --- gfx/thebes/moz.build
4096 +++ gfx/thebes/moz.build
4097 @@ -284,7 +284,13 @@ if CONFIG['MOZ_WAYLAND']:
4099 LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES']
4101 -DEFINES['GRAPHITE2_STATIC'] = True
4102 +if CONFIG['MOZ_SYSTEM_GRAPHITE2']:
4103 + CXXFLAGS += CONFIG['MOZ_GRAPHITE2_CFLAGS']
4105 + DEFINES['GRAPHITE2_STATIC'] = True
4107 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
4108 + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
4110 if CONFIG['CC_TYPE'] == 'clang':
4111 # Suppress warnings from Skia header files.
4112 diff --git intl/unicharutil/util/moz.build intl/unicharutil/util/moz.build
4113 index cb1233c56d7e..06fb1f9f174b 100644
4114 --- intl/unicharutil/util/moz.build
4115 +++ intl/unicharutil/util/moz.build
4116 @@ -25,4 +25,7 @@ UNIFIED_SOURCES += [
4117 'nsUnicodeProperties.cpp',
4120 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
4121 + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
4123 FINAL_LIBRARY = 'xul'
4124 diff --git netwerk/dns/moz.build netwerk/dns/moz.build
4125 index 79c26e3e7001..c4d93bc5f7dc 100644
4126 --- netwerk/dns/moz.build
4127 +++ netwerk/dns/moz.build
4128 @@ -86,3 +86,6 @@ USE_LIBS += ['icu']
4130 if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
4131 CXXFLAGS += ['-Wno-error=shadow']
4133 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
4134 + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
4135 diff --git old-configure.in old-configure.in
4136 index 95a58b634593..b614eef85c89 100644
4137 --- old-configure.in
4138 +++ old-configure.in
4139 @@ -2639,6 +2639,27 @@ dnl ========================================================
4141 AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR)
4143 +dnl ========================================================
4144 +dnl Check for graphite2
4145 +dnl ========================================================
4146 +if test -n "$MOZ_SYSTEM_GRAPHITE2"; then
4147 + dnl graphite2.pc has bogus version, check manually
4148 + _SAVE_CFLAGS=$CFLAGS
4149 + CFLAGS="$CFLAGS $MOZ_GRAPHITE2_CFLAGS"
4150 + AC_TRY_COMPILE([ #include <graphite2/Font.h>
4151 + #define GR2_VERSION_REQUIRE(major,minor,bugfix) \
4152 + ( GR2_VERSION_MAJOR * 10000 + GR2_VERSION_MINOR \
4153 + * 100 + GR2_VERSION_BUGFIX >= \
4154 + (major) * 10000 + (minor) * 100 + (bugfix) )
4156 + #if !GR2_VERSION_REQUIRE(1,3,14)
4157 + #error "Insufficient graphite2 version."
4160 + [AC_MSG_ERROR([--with-system-graphite2 requested but no working libgraphite2 found])])
4161 + CFLAGS=$_SAVE_CFLAGS
4164 dnl ========================================================
4165 dnl Check for pixman and cairo
4166 dnl ========================================================
4167 diff --git toolkit/library/moz.build toolkit/library/moz.build
4168 index 24f940e1ed7e..079a575adec3 100644
4169 --- toolkit/library/moz.build
4170 +++ toolkit/library/moz.build
4171 @@ -248,6 +248,12 @@ if CONFIG['MOZ_SYSTEM_PNG']:
4172 if CONFIG['MOZ_SYSTEM_WEBP']:
4173 OS_LIBS += CONFIG['MOZ_WEBP_LIBS']
4175 +if CONFIG['MOZ_SYSTEM_GRAPHITE2']:
4176 + OS_LIBS += CONFIG['MOZ_GRAPHITE2_LIBS']
4178 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
4179 + OS_LIBS += CONFIG['MOZ_HARFBUZZ_LIBS']
4181 if CONFIG['MOZ_SYSTEM_LIBEVENT']:
4182 OS_LIBS += CONFIG['MOZ_LIBEVENT_LIBS']
4184 diff --git toolkit/moz.configure toolkit/moz.configure
4185 index 9297e4d6f501..d8e273887e4b 100644
4186 --- toolkit/moz.configure
4187 +++ toolkit/moz.configure
4188 @@ -937,6 +937,25 @@ add_old_configure_assignment('FT2_LIBS',
4189 add_old_configure_assignment('FT2_CFLAGS',
4193 +# ==============================================================
4194 +option('--with-system-graphite2',
4195 + help="Use system graphite2 (located with pkgconfig)")
4197 +system_graphite2 = pkg_check_modules('MOZ_GRAPHITE2', 'graphite2',
4198 + when='--with-system-graphite2')
4200 +set_config('MOZ_SYSTEM_GRAPHITE2', depends_if(system_graphite2)(lambda _: True))
4203 +# ==============================================================
4204 +option('--with-system-harfbuzz',
4205 + help="Use system harfbuzz (located with pkgconfig)")
4207 +system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 2.6.6',
4208 + when='--with-system-harfbuzz')
4210 +set_config('MOZ_SYSTEM_HARFBUZZ', depends_if(system_harfbuzz)(lambda _: True))
4212 # Remote agent (part of CDP based remote protocol)
4213 # ==============================================================
4216 [FILE:1292:patches/patch-comm_ldap_c-sdk_include_portable.h]
4217 --- comm/ldap/c-sdk/include/portable.h.orig 2020-05-21 20:31:05 UTC
4218 +++ comm/ldap/c-sdk/include/portable.h
4219 @@ -119,11 +119,15 @@
4220 # define OPENLOG_OPTIONS (LOG_PID | LOG_NOWAIT)
4223 +#ifdef __DragonFly__
4228 * some systems don't have the BSD re_comp and re_exec routines
4230 #ifndef NEED_BSDREGEX
4231 -# if (defined(SYSV) || defined(NETBSD) || defined(FREEBSD) || \
4232 +# if (defined(SYSV) || defined(NETBSD) || defined(FREEBSD) || defined(DRAGONFLY) || \
4233 defined(__OpenBSD__) || defined(linux) || defined(DARWIN)) && \
4235 # define NEED_BSDREGEX
4236 @@ -274,7 +278,7 @@ int strncasecmp(const char *, const char
4237 defined(SUNOS4) || defined(SNI) || defined(BSDI) || defined(NCR) || \
4238 defined(OSF1) || defined(NEC) || defined(VMS) || \
4239 (defined(HPUX10) && !defined(_REENTRANT)) || defined(HPUX11) || \
4240 - defined(UnixWare) || defined(NETBSD) || defined(FREEBSD) || \
4241 + defined(UnixWare) || defined(NETBSD) || defined(FREEBSD) || defined(DRAGONFLY) || \
4242 defined(OPENBSD) || (defined(LINUX) && __GLIBC__ < 2) || \
4243 (defined(AIX) && !defined(USE_REENTRANT_LIBC))
4244 # define GETHOSTBYNAME(n, r, b, l, e) gethostbyname(n)
4247 [FILE:421:patches/patch-comm_mail_app_nsMailApp.cpp]
4248 --- comm/mail/app/nsMailApp.cpp.orig 2020-07-13 18:10:03 UTC
4249 +++ comm/mail/app/nsMailApp.cpp
4250 @@ -306,6 +306,9 @@ int main(int argc, char* argv[], char* e
4254 + setenv("MOZ_GMP_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
4255 + setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
4257 #ifdef HAS_DLL_BLOCKLIST
4258 DllBlocklist_Initialize(gBlocklistInitFlags);
4262 [FILE:679:patches/patch-comm_third__party_botan_configure.py]
4263 --- comm/third_party/botan/configure.py.orig 2020-07-13 18:10:04 UTC
4264 +++ comm/third_party/botan/configure.py
4265 @@ -2936,11 +2936,7 @@ def set_defaults_for_unset_options(optio
4266 options.os = find_canonical_os_name(options.os)
4268 def deduce_compiler_type_from_cc_bin(cc_bin):
4269 - if cc_bin.find('clang') != -1 or cc_bin in ['emcc', 'em++']:
4271 - if cc_bin.find('-g++') != -1 or cc_bin.find('g++') != -1:
4276 if options.compiler is None and options.compiler_binary is not None:
4277 options.compiler = deduce_compiler_type_from_cc_bin(options.compiler_binary)
4280 [FILE:286:patches/patch-comm_third__party_botan_src_build-data_os_freebsd.txt]
4281 FreeBSD 11.3 doesn't have sys/auxv.h
4283 --- comm/third_party/botan/src/build-data/os/freebsd.txt.orig 2020-09-08 23:21:51 UTC
4284 +++ comm/third_party/botan/src/build-data/os/freebsd.txt
4285 @@ -11,7 +11,6 @@ dev_random
4295 [FILE:36325:patches/patch-cubeb-oss]
4296 https://github.com/kinetiknz/cubeb/pull/600
4298 --- dom/media/CubebUtils.cpp.orig 2020-08-19 02:08:51 UTC
4299 +++ dom/media/CubebUtils.cpp
4300 @@ -126,7 +126,7 @@ const char kBrandBundleURL[] = "chrome://branding/locale/brand.properties";
4302 const char* AUDIOSTREAM_BACKEND_ID_STR[] = {
4303 "jack", "pulse", "alsa", "audiounit", "audioqueue", "wasapi",
4304 - "winmm", "directsound", "sndio", "opensl", "audiotrack", "kai"};
4305 + "winmm", "directsound", "sndio", "opensl", "oss", "audiotrack", "kai"};
4306 /* Index for failures to create an audio stream the first time. */
4307 const int CUBEB_BACKEND_INIT_FAILURE_FIRST =
4308 ArrayLength(AUDIOSTREAM_BACKEND_ID_STR);
4309 --- media/libcubeb/src/moz.build.orig 2020-08-19 02:09:19 UTC
4310 +++ media/libcubeb/src/moz.build
4311 @@ -40,6 +40,12 @@ if CONFIG['MOZ_JACK']:
4313 DEFINES['USE_JACK'] = True
4315 +if CONFIG['OS_ARCH'] in ('DragonFly', 'FreeBSD', 'SunOS'):
4319 + DEFINES['USE_OSS'] = True
4321 if CONFIG['OS_ARCH'] == 'OpenBSD':
4324 --- media/libcubeb/src/cubeb.c.orig 2020-08-19 02:09:26 UTC
4325 +++ media/libcubeb/src/cubeb.c
4326 @@ -60,6 +60,9 @@ int sun_init(cubeb ** context, char const * context_name);
4327 #if defined(USE_OPENSL)
4328 int opensl_init(cubeb ** context, char const * context_name);
4330 +#if defined(USE_OSS)
4331 +int oss_init(cubeb ** context, char const * context_name);
4333 #if defined(USE_AUDIOTRACK)
4334 int audiotrack_init(cubeb ** context, char const * context_name);
4336 @@ -165,6 +168,10 @@ cubeb_init(cubeb ** context, char const * context_name, char const * backend_nam
4337 #if defined(USE_OPENSL)
4338 init_oneshot = opensl_init;
4340 + } else if (!strcmp(backend_name, "oss")) {
4341 +#if defined(USE_OSS)
4342 + init_oneshot = oss_init;
4344 } else if (!strcmp(backend_name, "audiotrack")) {
4345 #if defined(USE_AUDIOTRACK)
4346 init_oneshot = audiotrack_init;
4347 @@ -200,6 +207,9 @@ cubeb_init(cubeb ** context, char const * context_name, char const * backend_nam
4348 #if defined(USE_ALSA)
4351 +#if defined (USE_OSS)
4354 #if defined(USE_AUDIOUNIT_RUST)
4355 audiounit_rust_init,
4358 +++ media/libcubeb/src/cubeb_oss.c
4361 + * Copyright © 2019-2020 Nia Alarie <nia@NetBSD.org>
4362 + * Copyright © 2020 Ka Ho Ng <khng300@gmail.com>
4363 + * Copyright © 2020 The FreeBSD Foundation
4365 + * Portions of this software were developed by Ka Ho Ng
4366 + * under sponsorship from the FreeBSD Foundation.
4368 + * This program is made available under an ISC-style license. See the
4369 + * accompanying file LICENSE for details.
4372 +#if defined(__FreeBSD__) && __FreeBSD__ < 12
4373 +#define _WITH_GETLINE
4375 +#include <assert.h>
4377 +#include <limits.h>
4379 +#include <sys/types.h>
4380 +#include <sys/soundcard.h>
4381 +#include <sys/ioctl.h>
4383 +#include <unistd.h>
4384 +#include <pthread.h>
4385 +#include <stdbool.h>
4386 +#include <stdlib.h>
4388 +#include <string.h>
4390 +#include "cubeb/cubeb.h"
4391 +#include "cubeb_mixer.h"
4392 +#include "cubeb_strings.h"
4393 +#include "cubeb-internal.h"
4395 +/* Supported well by most hardware. */
4396 +#ifndef OSS_PREFER_RATE
4397 +#define OSS_PREFER_RATE (48000)
4400 +/* Standard acceptable minimum. */
4401 +#ifndef OSS_LATENCY_MS
4402 +#define OSS_LATENCY_MS (8)
4406 +#define OSS_NFRAGS (4)
4409 +#ifndef OSS_DEFAULT_DEVICE
4410 +#define OSS_DEFAULT_DEVICE "/dev/dsp"
4413 +#ifndef OSS_DEFAULT_MIXER
4414 +#define OSS_DEFAULT_MIXER "/dev/mixer"
4417 +#define ENV_AUDIO_DEVICE "AUDIO_DEVICE"
4419 +#ifndef OSS_MAX_CHANNELS
4420 +# if defined(__FreeBSD__) || defined(__DragonFly__)
4422 + * The current maximum number of channels supported
4423 + * on FreeBSD is 8.
4425 + * Reference: FreeBSD 12.1-RELEASE
4427 +# define OSS_MAX_CHANNELS (8)
4428 +# elif defined(__sun__)
4430 + * The current maximum number of channels supported
4431 + * on Illumos is 16.
4433 + * Reference: PSARC 2008/318
4435 +# define OSS_MAX_CHANNELS (16)
4437 +# define OSS_MAX_CHANNELS (2)
4441 +#if defined(__FreeBSD__) || defined(__DragonFly__)
4442 +#define SNDSTAT_BEGIN_STR "Installed devices:"
4443 +#define SNDSTAT_USER_BEGIN_STR "Installed devices from userspace:"
4444 +#define SNDSTAT_FV_BEGIN_STR "File Versions:"
4447 +static struct cubeb_ops const oss_ops;
4450 + struct cubeb_ops const * ops;
4452 + /* Our intern string store */
4453 + pthread_mutex_t mutex; /* protects devid_strs */
4454 + cubeb_strings *devid_strs;
4457 +struct oss_stream {
4458 + oss_devnode_t name;
4462 + struct stream_info {
4469 + unsigned int frame_size; /* precision in bytes * channels */
4473 +struct cubeb_stream {
4474 + struct cubeb * context;
4477 + bool doorbell; /* (m) */
4478 + pthread_cond_t doorbell_cv; /* (m) */
4479 + pthread_cond_t stopped_cv; /* (m) */
4480 + pthread_mutex_t mtx; /* Members protected by this should be marked (m) */
4481 + bool thread_created; /* (m) */
4482 + bool running; /* (m) */
4483 + bool destroying; /* (m) */
4484 + cubeb_state state; /* (m) */
4485 + float volume /* (m) */;
4486 + struct oss_stream play;
4487 + struct oss_stream record;
4488 + cubeb_data_callback data_cb;
4489 + cubeb_state_callback state_cb;
4490 + uint64_t frames_written /* (m) */;
4491 + unsigned int nfr; /* Number of frames allocated */
4492 + unsigned int nfrags;
4493 + unsigned int bufframes;
4496 +static char const *
4497 +oss_cubeb_devid_intern(cubeb *context, char const * devid)
4500 + pthread_mutex_lock(&context->mutex);
4501 + is = cubeb_strings_intern(context->devid_strs, devid);
4502 + pthread_mutex_unlock(&context->mutex);
4507 +oss_init(cubeb **context, char const *context_name) {
4510 + (void)context_name;
4511 + if ((c = calloc(1, sizeof(cubeb))) == NULL) {
4512 + return CUBEB_ERROR;
4515 + if (cubeb_strings_init(&c->devid_strs) == CUBEB_ERROR) {
4519 + if (pthread_mutex_init(&c->mutex, NULL) != 0) {
4523 + c->ops = &oss_ops;
4528 + cubeb_strings_destroy(c->devid_strs);
4530 + return CUBEB_ERROR;
4534 +oss_destroy(cubeb * context)
4536 + pthread_mutex_destroy(&context->mutex);
4537 + cubeb_strings_destroy(context->devid_strs);
4541 +static char const *
4542 +oss_get_backend_id(cubeb * context)
4548 +oss_get_preferred_sample_rate(cubeb * context, uint32_t * rate)
4552 + *rate = OSS_PREFER_RATE;
4557 +oss_get_max_channel_count(cubeb * context, uint32_t * max_channels)
4561 + *max_channels = OSS_MAX_CHANNELS;
4566 +oss_get_min_latency(cubeb * context, cubeb_stream_params params,
4567 + uint32_t * latency_frames)
4571 + *latency_frames = (OSS_LATENCY_MS * params.rate) / 1000;
4576 +oss_free_cubeb_device_info_strings(cubeb_device_info *cdi)
4578 + free((char *)cdi->device_id);
4579 + free((char *)cdi->friendly_name);
4580 + free((char *)cdi->group_id);
4581 + cdi->device_id = NULL;
4582 + cdi->friendly_name = NULL;
4583 + cdi->group_id = NULL;
4586 +#if defined(__FreeBSD__) || defined(__DragonFly__)
4588 + * Check if the specified DSP is okay for the purpose specified
4589 + * in type. Here type can only specify one operation each time
4590 + * this helper is called.
4592 + * Return 0 if OK, otherwise 1.
4595 +oss_probe_open(const char *dsppath, cubeb_device_type type,
4596 + int *fdp, oss_audioinfo *resai)
4600 + int oflags = (type == CUBEB_DEVICE_TYPE_INPUT) ? O_RDONLY : O_WRONLY;
4601 + int dspfd = open(dsppath, oflags);
4606 + error = ioctl(dspfd, SNDCTL_AUDIOINFO, &ai);
4621 +struct sndstat_info {
4622 + oss_devnode_t devname;
4624 + cubeb_device_type type;
4629 +oss_sndstat_line_parse(char *line, int is_ud, struct sndstat_info *sinfo)
4631 + char *matchptr = line, *n = NULL;
4632 + struct sndstat_info res;
4634 + memset(&res, 0, sizeof(res));
4636 + n = strchr(matchptr, ':');
4640 + unsigned int devunit;
4642 + if (sscanf(matchptr, "pcm%u: ", &devunit) < 1)
4645 + if (snprintf(res.devname, sizeof(res.devname), "/dev/dsp%u", devunit) < 1)
4648 + if (n - matchptr >= (ssize_t)(sizeof(res.devname) - strlen("/dev/")))
4651 + strlcpy(res.devname, "/dev/", sizeof(res.devname));
4652 + strncat(res.devname, matchptr, n - matchptr);
4656 + n = strchr(matchptr, '<');
4660 + n = strrchr(matchptr, '>');
4664 + res.desc = matchptr;
4667 + n = strchr(matchptr, '(');
4671 + n = strrchr(matchptr, ')');
4675 + if (!isdigit(matchptr[0])) {
4676 + if (strstr(matchptr, "play") != NULL)
4677 + res.type |= CUBEB_DEVICE_TYPE_OUTPUT;
4678 + if (strstr(matchptr, "rec") != NULL)
4679 + res.type |= CUBEB_DEVICE_TYPE_INPUT;
4682 + if (sscanf(matchptr, "%dp:%*dv/%dr:%*dv", &p, &r) != 2)
4685 + res.type |= CUBEB_DEVICE_TYPE_OUTPUT;
4687 + res.type |= CUBEB_DEVICE_TYPE_INPUT;
4690 + if (strstr(matchptr, "default") != NULL)
4691 + res.preferred = 1;
4701 + * XXX: On FreeBSD we have to rely on SNDCTL_CARDINFO to get all
4702 + * the usable audio devices currently, as SNDCTL_AUDIOINFO will
4703 + * never return directly usable audio device nodes.
4706 +oss_enumerate_devices(cubeb * context, cubeb_device_type type,
4707 + cubeb_device_collection * collection)
4709 + cubeb_device_info *devinfop = NULL;
4710 + char *line = NULL;
4711 + size_t linecap = 0;
4712 + FILE *sndstatfp = NULL;
4713 + int collection_cnt = 0;
4717 + devinfop = calloc(1, sizeof(cubeb_device_info));
4718 + if (devinfop == NULL)
4721 + sndstatfp = fopen("/dev/sndstat", "r");
4722 + if (sndstatfp == NULL)
4724 + while (getline(&line, &linecap, sndstatfp) > 0) {
4725 + const char *devid = NULL;
4726 + struct sndstat_info sinfo;
4729 + if (!strncmp(line, SNDSTAT_FV_BEGIN_STR, strlen(SNDSTAT_FV_BEGIN_STR))) {
4733 + if (!strncmp(line, SNDSTAT_BEGIN_STR, strlen(SNDSTAT_BEGIN_STR))) {
4738 + if (!strncmp(line, SNDSTAT_USER_BEGIN_STR, strlen(SNDSTAT_USER_BEGIN_STR))) {
4743 + if (skipall || isblank(line[0]))
4746 + if (oss_sndstat_line_parse(line, is_ud, &sinfo))
4749 + devinfop[collection_cnt].type = 0;
4750 + switch (sinfo.type) {
4751 + case CUBEB_DEVICE_TYPE_INPUT:
4752 + if (type & CUBEB_DEVICE_TYPE_OUTPUT)
4755 + case CUBEB_DEVICE_TYPE_OUTPUT:
4756 + if (type & CUBEB_DEVICE_TYPE_INPUT)
4763 + if (oss_probe_open(sinfo.devname, type, NULL, &ai))
4766 + devid = oss_cubeb_devid_intern(context, sinfo.devname);
4767 + if (devid == NULL)
4770 + devinfop[collection_cnt].device_id = strdup(sinfo.devname);
4771 + asprintf((char **)&devinfop[collection_cnt].friendly_name, "%s: %s",
4772 + sinfo.devname, sinfo.desc);
4773 + devinfop[collection_cnt].group_id = strdup(sinfo.devname);
4774 + devinfop[collection_cnt].vendor_name = NULL;
4775 + if (devinfop[collection_cnt].device_id == NULL ||
4776 + devinfop[collection_cnt].friendly_name == NULL ||
4777 + devinfop[collection_cnt].group_id == NULL) {
4778 + oss_free_cubeb_device_info_strings(&devinfop[collection_cnt]);
4782 + devinfop[collection_cnt].type = type;
4783 + devinfop[collection_cnt].devid = devid;
4784 + devinfop[collection_cnt].state = CUBEB_DEVICE_STATE_ENABLED;
4785 + devinfop[collection_cnt].preferred =
4786 + (sinfo.preferred) ? CUBEB_DEVICE_PREF_ALL : CUBEB_DEVICE_PREF_NONE;
4787 + devinfop[collection_cnt].format = CUBEB_DEVICE_FMT_S16NE;
4788 + devinfop[collection_cnt].default_format = CUBEB_DEVICE_FMT_S16NE;
4789 + devinfop[collection_cnt].max_channels = ai.max_channels;
4790 + devinfop[collection_cnt].default_rate = OSS_PREFER_RATE;
4791 + devinfop[collection_cnt].max_rate = ai.max_rate;
4792 + devinfop[collection_cnt].min_rate = ai.min_rate;
4793 + devinfop[collection_cnt].latency_lo = 0;
4794 + devinfop[collection_cnt].latency_hi = 0;
4798 + void *newp = reallocarray(devinfop, collection_cnt + 1,
4799 + sizeof(cubeb_device_info));
4806 + fclose(sndstatfp);
4808 + collection->count = collection_cnt;
4809 + collection->device = devinfop;
4816 + fclose(sndstatfp);
4818 + return CUBEB_ERROR;
4824 +oss_enumerate_devices(cubeb * context, cubeb_device_type type,
4825 + cubeb_device_collection * collection)
4829 + cubeb_device_info *devinfop = NULL;
4830 + int collection_cnt = 0;
4831 + int mixer_fd = -1;
4833 + mixer_fd = open(OSS_DEFAULT_MIXER, O_RDWR);
4834 + if (mixer_fd == -1) {
4835 + LOG("Failed to open mixer %s. errno: %d", OSS_DEFAULT_MIXER, errno);
4836 + return CUBEB_ERROR;
4839 + error = ioctl(mixer_fd, SNDCTL_SYSINFO, &si);
4841 + LOG("Failed to run SNDCTL_SYSINFO on mixer %s. errno: %d", OSS_DEFAULT_MIXER, errno);
4845 + devinfop = calloc(si.numaudios, sizeof(cubeb_device_info));
4846 + if (devinfop == NULL)
4849 + collection->count = 0;
4850 + for (i = 0; i < si.numaudios; i++) {
4852 + cubeb_device_info cdi = { 0 };
4853 + const char *devid = NULL;
4856 + error = ioctl(mixer_fd, SNDCTL_AUDIOINFO, &ai);
4860 + assert(ai.dev < si.numaudios);
4865 + switch (ai.caps & DSP_CAP_DUPLEX) {
4866 + case DSP_CAP_INPUT:
4867 + if (type & CUBEB_DEVICE_TYPE_OUTPUT)
4870 + case DSP_CAP_OUTPUT:
4871 + if (type & CUBEB_DEVICE_TYPE_INPUT)
4879 + devid = oss_cubeb_devid_intern(context, ai.devnode);
4880 + cdi.device_id = strdup(ai.name);
4881 + cdi.friendly_name = strdup(ai.name);
4882 + cdi.group_id = strdup(ai.name);
4883 + if (devid == NULL || cdi.device_id == NULL || cdi.friendly_name == NULL ||
4884 + cdi.group_id == NULL) {
4885 + oss_free_cubeb_device_info_strings(&cdi);
4889 + cdi.devid = devid;
4890 + cdi.vendor_name = NULL;
4891 + cdi.state = CUBEB_DEVICE_STATE_ENABLED;
4892 + cdi.preferred = CUBEB_DEVICE_PREF_NONE;
4893 + cdi.format = CUBEB_DEVICE_FMT_S16NE;
4894 + cdi.default_format = CUBEB_DEVICE_FMT_S16NE;
4895 + cdi.max_channels = ai.max_channels;
4896 + cdi.default_rate = OSS_PREFER_RATE;
4897 + cdi.max_rate = ai.max_rate;
4898 + cdi.min_rate = ai.min_rate;
4899 + cdi.latency_lo = 0;
4900 + cdi.latency_hi = 0;
4902 + devinfop[collection_cnt++] = cdi;
4905 + collection->count = collection_cnt;
4906 + collection->device = devinfop;
4908 + if (mixer_fd != -1)
4913 + if (mixer_fd != -1)
4916 + return CUBEB_ERROR;
4922 +oss_device_collection_destroy(cubeb * context,
4923 + cubeb_device_collection * collection)
4926 + for (i = 0; i < collection->count; i++) {
4927 + oss_free_cubeb_device_info_strings(&collection->device[i]);
4929 + free(collection->device);
4930 + collection->device = NULL;
4931 + collection->count = 0;
4935 +static unsigned int
4936 +oss_chn_from_cubeb(cubeb_channel chn)
4939 + case CHANNEL_FRONT_LEFT:
4941 + case CHANNEL_FRONT_RIGHT:
4943 + case CHANNEL_FRONT_CENTER:
4945 + case CHANNEL_LOW_FREQUENCY:
4947 + case CHANNEL_BACK_LEFT:
4949 + case CHANNEL_BACK_RIGHT:
4951 + case CHANNEL_SIDE_LEFT:
4953 + case CHANNEL_SIDE_RIGHT:
4956 + return CHID_UNDEF;
4960 +static unsigned long long
4961 +oss_cubeb_layout_to_chnorder(cubeb_channel_layout layout)
4963 + unsigned int i, nchns = 0;
4964 + unsigned long long chnorder = 0;
4966 + for (i = 0; layout; i++, layout >>= 1) {
4967 + unsigned long long chid = oss_chn_from_cubeb((layout & 1) << i);
4968 + if (chid == CHID_UNDEF)
4971 + chnorder |= (chid & 0xf) << nchns * 4;
4979 +oss_copy_params(int fd, cubeb_stream * stream, cubeb_stream_params * params,
4980 + struct stream_info * sinfo)
4982 + unsigned long long chnorder;
4984 + sinfo->channels = params->channels;
4985 + sinfo->sample_rate = params->rate;
4986 + switch (params->format) {
4987 + case CUBEB_SAMPLE_S16LE:
4988 + sinfo->fmt = AFMT_S16_LE;
4989 + sinfo->precision = 16;
4991 + case CUBEB_SAMPLE_S16BE:
4992 + sinfo->fmt = AFMT_S16_BE;
4993 + sinfo->precision = 16;
4995 + case CUBEB_SAMPLE_FLOAT32NE:
4996 + sinfo->fmt = AFMT_S32_NE;
4997 + sinfo->precision = 32;
5000 + LOG("Unsupported format");
5001 + return CUBEB_ERROR_INVALID_FORMAT;
5003 + if (ioctl(fd, SNDCTL_DSP_CHANNELS, &sinfo->channels) == -1) {
5004 + return CUBEB_ERROR;
5006 + if (ioctl(fd, SNDCTL_DSP_SETFMT, &sinfo->fmt) == -1) {
5007 + return CUBEB_ERROR;
5009 + if (ioctl(fd, SNDCTL_DSP_SPEED, &sinfo->sample_rate) == -1) {
5010 + return CUBEB_ERROR;
5012 + /* Mono layout is an exception */
5013 + if (params->layout != CUBEB_LAYOUT_UNDEFINED && params->layout != CUBEB_LAYOUT_MONO) {
5014 + chnorder = oss_cubeb_layout_to_chnorder(params->layout);
5015 + if (ioctl(fd, SNDCTL_DSP_SET_CHNORDER, &chnorder) == -1)
5016 + LOG("Non-fatal error %d occured when setting channel order.", errno);
5022 +oss_stream_stop(cubeb_stream * s)
5024 + pthread_mutex_lock(&s->mtx);
5025 + if (s->thread_created && s->running) {
5026 + s->running = false;
5027 + s->doorbell = false;
5028 + pthread_cond_wait(&s->stopped_cv, &s->mtx);
5030 + if (s->state != CUBEB_STATE_STOPPED) {
5031 + s->state = CUBEB_STATE_STOPPED;
5032 + pthread_mutex_unlock(&s->mtx);
5033 + s->state_cb(s, s->user_ptr, CUBEB_STATE_STOPPED);
5035 + pthread_mutex_unlock(&s->mtx);
5041 +oss_stream_destroy(cubeb_stream * s)
5043 + pthread_mutex_lock(&s->mtx);
5044 + if (s->thread_created) {
5045 + s->destroying = true;
5046 + s->doorbell = true;
5047 + pthread_cond_signal(&s->doorbell_cv);
5049 + pthread_mutex_unlock(&s->mtx);
5050 + pthread_join(s->thread, NULL);
5052 + pthread_cond_destroy(&s->doorbell_cv);
5053 + pthread_cond_destroy(&s->stopped_cv);
5054 + pthread_mutex_destroy(&s->mtx);
5055 + if (s->play.fd != -1) {
5056 + close(s->play.fd);
5058 + if (s->record.fd != -1) {
5059 + close(s->record.fd);
5061 + free(s->play.buf);
5062 + free(s->record.buf);
5067 +oss_float_to_linear32(void * buf, unsigned sample_count, float vol)
5070 + int32_t * out = buf;
5071 + int32_t * tail = out + sample_count;
5073 + while (out < tail) {
5074 + int64_t f = *(in++) * vol * 0x80000000LL;
5075 + if (f < -INT32_MAX)
5077 + else if (f > INT32_MAX)
5084 +oss_linear32_to_float(void * buf, unsigned sample_count)
5086 + int32_t * in = buf;
5087 + float * out = buf;
5088 + float * tail = out + sample_count;
5090 + while (out < tail) {
5091 + *(out++) = (1.0 / 0x80000000LL) * *(in++);
5096 +oss_linear16_set_vol(int16_t * buf, unsigned sample_count, float vol)
5099 + int32_t multiplier = vol * 0x8000;
5101 + for (i = 0; i < sample_count; ++i) {
5102 + buf[i] = (buf[i] * multiplier) >> 15;
5106 +/* 1 - Stopped by cubeb_stream_stop, otherwise 0 */
5108 +oss_audio_loop(cubeb_stream * s, cubeb_state *new_state)
5110 + cubeb_state state = CUBEB_STATE_STOPPED;
5113 + struct pollfd pfds[2];
5114 + unsigned int ppending, rpending;
5116 + pfds[0].fd = s->play.fd;
5117 + pfds[0].events = POLLOUT;
5118 + pfds[1].fd = s->record.fd;
5119 + pfds[1].events = POLLIN;
5122 + rpending = s->bufframes;
5124 + if (s->record.fd != -1) {
5125 + if (ioctl(s->record.fd, SNDCTL_DSP_SETTRIGGER, &trig)) {
5126 + LOG("Error %d occured when setting trigger on record fd", errno);
5127 + state = CUBEB_STATE_ERROR;
5130 + trig |= PCM_ENABLE_INPUT;
5131 + if (ioctl(s->record.fd, SNDCTL_DSP_SETTRIGGER, &trig)) {
5132 + LOG("Error %d occured when setting trigger on record fd", errno);
5133 + state = CUBEB_STATE_ERROR;
5136 + memset(s->record.buf, 0, s->bufframes * s->record.frame_size);
5142 + pthread_mutex_lock(&s->mtx);
5143 + if (!s->running || s->destroying) {
5144 + pthread_mutex_unlock(&s->mtx);
5147 + pthread_mutex_unlock(&s->mtx);
5148 + if (s->play.fd == -1 && s->record.fd == -1) {
5150 + * Stop here if the stream is not play & record stream,
5151 + * play-only stream or record-only stream
5157 + while ((s->bufframes - ppending) >= s->nfr && rpending >= s->nfr) {
5158 + long n = ((s->bufframes - ppending) < rpending) ? s->bufframes - ppending : rpending;
5159 + char *rptr = NULL, *pptr = NULL;
5160 + if (s->record.fd != -1)
5161 + rptr = (char *)s->record.buf;
5162 + if (s->play.fd != -1)
5163 + pptr = (char *)s->play.buf + ppending * s->play.frame_size;
5164 + if (s->record.fd != -1 && s->record.floating) {
5165 + oss_linear32_to_float(s->record.buf, s->record.info.channels * n);
5167 + nfr = s->data_cb(s, s->user_ptr, rptr, pptr, n);
5168 + if (nfr == CUBEB_ERROR) {
5169 + state = CUBEB_STATE_ERROR;
5175 + pthread_mutex_lock(&s->mtx);
5177 + pthread_mutex_unlock(&s->mtx);
5179 + if (s->play.floating) {
5180 + oss_float_to_linear32(pptr, s->play.info.channels * nfr, vol);
5182 + oss_linear16_set_vol((int16_t *)pptr, s->play.info.channels * nfr, vol);
5187 + assert(ppending <= s->bufframes);
5190 + assert(rpending >= nfr);
5192 + memmove(rptr, rptr + nfr * s->record.frame_size,
5193 + (s->bufframes - nfr) * s->record.frame_size);
5196 + if (s->play.fd != -1) {
5201 + * This is a record-only stream and number of frames
5202 + * returned from data_cb() is smaller than number
5203 + * of frames required to read. Stop here.
5206 + state = CUBEB_STATE_STOPPED;
5212 + ssize_t n, frames;
5215 + pfds[0].revents = 0;
5216 + pfds[1].revents = 0;
5218 + nfds = poll(pfds, 2, 1000);
5220 + if (errno == EINTR)
5222 + LOG("Error %d occured when polling playback and record fd", errno);
5223 + state = CUBEB_STATE_ERROR;
5225 + } else if (nfds == 0)
5228 + if ((pfds[0].revents & (POLLERR | POLLHUP)) ||
5229 + (pfds[1].revents & (POLLERR | POLLHUP))) {
5230 + LOG("Error occured on playback, record fds");
5231 + state = CUBEB_STATE_ERROR;
5235 + if (pfds[0].revents) {
5236 + while (ppending > 0) {
5237 + size_t bytes = ppending * s->play.frame_size;
5238 + if ((n = write(s->play.fd, (uint8_t *)s->play.buf, bytes)) < 0) {
5239 + if (errno == EINTR)
5241 + if (errno == EAGAIN) {
5246 + state = CUBEB_STATE_ERROR;
5249 + frames = n / s->play.frame_size;
5250 + pthread_mutex_lock(&s->mtx);
5251 + s->frames_written += frames;
5252 + pthread_mutex_unlock(&s->mtx);
5253 + ppending -= frames;
5254 + memmove(s->play.buf, (uint8_t *)s->play.buf + n,
5255 + (s->bufframes - frames) * s->play.frame_size);
5258 + if (pfds[1].revents) {
5259 + while (s->bufframes - rpending > 0) {
5260 + size_t bytes = (s->bufframes - rpending) * s->record.frame_size;
5261 + size_t read_ofs = rpending * s->record.frame_size;
5262 + if ((n = read(s->record.fd, (uint8_t *)s->record.buf + read_ofs, bytes)) < 0) {
5263 + if (errno == EINTR)
5265 + if (errno == EAGAIN)
5267 + state = CUBEB_STATE_ERROR;
5270 + frames = n / s->record.frame_size;
5271 + rpending += frames;
5275 + state = CUBEB_STATE_DRAINED;
5283 + pthread_mutex_lock(&s->mtx);
5284 + *new_state = s->state = state;
5285 + s->running = false;
5286 + pthread_mutex_unlock(&s->mtx);
5291 +oss_io_routine(void *arg)
5293 + cubeb_stream *s = arg;
5294 + cubeb_state new_state;
5298 + pthread_mutex_lock(&s->mtx);
5299 + if (s->destroying) {
5300 + pthread_mutex_unlock(&s->mtx);
5303 + pthread_mutex_unlock(&s->mtx);
5305 + stopped = oss_audio_loop(s, &new_state);
5306 + if (s->record.fd != -1)
5307 + ioctl(s->record.fd, SNDCTL_DSP_HALT_INPUT, NULL);
5309 + s->state_cb(s, s->user_ptr, new_state);
5311 + pthread_mutex_lock(&s->mtx);
5312 + pthread_cond_signal(&s->stopped_cv);
5313 + if (s->destroying) {
5314 + pthread_mutex_unlock(&s->mtx);
5317 + while (!s->doorbell) {
5318 + pthread_cond_wait(&s->doorbell_cv, &s->mtx);
5320 + s->doorbell = false;
5321 + pthread_mutex_unlock(&s->mtx);
5324 + pthread_mutex_lock(&s->mtx);
5325 + s->thread_created = false;
5326 + pthread_mutex_unlock(&s->mtx);
5331 +oss_calc_frag_shift(unsigned int frames, unsigned int frame_size)
5334 + int blksize = (frames * frame_size + OSS_NFRAGS - 1) / OSS_NFRAGS;
5335 + while ((1 << n) < blksize)
5341 +oss_get_frag_params(unsigned int shift)
5343 + return (OSS_NFRAGS << 16) | shift;
5347 +oss_stream_init(cubeb * context,
5348 + cubeb_stream ** stream,
5349 + char const * stream_name,
5350 + cubeb_devid input_device,
5351 + cubeb_stream_params * input_stream_params,
5352 + cubeb_devid output_device,
5353 + cubeb_stream_params * output_stream_params,
5354 + unsigned int latency_frames,
5355 + cubeb_data_callback data_callback,
5356 + cubeb_state_callback state_callback,
5359 + int ret = CUBEB_OK;
5360 + unsigned int playnfr = 0, recnfr = 0;
5361 + cubeb_stream *s = NULL;
5362 + const char *defdsp;
5364 + if (!(defdsp = getenv(ENV_AUDIO_DEVICE)) || *defdsp == '\0')
5365 + defdsp = OSS_DEFAULT_DEVICE;
5367 + (void)stream_name;
5368 + if ((s = calloc(1, sizeof(cubeb_stream))) == NULL) {
5369 + ret = CUBEB_ERROR;
5372 + s->state = CUBEB_STATE_STOPPED;
5373 + s->record.fd = s->play.fd = -1;
5374 + s->nfr = latency_frames;
5375 + if (input_device != NULL) {
5376 + strlcpy(s->record.name, input_device, sizeof(s->record.name));
5378 + strlcpy(s->record.name, defdsp, sizeof(s->record.name));
5380 + if (output_device != NULL) {
5381 + strlcpy(s->play.name, output_device, sizeof(s->play.name));
5383 + strlcpy(s->play.name, defdsp, sizeof(s->play.name));
5385 + if (input_stream_params != NULL) {
5386 + unsigned int nb_channels;
5387 + if (input_stream_params->prefs & CUBEB_STREAM_PREF_LOOPBACK) {
5388 + LOG("Loopback not supported");
5389 + ret = CUBEB_ERROR_NOT_SUPPORTED;
5392 + nb_channels = cubeb_channel_layout_nb_channels(input_stream_params->layout);
5393 + if (input_stream_params->layout != CUBEB_LAYOUT_UNDEFINED &&
5394 + nb_channels != input_stream_params->channels) {
5395 + LOG("input_stream_params->layout does not match input_stream_params->channels");
5396 + ret = CUBEB_ERROR_INVALID_PARAMETER;
5399 + if (s->record.fd == -1) {
5400 + if ((s->record.fd = open(s->record.name, O_RDONLY | O_NONBLOCK)) == -1) {
5401 + LOG("Audio device \"%s\" could not be opened as read-only",
5403 + ret = CUBEB_ERROR_DEVICE_UNAVAILABLE;
5407 + if ((ret = oss_copy_params(s->record.fd, s, input_stream_params,
5408 + &s->record.info)) != CUBEB_OK) {
5409 + LOG("Setting record params failed");
5412 + s->record.floating = (input_stream_params->format == CUBEB_SAMPLE_FLOAT32NE);
5413 + s->record.frame_size = s->record.info.channels * (s->record.info.precision / 8);
5414 + recnfr = (1 << oss_calc_frag_shift(s->nfr, s->record.frame_size)) / s->record.frame_size;
5416 + if (output_stream_params != NULL) {
5417 + unsigned int nb_channels;
5418 + if (output_stream_params->prefs & CUBEB_STREAM_PREF_LOOPBACK) {
5419 + LOG("Loopback not supported");
5420 + ret = CUBEB_ERROR_NOT_SUPPORTED;
5423 + nb_channels = cubeb_channel_layout_nb_channels(output_stream_params->layout);
5424 + if (output_stream_params->layout != CUBEB_LAYOUT_UNDEFINED &&
5425 + nb_channels != output_stream_params->channels) {
5426 + LOG("output_stream_params->layout does not match output_stream_params->channels");
5427 + ret = CUBEB_ERROR_INVALID_PARAMETER;
5430 + if (s->play.fd == -1) {
5431 + if ((s->play.fd = open(s->play.name, O_WRONLY | O_NONBLOCK)) == -1) {
5432 + LOG("Audio device \"%s\" could not be opened as write-only",
5434 + ret = CUBEB_ERROR_DEVICE_UNAVAILABLE;
5438 + if ((ret = oss_copy_params(s->play.fd, s, output_stream_params,
5439 + &s->play.info)) != CUBEB_OK) {
5440 + LOG("Setting play params failed");
5443 + s->play.floating = (output_stream_params->format == CUBEB_SAMPLE_FLOAT32NE);
5444 + s->play.frame_size = s->play.info.channels * (s->play.info.precision / 8);
5445 + playnfr = (1 << oss_calc_frag_shift(s->nfr, s->play.frame_size)) / s->play.frame_size;
5447 + /* Use the largest nframes among playing and recording streams */
5448 + s->nfr = (playnfr > recnfr) ? playnfr : recnfr;
5449 + s->nfrags = OSS_NFRAGS;
5450 + s->bufframes = s->nfr * s->nfrags;
5451 + if (s->play.fd != -1) {
5452 + int frag = oss_get_frag_params(oss_calc_frag_shift(s->nfr, s->play.frame_size));
5453 + if (ioctl(s->record.fd, SNDCTL_DSP_SETFRAGMENT, &frag))
5454 + LOG("Failed to set record fd with SNDCTL_DSP_SETFRAGMENT. frag: 0x%x",
5457 + if (s->record.fd != -1) {
5458 + int frag = oss_get_frag_params(oss_calc_frag_shift(s->nfr, s->record.frame_size));
5459 + if (ioctl(s->record.fd, SNDCTL_DSP_SETFRAGMENT, &frag))
5460 + LOG("Failed to set record fd with SNDCTL_DSP_SETFRAGMENT. frag: 0x%x",
5463 + s->context = context;
5465 + s->state_cb = state_callback;
5466 + s->data_cb = data_callback;
5467 + s->user_ptr = user_ptr;
5469 + if (pthread_mutex_init(&s->mtx, NULL) != 0) {
5470 + LOG("Failed to create mutex");
5473 + if (pthread_cond_init(&s->doorbell_cv, NULL) != 0) {
5474 + LOG("Failed to create cv");
5477 + if (pthread_cond_init(&s->stopped_cv, NULL) != 0) {
5478 + LOG("Failed to create cv");
5481 + s->doorbell = false;
5483 + if (s->play.fd != -1) {
5484 + if ((s->play.buf = calloc(s->bufframes, s->play.frame_size)) == NULL) {
5485 + ret = CUBEB_ERROR;
5489 + if (s->record.fd != -1) {
5490 + if ((s->record.buf = calloc(s->bufframes, s->record.frame_size)) == NULL) {
5491 + ret = CUBEB_ERROR;
5500 + oss_stream_destroy(s);
5506 +oss_stream_thr_create(cubeb_stream * s)
5508 + if (s->thread_created) {
5509 + s->doorbell = true;
5510 + pthread_cond_signal(&s->doorbell_cv);
5514 + if (pthread_create(&s->thread, NULL, oss_io_routine, s) != 0) {
5515 + LOG("Couldn't create thread");
5516 + return CUBEB_ERROR;
5523 +oss_stream_start(cubeb_stream * s)
5525 + s->state_cb(s, s->user_ptr, CUBEB_STATE_STARTED);
5526 + pthread_mutex_lock(&s->mtx);
5527 + /* Disallow starting an already started stream */
5528 + assert(!s->running && s->state != CUBEB_STATE_STARTED);
5529 + if (oss_stream_thr_create(s) != CUBEB_OK) {
5530 + pthread_mutex_unlock(&s->mtx);
5531 + s->state_cb(s, s->user_ptr, CUBEB_STATE_ERROR);
5532 + return CUBEB_ERROR;
5534 + s->state = CUBEB_STATE_STARTED;
5535 + s->thread_created = true;
5536 + s->running = true;
5537 + pthread_mutex_unlock(&s->mtx);
5542 +oss_stream_get_position(cubeb_stream * s, uint64_t * position)
5544 + pthread_mutex_lock(&s->mtx);
5545 + *position = s->frames_written;
5546 + pthread_mutex_unlock(&s->mtx);
5551 +oss_stream_get_latency(cubeb_stream * s, uint32_t * latency)
5555 + if (ioctl(s->play.fd, SNDCTL_DSP_GETODELAY, &delay) == -1) {
5556 + return CUBEB_ERROR;
5559 + /* Return number of frames there */
5560 + *latency = delay / s->play.frame_size;
5565 +oss_stream_set_volume(cubeb_stream * stream, float volume)
5569 + else if (volume > 1.0)
5571 + pthread_mutex_lock(&stream->mtx);
5572 + stream->volume = volume;
5573 + pthread_mutex_unlock(&stream->mtx);
5578 +oss_get_current_device(cubeb_stream * stream, cubeb_device ** const device)
5580 + *device = calloc(1, sizeof(cubeb_device));
5581 + if (*device == NULL) {
5582 + return CUBEB_ERROR;
5584 + (*device)->input_name = stream->record.fd != -1 ?
5585 + strdup(stream->record.name) : NULL;
5586 + (*device)->output_name = stream->play.fd != -1 ?
5587 + strdup(stream->play.name) : NULL;
5592 +oss_stream_device_destroy(cubeb_stream * stream, cubeb_device * device)
5595 + free(device->input_name);
5596 + free(device->output_name);
5601 +static struct cubeb_ops const oss_ops = {
5603 + .get_backend_id = oss_get_backend_id,
5604 + .get_max_channel_count = oss_get_max_channel_count,
5605 + .get_min_latency = oss_get_min_latency,
5606 + .get_preferred_sample_rate = oss_get_preferred_sample_rate,
5607 + .enumerate_devices = oss_enumerate_devices,
5608 + .device_collection_destroy = oss_device_collection_destroy,
5609 + .destroy = oss_destroy,
5610 + .stream_init = oss_stream_init,
5611 + .stream_destroy = oss_stream_destroy,
5612 + .stream_start = oss_stream_start,
5613 + .stream_stop = oss_stream_stop,
5614 + .stream_reset_default_device = NULL,
5615 + .stream_get_position = oss_stream_get_position,
5616 + .stream_get_latency = oss_stream_get_latency,
5617 + .stream_get_input_latency = NULL,
5618 + .stream_set_volume = oss_stream_set_volume,
5619 + .stream_get_current_device = oss_get_current_device,
5620 + .stream_device_destroy = oss_stream_device_destroy,
5621 + .stream_register_device_changed_callback = NULL,
5622 + .register_device_collection_changed = NULL};
5625 [FILE:886:patches/patch-env-api-keys]
5626 # Accept API keys from environment like before bug 1294585
5628 --- build/moz.configure/keyfiles.configure
5629 +++ build/moz.configure/keyfiles.configure
5630 @@ -18,6 +18,7 @@ def keyfile(desc, help=None, callback=lambda x: x):
5631 @checking('for the %s key' % desc, lambda x: x and x is not no_key)
5632 @imports(_from='__builtin__', _import='open')
5633 @imports(_from='__builtin__', _import='IOError')
5634 + @imports(_from='os', _import='environ')
5638 @@ -28,7 +29,7 @@ def keyfile(desc, help=None, callback=lambda x: x):
5639 raise FatalCheckError("'%s' is empty." % value[0])
5640 except IOError as e:
5641 raise FatalCheckError("'%s': %s." % (value[0], e.strerror))
5643 + return environ.get('MOZ_%s_KEY' % desc.upper().replace(' ', '_')) or no_key
5649 [FILE:2142:patches/patch-freebsd11.3]
5650 Drop after FreeBSD 11.3 EOL around 2020-09-20.
5651 https://svnweb.freebsd.org/changeset/base/351766
5653 mozglue/baseprofiler/core/shared-libraries-linux.cc:374:34: error: use of undeclared
5654 identifier 'NT_GNU_BUILD_ID'
5655 if (note_header->n_type == NT_GNU_BUILD_ID) break;
5657 In file included from Unified_cpp_mozglue_baseprofiler0.cpp:137:
5658 mozglue/baseprofiler/lul/LulElf.cpp:762:32: error: use of undeclared identifier
5660 if (note_header->n_type == NT_GNU_BUILD_ID) break;
5662 In file included from Unified_cpp_tools_profiler1.cpp:38:
5663 tools/profiler/lul/LulElf.cpp:776:32: error: use of undeclared identifier
5665 if (note_header->n_type == NT_GNU_BUILD_ID) break;
5668 --- mozglue/baseprofiler/core/shared-libraries-linux.cc.orig 2020-06-25 17:04:48 UTC
5669 +++ mozglue/baseprofiler/core/shared-libraries-linux.cc
5670 @@ -50,6 +50,11 @@ extern "C" MOZ_EXPORT __attribute__((weak)) int dl_ite
5671 # define ElfW(type) Elf_##type
5674 +#if defined(GP_OS_freebsd) && !defined(NT_GNU_BUILD_ID)
5675 +// FreeBSD < 11.4 doesn't define NT_GNU_BUILD_ID
5676 +# define NT_GNU_BUILD_ID 3
5679 // ----------------------------------------------------------------------------
5680 // Starting imports from toolkit/crashreporter/google-breakpad/, as needed by
5681 // this file when moved to mozglue.
5682 --- mozglue/baseprofiler/lul/LulElf.cpp.orig 2020-06-25 17:04:48 UTC
5683 +++ mozglue/baseprofiler/lul/LulElf.cpp
5685 # define EM_AARCH64 183
5688 +#if defined(GP_OS_freebsd) && !defined(NT_GNU_BUILD_ID)
5689 +// FreeBSD < 11.4 doesn't define NT_GNU_BUILD_ID
5690 +# define NT_GNU_BUILD_ID 3
5693 // This namespace contains helper functions.
5696 --- tools/profiler/lul/LulElf.cpp.orig 2020-06-25 17:05:05 UTC
5697 +++ tools/profiler/lul/LulElf.cpp
5699 # define EM_AARCH64 183
5702 +#if defined(GP_OS_freebsd) && !defined(NT_GNU_BUILD_ID)
5703 +// FreeBSD < 11.4 doesn't define NT_GNU_BUILD_ID
5704 +# define NT_GNU_BUILD_ID 3
5707 // This namespace contains helper functions.
5712 [FILE:890:patches/patch-gfx_skia_skia_src_core_SkCpu.cpp]
5713 Regressed by https://svnweb.freebsd.org/changeset/base/324815
5715 gfx/skia/skia/src/core/SkCpu.cpp:81:27: error: use of undeclared identifier 'getauxval'
5716 uint32_t hwcaps = getauxval(AT_HWCAP);
5719 --- gfx/skia/skia/src/core/SkCpu.cpp.orig 2020-07-13 18:06:57 UTC
5720 +++ gfx/skia/skia/src/core/SkCpu.cpp
5725 +#elif defined(SK_CPU_ARM64) && defined(__FreeBSD__)
5726 + #include <machine/armreg.h>
5728 + static uint32_t read_cpu_features() {
5729 + uint32_t features = 0;
5730 + uint64_t id_aa64isar0;
5732 + id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
5733 + if (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) {
5734 + features |= SkCpu::CRC32;
5739 #elif defined(SK_CPU_ARM64) && __has_include(<sys/auxv.h>)
5740 #include <sys/auxv.h>
5744 [FILE:290:files/thunderbird.desktop]
5748 GenericName=Mail Client
5749 Comment=Mail client and News Reader
5751 Icon=thunderbird.png
5755 Categories=Network;Email;News;InstantMessaging;
5756 MimeType=application/mbox;message/rfc822;