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.6.0/source
13 DISTFILE[1]= thunderbird-78.6.0.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
27 nodejs:primary:standard
28 libvpx:single:standard
29 clang:compiler:standard
30 evdev-proto:single:standard
31 autoselect-python:single:standard
32 python-sqlite3:single:python_used
33 BUILDRUN_DEPENDS= nss:primary:standard
35 libffi:single:standard
36 libproxy:single:standard
37 libevent:single:standard
38 libcanberra:primary:standard
39 libnotify:primary:standard
40 harfbuzz:primary:standard
45 ffmpeg:primary:standard
46 dbus-glib:primary:standard
47 startup-notification:single:standard
49 USES= cpe desktop-utils:single gmake jpeg png zlib
50 perl:build pkgconfig iconv python:build
52 GNOME_COMPONENTS= gconf gtk2 gtk3 gdkpixbuf pango
53 XORG_COMPONENTS= x11 xcb xcomposite xdamage xext xfixes xrender xt
57 LICENSE_TERMS= single:{{WRKSRC}}/toolkit/content/license.html
58 LICENSE_FILE= MPL:stock
62 FPC_EQUIVALENT= mail/thunderbird
65 CONFIGURE_OUTSOURCE= yes
66 CONFIGURE_ENV= PYTHON3={{PYTHON_CMD}}
67 SETUPTOOLS_USE_DISTUTILS=stdlib
69 MAKE_ENV= PYTHON3={{PYTHON_CMD}}
72 QMAKE_ARGS= --prefix="{{PREFIX}}"
77 --with-system-png="{{LOCALBASE}}"
78 --with-system-jpeg="{{LOCALBASE}}"
79 --with-system-libevent
80 --with-system-harfbuzz
81 --with-system-graphite2
85 --enable-system-pixman
86 --enable-install-strip
92 --enable-official-branding
93 --enable-application=comm/mail
94 --enable-update-channel=release
99 --disable-debug-symbols
108 VAR_OPSYS[linux]= QMAKE_ARGS=--disable-elf-hack
111 ${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
112 ${WRKSRC}/comm/mail/app/nsMailApp.cpp \
113 ${WRKSRC}/browser/app/nsBrowserApp.cpp
114 (cd ${WRKSRC}/gfx/angle/checkout/src/compiler/translator && \
115 ${REINPLACE_CMD} -e 's|<math.h>|<cmath>|' \
116 InfoSink.h IntermNode.cpp)
118 ${REINPLACE_CMD} -e 's|MOZ_SCTP|MOZ_DISABLE_SCTP|' \
119 ${WRKSRC}/netwerk/moz.build
120 # alsa headers use 'u_int32_t' and other BerkeleyDB/nvi
121 # fixed types (_XOPEN_SOURCE)
122 ${REINPLACE_CMD} -e 's@_XOPEN_SOURCE@&___@g' \
123 ${WRKSRC}/media/libcubeb/src/cubeb_alsa.c
124 ${REINPLACE_CMD} -e 's@_POSIX_SOURCE@&___@g' \
125 ${WRKSRC}/media/libcubeb/src/cubeb_jack.cpp
126 # Set mozilla options
127 @${ECHO_CMD} "--=> Setting configuration <=--"
128 @for arg in ${QMAKE_ARGS}; do \
129 ${ECHO_CMD} ".mozconfig << $$arg" ;\
130 ${ECHO_CMD} ac_add_options $$arg >> ${WRKSRC}/.mozconfig ;\
132 @${ECHO_CMD} LDFLAGS=\"-Wl,-rpath,${PREFIX}/lib/thunderbird\" \
133 >> ${WRKSRC}/.mozconfig
135 ${MV} ${WRKSRC}/third_party/rust/packed_simd/readme.md \
136 ${WRKSRC}/third_party/rust/packed_simd/README.md
138 post-patch-dragonfly:
139 ${REINPLACE_CMD} -e '/<malloc.h>/d' \
140 ${WRKSRC}/comm/ldap/c-sdk/libraries/liblber/lber-int.h
143 ${MKDIR} ${STAGEDIR}${PREFIX}/share/applications
144 ${MKDIR} ${STAGEDIR}${PREFIX}/share/pixmaps
145 ${INSTALL_DATA} ${FILESDIR}/thunderbird.desktop \
146 ${STAGEDIR}${PREFIX}/share/applications
147 (cd ${STAGEDIR}${PREFIX}/share/pixmaps && ${LN} -sf \
148 ../../lib/thunderbird/chrome/icons/default/default48.png \
150 # regenerate symlink to avoid absolute paths
151 ${RM} ${STAGEDIR}${PREFIX}/bin/thunderbird
152 (cd ${STAGEDIR}${PREFIX}/bin && \
153 ${LN} -sf ../lib/thunderbird/thunderbird thunderbird)
156 (cd ${WRKSRC} && ${LOCALBASE}/bin/autoconf-2.13)
157 (cd ${WRKSRC}/js/src/ && ${LOCALBASE}/bin/autoconf-2.13)
159 [FILE:391:descriptions/desc.single]
160 Thunderbird is a free and open source email, newsfeed, chat, and
161 calendaring client, that's easy to set up and customize. One of the core
162 principles of Thunderbird is the use and promotion of open standards -
163 this focus is a rejection of our world of closed platforms and services
164 that can't communicate with each other. We want our users to have
165 freedom and choice in how they communicate.
169 1dd6f9a4d88b4c3d0ec47bba60a891243ef95e105a9045b2d32e2b126779844b 353496712 thunderbird-78.6.0.source.tar.xz
172 [FILE:949:manifests/plist.single]
192 lib/thunderbird/chrome/icons/default/
193 calendar-alarm-dialog.png
194 calendar-event-dialog.png
195 calendar-event-summary-dialog.png
196 calendar-task-dialog.png
197 calendar-task-summary-dialog.png
206 lib/thunderbird/defaults/messenger/mailViews.dat
207 lib/thunderbird/defaults/pref/channel-prefs.js
208 lib/thunderbird/features/wetransfer@extensions.thunderbird.net.xpi
209 lib/thunderbird/gtk2/libmozgtk.so
216 share/applications/thunderbird.desktop
217 share/pixmaps/thunderbird.png
220 [FILE:5540:patches/patch-addon-search]
221 https://github.com/mozilla/addons/issues/708
222 https://github.com/mozilla/addons-frontend/issues/4610
224 diff --git mail/app/profile/all-thunderbird.js mail/app/profile/all-thunderbird.js
225 index 75c2c5e435e35..4d8c09c02759b 100644
226 --- comm/mail/app/profile/all-thunderbird.js
227 +++ comm/mail/app/profile/all-thunderbird.js
228 @@ -153,10 +153,10 @@ pref("extensions.getAddons.maxResults", 15);
229 pref("extensions.getAddons.get.url", "https://services.addons.thunderbird.net/api/v3/addons/search/?guid=%IDS%&lang=%LOCALE%");
230 pref("extensions.getAddons.compatOverides.url", "https://services.addons.thunderbird.net/api/v3/addons/compat-override/?guid=%IDS%&lang=%LOCALE%");
231 pref("extensions.getAddons.link.url", "https://addons.thunderbird.net/%LOCALE%/%APP%/");
232 -pref("extensions.getAddons.recommended.url", "https://services.addons.thunderbird.net/%LOCALE%/%APP%/api/%API_VERSION%/list/recommended/all/%MAX_RESULTS%/%OS%/%VERSION%?src=thunderbird");
233 +pref("extensions.getAddons.recommended.url", "https://services.addons.thunderbird.net/%LOCALE%/%APP%/api/%API_VERSION%/list/recommended/all/%MAX_RESULTS%/Linux/%VERSION%?src=thunderbird");
234 pref("extensions.getAddons.search.browseURL", "https://addons.thunderbird.net/%LOCALE%/%APP%/search/?q=%TERMS%");
235 -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");
236 -pref("extensions.webservice.discoverURL", "https://services.addons.thunderbird.net/%LOCALE%/%APP%/discovery/pane/%VERSION%/%OS%");
237 +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");
238 +pref("extensions.webservice.discoverURL", "https://services.addons.thunderbird.net/%LOCALE%/%APP%/discovery/pane/%VERSION%/Linux");
239 pref("extensions.getAddons.siteRegExp", "^https://.*addons\\.thunderbird\\.net");
240 pref("extensions.getAddons.langpacks.url", "https://services.addons.thunderbird.net/api/v3/addons/language-tools/?app=thunderbird&type=language&appversion=%VERSION%");
242 @@ -180,9 +180,9 @@ pref("security.cert_pinning.enforcement_level", 1);
245 pref("extensions.update.enabled", true);
246 -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%");
247 +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%");
249 -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%");
250 +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%");
252 pref("extensions.update.interval", 86400); // Check for updates to Extensions and
254 diff --git toolkit/mozapps/extensions/internal/AddonRepository.jsm toolkit/mozapps/extensions/internal/AddonRepository.jsm
255 index f70fd8d7e3bd8..81e8cd7764fdf 100644
256 --- toolkit/mozapps/extensions/internal/AddonRepository.jsm
257 +++ toolkit/mozapps/extensions/internal/AddonRepository.jsm
258 @@ -602,7 +602,7 @@ var AddonRepository = {
259 addon.version = String(aEntry.current_version.version);
260 if (Array.isArray(aEntry.current_version.files)) {
261 for (let file of aEntry.current_version.files) {
262 - if (file.platform == "all" || file.platform == PLATFORM) {
263 + if (file.platform == "all" || file.platform == "linux" || file.platform == PLATFORM) {
265 addon.sourceURI = NetUtil.newURI(file.url);
267 diff --git toolkit/mozapps/extensions/internal/XPIDatabase.jsm toolkit/mozapps/extensions/internal/XPIDatabase.jsm
268 index f70fd8d7e3bd8..81e8cd7764fdf 100644
269 --- toolkit/mozapps/extensions/internal/XPIDatabase.jsm
270 +++ toolkit/mozapps/extensions/internal/XPIDatabase.jsm
271 @@ -355,7 +355,7 @@ class AddonInternal {
272 // Something is causing errors in here
274 for (let platform of this.targetPlatforms) {
275 - if (platform.os == Services.appinfo.OS) {
276 + if (platform.os == "Linux" || platform.os == Services.appinfo.OS) {
279 if (platform.abi === abi)
282 [FILE:445:patches/patch-browser-app-nsBrowserApp.cpp]
283 --- browser/app/nsBrowserApp.cpp.orig 2016-09-19 16:19:28 UTC
284 +++ browser/app/nsBrowserApp.cpp
285 @@ -324,6 +324,9 @@ int main(int argc, char* argv[], char* e
287 mozilla::TimeStamp start = mozilla::TimeStamp::Now();
289 + setenv("MOZ_GMP_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
290 + setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
292 #ifdef HAS_DLL_BLOCKLIST
293 DllBlocklist_Initialize();
297 [FILE:1800:patches/patch-bug1288587]
298 diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
299 index 855214a..1e91d51 100644
300 --- build/moz.configure/init.configure
301 +++ build/moz.configure/init.configure
302 @@ -251,6 +251,7 @@ option(env='PYTHON3', nargs=1, help='Python 3 interpre
303 @imports(_from='mozbuild.pythonutil', _import='find_python3_executable')
304 @imports(_from='mozbuild.pythonutil', _import='python_executable_version')
305 @imports(_from='six', _import='ensure_text')
306 +@imports(_from='__builtin__', _import='KeyError')
307 def virtualenv_python3(env_python, build_env, mozconfig, help):
308 # Avoid re-executing python when running configure --help.
310 @@ -283,6 +284,12 @@ def virtualenv_python3(env_python, build_env, mozconfi
311 python = mozconfig['vars']['added']['PYTHON3']
312 elif 'PYTHON3' in mozconfig['vars']['modified']:
313 python = mozconfig['vars']['modified']['PYTHON3'][1]
314 + for i in ('env', 'vars'):
315 + for j in ('added', 'modified'):
317 + del mozconfig[i][j]['PYTHON3']
321 log.debug("python3: executable from configuration: %r" % python)
323 @@ -365,7 +372,10 @@ def virtualenv_python3(env_python, build_env, mozconfi
324 sys.executable, manager.python_path))
325 log.info('Re-executing in the virtualenv')
327 - del os.environ['PYTHON3']
329 + del os.environ['PYTHON3']
332 # Homebrew on macOS will change Python's sys.executable to a custom
333 # value which messes with mach's virtualenv handling code. Override
334 # Homebrew's changes with the correct sys.executable value.
337 [FILE:3590:patches/patch-bug1559213]
339 Author: Jory A. Pratt <anarchy@gentoo.org>
340 Date: Thu Jun 13 11:53:00 2019 -0700
342 Bug 1559213 - Allow to use system av1 libs instead of bundled.
344 config/external/moz.build | 5 +++--
345 config/system-headers.mozbuild | 8 ++++++++
346 dom/media/platforms/moz.build | 5 +++++
347 toolkit/moz.configure | 19 ++++++++++++++++++-
348 4 files changed, 34 insertions(+), 3 deletions(-)
350 diff --git config/external/moz.build config/external/moz.build
351 index 03e4fa143bd1..a67d10b11fe6 100644
352 --- config/external/moz.build
353 +++ config/external/moz.build
354 @@ -37,8 +37,9 @@ if not CONFIG['MOZ_SYSTEM_LIBVPX']:
355 external_dirs += ['media/libvpx']
357 if CONFIG['MOZ_AV1']:
358 - external_dirs += ['media/libaom']
359 - external_dirs += ['media/libdav1d']
360 + if not CONFIG['MOZ_SYSTEM_AV1']:
361 + external_dirs += ['media/libaom']
362 + external_dirs += ['media/libdav1d']
364 if not CONFIG['MOZ_SYSTEM_PNG']:
365 external_dirs += ['media/libpng']
366 diff --git config/system-headers.mozbuild config/system-headers.mozbuild
367 index bcf5c4925564..48964a999a9b 100644
368 --- config/system-headers.mozbuild
369 +++ config/system-headers.mozbuild
370 @@ -1304,6 +1304,14 @@ if CONFIG['MOZ_ENABLE_CONTENTMANAGER']:
371 'SelectSingleContentItemPage.h',
374 +if CONFIG['MOZ_SYSTEM_AV1']:
375 + system_headers += [
376 + 'aom/aom_decoder.h',
382 if CONFIG['MOZ_SYSTEM_LIBVPX']:
385 diff --git dom/media/platforms/moz.build dom/media/platforms/moz.build
386 index 092cee0c9b66..38e45de5b5f0 100644
387 --- dom/media/platforms/moz.build
388 +++ dom/media/platforms/moz.build
389 @@ -80,6 +80,11 @@ if CONFIG['MOZ_AV1']:
390 'agnostic/AOMDecoder.cpp',
391 'agnostic/DAV1DDecoder.cpp',
393 + if CONFIG['MOZ_SYSTEM_AV1']:
394 + CXXFLAGS += CONFIG['MOZ_SYSTEM_LIBAOM_CFLAGS']
395 + OS_LIBS += CONFIG['MOZ_SYSTEM_LIBAOM_LIBS']
396 + CXXFLAGS += CONFIG['MOZ_SYSTEM_LIBDAV1D_CFLAGS']
397 + OS_LIBS += CONFIG['MOZ_SYSTEM_LIBDAV1D_LIBS']
399 if CONFIG['MOZ_OMX']:
401 diff --git toolkit/moz.configure toolkit/moz.configure
402 index 82b5a59acf42..e2329560b42b 100644
403 --- toolkit/moz.configure
404 +++ toolkit/moz.configure
405 @@ -441,7 +441,23 @@ def av1(value):
409 -@depends(target, nasm_version, when=av1 & compile_environment)
410 +option('--with-system-av1',
411 + help="Use system av1 (located with pkgconfig)")
413 +system_libaom_info = pkg_check_modules('MOZ_SYSTEM_LIBAOM', 'aom >= 1.0.0',
414 + when='--with-system-av1')
416 +system_libdav1d_info = pkg_check_modules('MOZ_SYSTEM_LIBDAV1D', 'dav1d >= 0.1.1',
417 + when='--with-system-av1')
419 +@depends(system_libaom_info, system_libdav1d_info)
420 +def system_av1(system_libaom_info, system_libdav1d_info):
421 + has_av1_libs = False
422 + if system_libaom_info and system_libdav1d_info:
423 + has_av1_libs = True
424 + return has_av1_libs
426 +@depends(target, nasm_version, when=av1 & depends(system_av1)(lambda v: not v) & compile_environment)
427 def dav1d_asm(target, nasm_version):
428 if target.os != 'Android':
429 if target.cpu == 'aarch64':
430 @@ -457,6 +473,7 @@ set_config('MOZ_DAV1D_ASM', dav1d_asm)
431 set_define('MOZ_DAV1D_ASM', dav1d_asm)
432 set_config('MOZ_AV1', av1)
433 set_define('MOZ_AV1', av1)
434 +set_config('MOZ_SYSTEM_AV1', depends_if(system_av1)(lambda _: True))
436 # Built-in fragmented MP4 support.
437 # ==============================================================
440 [FILE:1254:patches/patch-bug1618914]
441 [Wayland] Fall back to ftruncate if posix_fallocate isn't supported by filesystem.
443 diff --git widget/gtk/WindowSurfaceWayland.cpp widget/gtk/WindowSurfaceWayland.cpp
444 index 9a73326399bd5..9e42a7f1c5d18 100644
445 --- widget/gtk/WindowSurfaceWayland.cpp
446 +++ widget/gtk/WindowSurfaceWayland.cpp
447 @@ -222,20 +222,21 @@ static int WaylandAllocateShmMemory(int aSize) {
448 #ifdef HAVE_POSIX_FALLOCATE
450 ret = posix_fallocate(fd, 0, aSize);
451 } while (ret == EINTR);
455 + } else if (ret != ENODEV && ret != EINVAL && ret != EOPNOTSUPP) {
457 MOZ_CRASH("posix_fallocate() fails to allocate shm memory");
462 ret = ftruncate(fd, aSize);
463 } while (ret < 0 && errno == EINTR);
466 MOZ_CRASH("ftruncate() fails to allocate shm memory");
472 @@ -265,8 +266,8 @@ bool WaylandShmPool::Resize(int aSize) {
473 #ifdef HAVE_POSIX_FALLOCATE
475 errno = posix_fallocate(mShmPoolFd, 0, aSize);
476 } while (errno == EINTR);
477 - if (errno != 0) return false;
478 + if (errno != 0 && errno != ENODEV && errno != EINVAL && errno != EOPNOTSUPP) return false;
481 wl_shm_pool_resize(mShmPool, aSize);
484 [FILE:173909:patches/patch-bug1667736]
486 Author: Henri Sivonen <hsivonen@hsivonen.fi>
487 Date: Fri Oct 30 08:29:53 2020 +0000
489 Bug 1667736 - Update packed_simd to compile on Rust 1.48. r=glandium
491 Differential Revision: https://phabricator.services.mozilla.com/D91572
493 .cargo/config.in | 2 +-
496 third_party/rust/packed_simd/.cargo-checksum.json | 2 +-
497 third_party/rust/packed_simd/.travis.yml | 237 +++++--------
498 third_party/rust/packed_simd/Cargo.toml | 14 +-
499 .../rust/packed_simd/{readme.md => README.md} | 111 +++----
500 third_party/rust/packed_simd/build.rs | 2 +-
501 third_party/rust/packed_simd/ci/all.sh | 2 +-
502 .../ci/docker/aarch64-unknown-linux-gnu/Dockerfile | 2 +-
503 .../ci/docker/arm-unknown-linux-gnueabi/Dockerfile | 2 +-
504 .../docker/arm-unknown-linux-gnueabihf/Dockerfile | 2 +-
505 .../armv7-unknown-linux-gnueabihf/Dockerfile | 2 +-
506 .../ci/docker/i586-unknown-linux-gnu/Dockerfile | 2 +-
507 .../ci/docker/i686-unknown-linux-gnu/Dockerfile | 2 +-
508 .../ci/docker/mips-unknown-linux-gnu/Dockerfile | 2 +-
509 .../mips64-unknown-linux-gnuabi64/Dockerfile | 2 +-
510 .../mips64el-unknown-linux-gnuabi64/Dockerfile | 2 +-
511 .../ci/docker/mipsel-unknown-linux-musl/Dockerfile | 4 +-
512 .../ci/docker/powerpc-unknown-linux-gnu/Dockerfile | 3 +-
513 .../docker/powerpc64-unknown-linux-gnu/Dockerfile | 2 +-
514 .../powerpc64le-unknown-linux-gnu/Dockerfile | 2 +-
515 .../thumbv7neon-unknown-linux-gnueabihf/Dockerfile | 2 +-
516 .../ci/docker/x86_64-unknown-linux-gnu/Dockerfile | 2 +-
517 third_party/rust/packed_simd/ci/dox.sh | 7 +-
518 third_party/rust/packed_simd/ci/run.sh | 6 +-
519 .../rust/packed_simd/ci/setup_benchmarks.sh | 3 -
520 third_party/rust/packed_simd/src/api.rs | 13 +-
521 third_party/rust/packed_simd/src/api/bit_manip.rs | 1 +
522 third_party/rust/packed_simd/src/api/bitmask.rs | 82 +++++
523 third_party/rust/packed_simd/src/api/cast/v128.rs | 2 +-
524 third_party/rust/packed_simd/src/api/cast/v16.rs | 2 +-
525 third_party/rust/packed_simd/src/api/cast/v256.rs | 2 +-
526 third_party/rust/packed_simd/src/api/cast/v32.rs | 2 +-
527 third_party/rust/packed_simd/src/api/cast/v512.rs | 2 +-
528 third_party/rust/packed_simd/src/api/cast/v64.rs | 2 +-
529 third_party/rust/packed_simd/src/api/default.rs | 2 +
530 .../rust/packed_simd/src/api/from/from_array.rs | 2 +
531 third_party/rust/packed_simd/src/api/hash.rs | 2 +
532 .../packed_simd/src/api/into_bits/arch_specific.rs | 3 +-
533 .../rust/packed_simd/src/api/into_bits/v128.rs | 2 +-
534 .../rust/packed_simd/src/api/into_bits/v16.rs | 2 +-
535 .../rust/packed_simd/src/api/into_bits/v256.rs | 2 +-
536 .../rust/packed_simd/src/api/into_bits/v32.rs | 2 +-
537 .../rust/packed_simd/src/api/into_bits/v512.rs | 2 +-
538 .../rust/packed_simd/src/api/into_bits/v64.rs | 2 +-
539 .../rust/packed_simd/src/api/minimal/iuf.rs | 6 +-
540 .../rust/packed_simd/src/api/minimal/mask.rs | 6 +-
541 .../rust/packed_simd/src/api/minimal/ptr.rs | 28 +-
542 .../src/api/ops/vector_float_min_max.rs | 5 +
543 .../rust/packed_simd/src/api/ptr/gather_scatter.rs | 36 +-
544 .../src/api/reductions/float_arithmetic.rs | 13 +-
545 .../rust/packed_simd/src/api/reductions/min_max.rs | 4 +
546 .../rust/packed_simd/src/api/slice/from_slice.rs | 6 +-
547 .../packed_simd/src/api/slice/write_to_slice.rs | 6 +-
548 third_party/rust/packed_simd/src/codegen.rs | 3 +
549 .../rust/packed_simd/src/codegen/bit_manip.rs | 2 +-
550 third_party/rust/packed_simd/src/codegen/llvm.rs | 8 +
551 .../packed_simd/src/codegen/reductions/mask/x86.rs | 8 +-
552 .../src/codegen/reductions/mask/x86/sse.rs | 32 --
553 .../rust/packed_simd/src/codegen/shuffle.rs | 370 ++++++---------------
554 .../rust/packed_simd/src/codegen/shuffle1_dyn.rs | 35 +-
555 third_party/rust/packed_simd/src/codegen/vPtr.rs | 2 +
556 third_party/rust/packed_simd/src/lib.rs | 29 +-
557 third_party/rust/packed_simd/src/masks.rs | 2 +
558 third_party/rust/packed_simd/src/sealed.rs | 15 +-
559 third_party/rust/packed_simd/src/testing/utils.rs | 25 +-
560 third_party/rust/packed_simd/src/v128.rs | 32 +-
561 third_party/rust/packed_simd/src/v16.rs | 6 +-
562 third_party/rust/packed_simd/src/v256.rs | 32 +-
563 third_party/rust/packed_simd/src/v32.rs | 12 +-
564 third_party/rust/packed_simd/src/v512.rs | 32 +-
565 third_party/rust/packed_simd/src/v64.rs | 26 +-
566 third_party/rust/packed_simd/src/vPtr.rs | 2 +-
567 third_party/rust/packed_simd/src/vSize.rs | 20 +-
568 third_party/rust/packed_simd/tests/endianness.rs | 62 ++--
569 76 files changed, 618 insertions(+), 801 deletions(-)
571 diff --git .cargo/config.in .cargo/config.in
572 index 1d25dffe4e49..7a321d933326 100644
575 @@ -45,7 +45,7 @@ tag = "v0.4.2"
576 [source."https://github.com/hsivonen/packed_simd"]
577 git = "https://github.com/hsivonen/packed_simd"
578 replace-with = "vendored-sources"
579 -rev = "3541e3818fdc7c2a24f87e3459151a4ce955a67a"
580 +rev = "0917fe780032a6bbb23d71be545f9c1834128d75"
582 [source."https://github.com/gfx-rs/naga"]
583 git = "https://github.com/gfx-rs/naga"
584 diff --git Cargo.lock Cargo.lock
585 index ea0a543b7397..5c030b1ef875 100644
588 @@ -3578,8 +3578,8 @@ dependencies = [
593 -source = "git+https://github.com/hsivonen/packed_simd?rev=3541e3818fdc7c2a24f87e3459151a4ce955a67a#3541e3818fdc7c2a24f87e3459151a4ce955a67a"
595 +source = "git+https://github.com/hsivonen/packed_simd?rev=0917fe780032a6bbb23d71be545f9c1834128d75#0917fe780032a6bbb23d71be545f9c1834128d75"
599 diff --git Cargo.toml Cargo.toml
600 index d1b826e2b388..f78c9a7408d9 100644
603 @@ -66,7 +66,7 @@ panic = "abort"
606 libudev-sys = { path = "dom/webauthn/libudev-sys" }
607 -packed_simd = { git = "https://github.com/hsivonen/packed_simd", rev="3541e3818fdc7c2a24f87e3459151a4ce955a67a" }
608 +packed_simd = { git = "https://github.com/hsivonen/packed_simd", rev="0917fe780032a6bbb23d71be545f9c1834128d75" }
609 rlbox_lucet_sandbox = { git = "https://github.com/PLSysSec/rlbox_lucet_sandbox/", rev="d510da5999a744c563b0acd18056069d1698273f" }
610 nix = { git = "https://github.com/shravanrn/nix/", branch = "r0.13.1", rev="4af6c367603869a30fddb5ffb0aba2b9477ba92e" }
611 spirv_cross = { git = "https://github.com/kvark/spirv_cross", branch = "wgpu3", rev = "20191ad2f370afd6d247edcb9ff9da32d3bedb9c" }
612 diff --git third_party/rust/packed_simd/.cargo-checksum.json third_party/rust/packed_simd/.cargo-checksum.json
613 index 01afcc1efdac..1512803e5729 100644
614 --- third_party/rust/packed_simd/.cargo-checksum.json
615 +++ third_party/rust/packed_simd/.cargo-checksum.json
617 -{"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}
618 \ No newline at end of file
619 +{"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}
620 \ No newline at end of file
621 diff --git third_party/rust/packed_simd/.travis.yml third_party/rust/packed_simd/.travis.yml
622 index 8d8ed54ab737..be3fb2369341 100644
623 --- third_party/rust/packed_simd/.travis.yml
624 +++ third_party/rust/packed_simd/.travis.yml
639 + - build-test-verify # Passes full test suite, permit no regressions (unless it's rustup :/)
650 - - env: TARGET=x86_64-linux-android NOVERIFY=1
651 + - env: TARGET=x86_64-linux-android
652 name: "x86_64-unknown-linux-android + SSE2"
654 + stage: build-test-verify
655 - env: TARGET=arm-linux-androideabi
656 name: "arm-linux-androideabi"
658 + stage: build-test-verify
659 - env: TARGET=arm-linux-androideabi RUSTFLAGS="-C target-feature=+v7,+neon"
660 name: "arm-linux-androideabi + NEON"
662 - - env: TARGET=aarch64-linux-android
663 - name: "aarch64-unknown-linux-android"
665 - - env: TARGET=aarch64-linux-android RUSTFLAGS="-C target-feature=+neon"
666 - name: "aarch64-unknown-linux-android + NEON"
668 + stage: build-test-verify
669 + - name: "aarch64-unknown-linux-android + NEON"
670 + env: TARGET=aarch64-linux-android RUSTFLAGS="-C target-feature=+neon"
671 + stage: build-test-verify
672 - env: TARGET="thumbv7neon-linux-androideabi"
673 name: "thumbv7neon-linux-androideabi"
677 - env: TARGET=i586-unknown-linux-gnu
678 name: "i586-unknown-linux-gnu"
681 - env: TARGET=i586-unknown-linux-gnu RUSTFLAGS="-C target-feature=+sse"
682 name: "i586-unknown-linux-gnu + SSE"
685 - env: TARGET=i586-unknown-linux-gnu RUSTFLAGS="-C target-feature=+sse2"
686 name: "i586-unknown-linux-gnu + SSE2"
689 - env: TARGET=i686-unknown-linux-gnu
690 name: "i686-unknown-linux-gnu + SSE2"
693 - env: TARGET=i686-unknown-linux-gnu RUSTFLAGS="-C target-feature=+sse4.2"
694 name: "i686-unknown-linux-gnu + SSE4.2"
697 - env: TARGET=i686-unknown-linux-gnu RUSTFLAGS="-C target-feature=+avx2"
698 name: "i686-unknown-linux-gnu + AVX2"
700 - - env: TARGET=x86_64-unknown-linux-gnu
701 - name: "x86_64-unknown-linux-gnu + SSE2"
702 - install: rustup component add rustfmt-preview
705 - env: TARGET=x86_64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+sse4.2"
706 name: "x86_64-unknown-linux-gnu + SSE4.2"
707 install: rustup component add rustfmt-preview
709 - - env: TARGET=x86_64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+avx"
710 - name: "x86_64-unknown-linux-gnu + AVX"
711 - install: rustup component add rustfmt-preview
713 + stage: build-test-verify
714 - env: TARGET=x86_64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+avx2"
715 name: "x86_64-unknown-linux-gnu + AVX2"
716 install: rustup component add rustfmt-preview
718 - - env: TARGET=x86_64-unknown-linux-gnu-emulated
719 - name: "Intel SDE + SSE2"
722 - - env: TARGET=x86_64-unknown-linux-gnu-emulated RUSTFLAGS="-C target-feature=+sse4.2"
723 - name: "Intel SDE + SSE4.2"
726 - - env: TARGET=x86_64-unknown-linux-gnu-emulated RUSTFLAGS="-C target-feature=+avx"
727 - name: "Intel SDE + AVX"
730 - - env: TARGET=x86_64-unknown-linux-gnu-emulated RUSTFLAGS="-C target-feature=+avx2"
731 - name: "Intel SDE + AVX2"
734 - - env: TARGET=x86_64-unknown-linux-gnu-emulated RUSTFLAGS="-C target-feature=+avx-512f"
735 - name: "Intel SDE + AVX-512"
738 - - env: TARGET=arm-unknown-linux-gnueabi
739 - name: "arm-unknown-linux-gnueabi"
741 + stage: build-test-verify
742 - env: TARGET=arm-unknown-linux-gnueabi RUSTFLAGS="-C target-feature=+v7,+neon"
743 name: "arm-unknown-linux-gnueabi + NEON"
745 + stage: build-test-verify
746 - env: TARGET=arm-unknown-linux-gnueabihf
747 name: "arm-unknown-linux-gnueabihf"
749 + stage: build-test-verify
750 - env: TARGET=arm-unknown-linux-gnueabihf RUSTFLAGS="-C target-feature=+v7,+neon"
751 name: "arm-unknown-linux-gnueabihf + NEON"
753 + stage: build-test-verify
754 - env: TARGET=armv7-unknown-linux-gnueabihf
755 name: "armv7-unknown-linux-gnueabihf"
757 + stage: build-test-verify
758 - env: TARGET=armv7-unknown-linux-gnueabihf RUSTFLAGS="-C target-feature=+neon"
759 name: "armv7-unknown-linux-gnueabihf + NEON"
761 + stage: build-test-verify
762 - env: TARGET="thumbv7neon-unknown-linux-gnueabihf"
763 name: "thumbv7neon-unknown-linux-gnueabihf"
765 - - env: TARGET=aarch64-unknown-linux-gnu
766 - name: "aarch64-unknown-linux-gnu"
768 - - env: TARGET=aarch64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+neon"
769 - name: "aarch64-unknown-linux-gnu + NEON"
772 + - name: "aarch64-unknown-linux-gnu + NEON"
773 + env: TARGET=aarch64-unknown-linux-gnu RUSTFLAGS="-C target-feature=+neon"
774 + stage: build-test-verify
775 - env: TARGET=mips-unknown-linux-gnu
776 name: "mips-unknown-linux-gnu"
779 - env: TARGET=mipsel-unknown-linux-musl
780 name: "mipsel-unknown-linux-musl"
783 - env: TARGET=mips64-unknown-linux-gnuabi64
784 name: "mips64-unknown-linux-gnuabi64"
787 - env: TARGET=mips64el-unknown-linux-gnuabi64
788 name: "mips64el-unknown-linux-gnuabi64"
791 # FIXME: https://github.com/rust-lang-nursery/packed_simd/issues/18
792 # env: TARGET=mips64el-unknown-linux-gnuabi64 RUSTFLAGS="-C target-feature=+msa -C target-cpu=mips64r6"
793 - env: TARGET=powerpc-unknown-linux-gnu
794 name: "powerpc-unknown-linux-gnu"
797 - env: TARGET=powerpc64-unknown-linux-gnu
798 name: "powerpc64-unknown-linux-gnu"
800 - - env: TARGET=powerpc64le-unknown-linux-gnu
801 - name: "powerpc64le-unknown-linux-gnu"
803 - - env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+altivec"
804 - name: "powerpc64le-unknown-linux-gnu + ALTIVEC"
806 - - env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+vsx"
807 - name: "powerpc64le-unknown-linux-gnu + VSX"
809 - - env: TARGET=s390x-unknown-linux-gnu
810 - name: "s390x-unknown-linux-gnu"
813 + - name: "powerpc64le-unknown-linux-gnu"
814 + env: TARGET=powerpc64le-unknown-linux-gnu
815 + stage: build-test-verify
816 + - name: "powerpc64le-unknown-linux-gnu + ALTIVEC"
817 + env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+altivec"
818 + stage: build-test-verify
819 + - name: "powerpc64le-unknown-linux-gnu + VSX"
820 + env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+vsx"
821 + stage: build-test-verify
822 + - name: "s390x-unknown-linux-gnu"
823 + env: TARGET=s390x-unknown-linux-gnu
825 - env: TARGET=sparc64-unknown-linux-gnu
826 name: "sparc64-unknown-linux-gnu"
830 - env: TARGET=wasm32-unknown-unknown
831 name: "wasm32-unknown-unknown"
832 - stage: osx-tier1 # For now
836 - env: TARGET=i686-apple-darwin
837 - name: "i686-apple-darwin + SSE2"
842 - env: TARGET=i686-apple-darwin RUSTFLAGS="-C target-feature=+sse4.2"
843 - name: "i686-apple-darwin + SSE4.2"
847 - # Travis-CI OSX build bots do not support AVX2:
849 - env: TARGET=i686-apple-darwin RUSTFLAGS="-C target-feature=+avx"
850 - name: "i686-apple-darwin + AVX"
855 - env: TARGET=x86_64-apple-darwin
856 - name: "x86_64-apple-darwin + SSE2"
862 env: TARGET=x86_64-apple-darwin RUSTFLAGS="-C target-feature=+sse4.2"
863 name: "x86_64-apple-darwin + SSE4.2"
868 + stage: build-test-verify
869 # Travis-CI OSX build bots do not support AVX2:
871 env: TARGET=x86_64-apple-darwin RUSTFLAGS="-C target-feature=+avx"
872 @@ -194,7 +131,7 @@ matrix:
877 + stage: build-test-verify
879 #- env: TARGET=i686-unknown-freebsd NORUN=1
881 @@ -206,81 +143,75 @@ matrix:
882 #- env: TARGET=x86_64-sun-solaris NORUN=1
886 - env: TARGET=i386-apple-ios
887 - name: "i386-apple-ios"
889 - osx_image: xcode9.4
892 env: TARGET=x86_64-apple-ios
893 name: "x86_64-apple-ios + SSE2"
898 - env: TARGET=armv7-apple-ios NORUN=1
899 - name: "armv7-apple-ios [Build only]"
902 + - name: "aarch64-apple-ios + NEON"
903 + env: TARGET=aarch64-apple-ios RUSTFLAGS="-C target-feature=+neon"
908 - env: TARGET=aarch64-apple-ios NORUN=1
909 - name: "aarch64-apple-ios [Build only]"
911 - osx_image: xcode9.4
915 - name: "Benchmarks - x86_64-unknown-linux-gnu"
916 install: TARGET=x86_64-unknown-linux-gnu ./ci/setup_benchmarks.sh
917 - script: PATH=$(pwd):$PATH NORUN=1 VERIFY=1 FEATURES=core_arch,ispc,sleef-sys ci/benchmark.sh
918 + # FIXME: Use `core_arch,sleef-sys` features once they works again
919 + script: PATH=$(pwd):$PATH NORUN=1 VERIFY=1 FEATURES=ispc ci/benchmark.sh
921 - name: "Benchmarks - x86_64-apple-darwin"
922 install: TARGET=x86_64-apple-darwin ./ci/setup_benchmarks.sh
923 - script: PATH=$(pwd):$PATH NORUN=1 VERIFY=1 FEATURES=core_arch,ispc,sleef-sys ci/benchmark.sh
924 + # FIXME: Use `core_arch,sleef-sys` features once they works again
925 + script: PATH=$(pwd):$PATH NORUN=1 VERIFY=1 FEATURES=ispc ci/benchmark.sh
930 - name: "Documentation"
931 - install: cargo install mdbook
933 + - sudo add-apt-repository -y ppa:deadsnakes/ppa
934 + - sudo apt-get update -y
935 + - sudo apt-get install -y python3.9
937 + - cargo install mdbook
942 - before_script: rustup component add rustfmt-preview
943 - script: ci/all.sh check_fmt || true
945 + if rustup component add rustfmt-preview ; then
946 + ci/all.sh check_fmt || true
951 - before_script: rustup component add clippy-preview
952 - script: ci/all.sh clippy
954 + if rustup component add clippy-preview ; then
960 # FIXME: ISPC cannot be found?
961 - name: "Benchmarks - x86_64-apple-darwin"
963 - - env: TARGET=powerpc-unknown-linux-gnu
964 - - env: TARGET=powerpc64-unknown-linux-gnu
965 - - env: TARGET=powerpc64le-unknown-linux-gnu
966 - - env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+altivec"
967 - - env: TARGET=powerpc64le-unknown-linux-gnu RUSTFLAGS="-C target-feature=+vsx"
968 + # FIXME: i686 fails in inlining, apparently
969 + - stage: 32bit-tier1
970 #- env: TARGET=i686-unknown-freebsd NORUN=1
971 #- env: TARGET=x86_64-unknown-freebsd NORUN=1
972 #- env: TARGET=x86_64-unknown-netbsd NORUN=1
973 #- env: TARGET=x86_64-sun-solaris NORUN=1
976 - - env: TARGET=arm-linux-androideabi
977 - - env: TARGET=arm-linux-androideabi RUSTFLAGS="-C target-feature=+v7,+neon"
978 - - env: TARGET=aarch64-linux-android
979 - - env: TARGET=aarch64-linux-android RUSTFLAGS="-C target-feature=+neon"
980 + - stage: 64bit-tier2
981 + - stage: 32bit-tier2
984 # https://github.com/rust-lang-nursery/packed_simd/issues/26
985 - - env: TARGET=i386-apple-ios
986 - env: TARGET=x86_64-apple-ios
987 + # Is this related to the above? Mysterious test failure
988 + - name: "aarch64-apple-ios + NEON"
990 # FIXME: https://github.com/rust-lang-nursery/packed_simd/issues/182
991 - env: TARGET=arm-unknown-linux-gnueabi RUSTFLAGS="-C target-feature=+v7,+neon"
992 diff --git third_party/rust/packed_simd/Cargo.toml third_party/rust/packed_simd/Cargo.toml
993 index 3db9354c9407..70bbf26ed259 100644
994 --- third_party/rust/packed_simd/Cargo.toml
995 +++ third_party/rust/packed_simd/Cargo.toml
1001 authors = ["Gonzalo Brito Gadeschi <gonzalobg88@gmail.com>"]
1002 description = "Portable Packed SIMD vectors"
1003 documentation = "https://docs.rs/crate/packed_simd/"
1004 @@ -21,8 +21,8 @@ is-it-maintained-open-issues = { repository = "rust-lang-nursery/packed_simd" }
1005 maintenance = { status = "experimental" }
1009 -core_arch = { version = "^0.1.3", optional = true }
1011 +core_arch = { version = "0.1.5", optional = true }
1015 @@ -31,12 +31,12 @@ libcore_neon = []
1019 -arrayvec = { version = "^0.4", default-features = false }
1020 +arrayvec = { version = "^0.5", default-features = false }
1022 [target.'cfg(target_arch = "x86_64")'.dependencies.sleef-sys]
1027 [target.wasm32-unknown-unknown.dev-dependencies]
1028 -wasm-bindgen = "=0.2.19"
1029 -wasm-bindgen-test = "=0.2.19"
1030 \ No newline at end of file
1031 +wasm-bindgen = "=0.2.52"
1032 +wasm-bindgen-test = "=0.3.2"
1033 diff --git third_party/rust/packed_simd/readme.md third_party/rust/packed_simd/README.md
1034 similarity index 54%
1035 rename from third_party/rust/packed_simd/readme.md
1036 rename to third_party/rust/packed_simd/README.md
1037 index 3b27a2bba0d6..ad4f3f27093f 100644
1038 --- third_party/rust/packed_simd/readme.md
1039 +++ third_party/rust/packed_simd/README.md
1042 [![Travis-CI Status]][travis] [![Appveyor Status]][appveyor] [![Latest Version]][crates.io] [![docs]][master_docs]
1044 -> This aims to be a 100% conforming implementation of Rust RFC 2366 for stabilization.
1046 -**WARNING**: this crate only supports the most recent nightly Rust toolchain.
1047 +**WARNING**: this crate only supports the most recent nightly Rust toolchain
1048 +and will be superceded by [stdsimd](https://github.com/rust-lang/stdsimd).
1052 * [API docs (`master` branch)][master_docs]
1053 * [Performance guide][perf_guide]
1054 -* [API docs (`docs.rs`)][docs.rs]: **CURRENTLY DOWN** due to
1055 - https://github.com/rust-lang-nursery/packed_simd/issues/110
1056 +* [API docs (`docs.rs`)][docs.rs]
1057 * [RFC2366 `std::simd`][rfc2366]: - contains motivation, design rationale,
1060 @@ -39,17 +37,6 @@ Most of the examples come with both a scalar and a vectorized implementation.
1061 vector type as those of another vector type safely by just using the
1062 `.into_bits()` method.
1064 -* `core_arch` (default: disabled): enable this feature to recompile `core::arch`
1065 - for the target-features enabled. `packed_simd` includes optimizations for some
1066 - target feature combinations that are enabled by this feature. Note, however,
1067 - that this is an unstable dependency, that rustc might break at any time.
1069 -* `sleef-sys` (default: disabled - `x86_64` only): internally uses the [SLEEF]
1070 - short-vector math library when profitable via the [`sleef-sys`][sleef_sys]
1071 - crate. [SLEEF] is licensed under the [Boost Software License
1072 - v1.0][boost_license], an extremely permissive license, and can be statically
1073 - linked without issues.
1077 The following [ISPC] examples are also part of `packed_simd`'s
1078 @@ -75,60 +62,40 @@ slowdown:
1082 -The following table describes the supported platforms: `build` shows whether the
1083 -library compiles without issues for a given target, while `run` shows whether
1084 -the full testsuite passes on the target.
1086 -| Linux targets: | build | run |
1087 -|-----------------------------------|-----------|---------|
1088 -| `i586-unknown-linux-gnu` | ✓ | ✓ |
1089 -| `i686-unknown-linux-gnu` | ✓ | ✓ |
1090 -| `x86_64-unknown-linux-gnu` | ✓ | ✓ |
1091 -| `arm-unknown-linux-gnueabi` | ✗ | ✗ |
1092 -| `arm-unknown-linux-gnueabihf` | ✓ | ✓ |
1093 -| `armv7-unknown-linux-gnueabi` | ✓ | ✓ |
1094 -| `aarch64-unknown-linux-gnu` | ✓ | ✓ |
1095 -| `mips-unknown-linux-gnu` | ✓ | ✓ |
1096 -| `mipsel-unknown-linux-musl` | ✓ | ✓ |
1097 -| `mips64-unknown-linux-gnuabi64` | ✓ | ✓ |
1098 -| `mips64el-unknown-linux-gnuabi64` | ✓ | ✓ |
1099 -| `powerpc-unknown-linux-gnu` | ✗ | ✗ |
1100 -| `powerpc64-unknown-linux-gnu` | ✗ | ✗ |
1101 -| `powerpc64le-unknown-linux-gnu` | ✗ | ✗ |
1102 -| `s390x-unknown-linux-gnu` | ✓ | ✓* |
1103 -| `sparc64-unknown-linux-gnu` | ✓ | ✓* |
1104 -| `thumbv7neon-unknown-linux-gnueabihf` | ✓ | ✓ |
1105 -| **MacOSX targets:** | **build** | **run** |
1106 -| `x86_64-apple-darwin` | ✓ | ✓ |
1107 -| `i686-apple-darwin` | ✓ | ✓ |
1108 -| **Windows targets:** | **build** | **run** |
1109 -| `x86_64-pc-windows-msvc` | ✓ | ✓ |
1110 -| `i686-pc-windows-msvc` | ✓ | ✓ |
1111 -| `x86_64-pc-windows-gnu` | ✗ | ✗ |
1112 -| `i686-pc-windows-gnu` | ✗ | ✗ |
1113 -| **WebAssembly targets:** | **build** | **run** |
1114 -| `wasm32-unknown-unknown` | ✓ | ✓ |
1115 -| **Android targets:** | **build** | **run** |
1116 -| `x86_64-linux-android` | ✓ | ✓ |
1117 -| `arm-linux-androideabi` | ✓ | ✓ |
1118 -| `aarch64-linux-android` | ✓ | ✗ |
1119 -| `thumbv7neon-linux-androideabi` | ✓ | ✓ |
1120 -| **iOS targets:** | **build** | **run** |
1121 -| `i386-apple-ios` | ✓ | ✗ |
1122 -| `x86_64-apple-ios` | ✓ | ✗ |
1123 -| `armv7-apple-ios` | ✓ | ✗** |
1124 -| `aarch64-apple-ios` | ✓ | ✗** |
1125 -| **xBSD targets:** | **build** | **run** |
1126 -| `i686-unknown-freebsd` | ✗ | ✗** |
1127 -| `x86_64-unknown-freebsd` | ✗ | ✗** |
1128 -| `x86_64-unknown-netbsd` | ✗ | ✗** |
1129 -| **Solaris targets:** | **build** | **run** |
1130 -| `x86_64-sun-solaris` | ✗ | ✗** |
1132 -[*] most of the test suite passes correctly on these platform but
1133 -there are correctness bugs open in the issue tracker.
1135 -[**] it is currently not easily possible to run these platforms on CI.
1136 +The following table describes the supported platforms: `build` shows whether
1137 +the library compiles without issues for a given target, while `run` shows
1138 +whether the test suite passes for a given target.
1140 +| **Linux** | **build** | **run** |
1141 +|---------------------------------------|-----------|---------|
1142 +| `i586-unknown-linux-gnu` | ✓ | ✗ |
1143 +| `i686-unknown-linux-gnu` | ✓ | ✗ |
1144 +| `x86_64-unknown-linux-gnu` | ✓ | ✓ |
1145 +| `arm-unknown-linux-gnueabi` | ✗ | ✗ |
1146 +| `arm-unknown-linux-gnueabihf` | ✓ | ✓ |
1147 +| `armv7-unknown-linux-gnueabi` | ✓ | ✓ |
1148 +| `aarch64-unknown-linux-gnu` | ✓ | ✓ |
1149 +| `mips-unknown-linux-gnu` | ✓ | ✗ |
1150 +| `mipsel-unknown-linux-musl` | ✓ | ✗ |
1151 +| `mips64-unknown-linux-gnuabi64` | ✓ | ✗ |
1152 +| `mips64el-unknown-linux-gnuabi64` | ✓ | ✗ |
1153 +| `powerpc-unknown-linux-gnu` | ✗ | ✗ |
1154 +| `powerpc64-unknown-linux-gnu` | ✗ | ✗ |
1155 +| `powerpc64le-unknown-linux-gnu` | ✓ | ✓ |
1156 +| `s390x-unknown-linux-gnu` | ✗ | ✗ |
1157 +| `sparc64-unknown-linux-gnu` | ✓ | ✗ |
1158 +| `thumbv7neon-unknown-linux-gnueabihf` | ✓ | ✓ |
1159 +| **MacOSX** | **build** | **run** |
1160 +| `x86_64-apple-darwin` | ✓ | ✓ |
1161 +| **Android** | **build** | **run** |
1162 +| `x86_64-linux-android` | ✓ | ✓ |
1163 +| `arm-linux-androideabi` | ✓ | ✓ |
1164 +| `aarch64-linux-android` | ✓ | ✓ |
1165 +| `thumbv7neon-linux-androideabi` | ✗ | ✗ |
1166 +| **iOS** | **build** | **run** |
1167 +| `x86_64-apple-ios` | ✓ | ✗ |
1168 +| `aarch64-apple-ios` | ✓ | ✗ |
1171 ## Machine code verification
1173 @@ -162,8 +129,8 @@ Unless you explicitly state otherwise, any contribution intentionally submitted
1174 for inclusion in `packed_simd` by you, as defined in the Apache-2.0 license, shall be
1175 dual licensed as above, without any additional terms or conditions.
1177 -[travis]: https://travis-ci.org/rust-lang-nursery/packed_simd
1178 -[Travis-CI Status]: https://travis-ci.org/rust-lang-nursery/packed_simd.svg?branch=master
1179 +[travis]: https://travis-ci.com/rust-lang-nursery/packed_simd
1180 +[Travis-CI Status]: https://travis-ci.com/rust-lang-nursery/packed_simd.svg?branch=master
1181 [appveyor]: https://ci.appveyor.com/project/gnzlbg/packed-simd
1182 [Appveyor Status]: https://ci.appveyor.com/api/projects/status/hd7v9dvr442hgdix?svg=true
1183 [Latest Version]: https://img.shields.io/crates/v/packed_simd.svg
1184 diff --git third_party/rust/packed_simd/build.rs third_party/rust/packed_simd/build.rs
1185 index 85639ff9d085..5958b9b7856e 100644
1186 --- third_party/rust/packed_simd/build.rs
1187 +++ third_party/rust/packed_simd/build.rs
1190 - println!("cargo:rustc-env=RUSTC_BOOTSTRAP=1");
1191 + println!("cargo:rustc-env=RUSTC_BOOTSTRAP=1");
1192 let target = std::env::var("TARGET")
1193 .expect("TARGET environment variable not defined");
1194 if target.contains("neon") {
1195 diff --git third_party/rust/packed_simd/ci/all.sh third_party/rust/packed_simd/ci/all.sh
1196 index 273562d4a9bb..55a1fa2efefe 100755
1197 --- third_party/rust/packed_simd/ci/all.sh
1198 +++ third_party/rust/packed_simd/ci/all.sh
1199 @@ -21,7 +21,7 @@ cargo_fmt() {
1203 - cargo clippy --all -- -D clippy::pedantic
1204 + cargo clippy --all -- -D clippy::perf
1208 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
1209 index 68261a2f033d..41ff4729ac59 100644
1210 --- third_party/rust/packed_simd/ci/docker/aarch64-unknown-linux-gnu/Dockerfile
1211 +++ third_party/rust/packed_simd/ci/docker/aarch64-unknown-linux-gnu/Dockerfile
1215 RUN apt-get update && apt-get install -y --no-install-recommends \
1218 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
1219 index cb4de6a57eaa..e1c591dd979a 100644
1220 --- third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabi/Dockerfile
1221 +++ third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabi/Dockerfile
1225 RUN apt-get update && apt-get install -y --no-install-recommends \
1228 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
1229 index c7bd61f0a796..757b79e7ecc1 100644
1230 --- third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile
1231 +++ third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile
1235 RUN apt-get update && apt-get install -y --no-install-recommends \
1238 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
1239 index e01b87afdf56..253906293374 100644
1240 --- third_party/rust/packed_simd/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile
1241 +++ third_party/rust/packed_simd/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile
1245 RUN apt-get update && apt-get install -y --no-install-recommends \
1248 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
1249 index 857974a858f1..01093698f679 100644
1250 --- third_party/rust/packed_simd/ci/docker/i586-unknown-linux-gnu/Dockerfile
1251 +++ third_party/rust/packed_simd/ci/docker/i586-unknown-linux-gnu/Dockerfile
1255 RUN apt-get update && apt-get install -y --no-install-recommends \
1258 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
1259 index 857974a858f1..01093698f679 100644
1260 --- third_party/rust/packed_simd/ci/docker/i686-unknown-linux-gnu/Dockerfile
1261 +++ third_party/rust/packed_simd/ci/docker/i686-unknown-linux-gnu/Dockerfile
1265 RUN apt-get update && apt-get install -y --no-install-recommends \
1268 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
1269 index 4711cead372a..3bd471e87d4d 100644
1270 --- third_party/rust/packed_simd/ci/docker/mips-unknown-linux-gnu/Dockerfile
1271 +++ third_party/rust/packed_simd/ci/docker/mips-unknown-linux-gnu/Dockerfile
1276 RUN apt-get update && apt-get install -y --no-install-recommends \
1277 gcc libc6-dev qemu-user ca-certificates \
1278 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
1279 index 1422e8c80924..f26f1f38eb22 100644
1280 --- third_party/rust/packed_simd/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile
1281 +++ third_party/rust/packed_simd/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile
1286 RUN apt-get update && apt-get install -y --no-install-recommends \
1287 gcc libc6-dev qemu-user ca-certificates \
1288 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
1289 index d94deb5b2013..7d9f0bd99250 100644
1290 --- third_party/rust/packed_simd/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile
1291 +++ third_party/rust/packed_simd/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile
1296 RUN apt-get update && apt-get install -y --no-install-recommends \
1297 gcc libc6-dev qemu-user ca-certificates \
1298 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
1299 index 40ac50675bd9..7488662ef281 100644
1300 --- third_party/rust/packed_simd/ci/docker/mipsel-unknown-linux-musl/Dockerfile
1301 +++ third_party/rust/packed_simd/ci/docker/mipsel-unknown-linux-musl/Dockerfile
1302 @@ -16,10 +16,10 @@ RUN mkdir /toolchain
1304 # Note that this originally came from:
1305 # 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
1306 -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 | \
1307 +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 | \
1308 tar xjf - -C /toolchain --strip-components=2
1310 ENV PATH=$PATH:/rust/bin:/toolchain/bin \
1311 CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
1312 CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_MUSL_LINKER=mipsel-openwrt-linux-gcc \
1313 - CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_MUSL_RUNNER="qemu-mipsel -L /toolchain"
1314 \ No newline at end of file
1315 + CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_MUSL_RUNNER="qemu-mipsel -L /toolchain"
1316 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
1317 index 43b174ed87fc..80cfee8ab5b9 100644
1318 --- third_party/rust/packed_simd/ci/docker/powerpc-unknown-linux-gnu/Dockerfile
1319 +++ third_party/rust/packed_simd/ci/docker/powerpc-unknown-linux-gnu/Dockerfile
1324 RUN apt-get update && apt-get install -y --no-install-recommends \
1325 gcc libc6-dev qemu-user ca-certificates \
1326 @@ -9,4 +9,5 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
1328 ENV CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_LINKER=powerpc-linux-gnu-gcc \
1329 CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc -cpu Vger -L /usr/powerpc-linux-gnu" \
1330 + CC=powerpc-linux-gnu-gcc \
1331 OBJDUMP=powerpc-linux-gnu-objdump
1332 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
1333 index 7757ad28a42d..74031a2a3e6f 100644
1334 --- third_party/rust/packed_simd/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile
1335 +++ third_party/rust/packed_simd/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile
1340 RUN apt-get update && apt-get install -y --no-install-recommends \
1342 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
1343 index 0b0c214fdf1b..471a7d9651f7 100644
1344 --- third_party/rust/packed_simd/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile
1345 +++ third_party/rust/packed_simd/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile
1350 RUN apt-get update && apt-get install -y --no-install-recommends \
1351 gcc libc6-dev qemu-user ca-certificates \
1352 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
1353 index 696cb6c3fb52..588d23c65ae5 100644
1354 --- third_party/rust/packed_simd/ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile
1355 +++ third_party/rust/packed_simd/ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile
1359 RUN apt-get update && apt-get install -y --no-install-recommends \
1362 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
1363 index e6b000d0516e..ce5bb88e625d 100644
1364 --- third_party/rust/packed_simd/ci/docker/x86_64-unknown-linux-gnu/Dockerfile
1365 +++ third_party/rust/packed_simd/ci/docker/x86_64-unknown-linux-gnu/Dockerfile
1369 RUN apt-get update && apt-get install -y --no-install-recommends \
1372 diff --git third_party/rust/packed_simd/ci/dox.sh third_party/rust/packed_simd/ci/dox.sh
1373 index 1743366407e3..560eaadcc880 100755
1374 --- third_party/rust/packed_simd/ci/dox.sh
1375 +++ third_party/rust/packed_simd/ci/dox.sh
1376 @@ -18,7 +18,10 @@ cp -r perf-guide/book target/doc/perf-guide
1378 # If we're on travis, not a PR, and on the right branch, publish!
1379 if [ "$TRAVIS_PULL_REQUEST" = "false" ] && [ "$TRAVIS_BRANCH" = "master" ]; then
1380 - pip install ghp_import --install-option="--prefix=$HOME/.local"
1381 - $HOME/.local/bin/ghp-import -n target/doc
1385 + pip install ghp_import --user
1386 + ghp-import -n target/doc
1387 git push -qf https://${GH_PAGES}@github.com/${TRAVIS_REPO_SLUG}.git gh-pages
1389 diff --git third_party/rust/packed_simd/ci/run.sh third_party/rust/packed_simd/ci/run.sh
1390 index 7bb825883680..428a5d890257 100755
1391 --- third_party/rust/packed_simd/ci/run.sh
1392 +++ third_party/rust/packed_simd/ci/run.sh
1393 @@ -78,9 +78,11 @@ fi
1395 if [[ "${TARGET}" == "x86_64-unknown-linux-gnu" ]] || [[ "${TARGET}" == "x86_64-pc-windows-msvc" ]]; then
1396 # use sleef on linux and windows x86_64 builds
1397 - cargo_test_impl --release --features=into_bits,core_arch,sleef-sys
1398 + # FIXME: Use `core_arch,sleef-sys` features once they works again
1399 + cargo_test_impl --release --features=into_bits
1401 - cargo_test_impl --release --features=into_bits,core_arch
1402 + # FIXME: Use `core_arch` feature once it works again
1403 + cargo_test_impl --release --features=into_bits
1406 # Verify code generation
1407 diff --git third_party/rust/packed_simd/ci/setup_benchmarks.sh third_party/rust/packed_simd/ci/setup_benchmarks.sh
1408 index ddc4765d5ceb..cd41a7851303 100755
1409 --- third_party/rust/packed_simd/ci/setup_benchmarks.sh
1410 +++ third_party/rust/packed_simd/ci/setup_benchmarks.sh
1411 @@ -5,6 +5,3 @@ set -ex
1412 # Get latest ISPC binary for the target and put it in the path
1413 git clone https://github.com/gnzlbg/ispc-binaries
1414 cp ispc-binaries/ispc-${TARGET} ispc
1416 -# Rust-bindgen requires RUSTFMT
1417 -rustup component add rustfmt-preview
1418 diff --git third_party/rust/packed_simd/src/api.rs third_party/rust/packed_simd/src/api.rs
1419 index 9959a052ae96..4e9c4292e06c 100644
1420 --- third_party/rust/packed_simd/src/api.rs
1421 +++ third_party/rust/packed_simd/src/api.rs
1423 //! Implements the Simd<[T; N]> APIs
1430 @@ -39,7 +41,7 @@ crate mod into_bits;
1432 macro_rules! impl_i {
1433 ([$elem_ty:ident; $elem_n:expr]: $tuple_id:ident, $mask_ty:ident
1434 - | $ielem_ty:ident | $test_tt:tt | $($elem_ids:ident),*
1435 + | $ielem_ty:ident, $ibitmask_ty:ident | $test_tt:tt | $($elem_ids:ident),*
1436 | From: $($from_vec_ty:ident),* | $(#[$doc:meta])*) => {
1437 impl_minimal_iuf!([$elem_ty; $elem_n]: $tuple_id | $ielem_ty | $test_tt
1438 | $($elem_ids),* | $(#[$doc])*);
1439 @@ -93,6 +95,7 @@ macro_rules! impl_i {
1441 impl_cmp_partial_ord!([$elem_ty; $elem_n]: $tuple_id | $test_tt);
1442 impl_cmp_ord!([$elem_ty; $elem_n]: $tuple_id | $test_tt | (0, 1));
1443 + impl_bitmask!($tuple_id | $ibitmask_ty | (-1, 0) | $test_tt);
1445 test_select!($elem_ty, $mask_ty, $tuple_id, (1, 2) | $test_tt);
1446 test_cmp_partial_ord_int!([$elem_ty; $elem_n]: $tuple_id | $test_tt);
1447 @@ -102,7 +105,7 @@ macro_rules! impl_i {
1449 macro_rules! impl_u {
1450 ([$elem_ty:ident; $elem_n:expr]: $tuple_id:ident, $mask_ty:ident
1451 - | $ielem_ty:ident | $test_tt:tt | $($elem_ids:ident),*
1452 + | $ielem_ty:ident, $ibitmask_ty:ident | $test_tt:tt | $($elem_ids:ident),*
1453 | From: $($from_vec_ty:ident),* | $(#[$doc:meta])*) => {
1454 impl_minimal_iuf!([$elem_ty; $elem_n]: $tuple_id | $ielem_ty | $test_tt
1455 | $($elem_ids),* | $(#[$doc])*);
1456 @@ -155,6 +158,8 @@ macro_rules! impl_u {
1458 impl_cmp_partial_ord!([$elem_ty; $elem_n]: $tuple_id | $test_tt);
1459 impl_cmp_ord!([$elem_ty; $elem_n]: $tuple_id | $test_tt | (0, 1));
1460 + impl_bitmask!($tuple_id | $ibitmask_ty | ($ielem_ty::max_value(), 0) |
1463 test_select!($elem_ty, $mask_ty, $tuple_id, (1, 2) | $test_tt);
1464 test_cmp_partial_ord_int!([$elem_ty; $elem_n]: $tuple_id | $test_tt);
1465 @@ -222,7 +227,8 @@ macro_rules! impl_f {
1468 macro_rules! impl_m {
1469 - ([$elem_ty:ident; $elem_n:expr]: $tuple_id:ident | $ielem_ty:ident
1470 + ([$elem_ty:ident; $elem_n:expr]: $tuple_id:ident
1471 + | $ielem_ty:ident, $ibitmask_ty:ident
1472 | $test_tt:tt | $($elem_ids:ident),* | From: $($from_vec_ty:ident),*
1473 | $(#[$doc:meta])*) => {
1475 @@ -265,6 +271,7 @@ macro_rules! impl_m {
1476 [$elem_ty; $elem_n]: $tuple_id | $test_tt | (false, true)
1478 impl_shuffle1_dyn!([$elem_ty; $elem_n]: $tuple_id | $test_tt);
1479 + impl_bitmask!($tuple_id | $ibitmask_ty | (true, false) | $test_tt);
1481 test_cmp_partial_ord_mask!([$elem_ty; $elem_n]: $tuple_id | $test_tt);
1482 test_shuffle1_dyn_mask!([$elem_ty; $elem_n]: $tuple_id | $test_tt);
1483 diff --git third_party/rust/packed_simd/src/api/bit_manip.rs third_party/rust/packed_simd/src/api/bit_manip.rs
1484 index 3d3c4eb8850a..6d8865706d3e 100644
1485 --- third_party/rust/packed_simd/src/api/bit_manip.rs
1486 +++ third_party/rust/packed_simd/src/api/bit_manip.rs
1487 @@ -37,6 +37,7 @@ macro_rules! impl_bit_manip {
1488 paste::item_with_macros! {
1489 #[allow(overflowing_literals)]
1490 pub mod [<$id _bit_manip>] {
1491 + #![allow(const_item_mutation)]
1494 const LANE_WIDTH: usize = mem::size_of::<$elem_ty>() * 8;
1495 diff --git third_party/rust/packed_simd/src/api/bitmask.rs third_party/rust/packed_simd/src/api/bitmask.rs
1496 new file mode 100644
1497 index 000000000000..a06ff0fab1f4
1499 +++ third_party/rust/packed_simd/src/api/bitmask.rs
1503 +macro_rules! impl_bitmask {
1504 + ($id:ident | $ibitmask_ty:ident | ($set:expr, $clear:expr)
1505 + | $test_tt:tt) => {
1507 + /// Creates a bitmask with the MSB of each vector lane.
1509 + /// If the vector has less than 8 lanes, the bits that do not
1510 + /// correspond to any vector lanes are cleared.
1512 + pub fn bitmask(self) -> $ibitmask_ty {
1513 + unsafe { codegen::llvm::simd_bitmask(self.0) }
1521 + // FIXME: https://github.com/rust-lang-nursery/packed_simd/issues/210
1522 + all(target_arch = "mips", target_endian = "big"),
1523 + all(target_arch = "mips64", target_endian = "big"),
1524 + target_arch = "sparc64",
1525 + target_arch = "s390x",
1527 + pub mod [<$id _bitmask>] {
1529 + #[cfg_attr(not(target_arch = "wasm32"), test)]
1530 + #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
1532 + // clear all lanes
1533 + let vec = $id::splat($clear as _);
1534 + let bitmask: $ibitmask_ty = 0;
1535 + assert_eq!(vec.bitmask(), bitmask);
1538 + let mut vec = $id::splat($clear as _);
1539 + for i in 0..$id::lanes() {
1541 + vec = vec.replace(i, $set as _);
1544 + // create bitmask with even lanes set:
1545 + let mut bitmask: $ibitmask_ty = 0;
1546 + for i in 0..$id::lanes() {
1548 + bitmask |= 1 << i;
1551 + assert_eq!(vec.bitmask(), bitmask);
1555 + let mut vec = $id::splat($clear as _);
1556 + for i in 0..$id::lanes() {
1558 + vec = vec.replace(i, $set as _);
1561 + // create bitmask with odd lanes set:
1562 + let mut bitmask: $ibitmask_ty = 0;
1563 + for i in 0..$id::lanes() {
1565 + bitmask |= 1 << i;
1568 + assert_eq!(vec.bitmask(), bitmask);
1571 + let vec = $id::splat($set as _);
1572 + let mut bitmask: $ibitmask_ty = 0;
1573 + for i in 0..$id::lanes() {
1574 + bitmask |= 1 << i;
1576 + assert_eq!(vec.bitmask(), bitmask);
1583 diff --git third_party/rust/packed_simd/src/api/cast/v128.rs third_party/rust/packed_simd/src/api/cast/v128.rs
1584 index 78c07f3a5597..ab47ddc006d6 100644
1585 --- third_party/rust/packed_simd/src/api/cast/v128.rs
1586 +++ third_party/rust/packed_simd/src/api/cast/v128.rs
1588 //! `FromCast` and `IntoCast` implementations for portable 128-bit wide vectors
1594 diff --git third_party/rust/packed_simd/src/api/cast/v16.rs third_party/rust/packed_simd/src/api/cast/v16.rs
1595 index d292936baa41..cf974bb08e70 100644
1596 --- third_party/rust/packed_simd/src/api/cast/v16.rs
1597 +++ third_party/rust/packed_simd/src/api/cast/v16.rs
1599 //! `FromCast` and `IntoCast` implementations for portable 16-bit wide vectors
1605 diff --git third_party/rust/packed_simd/src/api/cast/v256.rs third_party/rust/packed_simd/src/api/cast/v256.rs
1606 index 0a669e0beebe..9389dcb4c7f7 100644
1607 --- third_party/rust/packed_simd/src/api/cast/v256.rs
1608 +++ third_party/rust/packed_simd/src/api/cast/v256.rs
1610 //! `FromCast` and `IntoCast` implementations for portable 256-bit wide vectors
1616 diff --git third_party/rust/packed_simd/src/api/cast/v32.rs third_party/rust/packed_simd/src/api/cast/v32.rs
1617 index 65050cdacb4e..2b254ba0cf12 100644
1618 --- third_party/rust/packed_simd/src/api/cast/v32.rs
1619 +++ third_party/rust/packed_simd/src/api/cast/v32.rs
1621 //! `FromCast` and `IntoCast` implementations for portable 32-bit wide vectors
1627 diff --git third_party/rust/packed_simd/src/api/cast/v512.rs third_party/rust/packed_simd/src/api/cast/v512.rs
1628 index 9ae1caed35e2..5a10ab066677 100644
1629 --- third_party/rust/packed_simd/src/api/cast/v512.rs
1630 +++ third_party/rust/packed_simd/src/api/cast/v512.rs
1632 //! `FromCast` and `IntoCast` implementations for portable 512-bit wide vectors
1638 diff --git third_party/rust/packed_simd/src/api/cast/v64.rs third_party/rust/packed_simd/src/api/cast/v64.rs
1639 index 0e2f78f7335b..192a4638a362 100644
1640 --- third_party/rust/packed_simd/src/api/cast/v64.rs
1641 +++ third_party/rust/packed_simd/src/api/cast/v64.rs
1643 //! `FromCast` and `IntoCast` implementations for portable 64-bit wide vectors
1649 diff --git third_party/rust/packed_simd/src/api/default.rs third_party/rust/packed_simd/src/api/default.rs
1650 index 843d51bcc4bb..7af55ea77a85 100644
1651 --- third_party/rust/packed_simd/src/api/default.rs
1652 +++ third_party/rust/packed_simd/src/api/default.rs
1653 @@ -12,6 +12,8 @@ macro_rules! impl_default {
1657 + // Comparisons use integer casts within mantissa^1 range.
1658 + #[allow(clippy::float_cmp)]
1659 pub mod [<$id _default>] {
1661 #[cfg_attr(not(target_arch = "wasm32"), test)] #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
1662 diff --git third_party/rust/packed_simd/src/api/from/from_array.rs third_party/rust/packed_simd/src/api/from/from_array.rs
1663 index 964d1501df6a..b83f93816262 100644
1664 --- third_party/rust/packed_simd/src/api/from/from_array.rs
1665 +++ third_party/rust/packed_simd/src/api/from/from_array.rs
1666 @@ -56,6 +56,8 @@ macro_rules! impl_from_array {
1670 + // Comparisons use integer casts within mantissa^1 range.
1671 + #[allow(clippy::float_cmp)]
1675 diff --git third_party/rust/packed_simd/src/api/hash.rs third_party/rust/packed_simd/src/api/hash.rs
1676 index 08d42496ea8b..ee80eff939c3 100644
1677 --- third_party/rust/packed_simd/src/api/hash.rs
1678 +++ third_party/rust/packed_simd/src/api/hash.rs
1679 @@ -36,6 +36,8 @@ macro_rules! impl_hash {
1680 let mut v_hash = a_hash.clone();
1681 a.hash(&mut a_hash);
1683 + // Integer within mantissa^1 range.
1684 + #[allow(clippy::float_cmp)]
1685 let v = $id::splat(42 as $elem_ty);
1686 v.hash(&mut v_hash);
1687 assert_eq!(a_hash.finish(), v_hash.finish());
1688 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
1689 index 6cc2fa37b728..fee6140052f9 100644
1690 --- third_party/rust/packed_simd/src/api/into_bits/arch_specific.rs
1691 +++ third_party/rust/packed_simd/src/api/into_bits/arch_specific.rs
1693 //! `FromBits` and `IntoBits` between portable vector types and the
1694 //! architecture-specific vector types.
1698 // FIXME: MIPS FromBits/IntoBits
1700 @@ -84,7 +84,6 @@ macro_rules! impl_arch {
1701 // FIXME: 64-bit single element types
1702 // FIXME: arm/aarch float16x4_t missing
1704 - [x86["x86"]: __m64], [x86_64["x86_64"]: __m64],
1705 [arm["arm"]: int8x8_t, uint8x8_t, poly8x8_t, int16x4_t, uint16x4_t,
1706 poly16x4_t, int32x2_t, uint32x2_t, float32x2_t, int64x1_t,
1708 diff --git third_party/rust/packed_simd/src/api/into_bits/v128.rs third_party/rust/packed_simd/src/api/into_bits/v128.rs
1709 index 804dbf282d53..e32cd7f9f099 100644
1710 --- third_party/rust/packed_simd/src/api/into_bits/v128.rs
1711 +++ third_party/rust/packed_simd/src/api/into_bits/v128.rs
1713 //! `FromBits` and `IntoBits` implementations for portable 128-bit wide vectors
1717 #[allow(unused)] // wasm_bindgen_test
1719 diff --git third_party/rust/packed_simd/src/api/into_bits/v16.rs third_party/rust/packed_simd/src/api/into_bits/v16.rs
1720 index 1162a62e5bd1..e44d0e7f9a18 100644
1721 --- third_party/rust/packed_simd/src/api/into_bits/v16.rs
1722 +++ third_party/rust/packed_simd/src/api/into_bits/v16.rs
1724 //! `FromBits` and `IntoBits` implementations for portable 16-bit wide vectors
1728 #[allow(unused)] // wasm_bindgen_test
1730 diff --git third_party/rust/packed_simd/src/api/into_bits/v256.rs third_party/rust/packed_simd/src/api/into_bits/v256.rs
1731 index cc7a6646b535..c4c373e0d0b8 100644
1732 --- third_party/rust/packed_simd/src/api/into_bits/v256.rs
1733 +++ third_party/rust/packed_simd/src/api/into_bits/v256.rs
1735 //! `FromBits` and `IntoBits` implementations for portable 256-bit wide vectors
1739 #[allow(unused)] // wasm_bindgen_test
1741 diff --git third_party/rust/packed_simd/src/api/into_bits/v32.rs third_party/rust/packed_simd/src/api/into_bits/v32.rs
1742 index 2c183ecf1c77..5dba38a17976 100644
1743 --- third_party/rust/packed_simd/src/api/into_bits/v32.rs
1744 +++ third_party/rust/packed_simd/src/api/into_bits/v32.rs
1746 //! `FromBits` and `IntoBits` implementations for portable 32-bit wide vectors
1750 #[allow(unused)] // wasm_bindgen_test
1752 diff --git third_party/rust/packed_simd/src/api/into_bits/v512.rs third_party/rust/packed_simd/src/api/into_bits/v512.rs
1753 index 8dec6a7f63a0..4a771962c348 100644
1754 --- third_party/rust/packed_simd/src/api/into_bits/v512.rs
1755 +++ third_party/rust/packed_simd/src/api/into_bits/v512.rs
1757 //! `FromBits` and `IntoBits` implementations for portable 512-bit wide vectors
1761 #[allow(unused)] // wasm_bindgen_test
1763 diff --git third_party/rust/packed_simd/src/api/into_bits/v64.rs third_party/rust/packed_simd/src/api/into_bits/v64.rs
1764 index 8999d98e13f8..5b065f1bd5f7 100644
1765 --- third_party/rust/packed_simd/src/api/into_bits/v64.rs
1766 +++ third_party/rust/packed_simd/src/api/into_bits/v64.rs
1768 //! `FromBits` and `IntoBits` implementations for portable 64-bit wide vectors
1772 #[allow(unused)] // wasm_bindgen_test
1774 diff --git third_party/rust/packed_simd/src/api/minimal/iuf.rs third_party/rust/packed_simd/src/api/minimal/iuf.rs
1775 index 58ffabab994f..a155ac178a26 100644
1776 --- third_party/rust/packed_simd/src/api/minimal/iuf.rs
1777 +++ third_party/rust/packed_simd/src/api/minimal/iuf.rs
1778 @@ -53,7 +53,7 @@ macro_rules! impl_minimal_iuf {
1780 /// Extracts the value at `index`.
1782 - /// # Precondition
1785 /// If `index >= Self::lanes()` the behavior is undefined.
1787 @@ -80,7 +80,7 @@ macro_rules! impl_minimal_iuf {
1789 /// Returns a new vector where the value at `index` is replaced by `new_value`.
1791 - /// # Precondition
1794 /// If `index >= Self::lanes()` the behavior is undefined.
1796 @@ -101,6 +101,8 @@ macro_rules! impl_minimal_iuf {
1800 + // Comparisons use integer casts within mantissa^1 range.
1801 + #[allow(clippy::float_cmp)]
1802 pub mod [<$id _minimal>] {
1804 #[cfg_attr(not(target_arch = "wasm32"), test)]
1805 diff --git third_party/rust/packed_simd/src/api/minimal/mask.rs third_party/rust/packed_simd/src/api/minimal/mask.rs
1806 index e65be95db12c..a420060b423d 100644
1807 --- third_party/rust/packed_simd/src/api/minimal/mask.rs
1808 +++ third_party/rust/packed_simd/src/api/minimal/mask.rs
1809 @@ -58,6 +58,8 @@ macro_rules! impl_minimal_mask {
1811 /// Extracts the value at `index`.
1815 /// If `index >= Self::lanes()` the behavior is undefined.
1817 pub unsafe fn extract_unchecked(self, index: usize) -> bool {
1818 @@ -85,9 +87,9 @@ macro_rules! impl_minimal_mask {
1819 /// Returns a new vector where the value at `index` is replaced by
1825 - /// If `index >= Self::lanes()`.
1826 + /// If `index >= Self::lanes()` the behavior is undefined.
1828 #[must_use = "replace_unchecked does not modify the original value - \
1829 it returns a new vector with the value at `index` \
1830 diff --git third_party/rust/packed_simd/src/api/minimal/ptr.rs third_party/rust/packed_simd/src/api/minimal/ptr.rs
1831 index 75e5aad5c065..c3d61fbf6d5e 100644
1832 --- third_party/rust/packed_simd/src/api/minimal/ptr.rs
1833 +++ third_party/rust/packed_simd/src/api/minimal/ptr.rs
1834 @@ -68,7 +68,7 @@ macro_rules! impl_minimal_p {
1836 /// Extracts the value at `index`.
1838 - /// # Precondition
1841 /// If `index >= Self::lanes()` the behavior is undefined.
1843 @@ -96,7 +96,7 @@ macro_rules! impl_minimal_p {
1845 /// Returns a new vector where the value at `index` is replaced by `new_value`.
1847 - /// # Precondition
1850 /// If `index >= Self::lanes()` the behavior is undefined.
1852 @@ -215,7 +215,7 @@ macro_rules! impl_minimal_p {
1856 - unsafe { crate::intrinsics::type_name::<T>() }
1857 + crate::intrinsics::type_name::<T>()
1859 for i in 0..$elem_count {
1861 @@ -550,11 +550,7 @@ macro_rules! impl_minimal_p {
1864 for i in 0..$elem_count {
1865 - let ptr = unsafe {
1866 - crate::mem::transmute(
1867 - &values[i] as *const i32
1870 + let ptr = &values[i] as *const i32 as *mut i32;
1871 vec = vec.replace(i, ptr);
1874 @@ -611,7 +607,7 @@ macro_rules! impl_minimal_p {
1876 /// Instantiates a new vector with the values of the `slice`.
1878 - /// # Precondition
1881 /// If `slice.len() < Self::lanes()` or `&slice[0]` is not aligned
1882 /// to an `align_of::<Self>()` boundary, the behavior is undefined.
1883 @@ -624,7 +620,7 @@ macro_rules! impl_minimal_p {
1885 /// Instantiates a new vector with the values of the `slice`.
1887 - /// # Precondition
1890 /// If `slice.len() < Self::lanes()` the behavior is undefined.
1892 @@ -827,7 +823,7 @@ macro_rules! impl_minimal_p {
1894 /// Writes the values of the vector to the `slice`.
1896 - /// # Precondition
1899 /// If `slice.len() < Self::lanes()` or `&slice[0]` is not
1900 /// aligned to an `align_of::<Self>()` boundary, the behavior is
1901 @@ -843,7 +839,7 @@ macro_rules! impl_minimal_p {
1903 /// Writes the values of the vector to the `slice`.
1905 - /// # Precondition
1908 /// If `slice.len() < Self::lanes()` the behavior is undefined.
1910 @@ -1025,11 +1021,7 @@ macro_rules! impl_minimal_p {
1913 for i in 0..$elem_count {
1914 - let ptr = unsafe {
1915 - crate::mem::transmute(
1916 - &values[i] as *const i32
1919 + let ptr = &values[i] as *const i32 as *mut i32;
1920 vec = vec.replace(i, ptr);
1923 @@ -1151,7 +1143,7 @@ macro_rules! impl_minimal_p {
1924 /// As such, memory acquired directly from allocators or memory
1925 /// mapped files may be too large to handle with this function.
1927 - /// Consider using wrapping_offset_from instead if these constraints
1928 + /// Consider using `wrapping_offset_from` instead if these constraints
1929 /// are difficult to satisfy. The only advantage of this method is
1930 /// that it enables more aggressive compiler optimizations.
1932 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
1933 index 4126e87042f5..8310667b7a8d 100644
1934 --- third_party/rust/packed_simd/src/api/ops/vector_float_min_max.rs
1935 +++ third_party/rust/packed_simd/src/api/ops/vector_float_min_max.rs
1936 @@ -26,6 +26,11 @@ macro_rules! impl_ops_vector_float_min_max {
1941 + // FIXME: https://github.com/rust-lang-nursery/packed_simd/issues/223
1942 + all(target_arch = "mips", target_endian = "big"),
1943 + target_arch = "mips64",
1945 pub mod [<$id _ops_vector_min_max>] {
1947 #[cfg_attr(not(target_arch = "wasm32"), test)] #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
1948 diff --git third_party/rust/packed_simd/src/api/ptr/gather_scatter.rs third_party/rust/packed_simd/src/api/ptr/gather_scatter.rs
1949 index 9d8e113bb44f..430435620939 100644
1950 --- third_party/rust/packed_simd/src/api/ptr/gather_scatter.rs
1951 +++ third_party/rust/packed_simd/src/api/ptr/gather_scatter.rs
1952 @@ -49,9 +49,9 @@ macro_rules! impl_ptr_read {
1953 let mut ptr = $id::<i32>::null();
1955 for i in 0..$elem_count {
1956 - ptr = ptr.replace(i, unsafe {
1957 - crate::mem::transmute(&v[i] as *const i32)
1959 + ptr = ptr.replace(i,
1960 + &v[i] as *const i32 as *mut i32
1964 // all mask elements are true:
1965 @@ -135,32 +135,8 @@ macro_rules! impl_ptr_write {
1967 [M; $elem_count]: sealed::SimdArray,
1970 - // https://github.com/rust-lang-nursery/packed_simd/issues/85
1971 - #[cfg(not(target_arch = "mips"))]
1973 - use crate::llvm::simd_scatter;
1974 - simd_scatter(value.0, self.0, mask.0)
1976 - #[cfg(target_arch = "mips")]
1979 - &mask as *const Simd<[M; $elem_count]> as *const M;
1980 - for i in 0..$elem_count {
1981 - let m = ptr::read(m_ptr.add(i));
1984 - as *const Simd<[*mut T; $elem_count]>
1986 - let v_ptr = &value as *const Simd<[T; $elem_count]>
1989 - ptr::read(t_ptr.add(i)),
1990 - ptr::read(v_ptr.add(i)),
1995 + use crate::llvm::simd_scatter;
1996 + simd_scatter(value.0, self.0, mask.0)
2000 @@ -185,7 +161,7 @@ macro_rules! impl_ptr_write {
2001 let mut ptr = $id::<i32>::null();
2002 for i in 0..$elem_count {
2003 ptr = ptr.replace(i, unsafe {
2004 - crate::mem::transmute(arr.as_ptr().add(i))
2005 + arr.as_ptr().add(i) as *mut i32
2008 // ptr = [&arr[0], &arr[1], ...]
2009 diff --git third_party/rust/packed_simd/src/api/reductions/float_arithmetic.rs third_party/rust/packed_simd/src/api/reductions/float_arithmetic.rs
2010 index dd722ae25fdd..4a47452e5006 100644
2011 --- third_party/rust/packed_simd/src/api/reductions/float_arithmetic.rs
2012 +++ third_party/rust/packed_simd/src/api/reductions/float_arithmetic.rs
2013 @@ -93,6 +93,8 @@ macro_rules! impl_reduction_float_arithmetic {
2017 + // Comparisons use integer casts within mantissa^1 range.
2018 + #[allow(clippy::float_cmp)]
2019 pub mod [<$id _reduction_float_arith>] {
2021 fn alternating(x: usize) -> $id {
2022 @@ -225,7 +227,7 @@ macro_rules! impl_reduction_float_arithmetic {
2023 let mut v = $id::splat(0. as $elem_ty);
2024 for i in 0..$id::lanes() {
2025 let c = if i % 2 == 0 { 1e3 } else { -1. };
2026 - start *= 3.14 * c;
2027 + start *= ::core::$elem_ty::consts::PI * c;
2028 scalar_reduction += start;
2029 v = v.replace(i, start);
2031 @@ -257,6 +259,7 @@ macro_rules! impl_reduction_float_arithmetic {
2032 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
2033 #[allow(unused, dead_code)]
2034 fn product_roundoff() {
2035 + use ::core::convert::TryInto;
2036 // Performs a tree-reduction
2037 fn tree_reduce_product(a: &[$elem_ty]) -> $elem_ty {
2038 assert!(!a.is_empty());
2039 @@ -278,7 +281,7 @@ macro_rules! impl_reduction_float_arithmetic {
2040 let mut v = $id::splat(0. as $elem_ty);
2041 for i in 0..$id::lanes() {
2042 let c = if i % 2 == 0 { 1e3 } else { -1. };
2043 - start *= 3.14 * c;
2044 + start *= ::core::$elem_ty::consts::PI * c;
2045 scalar_reduction *= start;
2046 v = v.replace(i, start);
2048 @@ -288,7 +291,9 @@ macro_rules! impl_reduction_float_arithmetic {
2049 v.write_to_slice_unaligned(&mut a);
2050 let tree_reduction = tree_reduce_product(&a);
2052 - // tolerate 1 ULP difference:
2053 + // FIXME: Too imprecise, even only for product(f32x8).
2054 + // Figure out how to narrow this down.
2055 + let ulp_limit = $id::lanes() / 2;
2056 let red_bits = simd_reduction.to_bits();
2057 let tree_bits = tree_reduction.to_bits();
2059 @@ -296,7 +301,7 @@ macro_rules! impl_reduction_float_arithmetic {
2060 red_bits - tree_bits
2062 tree_bits - red_bits
2064 + } < ulp_limit.try_into().unwrap(),
2065 "vector: {:?} | simd_reduction: {:?} | \
2066 tree_reduction: {} | scalar_reduction: {}",
2068 diff --git third_party/rust/packed_simd/src/api/reductions/min_max.rs third_party/rust/packed_simd/src/api/reductions/min_max.rs
2069 index c4d3aa10f15c..c4c1400a8fc4 100644
2070 --- third_party/rust/packed_simd/src/api/reductions/min_max.rs
2071 +++ third_party/rust/packed_simd/src/api/reductions/min_max.rs
2072 @@ -76,6 +76,8 @@ macro_rules! impl_reduction_min_max {
2076 + // Comparisons use integer casts within mantissa^1 range.
2077 + #[allow(clippy::float_cmp)]
2078 pub mod [<$id _reduction_min_max>] {
2080 #[cfg_attr(not(target_arch = "wasm32"), test)]
2081 @@ -124,6 +126,8 @@ macro_rules! test_reduction_float_min_max {
2085 + // Comparisons use integer casts within mantissa^1 range.
2086 + #[allow(clippy::float_cmp)]
2087 pub mod [<$id _reduction_min_max_nan>] {
2089 #[cfg_attr(not(target_arch = "wasm32"), test)]
2090 diff --git third_party/rust/packed_simd/src/api/slice/from_slice.rs third_party/rust/packed_simd/src/api/slice/from_slice.rs
2091 index 109cd1f10b01..25082d1e6800 100644
2092 --- third_party/rust/packed_simd/src/api/slice/from_slice.rs
2093 +++ third_party/rust/packed_simd/src/api/slice/from_slice.rs
2094 @@ -38,7 +38,7 @@ macro_rules! impl_slice_from_slice {
2096 /// Instantiates a new vector with the values of the `slice`.
2098 - /// # Precondition
2101 /// If `slice.len() < Self::lanes()` or `&slice[0]` is not aligned
2102 /// to an `align_of::<Self>()` boundary, the behavior is undefined.
2103 @@ -59,7 +59,7 @@ macro_rules! impl_slice_from_slice {
2105 /// Instantiates a new vector with the values of the `slice`.
2107 - /// # Precondition
2110 /// If `slice.len() < Self::lanes()` the behavior is undefined.
2112 @@ -84,6 +84,8 @@ macro_rules! impl_slice_from_slice {
2116 + // Comparisons use integer casts within mantissa^1 range.
2117 + #[allow(clippy::float_cmp)]
2118 pub mod [<$id _slice_from_slice>] {
2120 use crate::iter::Iterator;
2121 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
2122 index fcb288da70fc..b634d98b9962 100644
2123 --- third_party/rust/packed_simd/src/api/slice/write_to_slice.rs
2124 +++ third_party/rust/packed_simd/src/api/slice/write_to_slice.rs
2125 @@ -39,7 +39,7 @@ macro_rules! impl_slice_write_to_slice {
2127 /// Writes the values of the vector to the `slice`.
2129 - /// # Precondition
2132 /// If `slice.len() < Self::lanes()` or `&slice[0]` is not
2133 /// aligned to an `align_of::<Self>()` boundary, the behavior is
2134 @@ -64,7 +64,7 @@ macro_rules! impl_slice_write_to_slice {
2136 /// Writes the values of the vector to the `slice`.
2138 - /// # Precondition
2141 /// If `slice.len() < Self::lanes()` the behavior is undefined.
2143 @@ -86,6 +86,8 @@ macro_rules! impl_slice_write_to_slice {
2147 + // Comparisons use integer casts within mantissa^1 range.
2148 + #[allow(clippy::float_cmp)]
2149 pub mod [<$id _slice_write_to_slice>] {
2151 use crate::iter::Iterator;
2152 diff --git third_party/rust/packed_simd/src/codegen.rs third_party/rust/packed_simd/src/codegen.rs
2153 index b7ccd838603f..9d1517e203d1 100644
2154 --- third_party/rust/packed_simd/src/codegen.rs
2155 +++ third_party/rust/packed_simd/src/codegen.rs
2156 @@ -16,6 +16,8 @@ macro_rules! impl_simd_array {
2157 pub struct $tuple_id($(crate $elem_tys),*);
2158 //^^^^^^^ leaked through SimdArray
2160 + impl crate::sealed::Seal for [$elem_ty; $elem_count] {}
2162 impl crate::sealed::SimdArray for [$elem_ty; $elem_count] {
2163 type Tuple = $tuple_id;
2165 @@ -23,6 +25,7 @@ macro_rules! impl_simd_array {
2166 type NT = [u32; $elem_count];
2169 + impl crate::sealed::Seal for $tuple_id {}
2170 impl crate::sealed::Simd for $tuple_id {
2171 type Element = $elem_ty;
2172 const LANES: usize = $elem_count;
2173 diff --git third_party/rust/packed_simd/src/codegen/bit_manip.rs third_party/rust/packed_simd/src/codegen/bit_manip.rs
2174 index 947266f5bce8..83c7d1987cac 100644
2175 --- third_party/rust/packed_simd/src/codegen/bit_manip.rs
2176 +++ third_party/rust/packed_simd/src/codegen/bit_manip.rs
2178 //! LLVM bit manipulation intrinsics.
2184 diff --git third_party/rust/packed_simd/src/codegen/llvm.rs third_party/rust/packed_simd/src/codegen/llvm.rs
2185 index 91c2b0758dcf..93c6ce6b77ed 100644
2186 --- third_party/rust/packed_simd/src/codegen/llvm.rs
2187 +++ third_party/rust/packed_simd/src/codegen/llvm.rs
2188 @@ -10,31 +10,37 @@ extern "platform-intrinsic" {
2189 // FIXME: Passing this intrinsics an `idx` array with an index that is
2190 // out-of-bounds will produce a monomorphization-time error.
2191 // https://github.com/rust-lang-nursery/packed_simd/issues/21
2192 + #[rustc_args_required_const(2)]
2193 pub fn simd_shuffle2<T, U>(x: T, y: T, idx: [u32; 2]) -> U
2196 <T as Simd>::Element: Shuffle<[u32; 2], Output = U>;
2198 + #[rustc_args_required_const(2)]
2199 pub fn simd_shuffle4<T, U>(x: T, y: T, idx: [u32; 4]) -> U
2202 <T as Simd>::Element: Shuffle<[u32; 4], Output = U>;
2204 + #[rustc_args_required_const(2)]
2205 pub fn simd_shuffle8<T, U>(x: T, y: T, idx: [u32; 8]) -> U
2208 <T as Simd>::Element: Shuffle<[u32; 8], Output = U>;
2210 + #[rustc_args_required_const(2)]
2211 pub fn simd_shuffle16<T, U>(x: T, y: T, idx: [u32; 16]) -> U
2214 <T as Simd>::Element: Shuffle<[u32; 16], Output = U>;
2216 + #[rustc_args_required_const(2)]
2217 pub fn simd_shuffle32<T, U>(x: T, y: T, idx: [u32; 32]) -> U
2220 <T as Simd>::Element: Shuffle<[u32; 32], Output = U>;
2222 + #[rustc_args_required_const(2)]
2223 pub fn simd_shuffle64<T, U>(x: T, y: T, idx: [u32; 64]) -> U
2226 @@ -96,4 +102,6 @@ extern "platform-intrinsic" {
2228 crate fn simd_gather<T, P, M>(value: T, pointers: P, mask: M) -> T;
2229 crate fn simd_scatter<T, P, M>(value: T, pointers: P, mask: M);
2231 + crate fn simd_bitmask<T, U>(value: T) -> U;
2233 diff --git third_party/rust/packed_simd/src/codegen/reductions/mask/x86.rs third_party/rust/packed_simd/src/codegen/reductions/mask/x86.rs
2234 index 2ae4ed81c416..bcfb1a6e1772 100644
2235 --- third_party/rust/packed_simd/src/codegen/reductions/mask/x86.rs
2236 +++ third_party/rust/packed_simd/src/codegen/reductions/mask/x86.rs
2237 @@ -19,13 +19,7 @@ mod avx2;
2238 /// x86 64-bit m8x8 implementation
2239 macro_rules! x86_m8x8_impl {
2242 - if #[cfg(all(target_arch = "x86_64", target_feature = "sse"))] {
2243 - x86_m8x8_sse_impl!($id);
2245 - fallback_impl!($id);
2248 + fallback_impl!($id);
2252 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
2253 index 7482f9430a14..eb1ef7fac922 100644
2254 --- third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse.rs
2255 +++ third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse.rs
2256 @@ -34,35 +34,3 @@ macro_rules! x86_m32x4_sse_impl {
2261 -macro_rules! x86_m8x8_sse_impl {
2263 - impl All for $id {
2265 - #[target_feature(enable = "sse")]
2266 - unsafe fn all(self) -> bool {
2267 - #[cfg(target_arch = "x86")]
2268 - use crate::arch::x86::_mm_movemask_pi8;
2269 - #[cfg(target_arch = "x86_64")]
2270 - use crate::arch::x86_64::_mm_movemask_pi8;
2271 - // _mm_movemask_pi8(a) creates an 8bit mask containing the most
2272 - // significant bit of each byte of `a`. If all bits are set,
2273 - // then all 8 lanes of the mask are true.
2274 - _mm_movemask_pi8(crate::mem::transmute(self))
2275 - == u8::max_value() as i32
2278 - impl Any for $id {
2280 - #[target_feature(enable = "sse")]
2281 - unsafe fn any(self) -> bool {
2282 - #[cfg(target_arch = "x86")]
2283 - use crate::arch::x86::_mm_movemask_pi8;
2284 - #[cfg(target_arch = "x86_64")]
2285 - use crate::arch::x86_64::_mm_movemask_pi8;
2287 - _mm_movemask_pi8(crate::mem::transmute(self)) != 0
2292 diff --git third_party/rust/packed_simd/src/codegen/shuffle.rs third_party/rust/packed_simd/src/codegen/shuffle.rs
2293 index 35a9db905339..d92c9ee22427 100644
2294 --- third_party/rust/packed_simd/src/codegen/shuffle.rs
2295 +++ third_party/rust/packed_simd/src/codegen/shuffle.rs
2297 //! lanes and vector element types.
2299 use crate::masks::*;
2300 -use crate::sealed::Shuffle;
2302 -impl Shuffle<[u32; 2]> for i8 {
2303 - type Output = crate::codegen::i8x2;
2305 -impl Shuffle<[u32; 4]> for i8 {
2306 - type Output = crate::codegen::i8x4;
2308 -impl Shuffle<[u32; 8]> for i8 {
2309 - type Output = crate::codegen::i8x8;
2311 -impl Shuffle<[u32; 16]> for i8 {
2312 - type Output = crate::codegen::i8x16;
2314 -impl Shuffle<[u32; 32]> for i8 {
2315 - type Output = crate::codegen::i8x32;
2317 -impl Shuffle<[u32; 64]> for i8 {
2318 - type Output = crate::codegen::i8x64;
2321 -impl Shuffle<[u32; 2]> for u8 {
2322 - type Output = crate::codegen::u8x2;
2324 -impl Shuffle<[u32; 4]> for u8 {
2325 - type Output = crate::codegen::u8x4;
2327 -impl Shuffle<[u32; 8]> for u8 {
2328 - type Output = crate::codegen::u8x8;
2330 -impl Shuffle<[u32; 16]> for u8 {
2331 - type Output = crate::codegen::u8x16;
2333 -impl Shuffle<[u32; 32]> for u8 {
2334 - type Output = crate::codegen::u8x32;
2336 -impl Shuffle<[u32; 64]> for u8 {
2337 - type Output = crate::codegen::u8x64;
2340 -impl Shuffle<[u32; 2]> for m8 {
2341 - type Output = crate::codegen::m8x2;
2343 -impl Shuffle<[u32; 4]> for m8 {
2344 - type Output = crate::codegen::m8x4;
2346 -impl Shuffle<[u32; 8]> for m8 {
2347 - type Output = crate::codegen::m8x8;
2349 -impl Shuffle<[u32; 16]> for m8 {
2350 - type Output = crate::codegen::m8x16;
2352 -impl Shuffle<[u32; 32]> for m8 {
2353 - type Output = crate::codegen::m8x32;
2355 -impl Shuffle<[u32; 64]> for m8 {
2356 - type Output = crate::codegen::m8x64;
2359 -impl Shuffle<[u32; 2]> for i16 {
2360 - type Output = crate::codegen::i16x2;
2362 -impl Shuffle<[u32; 4]> for i16 {
2363 - type Output = crate::codegen::i16x4;
2365 -impl Shuffle<[u32; 8]> for i16 {
2366 - type Output = crate::codegen::i16x8;
2368 -impl Shuffle<[u32; 16]> for i16 {
2369 - type Output = crate::codegen::i16x16;
2371 -impl Shuffle<[u32; 32]> for i16 {
2372 - type Output = crate::codegen::i16x32;
2375 -impl Shuffle<[u32; 2]> for u16 {
2376 - type Output = crate::codegen::u16x2;
2378 -impl Shuffle<[u32; 4]> for u16 {
2379 - type Output = crate::codegen::u16x4;
2381 -impl Shuffle<[u32; 8]> for u16 {
2382 - type Output = crate::codegen::u16x8;
2384 -impl Shuffle<[u32; 16]> for u16 {
2385 - type Output = crate::codegen::u16x16;
2387 -impl Shuffle<[u32; 32]> for u16 {
2388 - type Output = crate::codegen::u16x32;
2391 -impl Shuffle<[u32; 2]> for m16 {
2392 - type Output = crate::codegen::m16x2;
2394 -impl Shuffle<[u32; 4]> for m16 {
2395 - type Output = crate::codegen::m16x4;
2397 -impl Shuffle<[u32; 8]> for m16 {
2398 - type Output = crate::codegen::m16x8;
2400 -impl Shuffle<[u32; 16]> for m16 {
2401 - type Output = crate::codegen::m16x16;
2403 -impl Shuffle<[u32; 32]> for m16 {
2404 - type Output = crate::codegen::m16x32;
2407 -impl Shuffle<[u32; 2]> for i32 {
2408 - type Output = crate::codegen::i32x2;
2410 -impl Shuffle<[u32; 4]> for i32 {
2411 - type Output = crate::codegen::i32x4;
2413 -impl Shuffle<[u32; 8]> for i32 {
2414 - type Output = crate::codegen::i32x8;
2416 -impl Shuffle<[u32; 16]> for i32 {
2417 - type Output = crate::codegen::i32x16;
2420 -impl Shuffle<[u32; 2]> for u32 {
2421 - type Output = crate::codegen::u32x2;
2423 -impl Shuffle<[u32; 4]> for u32 {
2424 - type Output = crate::codegen::u32x4;
2426 -impl Shuffle<[u32; 8]> for u32 {
2427 - type Output = crate::codegen::u32x8;
2429 -impl Shuffle<[u32; 16]> for u32 {
2430 - type Output = crate::codegen::u32x16;
2433 -impl Shuffle<[u32; 2]> for f32 {
2434 - type Output = crate::codegen::f32x2;
2436 -impl Shuffle<[u32; 4]> for f32 {
2437 - type Output = crate::codegen::f32x4;
2439 -impl Shuffle<[u32; 8]> for f32 {
2440 - type Output = crate::codegen::f32x8;
2442 -impl Shuffle<[u32; 16]> for f32 {
2443 - type Output = crate::codegen::f32x16;
2446 -impl Shuffle<[u32; 2]> for m32 {
2447 - type Output = crate::codegen::m32x2;
2449 -impl Shuffle<[u32; 4]> for m32 {
2450 - type Output = crate::codegen::m32x4;
2452 -impl Shuffle<[u32; 8]> for m32 {
2453 - type Output = crate::codegen::m32x8;
2455 -impl Shuffle<[u32; 16]> for m32 {
2456 - type Output = crate::codegen::m32x16;
2458 +use crate::sealed::{Shuffle, Seal};
2460 +macro_rules! impl_shuffle {
2461 + ($array:ty, $base:ty, $out:ty) => {
2462 + impl Seal<$array> for $base {}
2463 + impl Shuffle<$array> for $base {
2464 + type Output = $out;
2469 +impl_shuffle! { [u32; 2], i8, crate::codegen::i8x2 }
2470 +impl_shuffle! { [u32; 4], i8, crate::codegen::i8x4 }
2471 +impl_shuffle! { [u32; 8], i8, crate::codegen::i8x8 }
2472 +impl_shuffle! { [u32; 16], i8, crate::codegen::i8x16 }
2473 +impl_shuffle! { [u32; 32], i8, crate::codegen::i8x32 }
2474 +impl_shuffle! { [u32; 64], i8, crate::codegen::i8x64 }
2476 +impl_shuffle! { [u32; 2], u8, crate::codegen::u8x2 }
2477 +impl_shuffle! { [u32; 4], u8, crate::codegen::u8x4 }
2478 +impl_shuffle! { [u32; 8], u8, crate::codegen::u8x8 }
2479 +impl_shuffle! { [u32; 16], u8, crate::codegen::u8x16 }
2480 +impl_shuffle! { [u32; 32], u8, crate::codegen::u8x32 }
2481 +impl_shuffle! { [u32; 64], u8, crate::codegen::u8x64 }
2483 +impl_shuffle! { [u32; 2], m8, crate::codegen::m8x2 }
2484 +impl_shuffle! { [u32; 4], m8, crate::codegen::m8x4 }
2485 +impl_shuffle! { [u32; 8], m8, crate::codegen::m8x8 }
2486 +impl_shuffle! { [u32; 16], m8, crate::codegen::m8x16 }
2487 +impl_shuffle! { [u32; 32], m8, crate::codegen::m8x32 }
2488 +impl_shuffle! { [u32; 64], m8, crate::codegen::m8x64 }
2490 +impl_shuffle! { [u32; 2], i16, crate::codegen::i16x2 }
2491 +impl_shuffle! { [u32; 4], i16, crate::codegen::i16x4 }
2492 +impl_shuffle! { [u32; 8], i16, crate::codegen::i16x8 }
2493 +impl_shuffle! { [u32; 16], i16, crate::codegen::i16x16 }
2494 +impl_shuffle! { [u32; 32], i16, crate::codegen::i16x32 }
2496 +impl_shuffle! { [u32; 2], u16, crate::codegen::u16x2 }
2497 +impl_shuffle! { [u32; 4], u16, crate::codegen::u16x4 }
2498 +impl_shuffle! { [u32; 8], u16, crate::codegen::u16x8 }
2499 +impl_shuffle! { [u32; 16], u16, crate::codegen::u16x16 }
2500 +impl_shuffle! { [u32; 32], u16, crate::codegen::u16x32 }
2502 +impl_shuffle! { [u32; 2], m16, crate::codegen::m16x2 }
2503 +impl_shuffle! { [u32; 4], m16, crate::codegen::m16x4 }
2504 +impl_shuffle! { [u32; 8], m16, crate::codegen::m16x8 }
2505 +impl_shuffle! { [u32; 16], m16, crate::codegen::m16x16 }
2507 +impl_shuffle! { [u32; 2], i32, crate::codegen::i32x2 }
2508 +impl_shuffle! { [u32; 4], i32, crate::codegen::i32x4 }
2509 +impl_shuffle! { [u32; 8], i32, crate::codegen::i32x8 }
2510 +impl_shuffle! { [u32; 16], i32, crate::codegen::i32x16 }
2512 +impl_shuffle! { [u32; 2], u32, crate::codegen::u32x2 }
2513 +impl_shuffle! { [u32; 4], u32, crate::codegen::u32x4 }
2514 +impl_shuffle! { [u32; 8], u32, crate::codegen::u32x8 }
2515 +impl_shuffle! { [u32; 16], u32, crate::codegen::u32x16 }
2517 +impl_shuffle! { [u32; 2], f32, crate::codegen::f32x2 }
2518 +impl_shuffle! { [u32; 4], f32, crate::codegen::f32x4 }
2519 +impl_shuffle! { [u32; 8], f32, crate::codegen::f32x8 }
2520 +impl_shuffle! { [u32; 16], f32, crate::codegen::f32x16 }
2522 +impl_shuffle! { [u32; 2], m32, crate::codegen::m32x2 }
2523 +impl_shuffle! { [u32; 4], m32, crate::codegen::m32x4 }
2524 +impl_shuffle! { [u32; 8], m32, crate::codegen::m32x8 }
2525 +impl_shuffle! { [u32; 16], m32, crate::codegen::m32x16 }
2527 /* FIXME: 64-bit single element vector
2528 -impl Shuffle<[u32; 1]> for i64 {
2529 - type Output = crate::codegen::i64x1;
2531 +impl_shuffle! { [u32; 1], i64, crate::codegen::i64x1 }
2533 -impl Shuffle<[u32; 2]> for i64 {
2534 - type Output = crate::codegen::i64x2;
2536 -impl Shuffle<[u32; 4]> for i64 {
2537 - type Output = crate::codegen::i64x4;
2539 -impl Shuffle<[u32; 8]> for i64 {
2540 - type Output = crate::codegen::i64x8;
2542 +impl_shuffle! { [u32; 2], i64, crate::codegen::i64x2 }
2543 +impl_shuffle! { [u32; 4], i64, crate::codegen::i64x4 }
2544 +impl_shuffle! { [u32; 8], i64, crate::codegen::i64x8 }
2546 /* FIXME: 64-bit single element vector
2547 -impl Shuffle<[u32; 1]> for u64 {
2548 - type Output = crate::codegen::u64x1;
2550 +impl_shuffle! { [u32; 1], i64, crate::codegen::i64x1 }
2552 -impl Shuffle<[u32; 2]> for u64 {
2553 - type Output = crate::codegen::u64x2;
2555 -impl Shuffle<[u32; 4]> for u64 {
2556 - type Output = crate::codegen::u64x4;
2558 -impl Shuffle<[u32; 8]> for u64 {
2559 - type Output = crate::codegen::u64x8;
2561 +impl_shuffle! { [u32; 2], u64, crate::codegen::u64x2 }
2562 +impl_shuffle! { [u32; 4], u64, crate::codegen::u64x4 }
2563 +impl_shuffle! { [u32; 8], u64, crate::codegen::u64x8 }
2565 /* FIXME: 64-bit single element vector
2566 -impl Shuffle<[u32; 1]> for f64 {
2567 - type Output = crate::codegen::f64x1;
2569 +impl_shuffle! { [u32; 1], i64, crate::codegen::i64x1 }
2571 -impl Shuffle<[u32; 2]> for f64 {
2572 - type Output = crate::codegen::f64x2;
2574 -impl Shuffle<[u32; 4]> for f64 {
2575 - type Output = crate::codegen::f64x4;
2577 -impl Shuffle<[u32; 8]> for f64 {
2578 - type Output = crate::codegen::f64x8;
2580 +impl_shuffle! { [u32; 2], f64, crate::codegen::f64x2 }
2581 +impl_shuffle! { [u32; 4], f64, crate::codegen::f64x4 }
2582 +impl_shuffle! { [u32; 8], f64, crate::codegen::f64x8 }
2584 /* FIXME: 64-bit single element vector
2585 -impl Shuffle<[u32; 1]> for m64 {
2586 - type Output = crate::codegen::m64x1;
2588 +impl_shuffle! { [u32; 1], i64, crate::codegen::i64x1 }
2590 -impl Shuffle<[u32; 2]> for m64 {
2591 - type Output = crate::codegen::m64x2;
2593 -impl Shuffle<[u32; 4]> for m64 {
2594 - type Output = crate::codegen::m64x4;
2596 -impl Shuffle<[u32; 8]> for m64 {
2597 - type Output = crate::codegen::m64x8;
2599 +impl_shuffle! { [u32; 2], m64, crate::codegen::m64x2 }
2600 +impl_shuffle! { [u32; 4], m64, crate::codegen::m64x4 }
2601 +impl_shuffle! { [u32; 8], m64, crate::codegen::m64x8 }
2603 -impl Shuffle<[u32; 2]> for isize {
2604 - type Output = crate::codegen::isizex2;
2606 -impl Shuffle<[u32; 4]> for isize {
2607 - type Output = crate::codegen::isizex4;
2609 -impl Shuffle<[u32; 8]> for isize {
2610 - type Output = crate::codegen::isizex8;
2612 +impl_shuffle! { [u32; 2], isize, crate::codegen::isizex2 }
2613 +impl_shuffle! { [u32; 4], isize, crate::codegen::isizex4 }
2614 +impl_shuffle! { [u32; 8], isize, crate::codegen::isizex8 }
2616 -impl Shuffle<[u32; 2]> for usize {
2617 - type Output = crate::codegen::usizex2;
2619 -impl Shuffle<[u32; 4]> for usize {
2620 - type Output = crate::codegen::usizex4;
2622 -impl Shuffle<[u32; 8]> for usize {
2623 - type Output = crate::codegen::usizex8;
2625 +impl_shuffle! { [u32; 2], usize, crate::codegen::usizex2 }
2626 +impl_shuffle! { [u32; 4], usize, crate::codegen::usizex4 }
2627 +impl_shuffle! { [u32; 8], usize, crate::codegen::usizex8 }
2629 +impl_shuffle! { [u32; 2], msize, crate::codegen::msizex2 }
2630 +impl_shuffle! { [u32; 4], msize, crate::codegen::msizex4 }
2631 +impl_shuffle! { [u32; 8], msize, crate::codegen::msizex8 }
2633 +impl<T> Seal<[u32; 2]> for *const T {}
2634 impl<T> Shuffle<[u32; 2]> for *const T {
2635 type Output = crate::codegen::cptrx2<T>;
2637 +impl<T> Seal<[u32; 4]> for *const T {}
2638 impl<T> Shuffle<[u32; 4]> for *const T {
2639 type Output = crate::codegen::cptrx4<T>;
2641 +impl<T> Seal<[u32; 8]> for *const T {}
2642 impl<T> Shuffle<[u32; 8]> for *const T {
2643 type Output = crate::codegen::cptrx8<T>;
2646 +impl<T> Seal<[u32; 2]> for *mut T {}
2647 impl<T> Shuffle<[u32; 2]> for *mut T {
2648 type Output = crate::codegen::mptrx2<T>;
2650 +impl<T> Seal<[u32; 4]> for *mut T {}
2651 impl<T> Shuffle<[u32; 4]> for *mut T {
2652 type Output = crate::codegen::mptrx4<T>;
2654 +impl<T> Seal<[u32; 8]> for *mut T {}
2655 impl<T> Shuffle<[u32; 8]> for *mut T {
2656 type Output = crate::codegen::mptrx8<T>;
2659 -impl Shuffle<[u32; 2]> for msize {
2660 - type Output = crate::codegen::msizex2;
2662 -impl Shuffle<[u32; 4]> for msize {
2663 - type Output = crate::codegen::msizex4;
2665 -impl Shuffle<[u32; 8]> for msize {
2666 - type Output = crate::codegen::msizex8;
2668 +impl_shuffle! { [u32; 1], i128, crate::codegen::i128x1 }
2669 +impl_shuffle! { [u32; 2], i128, crate::codegen::i128x2 }
2670 +impl_shuffle! { [u32; 4], i128, crate::codegen::i128x4 }
2672 -impl Shuffle<[u32; 1]> for i128 {
2673 - type Output = crate::codegen::i128x1;
2675 -impl Shuffle<[u32; 2]> for i128 {
2676 - type Output = crate::codegen::i128x2;
2678 -impl Shuffle<[u32; 4]> for i128 {
2679 - type Output = crate::codegen::i128x4;
2681 +impl_shuffle! { [u32; 1], u128, crate::codegen::u128x1 }
2682 +impl_shuffle! { [u32; 2], u128, crate::codegen::u128x2 }
2683 +impl_shuffle! { [u32; 4], u128, crate::codegen::u128x4 }
2685 -impl Shuffle<[u32; 1]> for u128 {
2686 - type Output = crate::codegen::u128x1;
2688 -impl Shuffle<[u32; 2]> for u128 {
2689 - type Output = crate::codegen::u128x2;
2691 -impl Shuffle<[u32; 4]> for u128 {
2692 - type Output = crate::codegen::u128x4;
2695 -impl Shuffle<[u32; 1]> for m128 {
2696 - type Output = crate::codegen::m128x1;
2698 -impl Shuffle<[u32; 2]> for m128 {
2699 - type Output = crate::codegen::m128x2;
2701 -impl Shuffle<[u32; 4]> for m128 {
2702 - type Output = crate::codegen::m128x4;
2704 +impl_shuffle! { [u32; 1], m128, crate::codegen::m128x1 }
2705 +impl_shuffle! { [u32; 2], m128, crate::codegen::m128x2 }
2706 +impl_shuffle! { [u32; 4], m128, crate::codegen::m128x4 }
2707 diff --git third_party/rust/packed_simd/src/codegen/shuffle1_dyn.rs third_party/rust/packed_simd/src/codegen/shuffle1_dyn.rs
2708 index 1e9f5816371a..a5403a06bb6e 100644
2709 --- third_party/rust/packed_simd/src/codegen/shuffle1_dyn.rs
2710 +++ third_party/rust/packed_simd/src/codegen/shuffle1_dyn.rs
2711 @@ -28,31 +28,10 @@ macro_rules! impl_fallback {
2712 macro_rules! impl_shuffle1_dyn {
2715 - if #[cfg(all(any(target_arch = "x86", target_arch = "x86_64"),
2716 - target_feature = "ssse3"))] {
2717 - impl Shuffle1Dyn for u8x8 {
2718 - type Indices = Self;
2720 - fn shuffle1_dyn(self, indices: Self::Indices) -> Self {
2721 - #[cfg(target_arch = "x86")]
2722 - use crate::arch::x86::_mm_shuffle_pi8;
2723 - #[cfg(target_arch = "x86_64")]
2724 - use crate::arch::x86_64::_mm_shuffle_pi8;
2727 - crate::mem::transmute(
2729 - crate::mem::transmute(self.0),
2730 - crate::mem::transmute(indices.0)
2736 - } else if #[cfg(all(
2739 - all(target_aarch = "aarch64", target_feature = "neon"),
2740 - all(target_aarch = "arm", target_feature = "v7",
2741 + all(target_arch = "aarch64", target_feature = "neon"),
2742 + all(target_arch = "doesnotexist", target_feature = "v7",
2743 target_feature = "neon")
2745 any(feature = "core_arch", libcore_neon)
2746 @@ -62,9 +41,9 @@ macro_rules! impl_shuffle1_dyn {
2747 type Indices = Self;
2749 fn shuffle1_dyn(self, indices: Self::Indices) -> Self {
2750 - #[cfg(targt_arch = "aarch64")]
2751 + #[cfg(target_arch = "aarch64")]
2752 use crate::arch::aarch64::vtbl1_u8;
2753 - #[cfg(targt_arch = "arm")]
2754 + #[cfg(target_arch = "doesnotexist")]
2755 use crate::arch::arm::vtbl1_u8;
2757 // This is safe because the binary is compiled with
2758 @@ -106,7 +85,7 @@ macro_rules! impl_shuffle1_dyn {
2762 - } else if #[cfg(all(target_aarch = "aarch64", target_feature = "neon",
2763 + } else if #[cfg(all(target_arch = "aarch64", target_feature = "neon",
2764 any(feature = "core_arch", libcore_neon)))] {
2765 impl Shuffle1Dyn for u8x16 {
2766 type Indices = Self;
2767 @@ -125,7 +104,7 @@ macro_rules! impl_shuffle1_dyn {
2771 - } else if #[cfg(all(target_aarch = "arm", target_feature = "v7",
2772 + } else if #[cfg(all(target_arch = "doesnotexist", target_feature = "v7",
2773 target_feature = "neon",
2774 any(feature = "core_arch", libcore_neon)))] {
2775 impl Shuffle1Dyn for u8x16 {
2776 diff --git third_party/rust/packed_simd/src/codegen/vPtr.rs third_party/rust/packed_simd/src/codegen/vPtr.rs
2777 index 1f2bc7714dd9..cf4765538178 100644
2778 --- third_party/rust/packed_simd/src/codegen/vPtr.rs
2779 +++ third_party/rust/packed_simd/src/codegen/vPtr.rs
2780 @@ -8,6 +8,7 @@ macro_rules! impl_simd_ptr {
2781 pub struct $tuple_id<$ty>($(crate $tys),*);
2782 //^^^^^^^ leaked through SimdArray
2784 + impl<$ty> crate::sealed::Seal for [$ptr_ty; $elem_count] {}
2785 impl<$ty> crate::sealed::SimdArray for [$ptr_ty; $elem_count] {
2786 type Tuple = $tuple_id<$ptr_ty>;
2788 @@ -15,6 +16,7 @@ macro_rules! impl_simd_ptr {
2789 type NT = [u32; $elem_count];
2792 + impl<$ty> crate::sealed::Seal for $tuple_id<$ptr_ty> {}
2793 impl<$ty> crate::sealed::Simd for $tuple_id<$ptr_ty> {
2794 type Element = $ptr_ty;
2795 const LANES: usize = $elem_count;
2796 diff --git third_party/rust/packed_simd/src/lib.rs third_party/rust/packed_simd/src/lib.rs
2797 index d73645e72fbe..b0b56d4d7461 100644
2798 --- third_party/rust/packed_simd/src/lib.rs
2799 +++ third_party/rust/packed_simd/src/lib.rs
2806 platform_intrinsics,
2808 @@ -209,22 +210,26 @@
2809 link_llvm_intrinsics,
2811 stmt_expr_attributes,
2813 - mmx_target_feature,
2814 crate_visibility_modifier,
2815 custom_inner_attributes
2817 #![allow(non_camel_case_types, non_snake_case,
2818 - clippy::cast_possible_truncation,
2819 - clippy::cast_lossless,
2820 - clippy::cast_possible_wrap,
2821 - clippy::cast_precision_loss,
2822 - // This lint is currently broken for generic code
2823 - // See https://github.com/rust-lang/rust-clippy/issues/3410
2825 + // FIXME: these types are unsound in C FFI already
2826 + // See https://github.com/rust-lang/rust/issues/53346
2827 + improper_ctypes_definitions,
2828 + clippy::cast_possible_truncation,
2829 + clippy::cast_lossless,
2830 + clippy::cast_possible_wrap,
2831 + clippy::cast_precision_loss,
2832 + // TODO: manually add the `#[must_use]` attribute where appropriate
2833 + clippy::must_use_candidate,
2834 + // This lint is currently broken for generic code
2835 + // See https://github.com/rust-lang/rust-clippy/issues/3410
2837 + clippy::wrong_self_convention,
2839 #![cfg_attr(test, feature(hashmap_internals))]
2840 -#![deny(warnings, rust_2018_idioms, clippy::missing_inline_in_public_items)]
2841 +#![deny(rust_2018_idioms, clippy::missing_inline_in_public_items)]
2845 @@ -256,6 +261,8 @@ mod api;
2849 +pub use crate::sealed::{Simd as SimdVector, Shuffle, SimdArray, Mask};
2851 /// Packed SIMD vector type.
2854 @@ -276,6 +283,8 @@ pub struct Simd<A: sealed::SimdArray>(
2855 #[doc(hidden)] pub <A as sealed::SimdArray>::Tuple,
2858 +impl<A: sealed::SimdArray> sealed::Seal for Simd<A> {}
2860 /// Wrapper over `T` implementing a lexicoraphical order via the `PartialOrd`
2861 /// and/or `Ord` traits.
2862 #[repr(transparent)]
2863 diff --git third_party/rust/packed_simd/src/masks.rs third_party/rust/packed_simd/src/masks.rs
2864 index f83c4da95750..aeb36d232804 100644
2865 --- third_party/rust/packed_simd/src/masks.rs
2866 +++ third_party/rust/packed_simd/src/masks.rs
2867 @@ -6,7 +6,9 @@ macro_rules! impl_mask_ty {
2868 #[derive(Copy, Clone)]
2869 pub struct $id($elem_ty);
2871 + impl crate::sealed::Seal for $id {}
2872 impl crate::sealed::Mask for $id {
2874 fn test(&self) -> bool {
2877 diff --git third_party/rust/packed_simd/src/sealed.rs third_party/rust/packed_simd/src/sealed.rs
2878 index 832acd3f1d54..0ec20300fdd4 100644
2879 --- third_party/rust/packed_simd/src/sealed.rs
2880 +++ third_party/rust/packed_simd/src/sealed.rs
2884 +/// A sealed trait, this is logically private to the crate
2885 +/// and will prevent implementations from outside the crate
2886 +pub trait Seal<T = ()> {}
2888 /// Trait implemented by arrays that can be SIMD types.
2890 -pub trait SimdArray {
2891 +pub trait SimdArray: Seal {
2892 /// The type of the #[repr(simd)] type.
2893 type Tuple: Copy + Clone;
2894 /// The element type of the vector.
2895 @@ -16,7 +19,7 @@ pub trait SimdArray {
2896 /// This traits is used to constraint the arguments
2897 /// and result type of the portable shuffles.
2899 -pub trait Shuffle<Lanes> {
2900 +pub trait Shuffle<Lanes>: Seal<Lanes> {
2901 // Lanes is a `[u32; N]` where `N` is the number of vector lanes
2903 /// The result type of the shuffle.
2904 @@ -24,8 +27,7 @@ pub trait Shuffle<Lanes> {
2907 /// This trait is implemented by all SIMD vector types.
2910 +pub trait Simd: Seal {
2911 /// Element type of the SIMD vector
2913 /// The number of elements in the SIMD vector.
2914 @@ -35,7 +37,6 @@ pub trait Simd {
2917 /// This trait is implemented by all mask types
2920 +pub trait Mask: Seal {
2921 fn test(&self) -> bool;
2923 diff --git third_party/rust/packed_simd/src/testing/utils.rs third_party/rust/packed_simd/src/testing/utils.rs
2924 index 7b8f21ac1c55..21f27aae5432 100644
2925 --- third_party/rust/packed_simd/src/testing/utils.rs
2926 +++ third_party/rust/packed_simd/src/testing/utils.rs
2928 //! Testing utilities
2930 #![allow(dead_code)]
2931 +// FIXME: Or don't. But it's true this is a problematic comparison.
2932 +#![allow(clippy::neg_cmp_op_on_partial_ord)]
2934 use crate::{cmp::PartialOrd, fmt::Debug, LexicographicallyOrdered};
2936 @@ -19,14 +21,19 @@ pub fn test_lt<T>(
2937 assert!(a <= b, "{:?}, {:?}", a, b);
2938 assert!(b >= a, "{:?}, {:?}", a, b);
2941 - assert!(!(a < a), "{:?}, {:?}", a, b);
2942 - assert!(!(b < b), "{:?}, {:?}", a, b);
2943 - assert!(!(a > a), "{:?}, {:?}", a, b);
2944 - assert!(!(b > b), "{:?}, {:?}", a, b);
2945 + // The elegance of the mathematical expression of irreflexivity is more
2946 + // than clippy can handle.
2947 + #[allow(clippy::eq_op)]
2950 + assert!(!(a < a), "{:?}, {:?}", a, b);
2951 + assert!(!(b < b), "{:?}, {:?}", a, b);
2952 + assert!(!(a > a), "{:?}, {:?}", a, b);
2953 + assert!(!(b > b), "{:?}, {:?}", a, b);
2955 - assert!(a <= a, "{:?}, {:?}", a, b);
2956 - assert!(b <= b, "{:?}, {:?}", a, b);
2957 + assert!(a <= a, "{:?}, {:?}", a, b);
2958 + assert!(b <= b, "{:?}, {:?}", a, b);
2962 /// Tests PartialOrd for `a` and `b` where `a <= b` is true.
2963 @@ -38,8 +45,8 @@ pub fn test_le<T>(
2964 assert!(a <= b, "{:?}, {:?}", a, b);
2965 assert!(b >= a, "{:?}, {:?}", a, b);
2967 - assert!(a == b || a < b, "{:?}, {:?}", a, b);
2968 - assert!(a == b || b > a, "{:?}, {:?}", a, b);
2969 + assert!(a <= b, "{:?}, {:?}", a, b);
2970 + assert!(b >= a, "{:?}, {:?}", a, b);
2973 assert!(!(a < b), "{:?}, {:?}", a, b);
2974 diff --git third_party/rust/packed_simd/src/v128.rs third_party/rust/packed_simd/src/v128.rs
2975 index 1d0282dc4278..7949f6619a4f 100644
2976 --- third_party/rust/packed_simd/src/v128.rs
2977 +++ third_party/rust/packed_simd/src/v128.rs
2979 //! 128-bit wide vector types
2985 -impl_i!([i8; 16]: i8x16, m8x16 | i8 | test_v128 |
2986 +impl_i!([i8; 16]: i8x16, m8x16 | i8, u16 | test_v128 |
2987 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
2989 /// A 128-bit vector with 16 `i8` lanes.
2991 -impl_u!([u8; 16]: u8x16, m8x16 | u8 | test_v128 |
2992 +impl_u!([u8; 16]: u8x16, m8x16 | u8, u16 | test_v128 |
2993 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
2995 /// A 128-bit vector with 16 `u8` lanes.
2997 -impl_m!([m8; 16]: m8x16 | i8 | test_v128 |
2998 +impl_m!([m8; 16]: m8x16 | i8, u16 | test_v128 |
2999 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
3001 /// A 128-bit vector mask with 16 `m8` lanes.
3004 -impl_i!([i16; 8]: i16x8, m16x8 | i16 | test_v128 | x0, x1, x2, x3, x4, x5, x6, x7 |
3005 +impl_i!([i16; 8]: i16x8, m16x8 | i16, u8 | test_v128 | x0, x1, x2, x3, x4, x5, x6, x7 |
3007 /// A 128-bit vector with 8 `i16` lanes.
3009 -impl_u!([u16; 8]: u16x8, m16x8 | u16| test_v128 | x0, x1, x2, x3, x4, x5, x6, x7 |
3010 +impl_u!([u16; 8]: u16x8, m16x8 | u16, u8 | test_v128 | x0, x1, x2, x3, x4, x5, x6, x7 |
3012 /// A 128-bit vector with 8 `u16` lanes.
3014 -impl_m!([m16; 8]: m16x8 | i16 | test_v128 | x0, x1, x2, x3, x4, x5, x6, x7 |
3015 +impl_m!([m16; 8]: m16x8 | i16, u8 | test_v128 | x0, x1, x2, x3, x4, x5, x6, x7 |
3017 /// A 128-bit vector mask with 8 `m16` lanes.
3020 -impl_i!([i32; 4]: i32x4, m32x4 | i32 | test_v128 | x0, x1, x2, x3 |
3021 +impl_i!([i32; 4]: i32x4, m32x4 | i32, u8 | test_v128 | x0, x1, x2, x3 |
3022 From: i8x4, u8x4, i16x4, u16x4 |
3023 /// A 128-bit vector with 4 `i32` lanes.
3025 -impl_u!([u32; 4]: u32x4, m32x4 | u32| test_v128 | x0, x1, x2, x3 |
3026 +impl_u!([u32; 4]: u32x4, m32x4 | u32, u8 | test_v128 | x0, x1, x2, x3 |
3028 /// A 128-bit vector with 4 `u32` lanes.
3030 @@ -44,16 +44,16 @@ impl_f!([f32; 4]: f32x4, m32x4 | f32 | test_v128 | x0, x1, x2, x3 |
3031 From: i8x4, u8x4, i16x4, u16x4 |
3032 /// A 128-bit vector with 4 `f32` lanes.
3034 -impl_m!([m32; 4]: m32x4 | i32 | test_v128 | x0, x1, x2, x3 |
3035 +impl_m!([m32; 4]: m32x4 | i32, u8 | test_v128 | x0, x1, x2, x3 |
3036 From: m8x4, m16x4, m64x4 |
3037 /// A 128-bit vector mask with 4 `m32` lanes.
3040 -impl_i!([i64; 2]: i64x2, m64x2 | i64 | test_v128 | x0, x1 |
3041 +impl_i!([i64; 2]: i64x2, m64x2 | i64, u8 | test_v128 | x0, x1 |
3042 From: i8x2, u8x2, i16x2, u16x2, i32x2, u32x2 |
3043 /// A 128-bit vector with 2 `i64` lanes.
3045 -impl_u!([u64; 2]: u64x2, m64x2 | u64 | test_v128 | x0, x1 |
3046 +impl_u!([u64; 2]: u64x2, m64x2 | u64, u8 | test_v128 | x0, x1 |
3047 From: u8x2, u16x2, u32x2 |
3048 /// A 128-bit vector with 2 `u64` lanes.
3050 @@ -61,20 +61,20 @@ impl_f!([f64; 2]: f64x2, m64x2 | f64 | test_v128 | x0, x1 |
3051 From: i8x2, u8x2, i16x2, u16x2, i32x2, u32x2, f32x2 |
3052 /// A 128-bit vector with 2 `f64` lanes.
3054 -impl_m!([m64; 2]: m64x2 | i64 | test_v128 | x0, x1 |
3055 +impl_m!([m64; 2]: m64x2 | i64, u8 | test_v128 | x0, x1 |
3056 From: m8x2, m16x2, m32x2, m128x2 |
3057 /// A 128-bit vector mask with 2 `m64` lanes.
3060 -impl_i!([i128; 1]: i128x1, m128x1 | i128 | test_v128 | x0 |
3061 +impl_i!([i128; 1]: i128x1, m128x1 | i128, u8 | test_v128 | x0 |
3062 From: /*i8x1, u8x1, i16x1, u16x1, i32x1, u32x1, i64x1, u64x1 */ | // FIXME: unary small vector types
3063 /// A 128-bit vector with 1 `i128` lane.
3065 -impl_u!([u128; 1]: u128x1, m128x1 | u128 | test_v128 | x0 |
3066 +impl_u!([u128; 1]: u128x1, m128x1 | u128, u8 | test_v128 | x0 |
3067 From: /*u8x1, u16x1, u32x1, u64x1 */ | // FIXME: unary small vector types
3068 /// A 128-bit vector with 1 `u128` lane.
3070 -impl_m!([m128; 1]: m128x1 | i128 | test_v128 | x0 |
3071 +impl_m!([m128; 1]: m128x1 | i128, u8 | test_v128 | x0 |
3072 From: /*m8x1, m16x1, m32x1, m64x1 */ | // FIXME: unary small vector types
3073 /// A 128-bit vector mask with 1 `m128` lane.
3075 diff --git third_party/rust/packed_simd/src/v16.rs third_party/rust/packed_simd/src/v16.rs
3076 index 67a3832d2530..4ca5afb2a7d5 100644
3077 --- third_party/rust/packed_simd/src/v16.rs
3078 +++ third_party/rust/packed_simd/src/v16.rs
3083 -impl_i!([i8; 2]: i8x2, m8x2 | i8 | test_v16 | x0, x1 |
3084 +impl_i!([i8; 2]: i8x2, m8x2 | i8, u8 | test_v16 | x0, x1 |
3086 /// A 16-bit vector with 2 `i8` lanes.
3088 -impl_u!([u8; 2]: u8x2, m8x2 | u8 | test_v16 | x0, x1 |
3089 +impl_u!([u8; 2]: u8x2, m8x2 | u8, u8 | test_v16 | x0, x1 |
3091 /// A 16-bit vector with 2 `u8` lanes.
3093 -impl_m!([m8; 2]: m8x2 | i8 | test_v16 | x0, x1 |
3094 +impl_m!([m8; 2]: m8x2 | i8, u8 | test_v16 | x0, x1 |
3095 From: m16x2, m32x2, m64x2, m128x2 |
3096 /// A 16-bit vector mask with 2 `m8` lanes.
3098 diff --git third_party/rust/packed_simd/src/v256.rs third_party/rust/packed_simd/src/v256.rs
3099 index 6b59336f68b6..f0c3bc281383 100644
3100 --- third_party/rust/packed_simd/src/v256.rs
3101 +++ third_party/rust/packed_simd/src/v256.rs
3103 //! 256-bit wide vector types
3109 -impl_i!([i8; 32]: i8x32, m8x32 | i8 | test_v256 |
3110 +impl_i!([i8; 32]: i8x32, m8x32 | i8, u32 | test_v256 |
3111 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3112 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31 |
3114 /// A 256-bit vector with 32 `i8` lanes.
3116 -impl_u!([u8; 32]: u8x32, m8x32 | u8 | test_v256 |
3117 +impl_u!([u8; 32]: u8x32, m8x32 | u8, u32 | test_v256 |
3118 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3119 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31 |
3121 /// A 256-bit vector with 32 `u8` lanes.
3123 -impl_m!([m8; 32]: m8x32 | i8 | test_v256 |
3124 +impl_m!([m8; 32]: m8x32 | i8, u32 | test_v256 |
3125 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3126 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31 |
3128 /// A 256-bit vector mask with 32 `m8` lanes.
3131 -impl_i!([i16; 16]: i16x16, m16x16 | i16 | test_v256 |
3132 +impl_i!([i16; 16]: i16x16, m16x16 | i16, u16 | test_v256 |
3133 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
3134 From: i8x16, u8x16 |
3135 /// A 256-bit vector with 16 `i16` lanes.
3137 -impl_u!([u16; 16]: u16x16, m16x16 | u16 | test_v256 |
3138 +impl_u!([u16; 16]: u16x16, m16x16 | u16, u16 | test_v256 |
3139 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
3141 /// A 256-bit vector with 16 `u16` lanes.
3143 -impl_m!([m16; 16]: m16x16 | i16 | test_v256 |
3144 +impl_m!([m16; 16]: m16x16 | i16, u16 | test_v256 |
3145 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
3147 /// A 256-bit vector mask with 16 `m16` lanes.
3150 -impl_i!([i32; 8]: i32x8, m32x8 | i32 | test_v256 | x0, x1, x2, x3, x4, x5, x6, x7 |
3151 +impl_i!([i32; 8]: i32x8, m32x8 | i32, u8 | test_v256 | x0, x1, x2, x3, x4, x5, x6, x7 |
3152 From: i8x8, u8x8, i16x8, u16x8 |
3153 /// A 256-bit vector with 8 `i32` lanes.
3155 -impl_u!([u32; 8]: u32x8, m32x8 | u32 | test_v256 | x0, x1, x2, x3, x4, x5, x6, x7 |
3156 +impl_u!([u32; 8]: u32x8, m32x8 | u32, u8 | test_v256 | x0, x1, x2, x3, x4, x5, x6, x7 |
3158 /// A 256-bit vector with 8 `u32` lanes.
3160 @@ -50,16 +50,16 @@ impl_f!([f32; 8]: f32x8, m32x8 | f32 | test_v256 | x0, x1, x2, x3, x4, x5, x6, x
3161 From: i8x8, u8x8, i16x8, u16x8 |
3162 /// A 256-bit vector with 8 `f32` lanes.
3164 -impl_m!([m32; 8]: m32x8 | i32 | test_v256 | x0, x1, x2, x3, x4, x5, x6, x7 |
3165 +impl_m!([m32; 8]: m32x8 | i32, u8 | test_v256 | x0, x1, x2, x3, x4, x5, x6, x7 |
3167 /// A 256-bit vector mask with 8 `m32` lanes.
3170 -impl_i!([i64; 4]: i64x4, m64x4 | i64 | test_v256 | x0, x1, x2, x3 |
3171 +impl_i!([i64; 4]: i64x4, m64x4 | i64, u8 | test_v256 | x0, x1, x2, x3 |
3172 From: i8x4, u8x4, i16x4, u16x4, i32x4, u32x4 |
3173 /// A 256-bit vector with 4 `i64` lanes.
3175 -impl_u!([u64; 4]: u64x4, m64x4 | u64 | test_v256 | x0, x1, x2, x3 |
3176 +impl_u!([u64; 4]: u64x4, m64x4 | u64, u8 | test_v256 | x0, x1, x2, x3 |
3177 From: u8x4, u16x4, u32x4 |
3178 /// A 256-bit vector with 4 `u64` lanes.
3180 @@ -67,20 +67,20 @@ impl_f!([f64; 4]: f64x4, m64x4 | f64 | test_v256 | x0, x1, x2, x3 |
3181 From: i8x4, u8x4, i16x4, u16x4, i32x4, u32x4, f32x4 |
3182 /// A 256-bit vector with 4 `f64` lanes.
3184 -impl_m!([m64; 4]: m64x4 | i64 | test_v256 | x0, x1, x2, x3 |
3185 +impl_m!([m64; 4]: m64x4 | i64, u8 | test_v256 | x0, x1, x2, x3 |
3186 From: m8x4, m16x4, m32x4 |
3187 /// A 256-bit vector mask with 4 `m64` lanes.
3190 -impl_i!([i128; 2]: i128x2, m128x2 | i128 | test_v256 | x0, x1 |
3191 +impl_i!([i128; 2]: i128x2, m128x2 | i128, u8 | test_v256 | x0, x1 |
3192 From: i8x2, u8x2, i16x2, u16x2, i32x2, u32x2, i64x2, u64x2 |
3193 /// A 256-bit vector with 2 `i128` lanes.
3195 -impl_u!([u128; 2]: u128x2, m128x2 | u128 | test_v256 | x0, x1 |
3196 +impl_u!([u128; 2]: u128x2, m128x2 | u128, u8 | test_v256 | x0, x1 |
3197 From: u8x2, u16x2, u32x2, u64x2 |
3198 /// A 256-bit vector with 2 `u128` lanes.
3200 -impl_m!([m128; 2]: m128x2 | i128 | test_v256 | x0, x1 |
3201 +impl_m!([m128; 2]: m128x2 | i128, u8 | test_v256 | x0, x1 |
3202 From: m8x2, m16x2, m32x2, m64x2 |
3203 /// A 256-bit vector mask with 2 `m128` lanes.
3205 diff --git third_party/rust/packed_simd/src/v32.rs third_party/rust/packed_simd/src/v32.rs
3206 index 09cef9bdd472..75a1838e5e0e 100644
3207 --- third_party/rust/packed_simd/src/v32.rs
3208 +++ third_party/rust/packed_simd/src/v32.rs
3213 -impl_i!([i8; 4]: i8x4, m8x4 | i8 | test_v32 | x0, x1, x2, x3 |
3214 +impl_i!([i8; 4]: i8x4, m8x4 | i8, u8 | test_v32 | x0, x1, x2, x3 |
3216 /// A 32-bit vector with 4 `i8` lanes.
3218 -impl_u!([u8; 4]: u8x4, m8x4 | u8 | test_v32 | x0, x1, x2, x3 |
3219 +impl_u!([u8; 4]: u8x4, m8x4 | u8, u8 | test_v32 | x0, x1, x2, x3 |
3221 /// A 32-bit vector with 4 `u8` lanes.
3223 -impl_m!([m8; 4]: m8x4 | i8 | test_v32 | x0, x1, x2, x3 |
3224 +impl_m!([m8; 4]: m8x4 | i8, u8 | test_v32 | x0, x1, x2, x3 |
3225 From: m16x4, m32x4, m64x4 |
3226 /// A 32-bit vector mask with 4 `m8` lanes.
3229 -impl_i!([i16; 2]: i16x2, m16x2 | i16 | test_v32 | x0, x1 |
3230 +impl_i!([i16; 2]: i16x2, m16x2 | i16, u8 | test_v32 | x0, x1 |
3232 /// A 32-bit vector with 2 `i16` lanes.
3234 -impl_u!([u16; 2]: u16x2, m16x2 | u16 | test_v32 | x0, x1 |
3235 +impl_u!([u16; 2]: u16x2, m16x2 | u16, u8 | test_v32 | x0, x1 |
3237 /// A 32-bit vector with 2 `u16` lanes.
3239 -impl_m!([m16; 2]: m16x2 | i16 | test_v32 | x0, x1 |
3240 +impl_m!([m16; 2]: m16x2 | i16, u8 | test_v32 | x0, x1 |
3241 From: m8x2, m32x2, m64x2, m128x2 |
3242 /// A 32-bit vector mask with 2 `m16` lanes.
3244 diff --git third_party/rust/packed_simd/src/v512.rs third_party/rust/packed_simd/src/v512.rs
3245 index b1714aded369..4c8c71338aca 100644
3246 --- third_party/rust/packed_simd/src/v512.rs
3247 +++ third_party/rust/packed_simd/src/v512.rs
3249 //! 512-bit wide vector types
3255 -impl_i!([i8; 64]: i8x64, m8x64 | i8 | test_v512 |
3256 +impl_i!([i8; 64]: i8x64, m8x64 | i8, u64 | test_v512 |
3257 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3258 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31,
3259 x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47,
3260 @@ -11,7 +11,7 @@ impl_i!([i8; 64]: i8x64, m8x64 | i8 | test_v512 |
3262 /// A 512-bit vector with 64 `i8` lanes.
3264 -impl_u!([u8; 64]: u8x64, m8x64 | u8 | test_v512 |
3265 +impl_u!([u8; 64]: u8x64, m8x64 | u8, u64 | test_v512 |
3266 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3267 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31,
3268 x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47,
3269 @@ -19,7 +19,7 @@ impl_u!([u8; 64]: u8x64, m8x64 | u8 | test_v512 |
3271 /// A 512-bit vector with 64 `u8` lanes.
3273 -impl_m!([m8; 64]: m8x64 | i8 | test_v512 |
3274 +impl_m!([m8; 64]: m8x64 | i8, u64 | test_v512 |
3275 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3276 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31,
3277 x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47,
3278 @@ -28,31 +28,31 @@ impl_m!([m8; 64]: m8x64 | i8 | test_v512 |
3279 /// A 512-bit vector mask with 64 `m8` lanes.
3282 -impl_i!([i16; 32]: i16x32, m16x32 | i16 | test_v512 |
3283 +impl_i!([i16; 32]: i16x32, m16x32 | i16, u32 | test_v512 |
3284 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3285 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31 |
3286 From: i8x32, u8x32 |
3287 /// A 512-bit vector with 32 `i16` lanes.
3289 -impl_u!([u16; 32]: u16x32, m16x32 | u16 | test_v512 |
3290 +impl_u!([u16; 32]: u16x32, m16x32 | u16, u32 | test_v512 |
3291 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3292 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31 |
3294 /// A 512-bit vector with 32 `u16` lanes.
3296 -impl_m!([m16; 32]: m16x32 | i16 | test_v512 |
3297 +impl_m!([m16; 32]: m16x32 | i16, u32 | test_v512 |
3298 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15,
3299 x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31 |
3301 /// A 512-bit vector mask with 32 `m16` lanes.
3304 -impl_i!([i32; 16]: i32x16, m32x16 | i32 | test_v512 |
3305 +impl_i!([i32; 16]: i32x16, m32x16 | i32, u16 | test_v512 |
3306 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
3307 From: i8x16, u8x16, i16x16, u16x16 |
3308 /// A 512-bit vector with 16 `i32` lanes.
3310 -impl_u!([u32; 16]: u32x16, m32x16 | u32 | test_v512 |
3311 +impl_u!([u32; 16]: u32x16, m32x16 | u32, u16 | test_v512 |
3312 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
3313 From: u8x16, u16x16 |
3314 /// A 512-bit vector with 16 `u32` lanes.
3315 @@ -62,17 +62,17 @@ impl_f!([f32; 16]: f32x16, m32x16 | f32 | test_v512 |
3316 From: i8x16, u8x16, i16x16, u16x16 |
3317 /// A 512-bit vector with 16 `f32` lanes.
3319 -impl_m!([m32; 16]: m32x16 | i32 | test_v512 |
3320 +impl_m!([m32; 16]: m32x16 | i32, u16 | test_v512 |
3321 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 |
3322 From: m8x16, m16x16 |
3323 /// A 512-bit vector mask with 16 `m32` lanes.
3326 -impl_i!([i64; 8]: i64x8, m64x8 | i64 | test_v512 | x0, x1, x2, x3, x4, x5, x6, x7 |
3327 +impl_i!([i64; 8]: i64x8, m64x8 | i64, u8 | test_v512 | x0, x1, x2, x3, x4, x5, x6, x7 |
3328 From: i8x8, u8x8, i16x8, u16x8, i32x8, u32x8 |
3329 /// A 512-bit vector with 8 `i64` lanes.
3331 -impl_u!([u64; 8]: u64x8, m64x8 | u64 | test_v512 | x0, x1, x2, x3, x4, x5, x6, x7 |
3332 +impl_u!([u64; 8]: u64x8, m64x8 | u64, u8 | test_v512 | x0, x1, x2, x3, x4, x5, x6, x7 |
3333 From: u8x8, u16x8, u32x8 |
3334 /// A 512-bit vector with 8 `u64` lanes.
3336 @@ -80,20 +80,20 @@ impl_f!([f64; 8]: f64x8, m64x8 | f64 | test_v512 | x0, x1, x2, x3, x4, x5, x6, x
3337 From: i8x8, u8x8, i16x8, u16x8, i32x8, u32x8, f32x8 |
3338 /// A 512-bit vector with 8 `f64` lanes.
3340 -impl_m!([m64; 8]: m64x8 | i64 | test_v512 | x0, x1, x2, x3, x4, x5, x6, x7 |
3341 +impl_m!([m64; 8]: m64x8 | i64, u8 | test_v512 | x0, x1, x2, x3, x4, x5, x6, x7 |
3342 From: m8x8, m16x8, m32x8 |
3343 /// A 512-bit vector mask with 8 `m64` lanes.
3346 -impl_i!([i128; 4]: i128x4, m128x4 | i128 | test_v512 | x0, x1, x2, x3 |
3347 +impl_i!([i128; 4]: i128x4, m128x4 | i128, u8 | test_v512 | x0, x1, x2, x3 |
3348 From: i8x4, u8x4, i16x4, u16x4, i32x4, u32x4, i64x4, u64x4 |
3349 /// A 512-bit vector with 4 `i128` lanes.
3351 -impl_u!([u128; 4]: u128x4, m128x4 | u128 | test_v512 | x0, x1, x2, x3 |
3352 +impl_u!([u128; 4]: u128x4, m128x4 | u128, u8 | test_v512 | x0, x1, x2, x3 |
3353 From: u8x4, u16x4, u32x4, u64x4 |
3354 /// A 512-bit vector with 4 `u128` lanes.
3356 -impl_m!([m128; 4]: m128x4 | i128 | test_v512 | x0, x1, x2, x3 |
3357 +impl_m!([m128; 4]: m128x4 | i128, u8 | test_v512 | x0, x1, x2, x3 |
3358 From: m8x4, m16x4, m32x4, m64x4 |
3359 /// A 512-bit vector mask with 4 `m128` lanes.
3361 diff --git third_party/rust/packed_simd/src/v64.rs third_party/rust/packed_simd/src/v64.rs
3362 index 1ee6219c040b..bf6b9de61005 100644
3363 --- third_party/rust/packed_simd/src/v64.rs
3364 +++ third_party/rust/packed_simd/src/v64.rs
3366 //! 64-bit wide vector types
3372 -impl_i!([i8; 8]: i8x8, m8x8 | i8 | test_v64 | x0, x1, x2, x3, x4, x5, x6, x7 |
3373 +impl_i!([i8; 8]: i8x8, m8x8 | i8, u8 | test_v64 | x0, x1, x2, x3, x4, x5, x6, x7 |
3375 /// A 64-bit vector with 8 `i8` lanes.
3377 -impl_u!([u8; 8]: u8x8, m8x8 | u8 | test_v64 | x0, x1, x2, x3, x4, x5, x6, x7 |
3378 +impl_u!([u8; 8]: u8x8, m8x8 | u8, u8 | test_v64 | x0, x1, x2, x3, x4, x5, x6, x7 |
3380 /// A 64-bit vector with 8 `u8` lanes.
3382 -impl_m!([m8; 8]: m8x8 | i8 | test_v64 | x0, x1, x2, x3, x4, x5, x6, x7 |
3383 +impl_m!([m8; 8]: m8x8 | i8, u8 | test_v64 | x0, x1, x2, x3, x4, x5, x6, x7 |
3384 From: m16x8, m32x8 |
3385 /// A 64-bit vector mask with 8 `m8` lanes.
3388 -impl_i!([i16; 4]: i16x4, m16x4 | i16 | test_v64 | x0, x1, x2, x3 |
3389 +impl_i!([i16; 4]: i16x4, m16x4 | i16, u8 | test_v64 | x0, x1, x2, x3 |
3391 /// A 64-bit vector with 4 `i16` lanes.
3393 -impl_u!([u16; 4]: u16x4, m16x4 | u16 | test_v64 | x0, x1, x2, x3 |
3394 +impl_u!([u16; 4]: u16x4, m16x4 | u16, u8 | test_v64 | x0, x1, x2, x3 |
3396 /// A 64-bit vector with 4 `u16` lanes.
3398 -impl_m!([m16; 4]: m16x4 | i16 | test_v64 | x0, x1, x2, x3 |
3399 +impl_m!([m16; 4]: m16x4 | i16, u8 | test_v64 | x0, x1, x2, x3 |
3400 From: m8x4, m32x4, m64x4 |
3401 /// A 64-bit vector mask with 4 `m16` lanes.
3404 -impl_i!([i32; 2]: i32x2, m32x2 | i32 | test_v64 | x0, x1 |
3405 +impl_i!([i32; 2]: i32x2, m32x2 | i32, u8 | test_v64 | x0, x1 |
3406 From: i8x2, u8x2, i16x2, u16x2 |
3407 /// A 64-bit vector with 2 `i32` lanes.
3409 -impl_u!([u32; 2]: u32x2, m32x2 | u32 | test_v64 | x0, x1 |
3410 +impl_u!([u32; 2]: u32x2, m32x2 | u32, u8 | test_v64 | x0, x1 |
3412 /// A 64-bit vector with 2 `u32` lanes.
3414 -impl_m!([m32; 2]: m32x2 | i32 | test_v64 | x0, x1 |
3415 +impl_m!([m32; 2]: m32x2 | i32, u8 | test_v64 | x0, x1 |
3416 From: m8x2, m16x2, m64x2, m128x2 |
3417 /// A 64-bit vector mask with 2 `m32` lanes.
3419 @@ -47,15 +47,15 @@ impl_f!([f32; 2]: f32x2, m32x2 | f32 | test_v64 | x0, x1 |
3423 -impl_i!([i64; 1]: i64x1, m64x1 | i64 | test_v64 | x0 |
3424 +impl_i!([i64; 1]: i64x1, m64x1 | i64, u8 | test_v64 | x0 |
3425 From: /*i8x1, u8x1, i16x1, u16x1, i32x1, u32x1*/ | // FIXME: primitive to vector conversion
3426 /// A 64-bit vector with 1 `i64` lanes.
3428 -impl_u!([u64; 1]: u64x1, m64x1 | u64 | test_v64 | x0 |
3429 +impl_u!([u64; 1]: u64x1, m64x1 | u64, u8 | test_v64 | x0 |
3430 From: /*u8x1, u16x1, u32x1*/ | // FIXME: primitive to vector conversion
3431 /// A 64-bit vector with 1 `u64` lanes.
3433 -impl_m!([m64; 1]: m64x1 | i64 | test_v64 | x0 |
3434 +impl_m!([m64; 1]: m64x1 | i64, u8 | test_v64 | x0 |
3435 From: /*m8x1, m16x1, m32x1, */ m128x1 | // FIXME: unary small vector types
3436 /// A 64-bit vector mask with 1 `m64` lanes.
3438 diff --git third_party/rust/packed_simd/src/vPtr.rs third_party/rust/packed_simd/src/vPtr.rs
3439 index fe9fb28ffa89..e34cb170eb1c 100644
3440 --- third_party/rust/packed_simd/src/vPtr.rs
3441 +++ third_party/rust/packed_simd/src/vPtr.rs
3443 //! Vectors of pointers
3449 diff --git third_party/rust/packed_simd/src/vSize.rs third_party/rust/packed_simd/src/vSize.rs
3450 index 5594323372b4..b5d891006138 100644
3451 --- third_party/rust/packed_simd/src/vSize.rs
3452 +++ third_party/rust/packed_simd/src/vSize.rs
3454 use crate::codegen::pointer_sized_int::{isize_, usize_};
3457 -impl_i!([isize; 2]: isizex2, msizex2 | isize_ | test_v128 |
3458 +impl_i!([isize; 2]: isizex2, msizex2 | isize_, u8 | test_v128 |
3461 /// A vector with 2 `isize` lanes.
3464 -impl_u!([usize; 2]: usizex2, msizex2 | usize_ | test_v128 |
3465 +impl_u!([usize; 2]: usizex2, msizex2 | usize_, u8 | test_v128 |
3468 /// A vector with 2 `usize` lanes.
3470 -impl_m!([msize; 2]: msizex2 | isize_ | test_v128 |
3471 +impl_m!([msize; 2]: msizex2 | isize_, u8 | test_v128 |
3474 /// A vector mask with 2 `msize` lanes.
3477 -impl_i!([isize; 4]: isizex4, msizex4 | isize_ | test_v256 |
3478 +impl_i!([isize; 4]: isizex4, msizex4 | isize_, u8 | test_v256 |
3481 /// A vector with 4 `isize` lanes.
3483 -impl_u!([usize; 4]: usizex4, msizex4 | usize_ | test_v256 |
3484 +impl_u!([usize; 4]: usizex4, msizex4 | usize_, u8 | test_v256 |
3487 /// A vector with 4 `usize` lanes.
3489 -impl_m!([msize; 4]: msizex4 | isize_ | test_v256 |
3490 +impl_m!([msize; 4]: msizex4 | isize_, u8 | test_v256 |
3493 /// A vector mask with 4 `msize` lanes.
3496 -impl_i!([isize; 8]: isizex8, msizex8 | isize_ | test_v512 |
3497 +impl_i!([isize; 8]: isizex8, msizex8 | isize_, u8 | test_v512 |
3498 x0, x1, x2, x3, x4, x5, x6, x7 |
3500 - /// A vector with 4 `isize` lanes.
3501 + /// A vector with 8 `isize` lanes.
3503 -impl_u!([usize; 8]: usizex8, msizex8 | usize_ | test_v512 |
3504 +impl_u!([usize; 8]: usizex8, msizex8 | usize_, u8 | test_v512 |
3505 x0, x1, x2, x3, x4, x5, x6, x7 |
3507 /// A vector with 8 `usize` lanes.
3509 -impl_m!([msize; 8]: msizex8 | isize_ | test_v512 |
3510 +impl_m!([msize; 8]: msizex8 | isize_, u8 | test_v512 |
3511 x0, x1, x2, x3, x4, x5, x6, x7 |
3513 /// A vector mask with 8 `msize` lanes.
3514 diff --git third_party/rust/packed_simd/tests/endianness.rs third_party/rust/packed_simd/tests/endianness.rs
3515 index 1e6b4f354301..31fb7073afb3 100644
3516 --- third_party/rust/packed_simd/tests/endianness.rs
3517 +++ third_party/rust/packed_simd/tests/endianness.rs
3518 @@ -17,7 +17,7 @@ fn endian_indexing() {
3519 #[cfg_attr(not(target_arch = "wasm32"), test)]
3520 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
3521 fn endian_bitcasts() {
3522 - #[cfg_attr(rustfmt, rustfmt_skip)]
3525 0, 1, 2, 3, 4, 5, 6, 7,
3526 8, 9, 10, 11, 12, 13, 14, 15,
3527 @@ -34,13 +34,13 @@ fn endian_bitcasts() {
3528 #[cfg_attr(not(target_arch = "wasm32"), test)]
3529 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
3531 - #[cfg_attr(rustfmt, rustfmt_skip)]
3534 0, 1, 2, 3, 4, 5, 6, 7,
3535 8, 9, 10, 11, 12, 13, 14, 15,
3537 let t: i16x16 = x.into(); // simd_cast
3538 - #[cfg_attr(rustfmt, rustfmt_skip)]
3540 let e = i16x16::new(
3541 0, 1, 2, 3, 4, 5, 6, 7,
3542 8, 9, 10, 11, 12, 13, 14, 15,
3543 @@ -51,7 +51,7 @@ fn endian_casts() {
3544 #[cfg_attr(not(target_arch = "wasm32"), test)]
3545 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
3546 fn endian_load_and_stores() {
3547 - #[cfg_attr(rustfmt, rustfmt_skip)]
3550 0, 1, 2, 3, 4, 5, 6, 7,
3551 8, 9, 10, 11, 12, 13, 14, 15,
3552 @@ -82,10 +82,15 @@ fn endian_array_union() {
3555 let x: [f32; 4] = unsafe { A { vec: f32x4::new(0., 1., 2., 3.) }.data };
3556 - assert_eq!(x[0], 0_f32);
3557 - assert_eq!(x[1], 1_f32);
3558 - assert_eq!(x[2], 2_f32);
3559 - assert_eq!(x[3], 3_f32);
3560 + // As all of these are integer values within the mantissa^1 range, it
3561 + // would be very unusual for them to actually fail to compare.
3562 + #[allow(clippy::float_cmp)]
3564 + assert_eq!(x[0], 0_f32);
3565 + assert_eq!(x[1], 1_f32);
3566 + assert_eq!(x[2], 2_f32);
3567 + assert_eq!(x[3], 3_f32);
3569 let y: f32x4 = unsafe { A { data: [3., 2., 1., 0.] }.vec };
3570 assert_eq!(y, f32x4::new(3., 2., 1., 0.));
3572 @@ -93,23 +98,23 @@ fn endian_array_union() {
3576 - #[cfg_attr(rustfmt, rustfmt_skip)]
3579 0, 1, 2, 3, 4, 5, 6, 7,
3580 8, 9, 10, 11, 12, 13, 14, 15,
3582 let x: [i8; 16] = unsafe { B { vec: x }.data };
3585 - assert_eq!(x[i], i as i8);
3586 + for (i, v) in x.iter().enumerate() {
3587 + assert_eq!(i as i8, *v);
3590 - #[cfg_attr(rustfmt, rustfmt_skip)]
3593 15, 14, 13, 12, 11, 19, 9, 8,
3594 7, 6, 5, 4, 3, 2, 1, 0
3596 - #[cfg_attr(rustfmt, rustfmt_skip)]
3599 15, 14, 13, 12, 11, 19, 9, 8,
3600 7, 6, 5, 4, 3, 2, 1, 0
3601 @@ -121,7 +126,7 @@ fn endian_array_union() {
3605 - #[cfg_attr(rustfmt, rustfmt_skip)]
3608 0, 1, 2, 3, 4, 5, 6, 7,
3609 8, 9, 10, 11, 12, 13, 14, 15,
3610 @@ -145,21 +150,26 @@ fn endian_tuple_access() {
3613 let x: F32x4T = unsafe { A { vec: f32x4::new(0., 1., 2., 3.) }.data };
3614 - assert_eq!(x.0, 0_f32);
3615 - assert_eq!(x.1, 1_f32);
3616 - assert_eq!(x.2, 2_f32);
3617 - assert_eq!(x.3, 3_f32);
3618 + // As all of these are integer values within the mantissa^1 range, it
3619 + // would be very unusual for them to actually fail to compare.
3620 + #[allow(clippy::float_cmp)]
3622 + assert_eq!(x.0, 0_f32);
3623 + assert_eq!(x.1, 1_f32);
3624 + assert_eq!(x.2, 2_f32);
3625 + assert_eq!(x.3, 3_f32);
3627 let y: f32x4 = unsafe { A { data: (3., 2., 1., 0.) }.vec };
3628 assert_eq!(y, f32x4::new(3., 2., 1., 0.));
3630 - #[cfg_attr(rustfmt, rustfmt_skip)]
3632 type I8x16T = (i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8);
3638 - #[cfg_attr(rustfmt, rustfmt_skip)]
3641 0, 1, 2, 3, 4, 5, 6, 7,
3642 8, 9, 10, 11, 12, 13, 14, 15,
3643 @@ -183,27 +193,27 @@ fn endian_tuple_access() {
3644 assert_eq!(x.14, 14);
3645 assert_eq!(x.15, 15);
3647 - #[cfg_attr(rustfmt, rustfmt_skip)]
3650 15, 14, 13, 12, 11, 10, 9, 8,
3651 7, 6, 5, 4, 3, 2, 1, 0
3653 let z: i8x16 = unsafe { B { data: y }.vec };
3654 - #[cfg_attr(rustfmt, rustfmt_skip)]
3657 15, 14, 13, 12, 11, 10, 9, 8,
3658 7, 6, 5, 4, 3, 2, 1, 0
3662 - #[cfg_attr(rustfmt, rustfmt_skip)]
3664 type I16x8T = (i16, i16, i16, i16, i16, i16, i16, i16);
3670 - #[cfg_attr(rustfmt, rustfmt_skip)]
3673 0, 1, 2, 3, 4, 5, 6, 7,
3674 8, 9, 10, 11, 12, 13, 14, 15,
3675 @@ -224,7 +234,7 @@ fn endian_tuple_access() {
3676 assert_eq!(x.6, e[6]);
3677 assert_eq!(x.7, e[7]);
3679 - #[cfg_attr(rustfmt, rustfmt_skip)]
3682 #[derive(Copy ,Clone)]
3683 pub struct Tup(pub i8, pub i8, pub i16, pub i8, pub i8, pub i16,
3684 @@ -235,7 +245,7 @@ fn endian_tuple_access() {
3688 - #[cfg_attr(rustfmt, rustfmt_skip)]
3691 0, 1, 2, 3, 4, 5, 6, 7,
3692 8, 9, 10, 11, 12, 13, 14, 15,
3695 [FILE:11510:patches/patch-bug292127]
3696 --- comm/ldap/c-sdk/include/ldap.h~
3697 +++ comm/ldap/c-sdk/include/ldap.h
3702 +/* rename symbols to not clash with openldap (bug 292127) */
3703 +#define ldap_abandon moz_ldap_abandon
3704 +#define ldap_abandon_ext moz_ldap_abandon_ext
3705 +#define ldap_abandoned moz_ldap_abandoned
3706 +#define ldap_add moz_ldap_add
3707 +#define ldap_add_ext moz_ldap_add_ext
3708 +#define ldap_add_ext_s moz_ldap_add_ext_s
3709 +#define ldap_add_result_entry moz_ldap_add_result_entry
3710 +#define ldap_add_s moz_ldap_add_s
3711 +#define ldap_ber_free moz_ldap_ber_free
3712 +#define ldap_bind moz_ldap_bind
3713 +#define ldap_bind_s moz_ldap_bind_s
3714 +#define ldap_build_filter moz_ldap_build_filter
3715 +#define ldap_cache_flush moz_ldap_cache_flush
3716 +#define ldap_charray_add moz_ldap_charray_add
3717 +#define ldap_charray_dup moz_ldap_charray_dup
3718 +#define ldap_charray_free moz_ldap_charray_free
3719 +#define ldap_charray_inlist moz_ldap_charray_inlist
3720 +#define ldap_charray_merge moz_ldap_charray_merge
3721 +#define ldap_charray_position moz_ldap_charray_position
3722 +#define ldap_compare moz_ldap_compare
3723 +#define ldap_compare_ext moz_ldap_compare_ext
3724 +#define ldap_compare_ext_s moz_ldap_compare_ext_s
3725 +#define ldap_compare_s moz_ldap_compare_s
3726 +#define ldap_control_free moz_ldap_control_free
3727 +#define ldap_controls_free moz_ldap_controls_free
3728 +#define ldap_count_entries moz_ldap_count_entries
3729 +#define ldap_count_messages moz_ldap_count_messages
3730 +#define ldap_count_references moz_ldap_count_references
3731 +#define ldap_count_values moz_ldap_count_values
3732 +#define ldap_count_values_len moz_ldap_count_values_len
3733 +#define ldap_create_authzid_control moz_ldap_create_authzid_control
3734 +#define ldap_create_filter moz_ldap_create_filter
3735 +#define ldap_create_geteffectiveRights_control moz_ldap_create_geteffectiveRights_control
3736 +#define ldap_create_passwordpolicy_control moz_ldap_create_passwordpolicy_control
3737 +#define ldap_create_passwordpolicy_control_ext moz_ldap_create_passwordpolicy_control_ext
3738 +#define ldap_create_persistentsearch_control moz_ldap_create_persistentsearch_control
3739 +#define ldap_create_proxiedauth_control moz_ldap_create_proxiedauth_control
3740 +#define ldap_create_proxyauth_control moz_ldap_create_proxyauth_control
3741 +#define ldap_create_sort_control moz_ldap_create_sort_control
3742 +#define ldap_create_sort_keylist moz_ldap_create_sort_keylist
3743 +#define ldap_create_userstatus_control moz_ldap_create_userstatus_control
3744 +#define ldap_create_virtuallist_control moz_ldap_create_virtuallist_control
3745 +#define ldap_delete moz_ldap_delete
3746 +#define ldap_delete_ext moz_ldap_delete_ext
3747 +#define ldap_delete_ext_s moz_ldap_delete_ext_s
3748 +#define ldap_delete_result_entry moz_ldap_delete_result_entry
3749 +#define ldap_delete_s moz_ldap_delete_s
3750 +#define ldap_dn2ufn moz_ldap_dn2ufn
3751 +#define ldap_entry2html moz_ldap_entry2html
3752 +#define ldap_entry2html_search moz_ldap_entry2html_search
3753 +#define ldap_entry2text moz_ldap_entry2text
3754 +#define ldap_entry2text_search moz_ldap_entry2text_search
3755 +#define ldap_err2string moz_ldap_err2string
3756 +#define ldap_errlist moz_ldap_errlist
3757 +#define ldap_explode moz_ldap_explode
3758 +#define ldap_explode_dn moz_ldap_explode_dn
3759 +#define ldap_explode_dns moz_ldap_explode_dns
3760 +#define ldap_explode_rdn moz_ldap_explode_rdn
3761 +#define ldap_extended_operation moz_ldap_extended_operation
3762 +#define ldap_extended_operation_s moz_ldap_extended_operation_s
3763 +#define ldap_find_control moz_ldap_find_control
3764 +#define ldap_first_attribute moz_ldap_first_attribute
3765 +#define ldap_first_disptmpl moz_ldap_first_disptmpl
3766 +#define ldap_first_entry moz_ldap_first_entry
3767 +#define ldap_first_message moz_ldap_first_message
3768 +#define ldap_first_reference moz_ldap_first_reference
3769 +#define ldap_first_searchobj moz_ldap_first_searchobj
3770 +#define ldap_first_tmplcol moz_ldap_first_tmplcol
3771 +#define ldap_first_tmplrow moz_ldap_first_tmplrow
3772 +#define ldap_free_friendlymap moz_ldap_free_friendlymap
3773 +#define ldap_free_searchprefs moz_ldap_free_searchprefs
3774 +#define ldap_free_sort_keylist moz_ldap_free_sort_keylist
3775 +#define ldap_free_templates moz_ldap_free_templates
3776 +#define ldap_free_urldesc moz_ldap_free_urldesc
3777 +#define ldap_friendly_name moz_ldap_friendly_name
3778 +#define ldap_get_dn moz_ldap_get_dn
3779 +#define ldap_get_entry_controls moz_ldap_get_entry_controls
3780 +#define ldap_get_lang_values moz_ldap_get_lang_values
3781 +#define ldap_get_lang_values_len moz_ldap_get_lang_values_len
3782 +#define ldap_get_lderrno moz_ldap_get_lderrno
3783 +#define ldap_get_option moz_ldap_get_option
3784 +#define ldap_get_values moz_ldap_get_values
3785 +#define ldap_get_values_len moz_ldap_get_values_len
3786 +#define ldap_getfilter_free moz_ldap_getfilter_free
3787 +#define ldap_getfirstfilter moz_ldap_getfirstfilter
3788 +#define ldap_getnextfilter moz_ldap_getnextfilter
3789 +#define ldap_init moz_ldap_init
3790 +#define ldap_init_getfilter moz_ldap_init_getfilter
3791 +#define ldap_init_getfilter_buf moz_ldap_init_getfilter_buf
3792 +#define ldap_init_searchprefs moz_ldap_init_searchprefs
3793 +#define ldap_init_searchprefs_buf moz_ldap_init_searchprefs_buf
3794 +#define ldap_init_templates moz_ldap_init_templates
3795 +#define ldap_init_templates_buf moz_ldap_init_templates_buf
3796 +#define ldap_is_dns_dn moz_ldap_is_dns_dn
3797 +#define ldap_is_ldap_url moz_ldap_is_ldap_url
3798 +#define ldap_keysort_entries moz_ldap_keysort_entries
3799 +#define ldap_ld_free moz_ldap_ld_free
3800 +#define ldap_memcache_abandon moz_ldap_memcache_abandon
3801 +#define ldap_memcache_append moz_ldap_memcache_append
3802 +#define ldap_memcache_createkey moz_ldap_memcache_createkey
3803 +#define ldap_memcache_destroy moz_ldap_memcache_destroy
3804 +#define ldap_memcache_flush moz_ldap_memcache_flush
3805 +#define ldap_memcache_flush_results moz_ldap_memcache_flush_results
3806 +#define ldap_memcache_get moz_ldap_memcache_get
3807 +#define ldap_memcache_init moz_ldap_memcache_init
3808 +#define ldap_memcache_new moz_ldap_memcache_new
3809 +#define ldap_memcache_result moz_ldap_memcache_result
3810 +#define ldap_memcache_set moz_ldap_memcache_set
3811 +#define ldap_memcache_update moz_ldap_memcache_update
3812 +#define ldap_memfree moz_ldap_memfree
3813 +#define ldap_modify moz_ldap_modify
3814 +#define ldap_modify_ext moz_ldap_modify_ext
3815 +#define ldap_modify_ext_s moz_ldap_modify_ext_s
3816 +#define ldap_modify_s moz_ldap_modify_s
3817 +#define ldap_modrdn moz_ldap_modrdn
3818 +#define ldap_modrdn2 moz_ldap_modrdn2
3819 +#define ldap_modrdn2_s moz_ldap_modrdn2_s
3820 +#define ldap_modrdn_s moz_ldap_modrdn_s
3821 +#define ldap_mods_free moz_ldap_mods_free
3822 +#define ldap_msgdelete moz_ldap_msgdelete
3823 +#define ldap_msgfree moz_ldap_msgfree
3824 +#define ldap_msgid moz_ldap_msgid
3825 +#define ldap_msgtype moz_ldap_msgtype
3826 +#define ldap_multisort_entries moz_ldap_multisort_entries
3827 +#define ldap_name2template moz_ldap_name2template
3828 +#define ldap_next_attribute moz_ldap_next_attribute
3829 +#define ldap_next_disptmpl moz_ldap_next_disptmpl
3830 +#define ldap_next_entry moz_ldap_next_entry
3831 +#define ldap_next_message moz_ldap_next_message
3832 +#define ldap_next_reference moz_ldap_next_reference
3833 +#define ldap_next_searchobj moz_ldap_next_searchobj
3834 +#define ldap_next_tmplcol moz_ldap_next_tmplcol
3835 +#define ldap_next_tmplrow moz_ldap_next_tmplrow
3836 +#define ldap_oc2template moz_ldap_oc2template
3837 +#define ldap_open moz_ldap_open
3838 +#define ldap_parse_authzid_control moz_ldap_parse_authzid_control
3839 +#define ldap_parse_entrychange_control moz_ldap_parse_entrychange_control
3840 +#define ldap_parse_extended_result moz_ldap_parse_extended_result
3841 +#define ldap_parse_passwd moz_ldap_parse_passwd
3842 +#define ldap_parse_passwordpolicy_control moz_ldap_parse_passwordpolicy_control
3843 +#define ldap_parse_passwordpolicy_control_ext moz_ldap_parse_passwordpolicy_control_ext
3844 +#define ldap_parse_reference moz_ldap_parse_reference
3845 +#define ldap_parse_result moz_ldap_parse_result
3846 +#define ldap_parse_sasl_bind_result moz_ldap_parse_sasl_bind_result
3847 +#define ldap_parse_sort_control moz_ldap_parse_sort_control
3848 +#define ldap_parse_userstatus_control moz_ldap_parse_userstatus_control
3849 +#define ldap_parse_virtuallist_control moz_ldap_parse_virtuallist_control
3850 +#define ldap_parse_whoami moz_ldap_parse_whoami
3851 +#define ldap_passwd moz_ldap_passwd
3852 +#define ldap_passwd_s moz_ldap_passwd_s
3853 +#define ldap_passwordpolicy_err2txt moz_ldap_passwordpolicy_err2txt
3854 +#define ldap_perror moz_ldap_perror
3855 +#define ldap_rename moz_ldap_rename
3856 +#define ldap_rename_s moz_ldap_rename_s
3857 +#define ldap_result moz_ldap_result
3858 +#define ldap_result2error moz_ldap_result2error
3859 +#define ldap_sasl_bind moz_ldap_sasl_bind
3860 +#define ldap_sasl_bind_s moz_ldap_sasl_bind_s
3861 +#define ldap_sasl_interactive_bind_ext_s moz_ldap_sasl_interactive_bind_ext_s
3862 +#define ldap_sasl_interactive_bind_s moz_ldap_sasl_interactive_bind_s
3863 +#define ldap_search moz_ldap_search
3864 +#define ldap_search_ext moz_ldap_search_ext
3865 +#define ldap_search_ext_s moz_ldap_search_ext_s
3866 +#define ldap_search_s moz_ldap_search_s
3867 +#define ldap_search_st moz_ldap_search_st
3868 +#define ldap_set_filter_additions moz_ldap_set_filter_additions
3869 +#define ldap_set_lderrno moz_ldap_set_lderrno
3870 +#define ldap_set_option moz_ldap_set_option
3871 +#define ldap_set_rebind_proc moz_ldap_set_rebind_proc
3872 +#define ldap_setfilteraffixes moz_ldap_setfilteraffixes
3873 +#define ldap_simple_bind moz_ldap_simple_bind
3874 +#define ldap_simple_bind_s moz_ldap_simple_bind_s
3875 +#define ldap_sort_entries moz_ldap_sort_entries
3876 +#define ldap_sort_strcasecmp moz_ldap_sort_strcasecmp
3877 +#define ldap_sort_values moz_ldap_sort_values
3878 +#define ldap_start_tls_s moz_ldap_start_tls_s
3879 +#define ldap_str2charray moz_ldap_str2charray
3880 +#define ldap_tmplattrs moz_ldap_tmplattrs
3881 +#define ldap_tmplerr2string moz_ldap_tmplerr2string
3882 +#define ldap_tmplerrlist moz_ldap_tmplerrlist
3883 +#define ldap_ufn_search_c moz_ldap_ufn_search_c
3884 +#define ldap_ufn_search_ct moz_ldap_ufn_search_ct
3885 +#define ldap_ufn_search_ctx moz_ldap_ufn_search_ctx
3886 +#define ldap_ufn_search_s moz_ldap_ufn_search_s
3887 +#define ldap_ufn_setfilter moz_ldap_ufn_setfilter
3888 +#define ldap_ufn_setprefix moz_ldap_ufn_setprefix
3889 +#define ldap_ufn_timeout moz_ldap_ufn_timeout
3890 +#define ldap_unbind moz_ldap_unbind
3891 +#define ldap_unbind_ext moz_ldap_unbind_ext
3892 +#define ldap_unbind_s moz_ldap_unbind_s
3893 +#define ldap_url_parse moz_ldap_url_parse
3894 +#define ldap_url_parse_no_defaults moz_ldap_url_parse_no_defaults
3895 +#define ldap_url_search moz_ldap_url_search
3896 +#define ldap_url_search_s moz_ldap_url_search_s
3897 +#define ldap_url_search_st moz_ldap_url_search_st
3898 +#define ldap_utf8characters moz_ldap_utf8characters
3899 +#define ldap_utf8copy moz_ldap_utf8copy
3900 +#define ldap_utf8getcc moz_ldap_utf8getcc
3901 +#define ldap_utf8isalnum moz_ldap_utf8isalnum
3902 +#define ldap_utf8isalpha moz_ldap_utf8isalpha
3903 +#define ldap_utf8isdigit moz_ldap_utf8isdigit
3904 +#define ldap_utf8isspace moz_ldap_utf8isspace
3905 +#define ldap_utf8isxdigit moz_ldap_utf8isxdigit
3906 +#define ldap_utf8len moz_ldap_utf8len
3907 +#define ldap_utf8next moz_ldap_utf8next
3908 +#define ldap_utf8prev moz_ldap_utf8prev
3909 +#define ldap_utf8strtok_r moz_ldap_utf8strtok_r
3910 +#define ldap_vals2html moz_ldap_vals2html
3911 +#define ldap_vals2text moz_ldap_vals2text
3912 +#define ldap_value_free moz_ldap_value_free
3913 +#define ldap_value_free_len moz_ldap_value_free_len
3914 +#define ldap_version moz_ldap_version
3915 +#define ldap_whoami moz_ldap_whoami
3916 +#define ldap_whoami_s moz_ldap_whoami_s
3917 +#define ldap_x_calloc moz_ldap_x_calloc
3918 +#define ldap_x_free moz_ldap_x_free
3919 +#define ldap_x_hostlist_first moz_ldap_x_hostlist_first
3920 +#define ldap_x_hostlist_next moz_ldap_x_hostlist_next
3921 +#define ldap_x_hostlist_statusfree moz_ldap_x_hostlist_statusfree
3922 +#define ldap_x_malloc moz_ldap_x_malloc
3923 +#define ldap_x_realloc moz_ldap_x_realloc
3925 /* Standard LDAP API functions and declarations */
3926 #include "ldap-standard.h"
3930 [FILE:9904:patches/patch-bug847568]
3931 # Allow building against system-wide graphite2/harfbuzz.
3933 diff --git config/system-headers.mozbuild config/system-headers.mozbuild
3934 index 7620b4d00623..09d3db5ca8c0 100644
3935 --- config/system-headers.mozbuild
3936 +++ config/system-headers.mozbuild
3937 @@ -1299,6 +1299,19 @@ if CONFIG['MOZ_ENABLE_LIBPROXY']:
3941 +if CONFIG['MOZ_SYSTEM_GRAPHITE2']:
3942 + system_headers += [
3943 + 'graphite2/Font.h',
3944 + 'graphite2/Segment.h',
3947 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
3948 + system_headers += [
3949 + 'harfbuzz/hb-glib.h',
3950 + 'harfbuzz/hb-ot.h',
3954 if CONFIG['MOZ_SYSTEM_LIBVPX']:
3956 'vpx_mem/vpx_mem.h',
3957 diff --git dom/base/moz.build dom/base/moz.build
3958 index 8e19020315ae..2fcdbb6f7b42 100644
3959 --- dom/base/moz.build
3960 +++ dom/base/moz.build
3961 @@ -543,6 +543,9 @@ if CONFIG['MOZ_BUILD_APP'] in ['browser', 'mobile/android', 'xulrunner']:
3962 if CONFIG['MOZ_X11']:
3963 CXXFLAGS += CONFIG['TK_CFLAGS']
3965 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
3966 + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
3968 GeneratedFile('UseCounterList.h', script='gen-usecounters.py',
3969 entry_point='use_counter_list', inputs=['UseCounters.conf'])
3971 diff --git gfx/graphite2/geckoextra/moz.build gfx/graphite2/geckoextra/moz.build
3972 new file mode 100644
3973 index 0000000000000..24e8d7a03274a
3975 +++ gfx/graphite2/geckoextra/moz.build
3977 +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
3978 +# vim: set filetype=python:
3979 +# This Source Code Form is subject to the terms of the Mozilla Public
3980 +# License, v. 2.0. If a copy of the MPL was not distributed with this
3981 +# file, You can obtain one at http://mozilla.org/MPL/2.0/.
3983 +EXPORTS.graphite2 += [
3984 + 'include/GraphiteExtra.h',
3985 + 'include/GraphiteStructsForRLBox.h',
3988 +UNIFIED_SOURCES += [
3989 + '../geckoextra/src/GraphiteExtra.cpp',
3992 +CXXFLAGS += CONFIG['MOZ_GRAPHITE2_CFLAGS']
3994 +# Match bundled graphite2 configuration
3995 +AllowCompilerWarnings()
3997 +FINAL_LIBRARY = 'gkmedias'
3998 diff --git gfx/graphite2/moz-gr-update.sh gfx/graphite2/moz-gr-update.sh
3999 index faaab1b17971..04eff5f09882 100644
4000 --- gfx/graphite2/moz-gr-update.sh
4001 +++ gfx/graphite2/moz-gr-update.sh
4005 # Script used to update the Graphite2 library in the mozilla source tree
4006 +# and bump version for --with-system-graphite2
4008 # This script lives in gfx/graphite2, along with the library source,
4009 # but must be run from the top level of the mozilla-central tree.
4010 @@ -37,12 +38,16 @@ echo "See" $0 "for update procedure." >> gfx/graphite2/README.mozilla
4011 #find gfx/graphite2/ -name "*.cpp" -exec perl -p -i -e "s/<cstdio>/<stdio.h>/;s/Windows.h/windows.h/;" {} \;
4012 #find gfx/graphite2/ -name "*.h" -exec perl -p -i -e "s/<cstdio>/<stdio.h>/;s/Windows.h/windows.h/;" {} \;
4014 +# chase version for --with-system-graphite2
4015 +perl -p -i -e "s/[0-9]+\,[0-9]+\,[0-9]+/$RELEASE/ and tr/./,/ \
4016 + if /GR2_VERSION_REQUIRE/" old-configure.in
4018 # summarize what's been touched
4019 echo Updated to $RELEASE.
4020 echo Here is what changed in the gfx/graphite2 directory:
4023 -hg stat gfx/graphite2
4024 +hg stat old-configure.in gfx/graphite2
4027 echo If gfx/graphite2/src/files.mk has changed, please make corresponding
4028 diff --git gfx/harfbuzz/README-mozilla gfx/harfbuzz/README-mozilla
4029 index 22c76a7df020..a01490bd49ee 100644
4030 --- gfx/harfbuzz/README-mozilla
4031 +++ gfx/harfbuzz/README-mozilla
4032 @@ -15,3 +15,8 @@ from within the gfx/harfbuzz directory.
4034 If the collection of source files changes, manual updates to moz.build may be
4035 needed as we don't use the upstream makefiles.
4037 +The in-tree copy may be omitted during build by --with-system-harfbuzz.
4038 +Make sure to keep pkg-config version check within toolkit/moz.configure in sync
4039 +with checkout version or increment latest tag by one if it's not based
4040 +on upstream release.
4041 diff --git gfx/moz.build gfx/moz.build
4042 index 771f652e837a..3b358d84e384 100644
4045 @@ -13,6 +13,14 @@ with Files('wr/**'):
4046 if CONFIG['MOZ_TREE_CAIRO']:
4049 +if CONFIG['MOZ_SYSTEM_GRAPHITE2']:
4050 + DIRS += ['graphite2/geckoextra']
4052 + DIRS += ['graphite2/src' ]
4054 +if not CONFIG['MOZ_SYSTEM_HARFBUZZ']:
4055 + DIRS += ['harfbuzz/src']
4060 @@ -21,8 +29,6 @@ DIRS += [
4069 diff --git gfx/skia/generate_mozbuild.py gfx/skia/generate_mozbuild.py
4070 index e06ae3457a47..93faa61594a3 100755
4071 --- gfx/skia/generate_mozbuild.py
4072 +++ gfx/skia/generate_mozbuild.py
4073 @@ -117,6 +117,9 @@ if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'):
4074 '-Wno-unused-private-field',
4077 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
4078 + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
4080 if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk', 'android'):
4081 CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
4082 CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
4083 diff --git gfx/skia/moz.build gfx/skia/moz.build
4084 index 2118677ca3a8..e4978b413784 100644
4085 --- gfx/skia/moz.build
4086 +++ gfx/skia/moz.build
4087 @@ -493,6 +493,9 @@ if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'):
4088 '-Wno-unused-private-field',
4091 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
4092 + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
4094 if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk', 'android'):
4095 CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
4096 CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
4097 diff --git gfx/thebes/moz.build gfx/thebes/moz.build
4098 index 56f1b9fe3f4b..0ac1100b0df3 100644
4099 --- gfx/thebes/moz.build
4100 +++ gfx/thebes/moz.build
4101 @@ -284,7 +284,13 @@ if CONFIG['MOZ_WAYLAND']:
4103 LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES']
4105 -DEFINES['GRAPHITE2_STATIC'] = True
4106 +if CONFIG['MOZ_SYSTEM_GRAPHITE2']:
4107 + CXXFLAGS += CONFIG['MOZ_GRAPHITE2_CFLAGS']
4109 + DEFINES['GRAPHITE2_STATIC'] = True
4111 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
4112 + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
4114 if CONFIG['CC_TYPE'] == 'clang':
4115 # Suppress warnings from Skia header files.
4116 diff --git intl/unicharutil/util/moz.build intl/unicharutil/util/moz.build
4117 index cb1233c56d7e..06fb1f9f174b 100644
4118 --- intl/unicharutil/util/moz.build
4119 +++ intl/unicharutil/util/moz.build
4120 @@ -25,4 +25,7 @@ UNIFIED_SOURCES += [
4121 'nsUnicodeProperties.cpp',
4124 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
4125 + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
4127 FINAL_LIBRARY = 'xul'
4128 diff --git netwerk/dns/moz.build netwerk/dns/moz.build
4129 index 79c26e3e7001..c4d93bc5f7dc 100644
4130 --- netwerk/dns/moz.build
4131 +++ netwerk/dns/moz.build
4132 @@ -86,3 +86,6 @@ USE_LIBS += ['icu']
4134 if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
4135 CXXFLAGS += ['-Wno-error=shadow']
4137 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
4138 + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
4139 diff --git old-configure.in old-configure.in
4140 index 95a58b634593..b614eef85c89 100644
4141 --- old-configure.in
4142 +++ old-configure.in
4143 @@ -2639,6 +2639,27 @@ dnl ========================================================
4145 AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR)
4147 +dnl ========================================================
4148 +dnl Check for graphite2
4149 +dnl ========================================================
4150 +if test -n "$MOZ_SYSTEM_GRAPHITE2"; then
4151 + dnl graphite2.pc has bogus version, check manually
4152 + _SAVE_CFLAGS=$CFLAGS
4153 + CFLAGS="$CFLAGS $MOZ_GRAPHITE2_CFLAGS"
4154 + AC_TRY_COMPILE([ #include <graphite2/Font.h>
4155 + #define GR2_VERSION_REQUIRE(major,minor,bugfix) \
4156 + ( GR2_VERSION_MAJOR * 10000 + GR2_VERSION_MINOR \
4157 + * 100 + GR2_VERSION_BUGFIX >= \
4158 + (major) * 10000 + (minor) * 100 + (bugfix) )
4160 + #if !GR2_VERSION_REQUIRE(1,3,14)
4161 + #error "Insufficient graphite2 version."
4164 + [AC_MSG_ERROR([--with-system-graphite2 requested but no working libgraphite2 found])])
4165 + CFLAGS=$_SAVE_CFLAGS
4168 dnl ========================================================
4169 dnl Check for pixman and cairo
4170 dnl ========================================================
4171 diff --git toolkit/library/moz.build toolkit/library/moz.build
4172 index 24f940e1ed7e..079a575adec3 100644
4173 --- toolkit/library/moz.build
4174 +++ toolkit/library/moz.build
4175 @@ -248,6 +248,12 @@ if CONFIG['MOZ_SYSTEM_PNG']:
4176 if CONFIG['MOZ_SYSTEM_WEBP']:
4177 OS_LIBS += CONFIG['MOZ_WEBP_LIBS']
4179 +if CONFIG['MOZ_SYSTEM_GRAPHITE2']:
4180 + OS_LIBS += CONFIG['MOZ_GRAPHITE2_LIBS']
4182 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
4183 + OS_LIBS += CONFIG['MOZ_HARFBUZZ_LIBS']
4185 if CONFIG['MOZ_SYSTEM_LIBEVENT']:
4186 OS_LIBS += CONFIG['MOZ_LIBEVENT_LIBS']
4188 diff --git toolkit/moz.configure toolkit/moz.configure
4189 index 9297e4d6f501..d8e273887e4b 100644
4190 --- toolkit/moz.configure
4191 +++ toolkit/moz.configure
4192 @@ -937,6 +937,25 @@ add_old_configure_assignment('FT2_LIBS',
4193 add_old_configure_assignment('FT2_CFLAGS',
4197 +# ==============================================================
4198 +option('--with-system-graphite2',
4199 + help="Use system graphite2 (located with pkgconfig)")
4201 +system_graphite2 = pkg_check_modules('MOZ_GRAPHITE2', 'graphite2',
4202 + when='--with-system-graphite2')
4204 +set_config('MOZ_SYSTEM_GRAPHITE2', depends_if(system_graphite2)(lambda _: True))
4207 +# ==============================================================
4208 +option('--with-system-harfbuzz',
4209 + help="Use system harfbuzz (located with pkgconfig)")
4211 +system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 2.6.6',
4212 + when='--with-system-harfbuzz')
4214 +set_config('MOZ_SYSTEM_HARFBUZZ', depends_if(system_harfbuzz)(lambda _: True))
4216 # Remote agent (part of CDP based remote protocol)
4217 # ==============================================================
4220 [FILE:1292:patches/patch-comm_ldap_c-sdk_include_portable.h]
4221 --- comm/ldap/c-sdk/include/portable.h.orig 2020-05-21 20:31:05 UTC
4222 +++ comm/ldap/c-sdk/include/portable.h
4223 @@ -119,11 +119,15 @@
4224 # define OPENLOG_OPTIONS (LOG_PID | LOG_NOWAIT)
4227 +#ifdef __DragonFly__
4232 * some systems don't have the BSD re_comp and re_exec routines
4234 #ifndef NEED_BSDREGEX
4235 -# if (defined(SYSV) || defined(NETBSD) || defined(FREEBSD) || \
4236 +# if (defined(SYSV) || defined(NETBSD) || defined(FREEBSD) || defined(DRAGONFLY) || \
4237 defined(__OpenBSD__) || defined(linux) || defined(DARWIN)) && \
4239 # define NEED_BSDREGEX
4240 @@ -274,7 +278,7 @@ int strncasecmp(const char *, const char
4241 defined(SUNOS4) || defined(SNI) || defined(BSDI) || defined(NCR) || \
4242 defined(OSF1) || defined(NEC) || defined(VMS) || \
4243 (defined(HPUX10) && !defined(_REENTRANT)) || defined(HPUX11) || \
4244 - defined(UnixWare) || defined(NETBSD) || defined(FREEBSD) || \
4245 + defined(UnixWare) || defined(NETBSD) || defined(FREEBSD) || defined(DRAGONFLY) || \
4246 defined(OPENBSD) || (defined(LINUX) && __GLIBC__ < 2) || \
4247 (defined(AIX) && !defined(USE_REENTRANT_LIBC))
4248 # define GETHOSTBYNAME(n, r, b, l, e) gethostbyname(n)
4251 [FILE:421:patches/patch-comm_mail_app_nsMailApp.cpp]
4252 --- comm/mail/app/nsMailApp.cpp.orig 2020-07-13 18:10:03 UTC
4253 +++ comm/mail/app/nsMailApp.cpp
4254 @@ -306,6 +306,9 @@ int main(int argc, char* argv[], char* e
4258 + setenv("MOZ_GMP_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
4259 + setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
4261 #ifdef HAS_DLL_BLOCKLIST
4262 DllBlocklist_Initialize(gBlocklistInitFlags);
4266 [FILE:679:patches/patch-comm_third__party_botan_configure.py]
4267 --- comm/third_party/botan/configure.py.orig 2020-07-13 18:10:04 UTC
4268 +++ comm/third_party/botan/configure.py
4269 @@ -2936,11 +2936,7 @@ def set_defaults_for_unset_options(optio
4270 options.os = find_canonical_os_name(options.os)
4272 def deduce_compiler_type_from_cc_bin(cc_bin):
4273 - if cc_bin.find('clang') != -1 or cc_bin in ['emcc', 'em++']:
4275 - if cc_bin.find('-g++') != -1 or cc_bin.find('g++') != -1:
4280 if options.compiler is None and options.compiler_binary is not None:
4281 options.compiler = deduce_compiler_type_from_cc_bin(options.compiler_binary)
4284 [FILE:286:patches/patch-comm_third__party_botan_src_build-data_os_freebsd.txt]
4285 FreeBSD 11.3 doesn't have sys/auxv.h
4287 --- comm/third_party/botan/src/build-data/os/freebsd.txt.orig 2020-09-08 23:21:51 UTC
4288 +++ comm/third_party/botan/src/build-data/os/freebsd.txt
4289 @@ -11,7 +11,6 @@ dev_random
4299 [FILE:36325:patches/patch-cubeb-oss]
4300 https://github.com/kinetiknz/cubeb/pull/600
4302 --- dom/media/CubebUtils.cpp.orig 2020-08-19 02:08:51 UTC
4303 +++ dom/media/CubebUtils.cpp
4304 @@ -126,7 +126,7 @@ const char kBrandBundleURL[] = "chrome://branding/locale/brand.properties";
4306 const char* AUDIOSTREAM_BACKEND_ID_STR[] = {
4307 "jack", "pulse", "alsa", "audiounit", "audioqueue", "wasapi",
4308 - "winmm", "directsound", "sndio", "opensl", "audiotrack", "kai"};
4309 + "winmm", "directsound", "sndio", "opensl", "oss", "audiotrack", "kai"};
4310 /* Index for failures to create an audio stream the first time. */
4311 const int CUBEB_BACKEND_INIT_FAILURE_FIRST =
4312 ArrayLength(AUDIOSTREAM_BACKEND_ID_STR);
4313 --- media/libcubeb/src/moz.build.orig 2020-08-19 02:09:19 UTC
4314 +++ media/libcubeb/src/moz.build
4315 @@ -40,6 +40,12 @@ if CONFIG['MOZ_JACK']:
4317 DEFINES['USE_JACK'] = True
4319 +if CONFIG['OS_ARCH'] in ('DragonFly', 'FreeBSD', 'SunOS'):
4323 + DEFINES['USE_OSS'] = True
4325 if CONFIG['OS_ARCH'] == 'OpenBSD':
4328 --- media/libcubeb/src/cubeb.c.orig 2020-08-19 02:09:26 UTC
4329 +++ media/libcubeb/src/cubeb.c
4330 @@ -60,6 +60,9 @@ int sun_init(cubeb ** context, char const * context_name);
4331 #if defined(USE_OPENSL)
4332 int opensl_init(cubeb ** context, char const * context_name);
4334 +#if defined(USE_OSS)
4335 +int oss_init(cubeb ** context, char const * context_name);
4337 #if defined(USE_AUDIOTRACK)
4338 int audiotrack_init(cubeb ** context, char const * context_name);
4340 @@ -165,6 +168,10 @@ cubeb_init(cubeb ** context, char const * context_name, char const * backend_nam
4341 #if defined(USE_OPENSL)
4342 init_oneshot = opensl_init;
4344 + } else if (!strcmp(backend_name, "oss")) {
4345 +#if defined(USE_OSS)
4346 + init_oneshot = oss_init;
4348 } else if (!strcmp(backend_name, "audiotrack")) {
4349 #if defined(USE_AUDIOTRACK)
4350 init_oneshot = audiotrack_init;
4351 @@ -200,6 +207,9 @@ cubeb_init(cubeb ** context, char const * context_name, char const * backend_nam
4352 #if defined(USE_ALSA)
4355 +#if defined (USE_OSS)
4358 #if defined(USE_AUDIOUNIT_RUST)
4359 audiounit_rust_init,
4362 +++ media/libcubeb/src/cubeb_oss.c
4365 + * Copyright © 2019-2020 Nia Alarie <nia@NetBSD.org>
4366 + * Copyright © 2020 Ka Ho Ng <khng300@gmail.com>
4367 + * Copyright © 2020 The FreeBSD Foundation
4369 + * Portions of this software were developed by Ka Ho Ng
4370 + * under sponsorship from the FreeBSD Foundation.
4372 + * This program is made available under an ISC-style license. See the
4373 + * accompanying file LICENSE for details.
4376 +#if defined(__FreeBSD__) && __FreeBSD__ < 12
4377 +#define _WITH_GETLINE
4379 +#include <assert.h>
4381 +#include <limits.h>
4383 +#include <sys/types.h>
4384 +#include <sys/soundcard.h>
4385 +#include <sys/ioctl.h>
4387 +#include <unistd.h>
4388 +#include <pthread.h>
4389 +#include <stdbool.h>
4390 +#include <stdlib.h>
4392 +#include <string.h>
4394 +#include "cubeb/cubeb.h"
4395 +#include "cubeb_mixer.h"
4396 +#include "cubeb_strings.h"
4397 +#include "cubeb-internal.h"
4399 +/* Supported well by most hardware. */
4400 +#ifndef OSS_PREFER_RATE
4401 +#define OSS_PREFER_RATE (48000)
4404 +/* Standard acceptable minimum. */
4405 +#ifndef OSS_LATENCY_MS
4406 +#define OSS_LATENCY_MS (8)
4410 +#define OSS_NFRAGS (4)
4413 +#ifndef OSS_DEFAULT_DEVICE
4414 +#define OSS_DEFAULT_DEVICE "/dev/dsp"
4417 +#ifndef OSS_DEFAULT_MIXER
4418 +#define OSS_DEFAULT_MIXER "/dev/mixer"
4421 +#define ENV_AUDIO_DEVICE "AUDIO_DEVICE"
4423 +#ifndef OSS_MAX_CHANNELS
4424 +# if defined(__FreeBSD__) || defined(__DragonFly__)
4426 + * The current maximum number of channels supported
4427 + * on FreeBSD is 8.
4429 + * Reference: FreeBSD 12.1-RELEASE
4431 +# define OSS_MAX_CHANNELS (8)
4432 +# elif defined(__sun__)
4434 + * The current maximum number of channels supported
4435 + * on Illumos is 16.
4437 + * Reference: PSARC 2008/318
4439 +# define OSS_MAX_CHANNELS (16)
4441 +# define OSS_MAX_CHANNELS (2)
4445 +#if defined(__FreeBSD__) || defined(__DragonFly__)
4446 +#define SNDSTAT_BEGIN_STR "Installed devices:"
4447 +#define SNDSTAT_USER_BEGIN_STR "Installed devices from userspace:"
4448 +#define SNDSTAT_FV_BEGIN_STR "File Versions:"
4451 +static struct cubeb_ops const oss_ops;
4454 + struct cubeb_ops const * ops;
4456 + /* Our intern string store */
4457 + pthread_mutex_t mutex; /* protects devid_strs */
4458 + cubeb_strings *devid_strs;
4461 +struct oss_stream {
4462 + oss_devnode_t name;
4466 + struct stream_info {
4473 + unsigned int frame_size; /* precision in bytes * channels */
4477 +struct cubeb_stream {
4478 + struct cubeb * context;
4481 + bool doorbell; /* (m) */
4482 + pthread_cond_t doorbell_cv; /* (m) */
4483 + pthread_cond_t stopped_cv; /* (m) */
4484 + pthread_mutex_t mtx; /* Members protected by this should be marked (m) */
4485 + bool thread_created; /* (m) */
4486 + bool running; /* (m) */
4487 + bool destroying; /* (m) */
4488 + cubeb_state state; /* (m) */
4489 + float volume /* (m) */;
4490 + struct oss_stream play;
4491 + struct oss_stream record;
4492 + cubeb_data_callback data_cb;
4493 + cubeb_state_callback state_cb;
4494 + uint64_t frames_written /* (m) */;
4495 + unsigned int nfr; /* Number of frames allocated */
4496 + unsigned int nfrags;
4497 + unsigned int bufframes;
4500 +static char const *
4501 +oss_cubeb_devid_intern(cubeb *context, char const * devid)
4504 + pthread_mutex_lock(&context->mutex);
4505 + is = cubeb_strings_intern(context->devid_strs, devid);
4506 + pthread_mutex_unlock(&context->mutex);
4511 +oss_init(cubeb **context, char const *context_name) {
4514 + (void)context_name;
4515 + if ((c = calloc(1, sizeof(cubeb))) == NULL) {
4516 + return CUBEB_ERROR;
4519 + if (cubeb_strings_init(&c->devid_strs) == CUBEB_ERROR) {
4523 + if (pthread_mutex_init(&c->mutex, NULL) != 0) {
4527 + c->ops = &oss_ops;
4532 + cubeb_strings_destroy(c->devid_strs);
4534 + return CUBEB_ERROR;
4538 +oss_destroy(cubeb * context)
4540 + pthread_mutex_destroy(&context->mutex);
4541 + cubeb_strings_destroy(context->devid_strs);
4545 +static char const *
4546 +oss_get_backend_id(cubeb * context)
4552 +oss_get_preferred_sample_rate(cubeb * context, uint32_t * rate)
4556 + *rate = OSS_PREFER_RATE;
4561 +oss_get_max_channel_count(cubeb * context, uint32_t * max_channels)
4565 + *max_channels = OSS_MAX_CHANNELS;
4570 +oss_get_min_latency(cubeb * context, cubeb_stream_params params,
4571 + uint32_t * latency_frames)
4575 + *latency_frames = (OSS_LATENCY_MS * params.rate) / 1000;
4580 +oss_free_cubeb_device_info_strings(cubeb_device_info *cdi)
4582 + free((char *)cdi->device_id);
4583 + free((char *)cdi->friendly_name);
4584 + free((char *)cdi->group_id);
4585 + cdi->device_id = NULL;
4586 + cdi->friendly_name = NULL;
4587 + cdi->group_id = NULL;
4590 +#if defined(__FreeBSD__) || defined(__DragonFly__)
4592 + * Check if the specified DSP is okay for the purpose specified
4593 + * in type. Here type can only specify one operation each time
4594 + * this helper is called.
4596 + * Return 0 if OK, otherwise 1.
4599 +oss_probe_open(const char *dsppath, cubeb_device_type type,
4600 + int *fdp, oss_audioinfo *resai)
4604 + int oflags = (type == CUBEB_DEVICE_TYPE_INPUT) ? O_RDONLY : O_WRONLY;
4605 + int dspfd = open(dsppath, oflags);
4610 + error = ioctl(dspfd, SNDCTL_AUDIOINFO, &ai);
4625 +struct sndstat_info {
4626 + oss_devnode_t devname;
4628 + cubeb_device_type type;
4633 +oss_sndstat_line_parse(char *line, int is_ud, struct sndstat_info *sinfo)
4635 + char *matchptr = line, *n = NULL;
4636 + struct sndstat_info res;
4638 + memset(&res, 0, sizeof(res));
4640 + n = strchr(matchptr, ':');
4644 + unsigned int devunit;
4646 + if (sscanf(matchptr, "pcm%u: ", &devunit) < 1)
4649 + if (snprintf(res.devname, sizeof(res.devname), "/dev/dsp%u", devunit) < 1)
4652 + if (n - matchptr >= (ssize_t)(sizeof(res.devname) - strlen("/dev/")))
4655 + strlcpy(res.devname, "/dev/", sizeof(res.devname));
4656 + strncat(res.devname, matchptr, n - matchptr);
4660 + n = strchr(matchptr, '<');
4664 + n = strrchr(matchptr, '>');
4668 + res.desc = matchptr;
4671 + n = strchr(matchptr, '(');
4675 + n = strrchr(matchptr, ')');
4679 + if (!isdigit(matchptr[0])) {
4680 + if (strstr(matchptr, "play") != NULL)
4681 + res.type |= CUBEB_DEVICE_TYPE_OUTPUT;
4682 + if (strstr(matchptr, "rec") != NULL)
4683 + res.type |= CUBEB_DEVICE_TYPE_INPUT;
4686 + if (sscanf(matchptr, "%dp:%*dv/%dr:%*dv", &p, &r) != 2)
4689 + res.type |= CUBEB_DEVICE_TYPE_OUTPUT;
4691 + res.type |= CUBEB_DEVICE_TYPE_INPUT;
4694 + if (strstr(matchptr, "default") != NULL)
4695 + res.preferred = 1;
4705 + * XXX: On FreeBSD we have to rely on SNDCTL_CARDINFO to get all
4706 + * the usable audio devices currently, as SNDCTL_AUDIOINFO will
4707 + * never return directly usable audio device nodes.
4710 +oss_enumerate_devices(cubeb * context, cubeb_device_type type,
4711 + cubeb_device_collection * collection)
4713 + cubeb_device_info *devinfop = NULL;
4714 + char *line = NULL;
4715 + size_t linecap = 0;
4716 + FILE *sndstatfp = NULL;
4717 + int collection_cnt = 0;
4721 + devinfop = calloc(1, sizeof(cubeb_device_info));
4722 + if (devinfop == NULL)
4725 + sndstatfp = fopen("/dev/sndstat", "r");
4726 + if (sndstatfp == NULL)
4728 + while (getline(&line, &linecap, sndstatfp) > 0) {
4729 + const char *devid = NULL;
4730 + struct sndstat_info sinfo;
4733 + if (!strncmp(line, SNDSTAT_FV_BEGIN_STR, strlen(SNDSTAT_FV_BEGIN_STR))) {
4737 + if (!strncmp(line, SNDSTAT_BEGIN_STR, strlen(SNDSTAT_BEGIN_STR))) {
4742 + if (!strncmp(line, SNDSTAT_USER_BEGIN_STR, strlen(SNDSTAT_USER_BEGIN_STR))) {
4747 + if (skipall || isblank(line[0]))
4750 + if (oss_sndstat_line_parse(line, is_ud, &sinfo))
4753 + devinfop[collection_cnt].type = 0;
4754 + switch (sinfo.type) {
4755 + case CUBEB_DEVICE_TYPE_INPUT:
4756 + if (type & CUBEB_DEVICE_TYPE_OUTPUT)
4759 + case CUBEB_DEVICE_TYPE_OUTPUT:
4760 + if (type & CUBEB_DEVICE_TYPE_INPUT)
4767 + if (oss_probe_open(sinfo.devname, type, NULL, &ai))
4770 + devid = oss_cubeb_devid_intern(context, sinfo.devname);
4771 + if (devid == NULL)
4774 + devinfop[collection_cnt].device_id = strdup(sinfo.devname);
4775 + asprintf((char **)&devinfop[collection_cnt].friendly_name, "%s: %s",
4776 + sinfo.devname, sinfo.desc);
4777 + devinfop[collection_cnt].group_id = strdup(sinfo.devname);
4778 + devinfop[collection_cnt].vendor_name = NULL;
4779 + if (devinfop[collection_cnt].device_id == NULL ||
4780 + devinfop[collection_cnt].friendly_name == NULL ||
4781 + devinfop[collection_cnt].group_id == NULL) {
4782 + oss_free_cubeb_device_info_strings(&devinfop[collection_cnt]);
4786 + devinfop[collection_cnt].type = type;
4787 + devinfop[collection_cnt].devid = devid;
4788 + devinfop[collection_cnt].state = CUBEB_DEVICE_STATE_ENABLED;
4789 + devinfop[collection_cnt].preferred =
4790 + (sinfo.preferred) ? CUBEB_DEVICE_PREF_ALL : CUBEB_DEVICE_PREF_NONE;
4791 + devinfop[collection_cnt].format = CUBEB_DEVICE_FMT_S16NE;
4792 + devinfop[collection_cnt].default_format = CUBEB_DEVICE_FMT_S16NE;
4793 + devinfop[collection_cnt].max_channels = ai.max_channels;
4794 + devinfop[collection_cnt].default_rate = OSS_PREFER_RATE;
4795 + devinfop[collection_cnt].max_rate = ai.max_rate;
4796 + devinfop[collection_cnt].min_rate = ai.min_rate;
4797 + devinfop[collection_cnt].latency_lo = 0;
4798 + devinfop[collection_cnt].latency_hi = 0;
4802 + void *newp = reallocarray(devinfop, collection_cnt + 1,
4803 + sizeof(cubeb_device_info));
4810 + fclose(sndstatfp);
4812 + collection->count = collection_cnt;
4813 + collection->device = devinfop;
4820 + fclose(sndstatfp);
4822 + return CUBEB_ERROR;
4828 +oss_enumerate_devices(cubeb * context, cubeb_device_type type,
4829 + cubeb_device_collection * collection)
4833 + cubeb_device_info *devinfop = NULL;
4834 + int collection_cnt = 0;
4835 + int mixer_fd = -1;
4837 + mixer_fd = open(OSS_DEFAULT_MIXER, O_RDWR);
4838 + if (mixer_fd == -1) {
4839 + LOG("Failed to open mixer %s. errno: %d", OSS_DEFAULT_MIXER, errno);
4840 + return CUBEB_ERROR;
4843 + error = ioctl(mixer_fd, SNDCTL_SYSINFO, &si);
4845 + LOG("Failed to run SNDCTL_SYSINFO on mixer %s. errno: %d", OSS_DEFAULT_MIXER, errno);
4849 + devinfop = calloc(si.numaudios, sizeof(cubeb_device_info));
4850 + if (devinfop == NULL)
4853 + collection->count = 0;
4854 + for (i = 0; i < si.numaudios; i++) {
4856 + cubeb_device_info cdi = { 0 };
4857 + const char *devid = NULL;
4860 + error = ioctl(mixer_fd, SNDCTL_AUDIOINFO, &ai);
4864 + assert(ai.dev < si.numaudios);
4869 + switch (ai.caps & DSP_CAP_DUPLEX) {
4870 + case DSP_CAP_INPUT:
4871 + if (type & CUBEB_DEVICE_TYPE_OUTPUT)
4874 + case DSP_CAP_OUTPUT:
4875 + if (type & CUBEB_DEVICE_TYPE_INPUT)
4883 + devid = oss_cubeb_devid_intern(context, ai.devnode);
4884 + cdi.device_id = strdup(ai.name);
4885 + cdi.friendly_name = strdup(ai.name);
4886 + cdi.group_id = strdup(ai.name);
4887 + if (devid == NULL || cdi.device_id == NULL || cdi.friendly_name == NULL ||
4888 + cdi.group_id == NULL) {
4889 + oss_free_cubeb_device_info_strings(&cdi);
4893 + cdi.devid = devid;
4894 + cdi.vendor_name = NULL;
4895 + cdi.state = CUBEB_DEVICE_STATE_ENABLED;
4896 + cdi.preferred = CUBEB_DEVICE_PREF_NONE;
4897 + cdi.format = CUBEB_DEVICE_FMT_S16NE;
4898 + cdi.default_format = CUBEB_DEVICE_FMT_S16NE;
4899 + cdi.max_channels = ai.max_channels;
4900 + cdi.default_rate = OSS_PREFER_RATE;
4901 + cdi.max_rate = ai.max_rate;
4902 + cdi.min_rate = ai.min_rate;
4903 + cdi.latency_lo = 0;
4904 + cdi.latency_hi = 0;
4906 + devinfop[collection_cnt++] = cdi;
4909 + collection->count = collection_cnt;
4910 + collection->device = devinfop;
4912 + if (mixer_fd != -1)
4917 + if (mixer_fd != -1)
4920 + return CUBEB_ERROR;
4926 +oss_device_collection_destroy(cubeb * context,
4927 + cubeb_device_collection * collection)
4930 + for (i = 0; i < collection->count; i++) {
4931 + oss_free_cubeb_device_info_strings(&collection->device[i]);
4933 + free(collection->device);
4934 + collection->device = NULL;
4935 + collection->count = 0;
4939 +static unsigned int
4940 +oss_chn_from_cubeb(cubeb_channel chn)
4943 + case CHANNEL_FRONT_LEFT:
4945 + case CHANNEL_FRONT_RIGHT:
4947 + case CHANNEL_FRONT_CENTER:
4949 + case CHANNEL_LOW_FREQUENCY:
4951 + case CHANNEL_BACK_LEFT:
4953 + case CHANNEL_BACK_RIGHT:
4955 + case CHANNEL_SIDE_LEFT:
4957 + case CHANNEL_SIDE_RIGHT:
4960 + return CHID_UNDEF;
4964 +static unsigned long long
4965 +oss_cubeb_layout_to_chnorder(cubeb_channel_layout layout)
4967 + unsigned int i, nchns = 0;
4968 + unsigned long long chnorder = 0;
4970 + for (i = 0; layout; i++, layout >>= 1) {
4971 + unsigned long long chid = oss_chn_from_cubeb((layout & 1) << i);
4972 + if (chid == CHID_UNDEF)
4975 + chnorder |= (chid & 0xf) << nchns * 4;
4983 +oss_copy_params(int fd, cubeb_stream * stream, cubeb_stream_params * params,
4984 + struct stream_info * sinfo)
4986 + unsigned long long chnorder;
4988 + sinfo->channels = params->channels;
4989 + sinfo->sample_rate = params->rate;
4990 + switch (params->format) {
4991 + case CUBEB_SAMPLE_S16LE:
4992 + sinfo->fmt = AFMT_S16_LE;
4993 + sinfo->precision = 16;
4995 + case CUBEB_SAMPLE_S16BE:
4996 + sinfo->fmt = AFMT_S16_BE;
4997 + sinfo->precision = 16;
4999 + case CUBEB_SAMPLE_FLOAT32NE:
5000 + sinfo->fmt = AFMT_S32_NE;
5001 + sinfo->precision = 32;
5004 + LOG("Unsupported format");
5005 + return CUBEB_ERROR_INVALID_FORMAT;
5007 + if (ioctl(fd, SNDCTL_DSP_CHANNELS, &sinfo->channels) == -1) {
5008 + return CUBEB_ERROR;
5010 + if (ioctl(fd, SNDCTL_DSP_SETFMT, &sinfo->fmt) == -1) {
5011 + return CUBEB_ERROR;
5013 + if (ioctl(fd, SNDCTL_DSP_SPEED, &sinfo->sample_rate) == -1) {
5014 + return CUBEB_ERROR;
5016 + /* Mono layout is an exception */
5017 + if (params->layout != CUBEB_LAYOUT_UNDEFINED && params->layout != CUBEB_LAYOUT_MONO) {
5018 + chnorder = oss_cubeb_layout_to_chnorder(params->layout);
5019 + if (ioctl(fd, SNDCTL_DSP_SET_CHNORDER, &chnorder) == -1)
5020 + LOG("Non-fatal error %d occured when setting channel order.", errno);
5026 +oss_stream_stop(cubeb_stream * s)
5028 + pthread_mutex_lock(&s->mtx);
5029 + if (s->thread_created && s->running) {
5030 + s->running = false;
5031 + s->doorbell = false;
5032 + pthread_cond_wait(&s->stopped_cv, &s->mtx);
5034 + if (s->state != CUBEB_STATE_STOPPED) {
5035 + s->state = CUBEB_STATE_STOPPED;
5036 + pthread_mutex_unlock(&s->mtx);
5037 + s->state_cb(s, s->user_ptr, CUBEB_STATE_STOPPED);
5039 + pthread_mutex_unlock(&s->mtx);
5045 +oss_stream_destroy(cubeb_stream * s)
5047 + pthread_mutex_lock(&s->mtx);
5048 + if (s->thread_created) {
5049 + s->destroying = true;
5050 + s->doorbell = true;
5051 + pthread_cond_signal(&s->doorbell_cv);
5053 + pthread_mutex_unlock(&s->mtx);
5054 + pthread_join(s->thread, NULL);
5056 + pthread_cond_destroy(&s->doorbell_cv);
5057 + pthread_cond_destroy(&s->stopped_cv);
5058 + pthread_mutex_destroy(&s->mtx);
5059 + if (s->play.fd != -1) {
5060 + close(s->play.fd);
5062 + if (s->record.fd != -1) {
5063 + close(s->record.fd);
5065 + free(s->play.buf);
5066 + free(s->record.buf);
5071 +oss_float_to_linear32(void * buf, unsigned sample_count, float vol)
5074 + int32_t * out = buf;
5075 + int32_t * tail = out + sample_count;
5077 + while (out < tail) {
5078 + int64_t f = *(in++) * vol * 0x80000000LL;
5079 + if (f < -INT32_MAX)
5081 + else if (f > INT32_MAX)
5088 +oss_linear32_to_float(void * buf, unsigned sample_count)
5090 + int32_t * in = buf;
5091 + float * out = buf;
5092 + float * tail = out + sample_count;
5094 + while (out < tail) {
5095 + *(out++) = (1.0 / 0x80000000LL) * *(in++);
5100 +oss_linear16_set_vol(int16_t * buf, unsigned sample_count, float vol)
5103 + int32_t multiplier = vol * 0x8000;
5105 + for (i = 0; i < sample_count; ++i) {
5106 + buf[i] = (buf[i] * multiplier) >> 15;
5110 +/* 1 - Stopped by cubeb_stream_stop, otherwise 0 */
5112 +oss_audio_loop(cubeb_stream * s, cubeb_state *new_state)
5114 + cubeb_state state = CUBEB_STATE_STOPPED;
5117 + struct pollfd pfds[2];
5118 + unsigned int ppending, rpending;
5120 + pfds[0].fd = s->play.fd;
5121 + pfds[0].events = POLLOUT;
5122 + pfds[1].fd = s->record.fd;
5123 + pfds[1].events = POLLIN;
5126 + rpending = s->bufframes;
5128 + if (s->record.fd != -1) {
5129 + if (ioctl(s->record.fd, SNDCTL_DSP_SETTRIGGER, &trig)) {
5130 + LOG("Error %d occured when setting trigger on record fd", errno);
5131 + state = CUBEB_STATE_ERROR;
5134 + trig |= PCM_ENABLE_INPUT;
5135 + if (ioctl(s->record.fd, SNDCTL_DSP_SETTRIGGER, &trig)) {
5136 + LOG("Error %d occured when setting trigger on record fd", errno);
5137 + state = CUBEB_STATE_ERROR;
5140 + memset(s->record.buf, 0, s->bufframes * s->record.frame_size);
5146 + pthread_mutex_lock(&s->mtx);
5147 + if (!s->running || s->destroying) {
5148 + pthread_mutex_unlock(&s->mtx);
5151 + pthread_mutex_unlock(&s->mtx);
5152 + if (s->play.fd == -1 && s->record.fd == -1) {
5154 + * Stop here if the stream is not play & record stream,
5155 + * play-only stream or record-only stream
5161 + while ((s->bufframes - ppending) >= s->nfr && rpending >= s->nfr) {
5162 + long n = ((s->bufframes - ppending) < rpending) ? s->bufframes - ppending : rpending;
5163 + char *rptr = NULL, *pptr = NULL;
5164 + if (s->record.fd != -1)
5165 + rptr = (char *)s->record.buf;
5166 + if (s->play.fd != -1)
5167 + pptr = (char *)s->play.buf + ppending * s->play.frame_size;
5168 + if (s->record.fd != -1 && s->record.floating) {
5169 + oss_linear32_to_float(s->record.buf, s->record.info.channels * n);
5171 + nfr = s->data_cb(s, s->user_ptr, rptr, pptr, n);
5172 + if (nfr == CUBEB_ERROR) {
5173 + state = CUBEB_STATE_ERROR;
5179 + pthread_mutex_lock(&s->mtx);
5181 + pthread_mutex_unlock(&s->mtx);
5183 + if (s->play.floating) {
5184 + oss_float_to_linear32(pptr, s->play.info.channels * nfr, vol);
5186 + oss_linear16_set_vol((int16_t *)pptr, s->play.info.channels * nfr, vol);
5191 + assert(ppending <= s->bufframes);
5194 + assert(rpending >= nfr);
5196 + memmove(rptr, rptr + nfr * s->record.frame_size,
5197 + (s->bufframes - nfr) * s->record.frame_size);
5200 + if (s->play.fd != -1) {
5205 + * This is a record-only stream and number of frames
5206 + * returned from data_cb() is smaller than number
5207 + * of frames required to read. Stop here.
5210 + state = CUBEB_STATE_STOPPED;
5216 + ssize_t n, frames;
5219 + pfds[0].revents = 0;
5220 + pfds[1].revents = 0;
5222 + nfds = poll(pfds, 2, 1000);
5224 + if (errno == EINTR)
5226 + LOG("Error %d occured when polling playback and record fd", errno);
5227 + state = CUBEB_STATE_ERROR;
5229 + } else if (nfds == 0)
5232 + if ((pfds[0].revents & (POLLERR | POLLHUP)) ||
5233 + (pfds[1].revents & (POLLERR | POLLHUP))) {
5234 + LOG("Error occured on playback, record fds");
5235 + state = CUBEB_STATE_ERROR;
5239 + if (pfds[0].revents) {
5240 + while (ppending > 0) {
5241 + size_t bytes = ppending * s->play.frame_size;
5242 + if ((n = write(s->play.fd, (uint8_t *)s->play.buf, bytes)) < 0) {
5243 + if (errno == EINTR)
5245 + if (errno == EAGAIN) {
5250 + state = CUBEB_STATE_ERROR;
5253 + frames = n / s->play.frame_size;
5254 + pthread_mutex_lock(&s->mtx);
5255 + s->frames_written += frames;
5256 + pthread_mutex_unlock(&s->mtx);
5257 + ppending -= frames;
5258 + memmove(s->play.buf, (uint8_t *)s->play.buf + n,
5259 + (s->bufframes - frames) * s->play.frame_size);
5262 + if (pfds[1].revents) {
5263 + while (s->bufframes - rpending > 0) {
5264 + size_t bytes = (s->bufframes - rpending) * s->record.frame_size;
5265 + size_t read_ofs = rpending * s->record.frame_size;
5266 + if ((n = read(s->record.fd, (uint8_t *)s->record.buf + read_ofs, bytes)) < 0) {
5267 + if (errno == EINTR)
5269 + if (errno == EAGAIN)
5271 + state = CUBEB_STATE_ERROR;
5274 + frames = n / s->record.frame_size;
5275 + rpending += frames;
5279 + state = CUBEB_STATE_DRAINED;
5287 + pthread_mutex_lock(&s->mtx);
5288 + *new_state = s->state = state;
5289 + s->running = false;
5290 + pthread_mutex_unlock(&s->mtx);
5295 +oss_io_routine(void *arg)
5297 + cubeb_stream *s = arg;
5298 + cubeb_state new_state;
5302 + pthread_mutex_lock(&s->mtx);
5303 + if (s->destroying) {
5304 + pthread_mutex_unlock(&s->mtx);
5307 + pthread_mutex_unlock(&s->mtx);
5309 + stopped = oss_audio_loop(s, &new_state);
5310 + if (s->record.fd != -1)
5311 + ioctl(s->record.fd, SNDCTL_DSP_HALT_INPUT, NULL);
5313 + s->state_cb(s, s->user_ptr, new_state);
5315 + pthread_mutex_lock(&s->mtx);
5316 + pthread_cond_signal(&s->stopped_cv);
5317 + if (s->destroying) {
5318 + pthread_mutex_unlock(&s->mtx);
5321 + while (!s->doorbell) {
5322 + pthread_cond_wait(&s->doorbell_cv, &s->mtx);
5324 + s->doorbell = false;
5325 + pthread_mutex_unlock(&s->mtx);
5328 + pthread_mutex_lock(&s->mtx);
5329 + s->thread_created = false;
5330 + pthread_mutex_unlock(&s->mtx);
5335 +oss_calc_frag_shift(unsigned int frames, unsigned int frame_size)
5338 + int blksize = (frames * frame_size + OSS_NFRAGS - 1) / OSS_NFRAGS;
5339 + while ((1 << n) < blksize)
5345 +oss_get_frag_params(unsigned int shift)
5347 + return (OSS_NFRAGS << 16) | shift;
5351 +oss_stream_init(cubeb * context,
5352 + cubeb_stream ** stream,
5353 + char const * stream_name,
5354 + cubeb_devid input_device,
5355 + cubeb_stream_params * input_stream_params,
5356 + cubeb_devid output_device,
5357 + cubeb_stream_params * output_stream_params,
5358 + unsigned int latency_frames,
5359 + cubeb_data_callback data_callback,
5360 + cubeb_state_callback state_callback,
5363 + int ret = CUBEB_OK;
5364 + unsigned int playnfr = 0, recnfr = 0;
5365 + cubeb_stream *s = NULL;
5366 + const char *defdsp;
5368 + if (!(defdsp = getenv(ENV_AUDIO_DEVICE)) || *defdsp == '\0')
5369 + defdsp = OSS_DEFAULT_DEVICE;
5371 + (void)stream_name;
5372 + if ((s = calloc(1, sizeof(cubeb_stream))) == NULL) {
5373 + ret = CUBEB_ERROR;
5376 + s->state = CUBEB_STATE_STOPPED;
5377 + s->record.fd = s->play.fd = -1;
5378 + s->nfr = latency_frames;
5379 + if (input_device != NULL) {
5380 + strlcpy(s->record.name, input_device, sizeof(s->record.name));
5382 + strlcpy(s->record.name, defdsp, sizeof(s->record.name));
5384 + if (output_device != NULL) {
5385 + strlcpy(s->play.name, output_device, sizeof(s->play.name));
5387 + strlcpy(s->play.name, defdsp, sizeof(s->play.name));
5389 + if (input_stream_params != NULL) {
5390 + unsigned int nb_channels;
5391 + if (input_stream_params->prefs & CUBEB_STREAM_PREF_LOOPBACK) {
5392 + LOG("Loopback not supported");
5393 + ret = CUBEB_ERROR_NOT_SUPPORTED;
5396 + nb_channels = cubeb_channel_layout_nb_channels(input_stream_params->layout);
5397 + if (input_stream_params->layout != CUBEB_LAYOUT_UNDEFINED &&
5398 + nb_channels != input_stream_params->channels) {
5399 + LOG("input_stream_params->layout does not match input_stream_params->channels");
5400 + ret = CUBEB_ERROR_INVALID_PARAMETER;
5403 + if (s->record.fd == -1) {
5404 + if ((s->record.fd = open(s->record.name, O_RDONLY | O_NONBLOCK)) == -1) {
5405 + LOG("Audio device \"%s\" could not be opened as read-only",
5407 + ret = CUBEB_ERROR_DEVICE_UNAVAILABLE;
5411 + if ((ret = oss_copy_params(s->record.fd, s, input_stream_params,
5412 + &s->record.info)) != CUBEB_OK) {
5413 + LOG("Setting record params failed");
5416 + s->record.floating = (input_stream_params->format == CUBEB_SAMPLE_FLOAT32NE);
5417 + s->record.frame_size = s->record.info.channels * (s->record.info.precision / 8);
5418 + recnfr = (1 << oss_calc_frag_shift(s->nfr, s->record.frame_size)) / s->record.frame_size;
5420 + if (output_stream_params != NULL) {
5421 + unsigned int nb_channels;
5422 + if (output_stream_params->prefs & CUBEB_STREAM_PREF_LOOPBACK) {
5423 + LOG("Loopback not supported");
5424 + ret = CUBEB_ERROR_NOT_SUPPORTED;
5427 + nb_channels = cubeb_channel_layout_nb_channels(output_stream_params->layout);
5428 + if (output_stream_params->layout != CUBEB_LAYOUT_UNDEFINED &&
5429 + nb_channels != output_stream_params->channels) {
5430 + LOG("output_stream_params->layout does not match output_stream_params->channels");
5431 + ret = CUBEB_ERROR_INVALID_PARAMETER;
5434 + if (s->play.fd == -1) {
5435 + if ((s->play.fd = open(s->play.name, O_WRONLY | O_NONBLOCK)) == -1) {
5436 + LOG("Audio device \"%s\" could not be opened as write-only",
5438 + ret = CUBEB_ERROR_DEVICE_UNAVAILABLE;
5442 + if ((ret = oss_copy_params(s->play.fd, s, output_stream_params,
5443 + &s->play.info)) != CUBEB_OK) {
5444 + LOG("Setting play params failed");
5447 + s->play.floating = (output_stream_params->format == CUBEB_SAMPLE_FLOAT32NE);
5448 + s->play.frame_size = s->play.info.channels * (s->play.info.precision / 8);
5449 + playnfr = (1 << oss_calc_frag_shift(s->nfr, s->play.frame_size)) / s->play.frame_size;
5451 + /* Use the largest nframes among playing and recording streams */
5452 + s->nfr = (playnfr > recnfr) ? playnfr : recnfr;
5453 + s->nfrags = OSS_NFRAGS;
5454 + s->bufframes = s->nfr * s->nfrags;
5455 + if (s->play.fd != -1) {
5456 + int frag = oss_get_frag_params(oss_calc_frag_shift(s->nfr, s->play.frame_size));
5457 + if (ioctl(s->record.fd, SNDCTL_DSP_SETFRAGMENT, &frag))
5458 + LOG("Failed to set record fd with SNDCTL_DSP_SETFRAGMENT. frag: 0x%x",
5461 + if (s->record.fd != -1) {
5462 + int frag = oss_get_frag_params(oss_calc_frag_shift(s->nfr, s->record.frame_size));
5463 + if (ioctl(s->record.fd, SNDCTL_DSP_SETFRAGMENT, &frag))
5464 + LOG("Failed to set record fd with SNDCTL_DSP_SETFRAGMENT. frag: 0x%x",
5467 + s->context = context;
5469 + s->state_cb = state_callback;
5470 + s->data_cb = data_callback;
5471 + s->user_ptr = user_ptr;
5473 + if (pthread_mutex_init(&s->mtx, NULL) != 0) {
5474 + LOG("Failed to create mutex");
5477 + if (pthread_cond_init(&s->doorbell_cv, NULL) != 0) {
5478 + LOG("Failed to create cv");
5481 + if (pthread_cond_init(&s->stopped_cv, NULL) != 0) {
5482 + LOG("Failed to create cv");
5485 + s->doorbell = false;
5487 + if (s->play.fd != -1) {
5488 + if ((s->play.buf = calloc(s->bufframes, s->play.frame_size)) == NULL) {
5489 + ret = CUBEB_ERROR;
5493 + if (s->record.fd != -1) {
5494 + if ((s->record.buf = calloc(s->bufframes, s->record.frame_size)) == NULL) {
5495 + ret = CUBEB_ERROR;
5504 + oss_stream_destroy(s);
5510 +oss_stream_thr_create(cubeb_stream * s)
5512 + if (s->thread_created) {
5513 + s->doorbell = true;
5514 + pthread_cond_signal(&s->doorbell_cv);
5518 + if (pthread_create(&s->thread, NULL, oss_io_routine, s) != 0) {
5519 + LOG("Couldn't create thread");
5520 + return CUBEB_ERROR;
5527 +oss_stream_start(cubeb_stream * s)
5529 + s->state_cb(s, s->user_ptr, CUBEB_STATE_STARTED);
5530 + pthread_mutex_lock(&s->mtx);
5531 + /* Disallow starting an already started stream */
5532 + assert(!s->running && s->state != CUBEB_STATE_STARTED);
5533 + if (oss_stream_thr_create(s) != CUBEB_OK) {
5534 + pthread_mutex_unlock(&s->mtx);
5535 + s->state_cb(s, s->user_ptr, CUBEB_STATE_ERROR);
5536 + return CUBEB_ERROR;
5538 + s->state = CUBEB_STATE_STARTED;
5539 + s->thread_created = true;
5540 + s->running = true;
5541 + pthread_mutex_unlock(&s->mtx);
5546 +oss_stream_get_position(cubeb_stream * s, uint64_t * position)
5548 + pthread_mutex_lock(&s->mtx);
5549 + *position = s->frames_written;
5550 + pthread_mutex_unlock(&s->mtx);
5555 +oss_stream_get_latency(cubeb_stream * s, uint32_t * latency)
5559 + if (ioctl(s->play.fd, SNDCTL_DSP_GETODELAY, &delay) == -1) {
5560 + return CUBEB_ERROR;
5563 + /* Return number of frames there */
5564 + *latency = delay / s->play.frame_size;
5569 +oss_stream_set_volume(cubeb_stream * stream, float volume)
5573 + else if (volume > 1.0)
5575 + pthread_mutex_lock(&stream->mtx);
5576 + stream->volume = volume;
5577 + pthread_mutex_unlock(&stream->mtx);
5582 +oss_get_current_device(cubeb_stream * stream, cubeb_device ** const device)
5584 + *device = calloc(1, sizeof(cubeb_device));
5585 + if (*device == NULL) {
5586 + return CUBEB_ERROR;
5588 + (*device)->input_name = stream->record.fd != -1 ?
5589 + strdup(stream->record.name) : NULL;
5590 + (*device)->output_name = stream->play.fd != -1 ?
5591 + strdup(stream->play.name) : NULL;
5596 +oss_stream_device_destroy(cubeb_stream * stream, cubeb_device * device)
5599 + free(device->input_name);
5600 + free(device->output_name);
5605 +static struct cubeb_ops const oss_ops = {
5607 + .get_backend_id = oss_get_backend_id,
5608 + .get_max_channel_count = oss_get_max_channel_count,
5609 + .get_min_latency = oss_get_min_latency,
5610 + .get_preferred_sample_rate = oss_get_preferred_sample_rate,
5611 + .enumerate_devices = oss_enumerate_devices,
5612 + .device_collection_destroy = oss_device_collection_destroy,
5613 + .destroy = oss_destroy,
5614 + .stream_init = oss_stream_init,
5615 + .stream_destroy = oss_stream_destroy,
5616 + .stream_start = oss_stream_start,
5617 + .stream_stop = oss_stream_stop,
5618 + .stream_reset_default_device = NULL,
5619 + .stream_get_position = oss_stream_get_position,
5620 + .stream_get_latency = oss_stream_get_latency,
5621 + .stream_get_input_latency = NULL,
5622 + .stream_set_volume = oss_stream_set_volume,
5623 + .stream_get_current_device = oss_get_current_device,
5624 + .stream_device_destroy = oss_stream_device_destroy,
5625 + .stream_register_device_changed_callback = NULL,
5626 + .register_device_collection_changed = NULL};
5629 [FILE:886:patches/patch-env-api-keys]
5630 # Accept API keys from environment like before bug 1294585
5632 --- build/moz.configure/keyfiles.configure
5633 +++ build/moz.configure/keyfiles.configure
5634 @@ -18,6 +18,7 @@ def keyfile(desc, help=None, callback=lambda x: x):
5635 @checking('for the %s key' % desc, lambda x: x and x is not no_key)
5636 @imports(_from='__builtin__', _import='open')
5637 @imports(_from='__builtin__', _import='IOError')
5638 + @imports(_from='os', _import='environ')
5642 @@ -28,7 +29,7 @@ def keyfile(desc, help=None, callback=lambda x: x):
5643 raise FatalCheckError("'%s' is empty." % value[0])
5644 except IOError as e:
5645 raise FatalCheckError("'%s': %s." % (value[0], e.strerror))
5647 + return environ.get('MOZ_%s_KEY' % desc.upper().replace(' ', '_')) or no_key
5653 [FILE:2142:patches/patch-freebsd11.3]
5654 Drop after FreeBSD 11.3 EOL around 2020-09-20.
5655 https://svnweb.freebsd.org/changeset/base/351766
5657 mozglue/baseprofiler/core/shared-libraries-linux.cc:374:34: error: use of undeclared
5658 identifier 'NT_GNU_BUILD_ID'
5659 if (note_header->n_type == NT_GNU_BUILD_ID) break;
5661 In file included from Unified_cpp_mozglue_baseprofiler0.cpp:137:
5662 mozglue/baseprofiler/lul/LulElf.cpp:762:32: error: use of undeclared identifier
5664 if (note_header->n_type == NT_GNU_BUILD_ID) break;
5666 In file included from Unified_cpp_tools_profiler1.cpp:38:
5667 tools/profiler/lul/LulElf.cpp:776:32: error: use of undeclared identifier
5669 if (note_header->n_type == NT_GNU_BUILD_ID) break;
5672 --- mozglue/baseprofiler/core/shared-libraries-linux.cc.orig 2020-06-25 17:04:48 UTC
5673 +++ mozglue/baseprofiler/core/shared-libraries-linux.cc
5674 @@ -50,6 +50,11 @@ extern "C" MOZ_EXPORT __attribute__((weak)) int dl_ite
5675 # define ElfW(type) Elf_##type
5678 +#if defined(GP_OS_freebsd) && !defined(NT_GNU_BUILD_ID)
5679 +// FreeBSD < 11.4 doesn't define NT_GNU_BUILD_ID
5680 +# define NT_GNU_BUILD_ID 3
5683 // ----------------------------------------------------------------------------
5684 // Starting imports from toolkit/crashreporter/google-breakpad/, as needed by
5685 // this file when moved to mozglue.
5686 --- mozglue/baseprofiler/lul/LulElf.cpp.orig 2020-06-25 17:04:48 UTC
5687 +++ mozglue/baseprofiler/lul/LulElf.cpp
5689 # define EM_AARCH64 183
5692 +#if defined(GP_OS_freebsd) && !defined(NT_GNU_BUILD_ID)
5693 +// FreeBSD < 11.4 doesn't define NT_GNU_BUILD_ID
5694 +# define NT_GNU_BUILD_ID 3
5697 // This namespace contains helper functions.
5700 --- tools/profiler/lul/LulElf.cpp.orig 2020-06-25 17:05:05 UTC
5701 +++ tools/profiler/lul/LulElf.cpp
5703 # define EM_AARCH64 183
5706 +#if defined(GP_OS_freebsd) && !defined(NT_GNU_BUILD_ID)
5707 +// FreeBSD < 11.4 doesn't define NT_GNU_BUILD_ID
5708 +# define NT_GNU_BUILD_ID 3
5711 // This namespace contains helper functions.
5716 [FILE:890:patches/patch-gfx_skia_skia_src_core_SkCpu.cpp]
5717 Regressed by https://svnweb.freebsd.org/changeset/base/324815
5719 gfx/skia/skia/src/core/SkCpu.cpp:81:27: error: use of undeclared identifier 'getauxval'
5720 uint32_t hwcaps = getauxval(AT_HWCAP);
5723 --- gfx/skia/skia/src/core/SkCpu.cpp.orig 2020-07-13 18:06:57 UTC
5724 +++ gfx/skia/skia/src/core/SkCpu.cpp
5729 +#elif defined(SK_CPU_ARM64) && defined(__FreeBSD__)
5730 + #include <machine/armreg.h>
5732 + static uint32_t read_cpu_features() {
5733 + uint32_t features = 0;
5734 + uint64_t id_aa64isar0;
5736 + id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
5737 + if (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) {
5738 + features |= SkCpu::CRC32;
5743 #elif defined(SK_CPU_ARM64) && __has_include(<sys/auxv.h>)
5744 #include <sys/auxv.h>
5748 [FILE:290:files/thunderbird.desktop]
5752 GenericName=Mail Client
5753 Comment=Mail client and News Reader
5755 Icon=thunderbird.png
5759 Categories=Network;Email;News;InstantMessaging;
5760 MimeType=application/mbox;message/rfc822;