summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/126.0_defuzz-encoding_rs.patch4520
-rw-r--r--scripts/prep-librewolf-dpkg.conf6
-rwxr-xr-xscripts/prep-librewolf-dpkg.sh5
3 files changed, 4527 insertions, 4 deletions
diff --git a/scripts/126.0_defuzz-encoding_rs.patch b/scripts/126.0_defuzz-encoding_rs.patch
new file mode 100644
index 0000000..8adce9a
--- /dev/null
+++ b/scripts/126.0_defuzz-encoding_rs.patch
@@ -0,0 +1,4520 @@
+--- debian/patches/librewolf/encoding_rs.patch 2024-05-21 14:49:38.963623665 -0400
++++ librewolf_126.0/debian/patches/librewolf/encoding_rs.patch 2024-05-21 20:55:23.325759333 -0400
+@@ -8,15 +8,9 @@
+
+ Differential Revision: https://phabricator.services.mozilla.com/D207167
+
+-diff --git a/.cargo/config.toml.in b/.cargo/config.toml.in
+ --- a/.cargo/config.toml.in
+ +++ b/.cargo/config.toml.in
+-@@ -35,16 +35,21 @@ git = "https://github.com/gfx-rs/wgpu"
+- rev = "2b0e3ed01cfcc4bcccc7fd63b2581b260c00b089"
+- replace-with = "vendored-sources"
+-
+- [source."git+https://github.com/glandium/mio?rev=9a2ef335c366044ffe73b1c4acabe50a1daefe05"]
+- git = "https://github.com/glandium/mio"
++@@ -35,6 +35,11 @@ git = "https://github.com/glandium/mio"
+ rev = "9a2ef335c366044ffe73b1c4acabe50a1daefe05"
+ replace-with = "vendored-sources"
+
+@@ -28,20 +22,9 @@
+ [source."git+https://github.com/hsivonen/chardetng?rev=3484d3e3ebdc8931493aa5df4d7ee9360a90e76b"]
+ git = "https://github.com/hsivonen/chardetng"
+ rev = "3484d3e3ebdc8931493aa5df4d7ee9360a90e76b"
+- replace-with = "vendored-sources"
+-
+- [source."git+https://github.com/hsivonen/chardetng_c?rev=ed8a4c6f900a90d4dbc1d64b856e61490a1c3570"]
+- git = "https://github.com/hsivonen/chardetng_c"
+- rev = "ed8a4c6f900a90d4dbc1d64b856e61490a1c3570"
+-diff --git a/Cargo.lock b/Cargo.lock
+ --- a/Cargo.lock
+ +++ b/Cargo.lock
+-@@ -87,16 +87,25 @@ dependencies = [
+-
+- [[package]]
+- name = "anstyle"
+- version = "1.0.3"
+- source = "registry+https://github.com/rust-lang/crates.io-index"
++@@ -92,6 +92,15 @@ source = "registry+https://github.com/ru
+ checksum = "b84bf0a05bbb2a83e5eb6fa36bb6e87baa08193c35ff52bbf6b38d8af2890e46"
+
+ [[package]]
+@@ -57,45 +40,23 @@
+ name = "anyhow"
+ version = "1.0.69"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+- checksum = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800"
+-
+- [[package]]
+- name = "app_services_logger"
+- version = "0.1.0"
+-@@ -1571,22 +1580,22 @@ dependencies = [
+- "encoding_rs",
+- "nserror",
+- "nsstring",
+- "xmldecl",
+- ]
++@@ -1575,12 +1584,12 @@ dependencies = [
+
+ [[package]]
+ name = "encoding_rs"
+ -version = "0.8.33"
+--source = "registry+https://github.com/rust-lang/crates.io-index"
+--checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
+--dependencies = [
+ +version = "0.8.34"
+-+source = "registry+https://github.com/rust-lang/crates.io-index"
++ source = "registry+https://github.com/rust-lang/crates.io-index"
++-checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
+ +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59"
+-+dependencies = [
++ dependencies = [
+ + "any_all_workaround",
+ "cfg-if 1.0.0",
+ - "packed_simd",
+ ]
+
+ [[package]]
+- name = "enum-map"
+- version = "2.7.3"
+- source = "registry+https://github.com/rust-lang/crates.io-index"
+- checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9"
+- dependencies = [
+-@@ -4321,26 +4330,16 @@ checksum = "8d91edf4fbb970279443471345a4
+- name = "oxilangtag-ffi"
+- version = "0.1.0"
+- dependencies = [
+- "nsstring",
+- "oxilangtag",
++@@ -4333,16 +4342,6 @@ dependencies = [
+ ]
+
+ [[package]]
+@@ -112,20 +73,9 @@
+ name = "parking_lot"
+ version = "0.12.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+- checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+- dependencies = [
+- "lock_api",
+- "parking_lot_core",
+- ]
+-diff --git a/Cargo.toml b/Cargo.toml
+ --- a/Cargo.toml
+ +++ b/Cargo.toml
+-@@ -188,16 +188,17 @@ moz_asserts = { path = "mozglue/static/r
+- rure = { path = "third_party/rust/rure" }
+-
+- # To-be-published changes.
+- cssparser = { git = "https://github.com/servo/rust-cssparser", rev = "aaa966d9d6ae70c4b8a62bb5e3a14c068bb7dff0" }
+- cssparser-macros = { git = "https://github.com/servo/rust-cssparser", rev = "aaa966d9d6ae70c4b8a62bb5e3a14c068bb7dff0" }
++@@ -200,6 +200,7 @@ cssparser-macros = { git = "https://gith
+ unicode-bidi = { git = "https://github.com/servo/unicode-bidi", rev = "ca612daf1c08c53abe07327cb3e6ef6e0a760f0c" }
+
+ # Other overrides
+@@ -133,20 +83,9 @@
+ chardetng = { git = "https://github.com/hsivonen/chardetng", rev = "3484d3e3ebdc8931493aa5df4d7ee9360a90e76b" }
+ chardetng_c = { git = "https://github.com/hsivonen/chardetng_c", rev = "ed8a4c6f900a90d4dbc1d64b856e61490a1c3570" }
+ coremidi = { git = "https://github.com/chris-zen/coremidi.git", rev = "fc68464b5445caf111e41f643a2e69ccce0b4f83" }
+- cose = { git = "https://github.com/franziskuskiefer/cose-rust", rev = "43c22248d136c8b38fe42ea709d08da6355cf04b" }
+- firefox-on-glean = { path = "toolkit/components/glean/api" }
+- icu_capi = { path = "intl/icu_capi" }
+- icu_segmenter_data = { path = "intl/icu_segmenter_data" }
+- libudev-sys = { path = "dom/webauthn/libudev-sys" }
+-diff --git a/config/makefiles/rust.mk b/config/makefiles/rust.mk
+ --- a/config/makefiles/rust.mk
+ +++ b/config/makefiles/rust.mk
+-@@ -260,17 +260,17 @@ export COREAUDIO_SDK_PATH=$(IPHONEOS_SDK
+- export IPHONEOS_SDK_DIR
+- PATH := $(topsrcdir)/build/macosx:$(PATH)
+- endif
+- endif
+-
++@@ -267,7 +267,7 @@ endif
+ ifndef RUSTC_BOOTSTRAP
+ RUSTC_BOOTSTRAP := mozglue_static,qcms
+ ifdef MOZ_RUST_SIMD
+@@ -155,20 +94,9 @@
+ endif
+ export RUSTC_BOOTSTRAP
+ endif
+-
+- target_rust_ltoable := force-cargo-library-build $(ADD_RUST_LTOABLE)
+- target_rust_nonltoable := force-cargo-test-run force-cargo-program-build
+-
+- ifdef MOZ_PGO_RUST
+-diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml
+ --- a/supply-chain/audits.toml
+ +++ b/supply-chain/audits.toml
+-@@ -596,16 +596,29 @@ who = "Mike Hommey <mh+mozilla@glandium.
+- criteria = "safe-to-deploy"
+- delta = "0.1.2 -> 0.1.4"
+-
+- [[audits.android_system_properties]]
+- who = "Mike Hommey <mh+mozilla@glandium.org>"
++@@ -588,6 +588,19 @@ who = "Mike Hommey <mh+mozilla@glandium.
+ criteria = "safe-to-deploy"
+ delta = "0.1.4 -> 0.1.5"
+
+@@ -188,20 +116,9 @@
+ [[audits.anyhow]]
+ who = "Mike Hommey <mh+mozilla@glandium.org>"
+ criteria = "safe-to-deploy"
+- delta = "1.0.57 -> 1.0.61"
+-
+- [[audits.anyhow]]
+- who = "Bobby Holley <bobbyholley@gmail.com>"
+- criteria = "safe-to-deploy"
+-diff --git a/supply-chain/config.toml b/supply-chain/config.toml
+ --- a/supply-chain/config.toml
+ +++ b/supply-chain/config.toml
+-@@ -14,16 +14,20 @@ url = "https://raw.githubusercontent.com
+- url = "https://raw.githubusercontent.com/google/supply-chain/main/audits.toml"
+-
+- [imports.isrg]
+- url = "https://raw.githubusercontent.com/divviup/libprio-rs/main/supply-chain/audits.toml"
+-
++@@ -19,6 +19,10 @@ url = "https://raw.githubusercontent.com
+ [imports.mozilla]
+ url = "https://raw.githubusercontent.com/mozilla/supply-chain/main/audits.toml"
+
+@@ -212,20 +129,9 @@
+ [policy.autocfg]
+ audit-as-crates-io = true
+ notes = "This is the upstream code plus a few local fixes, see bug 1685697."
+-
+- [policy.chardetng]
+- audit-as-crates-io = true
+- notes = "This is a crate Henri wrote which is also published. We should probably update Firefox to tip and certify that."
+-
+-diff --git a/supply-chain/imports.lock b/supply-chain/imports.lock
+ --- a/supply-chain/imports.lock
+ +++ b/supply-chain/imports.lock
+-@@ -192,16 +192,23 @@ user-name = "David Tolnay"
+-
+- [[publisher.encoding_rs]]
+- version = "0.8.33"
+- when = "2023-08-23"
+- user-id = 4484
++@@ -183,6 +183,13 @@ user-id = 4484
+ user-login = "hsivonen"
+ user-name = "Henri Sivonen"
+
+@@ -239,20 +145,11 @@
+ [[publisher.errno]]
+ version = "0.3.8"
+ when = "2023-11-28"
+- user-id = 6825
+- user-login = "sunfishcode"
+- user-name = "Dan Gohman"
+-
+- [[publisher.etagere]]
+-diff --git a/third_party/rust/any_all_workaround/.cargo-checksum.json b/third_party/rust/any_all_workaround/.cargo-checksum.json
+-new file mode 100644
+ --- /dev/null
+ +++ b/third_party/rust/any_all_workaround/.cargo-checksum.json
+-@@ -0,0 +1,1 @@
++@@ -0,0 +1 @@
+ +{"files":{"Cargo.toml":"f8c127449dc9432d404c21c99833e4617ab88a797445af249a7fe3c989985d6d","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","LICENSE-MIT-QCMS":"36d847ae882f6574ebc72f56a4f354e4f104fde4a584373496482e97d52d31bc","README.md":"4c617b8ced3a27b7edecf0e5e41ed451c04e88dab529e7a35fccc4e1551efbd7","build.rs":"56b29ab6da3e49075bfd0a7b690267c8016298bf0d332e2e68bbaf19decbbf71","src/lib.rs":"7118106690b9d25c5d0a3e2079feb83d76f1d434d0da36b9d0351806d27c850d"},"package":null}
+ \ No newline at end of file
+-diff --git a/third_party/rust/any_all_workaround/Cargo.toml b/third_party/rust/any_all_workaround/Cargo.toml
+-new file mode 100644
+ --- /dev/null
+ +++ b/third_party/rust/any_all_workaround/Cargo.toml
+ @@ -0,0 +1,28 @@
+@@ -284,14 +181,6 @@
+ +
+ +[build-dependencies]
+ +version_check = "0.9"
+-diff --git a/third_party/rust/packed_simd/LICENSE-APACHE b/third_party/rust/any_all_workaround/LICENSE-APACHE
+-rename from third_party/rust/packed_simd/LICENSE-APACHE
+-rename to third_party/rust/any_all_workaround/LICENSE-APACHE
+-diff --git a/third_party/rust/packed_simd/LICENSE-MIT b/third_party/rust/any_all_workaround/LICENSE-MIT
+-rename from third_party/rust/packed_simd/LICENSE-MIT
+-rename to third_party/rust/any_all_workaround/LICENSE-MIT
+-diff --git a/third_party/rust/any_all_workaround/LICENSE-MIT-QCMS b/third_party/rust/any_all_workaround/LICENSE-MIT-QCMS
+-new file mode 100644
+ --- /dev/null
+ +++ b/third_party/rust/any_all_workaround/LICENSE-MIT-QCMS
+ @@ -0,0 +1,21 @@
+@@ -316,8 +205,6 @@
+ +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+-diff --git a/third_party/rust/any_all_workaround/README.md b/third_party/rust/any_all_workaround/README.md
+-new file mode 100644
+ --- /dev/null
+ +++ b/third_party/rust/any_all_workaround/README.md
+ @@ -0,0 +1,13 @@
+@@ -334,8 +221,6 @@
+ +# License
+ +
+ +`MIT OR Apache-2.0`, since that's how `packed_simd` is licensed. (The ARM intrinsics Rust version workaround is from qcms, see LICENSE-MIT-QCMS.)
+-diff --git a/third_party/rust/any_all_workaround/build.rs b/third_party/rust/any_all_workaround/build.rs
+-new file mode 100644
+ --- /dev/null
+ +++ b/third_party/rust/any_all_workaround/build.rs
+ @@ -0,0 +1,7 @@
+@@ -346,8 +231,6 @@
+ + println!("cargo:rustc-cfg=stdsimd_split");
+ + }
+ +}
+-diff --git a/third_party/rust/any_all_workaround/src/lib.rs b/third_party/rust/any_all_workaround/src/lib.rs
+-new file mode 100644
+ --- /dev/null
+ +++ b/third_party/rust/any_all_workaround/src/lib.rs
+ @@ -0,0 +1,110 @@
+@@ -461,23 +344,16 @@
+ + vpmin_u32,
+ + vpmax_u32
+ +);
+-diff --git a/third_party/rust/encoding_rs/.cargo-checksum.json b/third_party/rust/encoding_rs/.cargo-checksum.json
+ --- a/third_party/rust/encoding_rs/.cargo-checksum.json
+ +++ b/third_party/rust/encoding_rs/.cargo-checksum.json
+-@@ -1,1 +1,1 @@
++@@ -1 +1 @@
+ -{"files":{"CONTRIBUTING.md":"ca1901f3e8532fb4cec894fd3664f0eaa898c0c4b961d1b992d1ed54eacf362a","COPYRIGHT":"11789f45bb180841cd362a5eee6789c68ddb573a11105e30768c308a6add0190","Cargo.toml":"42fa83322aa9fd6723b77d35d0cacb92cbb6e7f573ce11c55f5225292866f8f4","Ideas.md":"b7452893f500163868d8de52c09addaf91e1632454ed02e892c467ed7ec39dbd","LICENSE-APACHE":"cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30","LICENSE-MIT":"3fa4ca83dcc9237839b1bdeb2e6d16bdfb5ec0c5ce42b24694d8bbf0dcbef72c","LICENSE-WHATWG":"838118388fe5c2e7f1dbbaeed13e1c7f3ebf88be91319c7c1d77c18e987d1a50","README.md":"d938e8ab0b9ab67e74a1a4f48f23fdce956d0ad3a3f6147ae7612a92763c88d5","ci/miri.sh":"43cb8d82f49e3bfe2d2274b6ccd6f0714a4188ccef0cecc040829883cfdbee25","doc/Big5.txt":"f73a2edc5cb6c2d140ba6e07f4542e1c4a234950378acde1df93480f0ca0be0b","doc/EUC-JP.txt":"ee2818b907d0137f40a9ab9fd525fc700a44dbdddb6cf0c157a656566bae4bf1","doc/EUC-KR.txt":"71d9e2ccf3b124e8bdfb433c8cf2773fd878077038d0cec3c7237a50f4a78a30","doc/GBK.txt":"c1b522b5a799884e5001da661f42c5a8f4d0acb9ef1d74b206f22b5f65365606","doc/IBM866.txt":"a5a433e804d0f83af785015179fbc1d9b0eaf1f7960efcd04093e136b51fbd0e","doc/ISO-2022-JP.txt":"af86684f5a8f0e2868d7b2c292860140c3d2e5527530ca091f1b28198e8e2fe6","doc/ISO-8859-10.txt":"6d3949ad7c81ca176895101ed81a1db7df1060d64e262880b94bd31bb344ab4d","doc/ISO-8859-13.txt":"3951dd89cf93f7729148091683cf8511f4529388b7dc8dcd0d62eaed55be93fa","doc/ISO-8859-14.txt":"3d330784a0374fd255a38b47949675cc7168c800530534b0a01cac6edc623adc","doc/ISO-8859-15.txt":"24b1084aab5127a85aab99153f86e24694d0a3615f53b5ce23683f97cf66c47a","doc/ISO-8859-16.txt":"ce0272559b92ba76d7a7e476f6424ae4a5cc72e75b183611b08392e44add4d25","doc/ISO-8859-2.txt":"18ceff88c13d1b5ba455a3919b1e3de489045c4c3d2dd7e8527c125c75d54aad","doc/ISO-8859-3.txt":"21798404c68f4f5db59223362f24999da96968c0628427321fccce7d2849a130","doc/ISO-8859-4.txt":"d27f6520c6c5bfbcc19176b71d081cdb3bccde1622bb3e420d5680e812632d53","doc/ISO-8859-5.txt":"a10ec8d6ea7a78ad15da7275f6cb1a3365118527e28f9af6d0d5830501303f3a","doc/ISO-8859-6.txt":"ccda8a2efc96115336bdd77776637b9712425e44fbcf745353b9057fbef144e7","doc/ISO-8859-7.txt":"17900fa1f27a445958f0a77d7d9056be375a6bd7ee4492aa680c7c1500bab85e","doc/ISO-8859-8-I.txt":"8357555646d54265a9b9ffa3e68b08d132312f1561c60108ff9b8b1167b6ecf2","doc/ISO-8859-8.txt":"72cd6f3afb7b4a9c16a66a362473315770b7755d72c86c870e52fc3eba86c8af","doc/KOI8-R.txt":"839cf19a38da994488004ed7814b1f6151640156a9a2af02bf2efca745fb5966","doc/KOI8-U.txt":"0cc76624ed1f024183e2298b7e019957da2c70c8ca06e0fc4e6f353f50a5054f","doc/Shift_JIS.txt":"34c49141818cb9ddbcf59cc858f78a79be8ad148d563f26415108ae1f148443f","doc/UTF-16BE.txt":"e2e280d8acbaa6d2a6b3569d60e17500a285f2baa0df3363dd85537cd5a1ef8f","doc/UTF-16LE.txt":"70bdc170e3fc5298ba68f10125fb5eeb8b077036cc96bb4416c4de396f6d76c1","doc/UTF-8.txt":"ea7bae742e613010ced002cf4b601a737d2203fad65e115611451bc4428f548a","doc/gb18030.txt":"dc71378a8f07a2d8659f69ee81fb8791fef56ba86f124b429978285237bb4a7b","doc/macintosh.txt":"57491e53866711b4672d9b9ff35380b9dac9e0d8e3d6c20bdd6140603687c023","doc/replacement.txt":"4b6c3bbd7999d9d4108a281594bd02d13607e334a95465afff8c2c08d395f0e4","doc/windows-1250.txt":"61296bb6a21cdab602300d32ecfba434cb82de5ac3bc88d58710d2f125e28d39","doc/windows-1251.txt":"7deea1c61dea1485c8ff02db2c7d578db7a9aab63ab1cfd02ec04b515864689e","doc/windows-1252.txt":"933ef3bdddfce5ee132b9f1a1aa8b47423d2587bbe475b19028d0a6d38e180b6","doc/windows-1253.txt":"1a38748b88e99071a5c7b3d5456ead4caedeabab50d50d658be105bc113714de","doc/windows-1254.txt":"f8372f86c6f8d642563cd6ddc025260553292a39423df1683a98670bd7bf2b47","doc/windows-1255.txt":"4e5852494730054e2da258a74e1b9d780abbcdd8ce22ebc218ca2efe9e90493d","doc/windows-1256.txt":"c0879c5172abedead302a406e8f60d9cd9598694a0ffa4fd288ffe4fef7b8ea1","doc/windows-1257.txt":"c28a0c9f964fcb2b46d21f537c402446501a2800670481d6abf9fd9e9018d523","doc/windows-1258.txt":"5019ae4d61805c79aacbf17c93793342dbb098d65a1837783bc3e2c6d6a23602","doc/windows-874.txt":"4ef0e4501c5feba8b17aee1818602ed44b36ca8475db771ce2fc16d392cabecc","doc/x-mac-cyrillic.txt":"58be154d8a888ca3d484b83b44f749823ef339ab27f14d90ca9a856f5050a8bd","doc/x-user-defined.txt":"f9cd07c4321bf5cfb0be4bdddd251072999b04a6cf7a6f5bc63709a84e2c1ffc","generate-encoding-data.py":"be989dd25c6b946e3e8745fdc8e8a80fcf24b3be99ad0b4b78153ba3f6ab6310","rustfmt.toml":"85c1a3b4382fd89e991cbb81b70fb52780472edc064c963943cdaaa56e0a2030","src/ascii.rs":"c44c002641adb5ebc4368707a8cc0a076d2f33e6a5c27b1b69988eb515f5653d","src/big5.rs":"ec6e2913011a38e9a3e825a1731f139a7ca1d5b264fefae51a3cc1a68a57cef9","src/data.rs":"8a617cc57032092d65850eb27e00de687c80aea3299e839a1f58b42d0b35abf3","src/euc_jp.rs":"32047f5b540188c4cb19c07165f846b9786a09f18e315ed3e9bda1293dae52aa","src/euc_kr.rs":"9b25afc72d9378700eecfac58d55ad1c5946d6cd0ccde2c29c08200ef2de6bb9","src/gb18030.rs":"808587168d73f0c80f8520f0ca9b161866ed2efeb17a05e85fdf3b8efe7ba28a","src/handles.rs":"cc83dc0754751d67f5688a65c5e0191cba02f6bacce81a0813a243cba55eef7a","src/iso_2022_jp.rs":"9bb485e82574f4b7d4b2364f0ff276acb6a0bc111758420a3b0ec5e04c196652","src/lib.rs":"1dc07b818e45846b16ddcaf0de46c8862dd7df8099123ec38b95c3f8ad9c91ec","src/macros.rs":"200997f8870de8bfd8cdc475e92115df42108c0df661e49d3d1cbc32056e1d99","src/mem.rs":"0bf34103e0ad1b842a13a082dee2b920b05cf4fb0f145c9ee7f608f4cb4a544f","src/replacement.rs":"7660b34a53f8c1ca2bdfa0e51e843ec28326950952ad8bc96569feb93ac62308","src/shift_jis.rs":"6951ae67e36b1a12fa3a30734957f444d8b1b4ae0e2bde52060b29bd0f16d9d9","src/simd_funcs.rs":"2612aba86e1d201096d7e47a859bc3444f85934cc82d8adc6d39a4304d9eecfc","src/single_byte.rs":"3c9e9c1f946ae622c725ba9421240c1faa9a05e95fa10dd4642a25cb276a1edc","src/test_data/big5_in.txt":"4c5a8691f8dc717311889c63894026d2fb62725a86c4208ca274a9cc8d42a503","src/test_data/big5_in_ref.txt":"99d399e17750cf9c7cf30bb253dbfe35b81c4fcbdead93cfa48b1429213473c7","src/test_data/big5_out.txt":"6193ca97c297aa20e09396038d18e938bb7ea331c26f0f2454097296723a0b13","src/test_data/big5_out_ref.txt":"36567691f557df144f6cc520015a87038dfa156f296fcf103b56ae9a718be1fc","src/test_data/euc_kr_in.txt":"c86a7224f3215fa0d04e685622a752fdc72763e8ae076230c7fd62de57ec4074","src/test_data/euc_kr_in_ref.txt":"1f419f4ca47d708b54c73c461545a022ae2e20498fdbf8005a483d752a204883","src/test_data/euc_kr_out.txt":"e7f32e026f70be1e1b58e0047baf7d3d2c520269c4f9b9992e158b4decb0a1a3","src/test_data/euc_kr_out_ref.txt":"c9907857980b20b8e9e3b584482ed6567a2be6185d72237b6322f0404944924e","src/test_data/gb18030_in.txt":"ab7231b2d3e9afacdbd7d7f3b9e5361a7ff9f7e1cfdb4f3bd905b9362b309e53","src/test_data/gb18030_in_ref.txt":"dc5069421adca2043c55f5012b55a76fdff651d22e6e699fd0978f8d5706815c","src/test_data/gb18030_out.txt":"f0208d527f5ca63de7d9a0323be8d5cf12d8a104b2943d92c2701f0c3364dac1","src/test_data/gb18030_out_ref.txt":"6819fe47627e4ea01027003fc514b9f21a1322e732d7f1fb92cc6c5455bc6c07","src/test_data/iso_2022_jp_in.txt":"cd24bbdcb1834e25db54646fbf4c41560a13dc7540f6be3dba4f5d97d44513af","src/test_data/iso_2022_jp_in_ref.txt":"3dc4e6a5e06471942d086b16c9440945e78415f6f3f47e43717e4bc2eac2cdf5","src/test_data/iso_2022_jp_out.txt":"9b6f015329dda6c3f9ee5ce6dbd6fa9c89acc21283e886836c78b8d833480c21","src/test_data/iso_2022_jp_out_ref.txt":"78cb260093a20116ad9a42f43b05d1848c5ab100b6b9a850749809e943884b35","src/test_data/jis0208_in.txt":"6df3030553ffb0a6615bb33dc8ea9dca6d9623a9028e2ffec754ce3c3da824cc","src/test_data/jis0208_in_ref.txt":"3dc4e6a5e06471942d086b16c9440945e78415f6f3f47e43717e4bc2eac2cdf5","src/test_data/jis0208_out.txt":"4ec24477e1675ce750733bdc3c5add1cd27b6bd4ce1f09289564646e9654e857","src/test_data/jis0208_out_ref.txt":"c3e1cef5032b2b1d93a406f31ff940c4e2dfe8859b8b17ca2761fee7a75a0e48","src/test_data/jis0212_in.txt":"c011f0dd72bd7c8cd922df9374ef8d2769a77190514c77f6c62b415852eeb9fe","src/test_data/jis0212_in_ref.txt":"7d9458b3d2f73e7092a7f505c08ce1d233dde18aa679fbcf9889256239cc9e06","src/test_data/shift_jis_in.txt":"02e389ccef0dd2122e63f503899402cb7f797912c2444cc80ab93131116c5524","src/test_data/shift_jis_in_ref.txt":"512f985950ca902e643c88682dba9708b7c38d3c5ec2925168ab00ac94ab19f9","src/test_data/shift_jis_out.txt":"5fbc44da7bf639bf6cfe0fa1fd3eba7102b88f81919c9ea991302712f69426fb","src/test_data/shift_jis_out_ref.txt":"466322c6fed8286c64582731755290c2296508efdd258826e6279686649b481f","src/test_labels_names.rs":"23a2e11b02b3b8d15fb5613a625e3edb2c61e70e3c581abfd638719a4088200d","src/testing.rs":"f59e671e95a98a56f6b573e8c6be4d71e670bf52f7e20eb1605d990aafa1894e","src/utf_16.rs":"c071a147fad38d750c2c247e141b76b929a48007b99f26b2922b9caecdaf2f25","src/utf_8.rs":"7b7d887b347f1aefa03246b028a36a72758a4ce76c28f3b45c19467851aa7839","src/variant.rs":"1fab5363588a1554a7169de8731ea9cded7ac63ea35caabdd1c27a8dde68c27b","src/x_user_defined.rs":"c9c010730dfb9f141d4fed19350c08a21af240913a54bb64f5ca89ff93b6b7d1"},"package":"7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"}
+ \ No newline at end of file
+ +{"files":{"CONTRIBUTING.md":"ca1901f3e8532fb4cec894fd3664f0eaa898c0c4b961d1b992d1ed54eacf362a","COPYRIGHT":"11789f45bb180841cd362a5eee6789c68ddb573a11105e30768c308a6add0190","Cargo.toml":"22a4d210c92dae9f32c6944ef340ee8fdd027f99c081577e8907123e2a93383e","Ideas.md":"b7452893f500163868d8de52c09addaf91e1632454ed02e892c467ed7ec39dbd","LICENSE-APACHE":"cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30","LICENSE-MIT":"3fa4ca83dcc9237839b1bdeb2e6d16bdfb5ec0c5ce42b24694d8bbf0dcbef72c","LICENSE-WHATWG":"838118388fe5c2e7f1dbbaeed13e1c7f3ebf88be91319c7c1d77c18e987d1a50","README.md":"1d08aefcb92afa81b18154049c9abbcad4540a23f7172e9f9bbed5af33f1a087","ci/miri.sh":"43cb8d82f49e3bfe2d2274b6ccd6f0714a4188ccef0cecc040829883cfdbee25","doc/Big5.txt":"f73a2edc5cb6c2d140ba6e07f4542e1c4a234950378acde1df93480f0ca0be0b","doc/EUC-JP.txt":"ee2818b907d0137f40a9ab9fd525fc700a44dbdddb6cf0c157a656566bae4bf1","doc/EUC-KR.txt":"71d9e2ccf3b124e8bdfb433c8cf2773fd878077038d0cec3c7237a50f4a78a30","doc/GBK.txt":"c1b522b5a799884e5001da661f42c5a8f4d0acb9ef1d74b206f22b5f65365606","doc/IBM866.txt":"a5a433e804d0f83af785015179fbc1d9b0eaf1f7960efcd04093e136b51fbd0e","doc/ISO-2022-JP.txt":"af86684f5a8f0e2868d7b2c292860140c3d2e5527530ca091f1b28198e8e2fe6","doc/ISO-8859-10.txt":"6d3949ad7c81ca176895101ed81a1db7df1060d64e262880b94bd31bb344ab4d","doc/ISO-8859-13.txt":"3951dd89cf93f7729148091683cf8511f4529388b7dc8dcd0d62eaed55be93fa","doc/ISO-8859-14.txt":"3d330784a0374fd255a38b47949675cc7168c800530534b0a01cac6edc623adc","doc/ISO-8859-15.txt":"24b1084aab5127a85aab99153f86e24694d0a3615f53b5ce23683f97cf66c47a","doc/ISO-8859-16.txt":"ce0272559b92ba76d7a7e476f6424ae4a5cc72e75b183611b08392e44add4d25","doc/ISO-8859-2.txt":"18ceff88c13d1b5ba455a3919b1e3de489045c4c3d2dd7e8527c125c75d54aad","doc/ISO-8859-3.txt":"21798404c68f4f5db59223362f24999da96968c0628427321fccce7d2849a130","doc/ISO-8859-4.txt":"d27f6520c6c5bfbcc19176b71d081cdb3bccde1622bb3e420d5680e812632d53","doc/ISO-8859-5.txt":"a10ec8d6ea7a78ad15da7275f6cb1a3365118527e28f9af6d0d5830501303f3a","doc/ISO-8859-6.txt":"ccda8a2efc96115336bdd77776637b9712425e44fbcf745353b9057fbef144e7","doc/ISO-8859-7.txt":"17900fa1f27a445958f0a77d7d9056be375a6bd7ee4492aa680c7c1500bab85e","doc/ISO-8859-8-I.txt":"8357555646d54265a9b9ffa3e68b08d132312f1561c60108ff9b8b1167b6ecf2","doc/ISO-8859-8.txt":"72cd6f3afb7b4a9c16a66a362473315770b7755d72c86c870e52fc3eba86c8af","doc/KOI8-R.txt":"839cf19a38da994488004ed7814b1f6151640156a9a2af02bf2efca745fb5966","doc/KOI8-U.txt":"0cc76624ed1f024183e2298b7e019957da2c70c8ca06e0fc4e6f353f50a5054f","doc/Shift_JIS.txt":"34c49141818cb9ddbcf59cc858f78a79be8ad148d563f26415108ae1f148443f","doc/UTF-16BE.txt":"e2e280d8acbaa6d2a6b3569d60e17500a285f2baa0df3363dd85537cd5a1ef8f","doc/UTF-16LE.txt":"70bdc170e3fc5298ba68f10125fb5eeb8b077036cc96bb4416c4de396f6d76c1","doc/UTF-8.txt":"ea7bae742e613010ced002cf4b601a737d2203fad65e115611451bc4428f548a","doc/gb18030.txt":"dc71378a8f07a2d8659f69ee81fb8791fef56ba86f124b429978285237bb4a7b","doc/macintosh.txt":"57491e53866711b4672d9b9ff35380b9dac9e0d8e3d6c20bdd6140603687c023","doc/replacement.txt":"4b6c3bbd7999d9d4108a281594bd02d13607e334a95465afff8c2c08d395f0e4","doc/windows-1250.txt":"61296bb6a21cdab602300d32ecfba434cb82de5ac3bc88d58710d2f125e28d39","doc/windows-1251.txt":"7deea1c61dea1485c8ff02db2c7d578db7a9aab63ab1cfd02ec04b515864689e","doc/windows-1252.txt":"933ef3bdddfce5ee132b9f1a1aa8b47423d2587bbe475b19028d0a6d38e180b6","doc/windows-1253.txt":"1a38748b88e99071a5c7b3d5456ead4caedeabab50d50d658be105bc113714de","doc/windows-1254.txt":"f8372f86c6f8d642563cd6ddc025260553292a39423df1683a98670bd7bf2b47","doc/windows-1255.txt":"4e5852494730054e2da258a74e1b9d780abbcdd8ce22ebc218ca2efe9e90493d","doc/windows-1256.txt":"c0879c5172abedead302a406e8f60d9cd9598694a0ffa4fd288ffe4fef7b8ea1","doc/windows-1257.txt":"c28a0c9f964fcb2b46d21f537c402446501a2800670481d6abf9fd9e9018d523","doc/windows-1258.txt":"5019ae4d61805c79aacbf17c93793342dbb098d65a1837783bc3e2c6d6a23602","doc/windows-874.txt":"4ef0e4501c5feba8b17aee1818602ed44b36ca8475db771ce2fc16d392cabecc","doc/x-mac-cyrillic.txt":"58be154d8a888ca3d484b83b44f749823ef339ab27f14d90ca9a856f5050a8bd","doc/x-user-defined.txt":"f9cd07c4321bf5cfb0be4bdddd251072999b04a6cf7a6f5bc63709a84e2c1ffc","generate-encoding-data.py":"be989dd25c6b946e3e8745fdc8e8a80fcf24b3be99ad0b4b78153ba3f6ab6310","rustfmt.toml":"85c1a3b4382fd89e991cbb81b70fb52780472edc064c963943cdaaa56e0a2030","src/ascii.rs":"588e38b01e666d5e7462617ea7e90a108d608dec9e016f3d273ac0744af2e05d","src/big5.rs":"ec6e2913011a38e9a3e825a1731f139a7ca1d5b264fefae51a3cc1a68a57cef9","src/data.rs":"8a617cc57032092d65850eb27e00de687c80aea3299e839a1f58b42d0b35abf3","src/euc_jp.rs":"32047f5b540188c4cb19c07165f846b9786a09f18e315ed3e9bda1293dae52aa","src/euc_kr.rs":"9b25afc72d9378700eecfac58d55ad1c5946d6cd0ccde2c29c08200ef2de6bb9","src/gb18030.rs":"808587168d73f0c80f8520f0ca9b161866ed2efeb17a05e85fdf3b8efe7ba28a","src/handles.rs":"b08cef1f5785bb6a4822f2e844c6df1b046b737b7a075e4593eaa8c4208e9fe2","src/iso_2022_jp.rs":"9bb485e82574f4b7d4b2364f0ff276acb6a0bc111758420a3b0ec5e04c196652","src/lib.rs":"834f44b670ec48ee82c0e12223d1567313fdd9f88bca5f4b117c82c1828f559f","src/macros.rs":"200997f8870de8bfd8cdc475e92115df42108c0df661e49d3d1cbc32056e1d99","src/mem.rs":"948571137d3b151df8db4fb2c733e74ae595d055cdf0ad83abcab9341d6adabe","src/replacement.rs":"7660b34a53f8c1ca2bdfa0e51e843ec28326950952ad8bc96569feb93ac62308","src/shift_jis.rs":"6951ae67e36b1a12fa3a30734957f444d8b1b4ae0e2bde52060b29bd0f16d9d9","src/simd_funcs.rs":"05c6e77af74bfe73cd39a752067c11425d6b46e5da419910f54bf75a5c02a984","src/single_byte.rs":"3ad87116fb339434a4b58e8f2b15485f2b66b9f7814d708f16194ed08f6d6ccf","src/test_data/big5_in.txt":"4c5a8691f8dc717311889c63894026d2fb62725a86c4208ca274a9cc8d42a503","src/test_data/big5_in_ref.txt":"99d399e17750cf9c7cf30bb253dbfe35b81c4fcbdead93cfa48b1429213473c7","src/test_data/big5_out.txt":"6193ca97c297aa20e09396038d18e938bb7ea331c26f0f2454097296723a0b13","src/test_data/big5_out_ref.txt":"36567691f557df144f6cc520015a87038dfa156f296fcf103b56ae9a718be1fc","src/test_data/euc_kr_in.txt":"c86a7224f3215fa0d04e685622a752fdc72763e8ae076230c7fd62de57ec4074","src/test_data/euc_kr_in_ref.txt":"1f419f4ca47d708b54c73c461545a022ae2e20498fdbf8005a483d752a204883","src/test_data/euc_kr_out.txt":"e7f32e026f70be1e1b58e0047baf7d3d2c520269c4f9b9992e158b4decb0a1a3","src/test_data/euc_kr_out_ref.txt":"c9907857980b20b8e9e3b584482ed6567a2be6185d72237b6322f0404944924e","src/test_data/gb18030_in.txt":"ab7231b2d3e9afacdbd7d7f3b9e5361a7ff9f7e1cfdb4f3bd905b9362b309e53","src/test_data/gb18030_in_ref.txt":"dc5069421adca2043c55f5012b55a76fdff651d22e6e699fd0978f8d5706815c","src/test_data/gb18030_out.txt":"f0208d527f5ca63de7d9a0323be8d5cf12d8a104b2943d92c2701f0c3364dac1","src/test_data/gb18030_out_ref.txt":"6819fe47627e4ea01027003fc514b9f21a1322e732d7f1fb92cc6c5455bc6c07","src/test_data/iso_2022_jp_in.txt":"cd24bbdcb1834e25db54646fbf4c41560a13dc7540f6be3dba4f5d97d44513af","src/test_data/iso_2022_jp_in_ref.txt":"3dc4e6a5e06471942d086b16c9440945e78415f6f3f47e43717e4bc2eac2cdf5","src/test_data/iso_2022_jp_out.txt":"9b6f015329dda6c3f9ee5ce6dbd6fa9c89acc21283e886836c78b8d833480c21","src/test_data/iso_2022_jp_out_ref.txt":"78cb260093a20116ad9a42f43b05d1848c5ab100b6b9a850749809e943884b35","src/test_data/jis0208_in.txt":"6df3030553ffb0a6615bb33dc8ea9dca6d9623a9028e2ffec754ce3c3da824cc","src/test_data/jis0208_in_ref.txt":"3dc4e6a5e06471942d086b16c9440945e78415f6f3f47e43717e4bc2eac2cdf5","src/test_data/jis0208_out.txt":"4ec24477e1675ce750733bdc3c5add1cd27b6bd4ce1f09289564646e9654e857","src/test_data/jis0208_out_ref.txt":"c3e1cef5032b2b1d93a406f31ff940c4e2dfe8859b8b17ca2761fee7a75a0e48","src/test_data/jis0212_in.txt":"c011f0dd72bd7c8cd922df9374ef8d2769a77190514c77f6c62b415852eeb9fe","src/test_data/jis0212_in_ref.txt":"7d9458b3d2f73e7092a7f505c08ce1d233dde18aa679fbcf9889256239cc9e06","src/test_data/shift_jis_in.txt":"02e389ccef0dd2122e63f503899402cb7f797912c2444cc80ab93131116c5524","src/test_data/shift_jis_in_ref.txt":"512f985950ca902e643c88682dba9708b7c38d3c5ec2925168ab00ac94ab19f9","src/test_data/shift_jis_out.txt":"5fbc44da7bf639bf6cfe0fa1fd3eba7102b88f81919c9ea991302712f69426fb","src/test_data/shift_jis_out_ref.txt":"466322c6fed8286c64582731755290c2296508efdd258826e6279686649b481f","src/test_labels_names.rs":"23a2e11b02b3b8d15fb5613a625e3edb2c61e70e3c581abfd638719a4088200d","src/testing.rs":"f59e671e95a98a56f6b573e8c6be4d71e670bf52f7e20eb1605d990aafa1894e","src/utf_16.rs":"c071a147fad38d750c2c247e141b76b929a48007b99f26b2922b9caecdaf2f25","src/utf_8.rs":"7b7d887b347f1aefa03246b028a36a72758a4ce76c28f3b45c19467851aa7839","src/variant.rs":"1fab5363588a1554a7169de8731ea9cded7ac63ea35caabdd1c27a8dde68c27b","src/x_user_defined.rs":"9456ca46168ef86c98399a2536f577ef7be3cdde90c0c51392d8ac48519d3fae"},"package":"b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59"}
+ \ No newline at end of file
+-diff --git a/third_party/rust/encoding_rs/Cargo.toml b/third_party/rust/encoding_rs/Cargo.toml
+ --- a/third_party/rust/encoding_rs/Cargo.toml
+ +++ b/third_party/rust/encoding_rs/Cargo.toml
+-@@ -6,18 +6,19 @@
+- # to registry (e.g., crates.io) dependencies.
+- #
+- # If you are reading this file be aware that the original Cargo.toml
+- # will likely look very different (and much more reasonable).
+- # See Cargo.toml.orig for the original contents.
++@@ -11,8 +11,9 @@
+
+ [package]
+ edition = "2018"
+@@ -488,17 +364,7 @@
+ authors = ["Henri Sivonen <hsivonen@hsivonen.fi>"]
+ description = "A Gecko-oriented implementation of the Encoding Standard"
+ homepage = "https://docs.rs/encoding_rs/"
+- documentation = "https://docs.rs/encoding_rs/"
+- readme = "README.md"
+- keywords = [
+- "encoding",
+- "web",
+-@@ -31,23 +32,23 @@ categories = [
+- "internationalization",
+- ]
+- license = "(Apache-2.0 OR MIT) AND BSD-3-Clause"
+- repository = "https://github.com/hsivonen/encoding_rs"
+-
++@@ -36,13 +37,13 @@ repository = "https://github.com/hsivone
+ [profile.release]
+ lto = true
+
+@@ -516,17 +382,7 @@
+ [dependencies.serde]
+ version = "1.0"
+ optional = true
+-
+- [dev-dependencies.bincode]
+- version = "1.0"
+-
+- [dev-dependencies.serde_derive]
+-@@ -69,15 +70,9 @@ fast-legacy-encode = [
+- "fast-hanja-encode",
+- "fast-kanji-encode",
+- "fast-gb-hanzi-encode",
+- "fast-big5-hanzi-encode",
+- ]
++@@ -74,10 +75,4 @@ fast-legacy-encode = [
+ less-slow-big5-hanzi-encode = []
+ less-slow-gb-hanzi-encode = []
+ less-slow-kanji-encode = []
+@@ -538,15 +394,9 @@
+ -[badges.travis-ci]
+ -repository = "hsivonen/encoding_rs"
+ +simd-accel = ["any_all_workaround"]
+-diff --git a/third_party/rust/encoding_rs/README.md b/third_party/rust/encoding_rs/README.md
+ --- a/third_party/rust/encoding_rs/README.md
+ +++ b/third_party/rust/encoding_rs/README.md
+-@@ -162,50 +162,36 @@ wrappers.
+- * [C++](https://github.com/hsivonen/recode_cpp)
+-
+- ## Optional features
+-
+- There are currently these optional cargo features:
++@@ -167,13 +167,15 @@ There are currently these optional cargo
+
+ ### `simd-accel`
+
+@@ -564,11 +414,7 @@
+
+ * x86_64
+ * i686
+- * aarch64
+- * thumbv7neon
+-
+- If you use nightly Rust, you use targets whose first component is one of the
+- above, and you are prepared _to have to revise your configuration when updating
++@@ -185,22 +187,6 @@ above, and you are prepared _to have to
+ Rust_, you should enable this feature. Otherwise, please _do not_ enable this
+ feature.
+
+@@ -591,17 +437,7 @@
+ Used by Firefox.
+
+ ### `serde`
+-
+- Enables support for serializing and deserializing `&'static Encoding`-typed
+- struct fields using [Serde][1].
+-
+- [1]: https://serde.rs/
+-@@ -376,18 +362,19 @@ It is a goal to support the latest stabl
+- the version of Rust that's used for Firefox Nightly.
+-
+- At this time, there is no firm commitment to support a version older than
+- what's required by Firefox, and there is no commitment to treat MSRV changes
+- as semver-breaking, because this crate depends on `cfg-if`, which doesn't
++@@ -381,8 +367,9 @@ as semver-breaking, because this crate d
+ appear to treat MSRV changes as semver-breaking, so it would be useless for
+ this crate to treat MSRV changes as semver-breaking.
+
+@@ -612,17 +448,7 @@
+
+ ## Compatibility with rust-encoding
+
+- A compatibility layer that implements the rust-encoding API on top of
+- encoding_rs is
+- [provided as a separate crate](https://github.com/hsivonen/encoding_rs_compat)
+- (cannot be uploaded to crates.io). The compatibility layer was originally
+- written with the assuption that Firefox would need it, but it is not currently
+-@@ -441,20 +428,27 @@ To regenerate the generated code:
+- - [x] Implement the rust-encoding API in terms of encoding_rs.
+- - [x] Add SIMD acceleration for Aarch64.
+- - [x] Investigate the use of NEON on 32-bit ARM.
+- - [ ] ~Investigate Björn Höhrmann's lookup table acceleration for UTF-8 as
+- adapted to Rust in rust-encoding.~
++@@ -446,10 +433,17 @@ To regenerate the generated code:
+ - [x] Add actually fast CJK encode options.
+ - [ ] ~Investigate [Bob Steagall's lookup table acceleration for UTF-8](https://github.com/BobSteagall/CppNow2018/blob/master/FastConversionFromUTF-8/Fast%20Conversion%20From%20UTF-8%20with%20C%2B%2B%2C%20DFAs%2C%20and%20SSE%20Intrinsics%20-%20Bob%20Steagall%20-%20C%2B%2BNow%202018.pdf).~
+ - [x] Provide a build mode that works without `alloc` (with lesser API surface).
+@@ -641,20 +467,9 @@
+ ### 0.8.33
+
+ * Use `packed_simd` instead of `packed_simd_2` again now that updates are back under the `packed_simd` name. Only affects the `simd-accel` optional nightly feature.
+-
+- ### 0.8.32
+-
+- * Removed `build.rs`. (This removal should resolve false positives reported by some antivirus products. This may break some build configurations that have opted out of Rust's guarantees against future build breakage.)
+- * Internal change to what API is used for reinterpreting the lane configuration of SIMD vectors.
+-diff --git a/third_party/rust/encoding_rs/src/ascii.rs b/third_party/rust/encoding_rs/src/ascii.rs
+ --- a/third_party/rust/encoding_rs/src/ascii.rs
+ +++ b/third_party/rust/encoding_rs/src/ascii.rs
+-@@ -46,71 +46,87 @@ cfg_if! {
+- #[allow(dead_code)]
+- #[inline(always)]
+- fn likely(b: bool) -> bool {
+- b
+- }
++@@ -51,6 +51,8 @@ cfg_if! {
+ }
+ }
+
+@@ -663,11 +478,7 @@
+ // `as` truncates, so works on 32-bit, too.
+ #[allow(dead_code)]
+ pub const ASCII_MASK: usize = 0x8080_8080_8080_8080u64 as usize;
+-
+- // `as` truncates, so works on 32-bit, too.
+- #[allow(dead_code)]
+- pub const BASIC_LATIN_MASK: usize = 0xFF80_FF80_FF80_FF80u64 as usize;
+-
++@@ -62,6 +64,9 @@ pub const BASIC_LATIN_MASK: usize = 0xFF
+ #[allow(unused_macros)]
+ macro_rules! ascii_naive {
+ ($name:ident, $src_unit:ty, $dst_unit:ty) => {
+@@ -677,9 +488,7 @@
+ #[inline(always)]
+ pub unsafe fn $name(
+ src: *const $src_unit,
+- dst: *mut $dst_unit,
+- len: usize,
+- ) -> Option<($src_unit, usize)> {
++@@ -71,10 +76,13 @@ macro_rules! ascii_naive {
+ // Yes, manually omitting the bound check here matters
+ // a lot for perf.
+ for i in 0..len {
+@@ -693,10 +502,7 @@
+ *(dst.add(i)) = code_unit as $dst_unit;
+ }
+ return None;
+- }
+- };
+- }
+-
++@@ -85,9 +93,15 @@ macro_rules! ascii_naive {
+ #[allow(unused_macros)]
+ macro_rules! ascii_alu {
+ ($name:ident,
+@@ -712,10 +518,7 @@
+ #[cfg_attr(feature = "cargo-clippy", allow(never_loop, cast_ptr_alignment))]
+ #[inline(always)]
+ pub unsafe fn $name(
+- src: *const $src_unit,
+- dst: *mut $dst_unit,
+- len: usize,
+- ) -> Option<($src_unit, usize)> {
++@@ -98,6 +112,7 @@ macro_rules! ascii_alu {
+ let mut offset = 0usize;
+ // This loop is only broken out of as a `goto` forward
+ loop {
+@@ -723,8 +526,7 @@
+ let mut until_alignment = {
+ // Check if the other unit aligns if we move the narrower unit
+ // to alignment.
+- // if ::core::mem::size_of::<$src_unit>() == ::core::mem::size_of::<$dst_unit>() {
+- // ascii_to_ascii
++@@ -106,6 +121,7 @@ macro_rules! ascii_alu {
+ let src_alignment = (src as usize) & ALU_ALIGNMENT_MASK;
+ let dst_alignment = (dst as usize) & ALU_ALIGNMENT_MASK;
+ if src_alignment != dst_alignment {
+@@ -732,17 +534,7 @@
+ break;
+ }
+ (ALU_ALIGNMENT - src_alignment) & ALU_ALIGNMENT_MASK
+- // } else if ::core::mem::size_of::<$src_unit>() < ::core::mem::size_of::<$dst_unit>() {
+- // ascii_to_basic_latin
+- // let src_until_alignment = (ALIGNMENT - ((src as usize) & ALIGNMENT_MASK)) & ALIGNMENT_MASK;
+- // if (dst.add(src_until_alignment) as usize) & ALIGNMENT_MASK != 0 {
+- // break;
+-@@ -129,74 +145,104 @@ macro_rules! ascii_alu {
+- // Moving pointers to alignment seems to be a pessimization on
+- // x86_64 for operations that have UTF-16 as the internal
+- // Unicode representation. However, since it seems to be a win
+- // on ARM (tested ARMv7 code running on ARMv8 [rpi3]), except
+- // mixed results when encoding from UTF-16 and since x86 and
++@@ -134,25 +150,40 @@ macro_rules! ascii_alu {
+ // x86_64 should be using SSE2 in due course, keeping the move
+ // to alignment here. It would be good to test on more ARM CPUs
+ // and on real MIPS and POWER hardware.
+@@ -783,7 +575,7 @@
+ if offset > len_minus_stride {
+ break;
+ }
+- }
++@@ -160,11 +191,17 @@ macro_rules! ascii_alu {
+ }
+ break;
+ }
+@@ -801,11 +593,7 @@
+ *(dst.add(offset)) = code_unit as $dst_unit;
+ offset += 1;
+ }
+- None
+- }
+- };
+- }
+-
++@@ -176,9 +213,16 @@ macro_rules! ascii_alu {
+ #[allow(unused_macros)]
+ macro_rules! basic_latin_alu {
+ ($name:ident,
+@@ -822,13 +610,7 @@
+ #[cfg_attr(
+ feature = "cargo-clippy",
+ allow(never_loop, cast_ptr_alignment, cast_lossless)
+- )]
+- #[inline(always)]
+- pub unsafe fn $name(
+- src: *const $src_unit,
+- dst: *mut $dst_unit,
+- len: usize,
+- ) -> Option<($src_unit, usize)> {
++@@ -192,6 +236,8 @@ macro_rules! basic_latin_alu {
+ let mut offset = 0usize;
+ // This loop is only broken out of as a `goto` forward
+ loop {
+@@ -837,17 +619,7 @@
+ let mut until_alignment = {
+ // Check if the other unit aligns if we move the narrower unit
+ // to alignment.
+- // if ::core::mem::size_of::<$src_unit>() == ::core::mem::size_of::<$dst_unit>() {
+- // ascii_to_ascii
+- // let src_alignment = (src as usize) & ALIGNMENT_MASK;
+- // let dst_alignment = (dst as usize) & ALIGNMENT_MASK;
+- // if src_alignment != dst_alignment {
+-@@ -232,66 +278,89 @@ macro_rules! basic_latin_alu {
+- // Moving pointers to alignment seems to be a pessimization on
+- // x86_64 for operations that have UTF-16 as the internal
+- // Unicode representation. However, since it seems to be a win
+- // on ARM (tested ARMv7 code running on ARMv8 [rpi3]), except
+- // mixed results when encoding from UTF-16 and since x86 and
++@@ -237,24 +283,37 @@ macro_rules! basic_latin_alu {
+ // x86_64 should be using SSE2 in due course, keeping the move
+ // to alignment here. It would be good to test on more ARM CPUs
+ // and on real MIPS and POWER hardware.
+@@ -885,7 +657,7 @@
+ if offset > len_minus_stride {
+ break;
+ }
+- }
++@@ -262,11 +321,15 @@ macro_rules! basic_latin_alu {
+ }
+ break;
+ }
+@@ -901,10 +673,7 @@
+ *(dst.add(offset)) = code_unit as $dst_unit;
+ offset += 1;
+ }
+- None
+- }
+- };
+- }
++@@ -277,7 +340,11 @@ macro_rules! basic_latin_alu {
+
+ #[allow(unused_macros)]
+ macro_rules! latin1_alu {
+@@ -916,9 +685,7 @@
+ #[cfg_attr(
+ feature = "cargo-clippy",
+ allow(never_loop, cast_ptr_alignment, cast_lossless)
+- )]
+- #[inline(always)]
+- pub unsafe fn $name(src: *const $src_unit, dst: *mut $dst_unit, len: usize) {
++@@ -287,6 +354,8 @@ macro_rules! latin1_alu {
+ let mut offset = 0usize;
+ // This loop is only broken out of as a `goto` forward
+ loop {
+@@ -927,17 +694,7 @@
+ let mut until_alignment = {
+ if ::core::mem::size_of::<$src_unit>() < ::core::mem::size_of::<$dst_unit>() {
+ // unpack
+- let src_until_alignment = (ALU_ALIGNMENT
+- - ((src as usize) & ALU_ALIGNMENT_MASK))
+- & ALU_ALIGNMENT_MASK;
+- if (dst.wrapping_add(src_until_alignment) as usize) & ALU_ALIGNMENT_MASK
+- != 0
+-@@ -308,373 +377,485 @@ macro_rules! latin1_alu {
+- != 0
+- {
+- break;
+- }
+- dst_until_alignment
++@@ -313,19 +382,30 @@ macro_rules! latin1_alu {
+ }
+ };
+ if until_alignment + ALU_STRIDE_SIZE <= len {
+@@ -968,7 +725,7 @@
+ if offset > len_minus_stride {
+ break;
+ }
+- }
++@@ -333,7 +413,9 @@ macro_rules! latin1_alu {
+ }
+ break;
+ }
+@@ -978,14 +735,7 @@
+ let code_unit = *(src.add(offset));
+ *(dst.add(offset)) = code_unit as $dst_unit;
+ offset += 1;
+- }
+- }
+- };
+- }
+-
+- #[allow(unused_macros)]
+- macro_rules! ascii_simd_check_align {
+- (
++@@ -348,11 +430,19 @@ macro_rules! ascii_simd_check_align {
+ $name:ident,
+ $src_unit:ty,
+ $dst_unit:ty,
+@@ -1005,7 +755,7 @@
+ #[inline(always)]
+ pub unsafe fn $name(
+ src: *const $src_unit,
+- dst: *mut $dst_unit,
++@@ -360,6 +450,7 @@ macro_rules! ascii_simd_check_align {
+ len: usize,
+ ) -> Option<($src_unit, usize)> {
+ let mut offset = 0usize;
+@@ -1013,8 +763,7 @@
+ if SIMD_STRIDE_SIZE <= len {
+ let len_minus_stride = len - SIMD_STRIDE_SIZE;
+ // XXX Should we first process one stride unconditionally as unaligned to
+- // avoid the cost of the branchiness below if the first stride fails anyway?
+- // XXX Should we just use unaligned SSE2 access unconditionally? It seems that
++@@ -368,23 +459,29 @@ macro_rules! ascii_simd_check_align {
+ // on Haswell, it would make sense to just use unaligned and not bother
+ // checking. Need to benchmark older architectures before deciding.
+ let dst_masked = (dst as usize) & SIMD_ALIGNMENT_MASK;
+@@ -1044,8 +793,7 @@
+ if offset > len_minus_stride {
+ break;
+ }
+- }
+- }
++@@ -393,20 +490,24 @@ macro_rules! ascii_simd_check_align {
+ } else {
+ if dst_masked == 0 {
+ loop {
+@@ -1070,8 +818,7 @@
+ if offset > len_minus_stride {
+ break;
+ }
+- }
+- }
++@@ -415,8 +516,10 @@ macro_rules! ascii_simd_check_align {
+ }
+ }
+ while offset < len {
+@@ -1082,16 +829,7 @@
+ return Some((code_unit, offset));
+ }
+ *(dst.add(offset)) = code_unit as $dst_unit;
+- offset += 1;
+- }
+- None
+- }
+- };
+- }
+-
+- #[allow(unused_macros)]
+- macro_rules! ascii_simd_check_align_unrolled {
+- (
++@@ -433,13 +536,21 @@ macro_rules! ascii_simd_check_align_unro
+ $name:ident,
+ $src_unit:ty,
+ $dst_unit:ty,
+@@ -1114,10 +852,7 @@
+ pub unsafe fn $name(
+ src: *const $src_unit,
+ dst: *mut $dst_unit,
+- len: usize,
+- ) -> Option<($src_unit, usize)> {
+- let unit_size = ::core::mem::size_of::<$src_unit>();
+- let mut offset = 0usize;
++@@ -450,8 +561,10 @@ macro_rules! ascii_simd_check_align_unro
+ // This loop is only broken out of as a goto forward without
+ // actually looping
+ 'outer: loop {
+@@ -1128,9 +863,7 @@
+ if !$stride_neither_aligned(src, dst) {
+ break 'outer;
+ }
+- offset = SIMD_STRIDE_SIZE;
+-
+- // We have now seen 16 ASCII bytes. Let's guess that
++@@ -461,37 +574,54 @@ macro_rules! ascii_simd_check_align_unro
+ // there will be enough more to justify more expense
+ // in the case of non-ASCII.
+ // Use aligned reads for the sake of old microachitectures.
+@@ -1186,8 +919,7 @@
+ if offset + SIMD_STRIDE_SIZE <= len {
+ if !$stride_both_aligned(src.add(offset), dst.add(offset)) {
+ break 'outer;
+- }
+- offset += SIMD_STRIDE_SIZE;
++@@ -500,18 +630,25 @@ macro_rules! ascii_simd_check_align_unro
+ }
+ } else {
+ loop {
+@@ -1213,10 +945,7 @@
+ if offset + SIMD_STRIDE_SIZE <= len {
+ if !$stride_src_aligned(src.add(offset), dst.add(offset)) {
+ break 'outer;
+- }
+- offset += SIMD_STRIDE_SIZE;
+- }
+- }
++@@ -522,11 +659,13 @@ macro_rules! ascii_simd_check_align_unro
+ } else {
+ // At most two iterations, so unroll
+ if offset + SIMD_STRIDE_SIZE <= len {
+@@ -1230,11 +959,7 @@
+ if !$stride_neither_aligned(src.add(offset), dst.add(offset)) {
+ break;
+ }
+- offset += SIMD_STRIDE_SIZE;
+- }
+- }
+- }
+- }
++@@ -538,8 +677,10 @@ macro_rules! ascii_simd_check_align_unro
+ break 'outer;
+ }
+ while offset < len {
+@@ -1245,16 +970,7 @@
+ return Some((code_unit, offset));
+ }
+ *(dst.add(offset)) = code_unit as $dst_unit;
+- offset += 1;
+- }
+- None
+- }
+- };
+- }
+-
+- #[allow(unused_macros)]
+- macro_rules! latin1_simd_check_align {
+- (
++@@ -556,30 +697,45 @@ macro_rules! latin1_simd_check_align {
+ $name:ident,
+ $src_unit:ty,
+ $dst_unit:ty,
+@@ -1300,8 +1016,7 @@
+ if offset > len_minus_stride {
+ break;
+ }
+- }
+- }
++@@ -588,16 +744,22 @@ macro_rules! latin1_simd_check_align {
+ } else {
+ if dst_masked == 0 {
+ loop {
+@@ -1324,8 +1039,7 @@
+ if offset > len_minus_stride {
+ break;
+ }
+- }
+- }
++@@ -606,6 +768,7 @@ macro_rules! latin1_simd_check_align {
+ }
+ }
+ while offset < len {
+@@ -1333,14 +1047,7 @@
+ let code_unit = *(src.add(offset));
+ *(dst.add(offset)) = code_unit as $dst_unit;
+ offset += 1;
+- }
+- }
+- };
+- }
+-
+- #[allow(unused_macros)]
+- macro_rules! latin1_simd_check_align_unrolled {
+- (
++@@ -620,56 +783,74 @@ macro_rules! latin1_simd_check_align_unr
+ $name:ident,
+ $src_unit:ty,
+ $dst_unit:ty,
+@@ -1415,17 +1122,7 @@
+ let code_unit = *(src.add(offset));
+ // On x86_64, this loop autovectorizes but in the pack
+ // case there are instructions whose purpose is to make sure
+- // each u16 in the vector is truncated before packing. However,
+- // since we don't care about saturating behavior of SSE2 packing
+- // when the input isn't Latin1, those instructions are useless.
+- // Unfortunately, using the `assume` intrinsic to lie to the
+- // optimizer doesn't make LLVM omit the trunctation that we
+-@@ -688,138 +869,180 @@ macro_rules! latin1_simd_check_align_unr
+- offset += 1;
+- }
+- }
+- };
+- }
++@@ -693,7 +874,12 @@ macro_rules! latin1_simd_check_align_unr
+
+ #[allow(unused_macros)]
+ macro_rules! ascii_simd_unalign {
+@@ -1438,7 +1135,7 @@
+ #[inline(always)]
+ pub unsafe fn $name(
+ src: *const $src_unit,
+- dst: *mut $dst_unit,
++@@ -701,21 +887,26 @@ macro_rules! ascii_simd_unalign {
+ len: usize,
+ ) -> Option<($src_unit, usize)> {
+ let mut offset = 0usize;
+@@ -1465,12 +1162,7 @@
+ return Some((code_unit, offset));
+ }
+ *(dst.add(offset)) = code_unit as $dst_unit;
+- offset += 1;
+- }
+- None
+- }
+- };
+- }
++@@ -728,21 +919,27 @@ macro_rules! ascii_simd_unalign {
+
+ #[allow(unused_macros)]
+ macro_rules! latin1_simd_unalign {
+@@ -1498,10 +1190,7 @@
+ let code_unit = *(src.add(offset));
+ *(dst.add(offset)) = code_unit as $dst_unit;
+ offset += 1;
+- }
+- }
+- };
+- }
++@@ -753,7 +950,11 @@ macro_rules! latin1_simd_unalign {
+
+ #[allow(unused_macros)]
+ macro_rules! ascii_to_ascii_simd_stride {
+@@ -1513,14 +1202,7 @@
+ #[inline(always)]
+ pub unsafe fn $name(src: *const u8, dst: *mut u8) -> bool {
+ let simd = $load(src);
+- if !simd_is_ascii(simd) {
+- return false;
+- }
+- $store(dst, simd);
+- true
+- }
+- };
+- }
++@@ -768,19 +969,32 @@ macro_rules! ascii_to_ascii_simd_stride
+
+ #[allow(unused_macros)]
+ macro_rules! ascii_to_ascii_simd_double_stride {
+@@ -1553,10 +1235,7 @@
+ return Some(SIMD_STRIDE_SIZE + mask_second.trailing_zeros() as usize);
+ }
+ $store(dst.add(SIMD_STRIDE_SIZE), second);
+- None
+- }
+- };
+- }
++@@ -791,7 +1005,11 @@ macro_rules! ascii_to_ascii_simd_double_
+
+ #[allow(unused_macros)]
+ macro_rules! ascii_to_basic_latin_simd_stride {
+@@ -1568,16 +1247,7 @@
+ #[inline(always)]
+ pub unsafe fn $name(src: *const u8, dst: *mut u16) -> bool {
+ let simd = $load(src);
+- if !simd_is_ascii(simd) {
+- return false;
+- }
+- let (first, second) = simd_unpack(simd);
+- $store(dst, first);
+- $store(dst.add(8), second);
+- true
+- }
+- };
+- }
++@@ -808,13 +1026,18 @@ macro_rules! ascii_to_basic_latin_simd_s
+
+ #[allow(unused_macros)]
+ macro_rules! ascii_to_basic_latin_simd_double_stride {
+@@ -1596,17 +1266,7 @@
+ $store(dst.add(SIMD_STRIDE_SIZE / 2), b);
+ if unlikely(!simd_is_ascii(first | second)) {
+ let mask_first = mask_ascii(first);
+- if mask_first != 0 {
+- return Some(mask_first.trailing_zeros() as usize);
+- }
+- let (c, d) = simd_unpack(second);
+- $store(dst.add(SIMD_STRIDE_SIZE), c);
+-@@ -832,47 +1055,59 @@ macro_rules! ascii_to_basic_latin_simd_d
+- $store(dst.add(SIMD_STRIDE_SIZE + (SIMD_STRIDE_SIZE / 2)), d);
+- None
+- }
+- };
+- }
++@@ -837,7 +1060,11 @@ macro_rules! ascii_to_basic_latin_simd_d
+
+ #[allow(unused_macros)]
+ macro_rules! unpack_simd_stride {
+@@ -1618,12 +1278,7 @@
+ #[inline(always)]
+ pub unsafe fn $name(src: *const u8, dst: *mut u16) {
+ let simd = $load(src);
+- let (first, second) = simd_unpack(simd);
+- $store(dst, first);
+- $store(dst.add(8), second);
+- }
+- };
+- }
++@@ -850,7 +1077,11 @@ macro_rules! unpack_simd_stride {
+
+ #[allow(unused_macros)]
+ macro_rules! basic_latin_to_ascii_simd_stride {
+@@ -1635,16 +1290,7 @@
+ #[inline(always)]
+ pub unsafe fn $name(src: *const u16, dst: *mut u8) -> bool {
+ let first = $load(src);
+- let second = $load(src.add(8));
+- if simd_is_basic_latin(first | second) {
+- $store(dst, simd_pack(first, second));
+- true
+- } else {
+- false
+- }
+- }
+- };
+- }
++@@ -867,7 +1098,11 @@ macro_rules! basic_latin_to_ascii_simd_s
+
+ #[allow(unused_macros)]
+ macro_rules! pack_simd_stride {
+@@ -1656,17 +1302,7 @@
+ #[inline(always)]
+ pub unsafe fn $name(src: *const u16, dst: *mut u8) {
+ let first = $load(src);
+- let second = $load(src.add(8));
+- $store(dst, simd_pack(first, second));
+- }
+- };
+- }
+-@@ -888,24 +1123,28 @@ cfg_if! {
+- // pub const ALIGNMENT: usize = 8;
+-
+- pub const ALU_STRIDE_SIZE: usize = 16;
+-
+- pub const ALU_ALIGNMENT: usize = 8;
++@@ -893,6 +1128,8 @@ cfg_if! {
+
+ pub const ALU_ALIGNMENT_MASK: usize = 7;
+
+@@ -1675,8 +1311,7 @@
+ ascii_to_ascii_simd_stride!(ascii_to_ascii_stride_neither_aligned, load16_unaligned, store16_unaligned);
+
+ ascii_to_basic_latin_simd_stride!(ascii_to_basic_latin_stride_neither_aligned, load16_unaligned, store8_unaligned);
+- unpack_simd_stride!(unpack_stride_neither_aligned, load16_unaligned, store8_unaligned);
+-
++@@ -901,6 +1138,8 @@ cfg_if! {
+ basic_latin_to_ascii_simd_stride!(basic_latin_to_ascii_stride_neither_aligned, load8_unaligned, store16_unaligned);
+ pack_simd_stride!(pack_stride_neither_aligned, load8_unaligned, store16_unaligned);
+
+@@ -1685,17 +1320,7 @@
+ ascii_simd_unalign!(ascii_to_ascii, u8, u8, ascii_to_ascii_stride_neither_aligned);
+ ascii_simd_unalign!(ascii_to_basic_latin, u8, u16, ascii_to_basic_latin_stride_neither_aligned);
+ ascii_simd_unalign!(basic_latin_to_ascii, u16, u8, basic_latin_to_ascii_stride_neither_aligned);
+- latin1_simd_unalign!(unpack_latin1, u8, u16, unpack_stride_neither_aligned);
+- latin1_simd_unalign!(pack_latin1, u16, u8, pack_stride_neither_aligned);
+- } else if #[cfg(all(feature = "simd-accel", target_endian = "little", target_feature = "neon"))] {
+- // SIMD with different instructions for aligned and unaligned loads and stores.
+- //
+-@@ -914,16 +1153,19 @@ cfg_if! {
+- // but the benchmark results I see don't agree.
+-
+- pub const SIMD_STRIDE_SIZE: usize = 16;
+-
+- pub const MAX_STRIDE_SIZE: usize = 16;
++@@ -919,6 +1158,9 @@ cfg_if! {
+
+ pub const SIMD_ALIGNMENT_MASK: usize = 15;
+
+@@ -1705,17 +1330,7 @@
+ ascii_to_ascii_simd_stride!(ascii_to_ascii_stride_both_aligned, load16_aligned, store16_aligned);
+ ascii_to_ascii_simd_stride!(ascii_to_ascii_stride_src_aligned, load16_aligned, store16_unaligned);
+ ascii_to_ascii_simd_stride!(ascii_to_ascii_stride_dst_aligned, load16_unaligned, store16_aligned);
+- ascii_to_ascii_simd_stride!(ascii_to_ascii_stride_neither_aligned, load16_unaligned, store16_unaligned);
+-
+- ascii_to_basic_latin_simd_stride!(ascii_to_basic_latin_stride_both_aligned, load16_aligned, store8_aligned);
+- ascii_to_basic_latin_simd_stride!(ascii_to_basic_latin_stride_src_aligned, load16_aligned, store8_unaligned);
+- ascii_to_basic_latin_simd_stride!(ascii_to_basic_latin_stride_dst_aligned, load16_unaligned, store8_aligned);
+-@@ -939,36 +1181,43 @@ cfg_if! {
+- basic_latin_to_ascii_simd_stride!(basic_latin_to_ascii_stride_dst_aligned, load8_unaligned, store16_aligned);
+- basic_latin_to_ascii_simd_stride!(basic_latin_to_ascii_stride_neither_aligned, load8_unaligned, store16_unaligned);
+-
+- pack_simd_stride!(pack_stride_both_aligned, load8_aligned, store16_aligned);
+- pack_simd_stride!(pack_stride_src_aligned, load8_aligned, store16_unaligned);
++@@ -944,6 +1186,9 @@ cfg_if! {
+ pack_simd_stride!(pack_stride_dst_aligned, load8_unaligned, store16_aligned);
+ pack_simd_stride!(pack_stride_neither_aligned, load8_unaligned, store16_unaligned);
+
+@@ -1725,14 +1340,7 @@
+ ascii_simd_check_align!(ascii_to_ascii, u8, u8, ascii_to_ascii_stride_both_aligned, ascii_to_ascii_stride_src_aligned, ascii_to_ascii_stride_dst_aligned, ascii_to_ascii_stride_neither_aligned);
+ ascii_simd_check_align!(ascii_to_basic_latin, u8, u16, ascii_to_basic_latin_stride_both_aligned, ascii_to_basic_latin_stride_src_aligned, ascii_to_basic_latin_stride_dst_aligned, ascii_to_basic_latin_stride_neither_aligned);
+ ascii_simd_check_align!(basic_latin_to_ascii, u16, u8, basic_latin_to_ascii_stride_both_aligned, basic_latin_to_ascii_stride_src_aligned, basic_latin_to_ascii_stride_dst_aligned, basic_latin_to_ascii_stride_neither_aligned);
+- latin1_simd_check_align!(unpack_latin1, u8, u16, unpack_stride_both_aligned, unpack_stride_src_aligned, unpack_stride_dst_aligned, unpack_stride_neither_aligned);
+- latin1_simd_check_align!(pack_latin1, u16, u8, pack_stride_both_aligned, pack_stride_src_aligned, pack_stride_dst_aligned, pack_stride_neither_aligned);
+- } else if #[cfg(all(feature = "simd-accel", target_feature = "sse2"))] {
+- // SIMD with different instructions for aligned and unaligned loads and stores.
+- //
+- // Newer microarchitectures are not supposed to have a performance difference between
+- // aligned and unaligned SSE2 loads and stores when the address is actually aligned,
+- // but the benchmark results I see don't agree.
++@@ -958,12 +1203,16 @@ cfg_if! {
+
+ pub const SIMD_STRIDE_SIZE: usize = 16;
+
+@@ -1749,17 +1357,7 @@
+ ascii_to_ascii_simd_double_stride!(ascii_to_ascii_simd_double_stride_both_aligned, store16_aligned);
+ ascii_to_ascii_simd_double_stride!(ascii_to_ascii_simd_double_stride_src_aligned, store16_unaligned);
+
+- ascii_to_basic_latin_simd_double_stride!(ascii_to_basic_latin_simd_double_stride_both_aligned, store8_aligned);
+- ascii_to_basic_latin_simd_double_stride!(ascii_to_basic_latin_simd_double_stride_src_aligned, store8_unaligned);
+-
+- ascii_to_ascii_simd_stride!(ascii_to_ascii_stride_both_aligned, load16_aligned, store16_aligned);
+- ascii_to_ascii_simd_stride!(ascii_to_ascii_stride_src_aligned, load16_aligned, store16_unaligned);
+-@@ -984,33 +1233,43 @@ cfg_if! {
+- basic_latin_to_ascii_simd_stride!(basic_latin_to_ascii_stride_both_aligned, load8_aligned, store16_aligned);
+- basic_latin_to_ascii_simd_stride!(basic_latin_to_ascii_stride_src_aligned, load8_aligned, store16_unaligned);
+- basic_latin_to_ascii_simd_stride!(basic_latin_to_ascii_stride_dst_aligned, load8_unaligned, store16_aligned);
+- basic_latin_to_ascii_simd_stride!(basic_latin_to_ascii_stride_neither_aligned, load8_unaligned, store16_unaligned);
+-
++@@ -989,6 +1238,9 @@ cfg_if! {
+ pack_simd_stride!(pack_stride_both_aligned, load8_aligned, store16_aligned);
+ pack_simd_stride!(pack_stride_src_aligned, load8_aligned, store16_unaligned);
+
+@@ -1769,9 +1367,7 @@
+ ascii_simd_check_align_unrolled!(ascii_to_ascii, u8, u8, ascii_to_ascii_stride_both_aligned, ascii_to_ascii_stride_src_aligned, ascii_to_ascii_stride_neither_aligned, ascii_to_ascii_simd_double_stride_both_aligned, ascii_to_ascii_simd_double_stride_src_aligned);
+ ascii_simd_check_align_unrolled!(ascii_to_basic_latin, u8, u16, ascii_to_basic_latin_stride_both_aligned, ascii_to_basic_latin_stride_src_aligned, ascii_to_basic_latin_stride_neither_aligned, ascii_to_basic_latin_simd_double_stride_both_aligned, ascii_to_basic_latin_simd_double_stride_src_aligned);
+
+- ascii_simd_check_align!(basic_latin_to_ascii, u16, u8, basic_latin_to_ascii_stride_both_aligned, basic_latin_to_ascii_stride_src_aligned, basic_latin_to_ascii_stride_dst_aligned, basic_latin_to_ascii_stride_neither_aligned);
+- latin1_simd_check_align_unrolled!(unpack_latin1, u8, u16, unpack_stride_both_aligned, unpack_stride_src_aligned, unpack_stride_dst_aligned, unpack_stride_neither_aligned);
+- latin1_simd_check_align_unrolled!(pack_latin1, u16, u8, pack_stride_both_aligned, pack_stride_src_aligned, pack_stride_dst_aligned, pack_stride_neither_aligned);
++@@ -998,14 +1250,21 @@ cfg_if! {
+ } else if #[cfg(all(target_endian = "little", target_pointer_width = "64"))] {
+ // Aligned ALU word, little-endian, 64-bit
+
+@@ -1793,17 +1389,7 @@
+ #[inline(always)]
+ unsafe fn unpack_alu(word: usize, second_word: usize, dst: *mut usize) {
+ let first = ((0x0000_0000_FF00_0000usize & word) << 24) |
+- ((0x0000_0000_00FF_0000usize & word) << 16) |
+- ((0x0000_0000_0000_FF00usize & word) << 8) |
+- (0x0000_0000_0000_00FFusize & word);
+- let second = ((0xFF00_0000_0000_0000usize & word) >> 8) |
+- ((0x00FF_0000_0000_0000usize & word) >> 16) |
+-@@ -1019,22 +1278,24 @@ cfg_if! {
+- let third = ((0x0000_0000_FF00_0000usize & second_word) << 24) |
+- ((0x0000_0000_00FF_0000usize & second_word) << 16) |
+- ((0x0000_0000_0000_FF00usize & second_word) << 8) |
+- (0x0000_0000_0000_00FFusize & second_word);
+- let fourth = ((0xFF00_0000_0000_0000usize & second_word) >> 8) |
++@@ -1024,12 +1283,14 @@ cfg_if! {
+ ((0x00FF_0000_0000_0000usize & second_word) >> 16) |
+ ((0x0000_FF00_0000_0000usize & second_word) >> 24) |
+ ((0x0000_00FF_0000_0000usize & second_word) >> 32);
+@@ -1818,17 +1404,7 @@
+ #[inline(always)]
+ unsafe fn pack_alu(first: usize, second: usize, third: usize, fourth: usize, dst: *mut usize) {
+ let word = ((0x00FF_0000_0000_0000usize & second) << 8) |
+- ((0x0000_00FF_0000_0000usize & second) << 16) |
+- ((0x0000_0000_00FF_0000usize & second) << 24) |
+- ((0x0000_0000_0000_00FFusize & second) << 32) |
+- ((0x00FF_0000_0000_0000usize & first) >> 24) |
+- ((0x0000_00FF_0000_0000usize & first) >> 16) |
+-@@ -1043,70 +1304,88 @@ cfg_if! {
+- let second_word = ((0x00FF_0000_0000_0000usize & fourth) << 8) |
+- ((0x0000_00FF_0000_0000usize & fourth) << 16) |
+- ((0x0000_0000_00FF_0000usize & fourth) << 24) |
+- ((0x0000_0000_0000_00FFusize & fourth) << 32) |
+- ((0x00FF_0000_0000_0000usize & third) >> 24) |
++@@ -1048,20 +1309,28 @@ cfg_if! {
+ ((0x0000_00FF_0000_0000usize & third) >> 16) |
+ ((0x0000_0000_00FF_0000usize & third) >> 8) |
+ (0x0000_0000_0000_00FFusize & third);
+@@ -1857,10 +1433,7 @@
+ #[inline(always)]
+ unsafe fn unpack_alu(word: usize, second_word: usize, dst: *mut usize) {
+ let first = ((0x0000_FF00usize & word) << 8) |
+- (0x0000_00FFusize & word);
+- let second = ((0xFF00_0000usize & word) >> 8) |
+- ((0x00FF_0000usize & word) >> 16);
+- let third = ((0x0000_FF00usize & second_word) << 8) |
++@@ -1072,12 +1341,14 @@ cfg_if! {
+ (0x0000_00FFusize & second_word);
+ let fourth = ((0xFF00_0000usize & second_word) >> 8) |
+ ((0x00FF_0000usize & second_word) >> 16);
+@@ -1875,10 +1448,7 @@
+ #[inline(always)]
+ unsafe fn pack_alu(first: usize, second: usize, third: usize, fourth: usize, dst: *mut usize) {
+ let word = ((0x00FF_0000usize & second) << 8) |
+- ((0x0000_00FFusize & second) << 16) |
+- ((0x00FF_0000usize & first) >> 8) |
+- (0x0000_00FFusize & first);
+- let second_word = ((0x00FF_0000usize & fourth) << 8) |
++@@ -1088,20 +1359,28 @@ cfg_if! {
+ ((0x0000_00FFusize & fourth) << 16) |
+ ((0x00FF_0000usize & third) >> 8) |
+ (0x0000_00FFusize & third);
+@@ -1907,17 +1477,7 @@
+ #[inline(always)]
+ unsafe fn unpack_alu(word: usize, second_word: usize, dst: *mut usize) {
+ let first = ((0xFF00_0000_0000_0000usize & word) >> 8) |
+- ((0x00FF_0000_0000_0000usize & word) >> 16) |
+- ((0x0000_FF00_0000_0000usize & word) >> 24) |
+- ((0x0000_00FF_0000_0000usize & word) >> 32);
+- let second = ((0x0000_0000_FF00_0000usize & word) << 24) |
+- ((0x0000_0000_00FF_0000usize & word) << 16) |
+-@@ -1115,22 +1394,24 @@ cfg_if! {
+- let third = ((0xFF00_0000_0000_0000usize & second_word) >> 8) |
+- ((0x00FF_0000_0000_0000usize & second_word) >> 16) |
+- ((0x0000_FF00_0000_0000usize & second_word) >> 24) |
+- ((0x0000_00FF_0000_0000usize & second_word) >> 32);
+- let fourth = ((0x0000_0000_FF00_0000usize & second_word) << 24) |
++@@ -1120,12 +1399,14 @@ cfg_if! {
+ ((0x0000_0000_00FF_0000usize & second_word) << 16) |
+ ((0x0000_0000_0000_FF00usize & second_word) << 8) |
+ (0x0000_0000_0000_00FFusize & second_word);
+@@ -1932,17 +1492,7 @@
+ #[inline(always)]
+ unsafe fn pack_alu(first: usize, second: usize, third: usize, fourth: usize, dst: *mut usize) {
+ let word = ((0x00FF0000_00000000usize & first) << 8) |
+- ((0x000000FF_00000000usize & first) << 16) |
+- ((0x00000000_00FF0000usize & first) << 24) |
+- ((0x00000000_000000FFusize & first) << 32) |
+- ((0x00FF0000_00000000usize & second) >> 24) |
+- ((0x000000FF_00000000usize & second) >> 16) |
+-@@ -1139,67 +1420,80 @@ cfg_if! {
+- let second_word = ((0x00FF0000_00000000usize & third) << 8) |
+- ((0x000000FF_00000000usize & third) << 16) |
+- ((0x00000000_00FF0000usize & third) << 24) |
+- ((0x00000000_000000FFusize & third) << 32) |
+- ((0x00FF0000_00000000usize & fourth) >> 24) |
++@@ -1144,20 +1425,28 @@ cfg_if! {
+ ((0x000000FF_00000000usize & fourth) >> 16) |
+ ((0x00000000_00FF0000usize & fourth) >> 8) |
+ (0x00000000_000000FFusize & fourth);
+@@ -1971,10 +1521,7 @@
+ #[inline(always)]
+ unsafe fn unpack_alu(word: usize, second_word: usize, dst: *mut usize) {
+ let first = ((0xFF00_0000usize & word) >> 8) |
+- ((0x00FF_0000usize & word) >> 16);
+- let second = ((0x0000_FF00usize & word) << 8) |
+- (0x0000_00FFusize & word);
+- let third = ((0xFF00_0000usize & second_word) >> 8) |
++@@ -1168,12 +1457,14 @@ cfg_if! {
+ ((0x00FF_0000usize & second_word) >> 16);
+ let fourth = ((0x0000_FF00usize & second_word) << 8) |
+ (0x0000_00FFusize & second_word);
+@@ -1989,10 +1536,7 @@
+ #[inline(always)]
+ unsafe fn pack_alu(first: usize, second: usize, third: usize, fourth: usize, dst: *mut usize) {
+ let word = ((0x00FF_0000usize & first) << 8) |
+- ((0x0000_00FFusize & first) << 16) |
+- ((0x00FF_0000usize & second) >> 8) |
+- (0x0000_00FFusize & second);
+- let second_word = ((0x00FF_0000usize & third) << 8) |
++@@ -1184,6 +1475,7 @@ cfg_if! {
+ ((0x0000_00FFusize & third) << 16) |
+ ((0x00FF_0000usize & fourth) >> 8) |
+ (0x0000_00FFusize & fourth);
+@@ -2000,11 +1544,7 @@
+ *dst = word;
+ *(dst.add(1)) = second_word;
+ }
+- } else {
+- ascii_naive!(ascii_to_ascii, u8, u8);
+- ascii_naive!(ascii_to_basic_latin, u8, u16);
+- ascii_naive!(basic_latin_to_ascii, u16, u8);
+- }
++@@ -1195,6 +1487,8 @@ cfg_if! {
+ }
+
+ cfg_if! {
+@@ -2013,17 +1553,7 @@
+ if #[cfg(target_endian = "little")] {
+ #[allow(dead_code)]
+ #[inline(always)]
+- fn count_zeros(word: usize) -> u32 {
+- word.trailing_zeros()
+- }
+- } else {
+- #[allow(dead_code)]
+-@@ -1207,208 +1501,272 @@ cfg_if! {
+- fn count_zeros(word: usize) -> u32 {
+- word.leading_zeros()
+- }
+- }
+- }
++@@ -1212,19 +1506,24 @@ cfg_if! {
+
+ cfg_if! {
+ if #[cfg(all(feature = "simd-accel", target_endian = "little", target_arch = "disabled"))] {
+@@ -2048,8 +1578,7 @@
+ if offset > len_minus_stride {
+ break;
+ }
+- }
+- }
++@@ -1233,6 +1532,7 @@ cfg_if! {
+ while offset < len {
+ let code_unit = slice[offset];
+ if code_unit > 127 {
+@@ -2057,7 +1586,7 @@
+ return Some((code_unit, offset));
+ }
+ offset += 1;
+- }
++@@ -1240,13 +1540,17 @@ cfg_if! {
+ None
+ }
+ } else if #[cfg(all(feature = "simd-accel", target_feature = "sse2"))] {
+@@ -2075,8 +1604,7 @@
+ let simd = unsafe { load16_unaligned(src) };
+ let mask = mask_ascii(simd);
+ if mask != 0 {
+- offset = mask.trailing_zeros() as usize;
+- let non_ascii = unsafe { *src.add(offset) };
++@@ -1255,18 +1559,26 @@ cfg_if! {
+ return Some((non_ascii, offset));
+ }
+ offset = SIMD_STRIDE_SIZE;
+@@ -2103,9 +1631,7 @@
+ let simd = unsafe { load16_unaligned(src.add(offset)) };
+ let mask = mask_ascii(simd);
+ if mask != 0 {
+- offset += mask.trailing_zeros() as usize;
+- let non_ascii = unsafe { *src.add(offset) };
+- return Some((non_ascii, offset));
++@@ -1276,53 +1588,78 @@ cfg_if! {
+ }
+ offset += until_alignment;
+ }
+@@ -2186,8 +1712,7 @@
+ return Some((non_ascii, offset));
+ }
+ offset += SIMD_STRIDE_SIZE;
+- }
+- }
++@@ -1331,8 +1668,10 @@ cfg_if! {
+ }
+ }
+ while offset < len {
+@@ -2198,7 +1723,7 @@
+ return Some((code_unit, offset));
+ }
+ offset += 1;
+- }
++@@ -1340,31 +1679,40 @@ cfg_if! {
+ None
+ }
+ } else {
+@@ -2241,7 +1766,7 @@
+ #[inline(always)]
+ unsafe fn validate_ascii_stride(src: *const usize) -> Option<usize> {
+ let word = *src;
+- let second_word = *(src.add(1));
++@@ -1372,6 +1720,8 @@ cfg_if! {
+ find_non_ascii(word, second_word)
+ }
+
+@@ -2250,7 +1775,7 @@
+ #[cfg_attr(feature = "cargo-clippy", allow(cast_ptr_alignment))]
+ #[inline(always)]
+ pub fn validate_ascii(slice: &[u8]) -> Option<(u8, usize)> {
+- let src = slice.as_ptr();
++@@ -1379,23 +1729,30 @@ cfg_if! {
+ let len = slice.len();
+ let mut offset = 0usize;
+ let mut until_alignment = (ALU_ALIGNMENT - ((src as usize) & ALU_ALIGNMENT_MASK)) & ALU_ALIGNMENT_MASK;
+@@ -2281,8 +1806,7 @@
+ if offset > len_minus_stride {
+ break;
+ }
+- }
+- }
++@@ -1404,6 +1761,7 @@ cfg_if! {
+ while offset < len {
+ let code_unit = slice[offset];
+ if code_unit > 127 {
+@@ -2290,17 +1814,7 @@
+ return Some((code_unit, offset));
+ }
+ offset += 1;
+- }
+- None
+- }
+-
+- }
+-@@ -1423,70 +1781,88 @@ cfg_if! {
+- // vector reads without vector writes.
+-
+- pub const ALU_STRIDE_SIZE: usize = 8;
+-
+- pub const ALU_ALIGNMENT: usize = 4;
++@@ -1428,36 +1786,47 @@ cfg_if! {
+
+ pub const ALU_ALIGNMENT_MASK: usize = 3;
+ } else {
+@@ -2348,7 +1862,7 @@
+ let first = *src;
+ let second = *(src.add(1));
+ let third = *(src.add(2));
+- let fourth = *(src.add(3));
++@@ -1465,16 +1834,22 @@ cfg_if! {
+ if (first & BASIC_LATIN_MASK) | (second & BASIC_LATIN_MASK) | (third & BASIC_LATIN_MASK) | (fourth & BASIC_LATIN_MASK) != 0 {
+ return false;
+ }
+@@ -2371,7 +1885,7 @@
+ find_non_ascii(word, second_word)
+ }
+
+- basic_latin_alu!(ascii_to_basic_latin, u8, u16, ascii_to_basic_latin_stride_alu);
++@@ -1482,6 +1857,7 @@ cfg_if! {
+ basic_latin_alu!(basic_latin_to_ascii, u16, u8, basic_latin_to_ascii_stride_alu);
+ latin1_alu!(unpack_latin1, u8, u16, unpack_latin1_stride_alu);
+ latin1_alu!(pack_latin1, u16, u8, pack_latin1_stride_alu);
+@@ -2379,20 +1893,9 @@
+ ascii_alu!(ascii_to_ascii, u8, u8, ascii_to_ascii_stride);
+ }
+ }
+-
+- pub fn ascii_valid_up_to(bytes: &[u8]) -> usize {
+- match validate_ascii(bytes) {
+- None => bytes.len(),
+- Some((_, num_valid)) => num_valid,
+-diff --git a/third_party/rust/encoding_rs/src/handles.rs b/third_party/rust/encoding_rs/src/handles.rs
+ --- a/third_party/rust/encoding_rs/src/handles.rs
+ +++ b/third_party/rust/encoding_rs/src/handles.rs
+-@@ -29,17 +29,17 @@ use crate::simd_funcs::*;
+- #[cfg(all(
+- feature = "simd-accel",
+- any(
+- target_feature = "sse2",
+- all(target_endian = "little", target_arch = "aarch64"),
++@@ -34,7 +34,7 @@ use crate::simd_funcs::*;
+ all(target_endian = "little", target_feature = "neon")
+ )
+ ))]
+@@ -2401,17 +1904,7 @@
+
+ use super::DecoderResult;
+ use super::EncoderResult;
+- use crate::ascii::*;
+- use crate::utf_8::convert_utf8_to_utf16_up_to_invalid;
+- use crate::utf_8::utf8_valid_up_to;
+-
+- pub enum Space<T> {
+-@@ -85,84 +85,100 @@ impl Endian for LittleEndian {
+- const OPPOSITE_ENDIAN: bool = false;
+-
+- #[cfg(target_endian = "big")]
+- const OPPOSITE_ENDIAN: bool = true;
+- }
++@@ -90,19 +90,23 @@ impl Endian for LittleEndian {
+
+ #[derive(Debug, Copy, Clone)]
+ struct UnalignedU16Slice {
+@@ -2435,10 +1928,7 @@
+ self.len -= 1;
+ }
+
+- #[inline(always)]
+- pub fn at(&self, i: usize) -> u16 {
+- use core::mem::MaybeUninit;
+-
++@@ -113,7 +117,9 @@ impl UnalignedU16Slice {
+ assert!(i < self.len);
+ unsafe {
+ let mut u: MaybeUninit<u16> = MaybeUninit::uninit();
+@@ -2448,7 +1938,7 @@
+ u.assume_init()
+ }
+ }
+-
++@@ -121,8 +127,13 @@ impl UnalignedU16Slice {
+ #[cfg(feature = "simd-accel")]
+ #[inline(always)]
+ pub fn simd_at(&self, i: usize) -> u16x8 {
+@@ -2462,13 +1952,7 @@
+ unsafe { to_u16_lanes(load16_unaligned(self.ptr.add(byte_index))) }
+ }
+
+- #[inline(always)]
+- pub fn len(&self) -> usize {
+- self.len
+- }
+-
+- #[inline(always)]
+- pub fn tail(&self, from: usize) -> UnalignedU16Slice {
++@@ -136,6 +147,7 @@ impl UnalignedU16Slice {
+ // XXX the return value should be restricted not to
+ // outlive self.
+ assert!(from <= self.len);
+@@ -2476,8 +1960,7 @@
+ unsafe { UnalignedU16Slice::new(self.ptr.add(from * 2), self.len - from) }
+ }
+
+- #[cfg(feature = "simd-accel")]
+- #[inline(always)]
++@@ -144,6 +156,8 @@ impl UnalignedU16Slice {
+ pub fn copy_bmp_to<E: Endian>(&self, other: &mut [u16]) -> Option<(u16, usize)> {
+ assert!(self.len <= other.len());
+ let mut offset = 0;
+@@ -2486,7 +1969,7 @@
+ if SIMD_STRIDE_SIZE / 2 <= self.len {
+ let len_minus_stride = self.len - SIMD_STRIDE_SIZE / 2;
+ loop {
+- let mut simd = self.simd_at(offset);
++@@ -151,6 +165,7 @@ impl UnalignedU16Slice {
+ if E::OPPOSITE_ENDIAN {
+ simd = simd_byte_swap(simd);
+ }
+@@ -2494,7 +1977,7 @@
+ unsafe {
+ store8_unaligned(other.as_mut_ptr().add(offset), simd);
+ }
+- if contains_surrogates(simd) {
++@@ -158,6 +173,7 @@ impl UnalignedU16Slice {
+ break;
+ }
+ offset += SIMD_STRIDE_SIZE / 2;
+@@ -2502,17 +1985,7 @@
+ if offset > len_minus_stride {
+ break;
+ }
+- }
+- }
+- while offset < self.len {
+- let unit = swap_if_opposite_endian::<E>(self.at(offset));
+- other[offset] = unit;
+-@@ -231,33 +247,37 @@ fn copy_unaligned_basic_latin_to_ascii<E
+- #[cfg(feature = "simd-accel")]
+- #[inline(always)]
+- fn copy_unaligned_basic_latin_to_ascii<E: Endian>(
+- src: UnalignedU16Slice,
+- dst: &mut [u8],
++@@ -236,6 +252,7 @@ fn copy_unaligned_basic_latin_to_ascii<E
+ ) -> CopyAsciiResult<usize, (u16, usize)> {
+ let len = ::core::cmp::min(src.len(), dst.len());
+ let mut offset = 0;
+@@ -2520,13 +1993,7 @@
+ if SIMD_STRIDE_SIZE <= len {
+ let len_minus_stride = len - SIMD_STRIDE_SIZE;
+ loop {
+- let mut first = src.simd_at(offset);
+- let mut second = src.simd_at(offset + (SIMD_STRIDE_SIZE / 2));
+- if E::OPPOSITE_ENDIAN {
+- first = simd_byte_swap(first);
+- second = simd_byte_swap(second);
+- }
+- if !simd_is_basic_latin(first | second) {
++@@ -249,10 +266,13 @@ fn copy_unaligned_basic_latin_to_ascii<E
+ break;
+ }
+ let packed = simd_pack(first, second);
+@@ -2540,17 +2007,7 @@
+ if offset > len_minus_stride {
+ break;
+ }
+- }
+- }
+- copy_unaligned_basic_latin_to_ascii_alu::<E>(src.tail(offset), &mut dst[offset..], offset)
+- }
+-
+-@@ -632,94 +652,106 @@ impl<'a> Utf16Destination<'a> {
+- #[inline(always)]
+- fn write_astral(&mut self, astral: u32) {
+- debug_assert!(astral > 0xFFFF);
+- debug_assert!(astral <= 0x10_FFFF);
+- self.write_code_unit((0xD7C0 + (astral >> 10)) as u16);
++@@ -637,7 +657,7 @@ impl<'a> Utf16Destination<'a> {
+ self.write_code_unit((0xDC00 + (astral & 0x3FF)) as u16);
+ }
+ #[inline(always)]
+@@ -2559,8 +2016,7 @@
+ self.write_code_unit(high);
+ self.write_code_unit(low);
+ }
+- #[inline(always)]
+- fn write_big5_combination(&mut self, combined: u16, combining: u16) {
++@@ -646,6 +666,7 @@ impl<'a> Utf16Destination<'a> {
+ self.write_bmp_excl_ascii(combined);
+ self.write_bmp_excl_ascii(combining);
+ }
+@@ -2568,13 +2024,7 @@
+ #[inline(always)]
+ pub fn copy_ascii_from_check_space_bmp<'b>(
+ &'b mut self,
+- source: &mut ByteSource,
+- ) -> CopyAsciiResult<(DecoderResult, usize, usize), (u8, Utf16BmpHandle<'b, 'a>)> {
+- let non_ascii_ret = {
+- let src_remaining = &source.slice[source.pos..];
+- let dst_remaining = &mut self.slice[self.pos..];
+- let (pending, length) = if dst_remaining.len() < src_remaining.len() {
+- (DecoderResult::OutputFull, dst_remaining.len())
++@@ -659,6 +680,8 @@ impl<'a> Utf16Destination<'a> {
+ } else {
+ (DecoderResult::InputEmpty, src_remaining.len())
+ };
+@@ -2583,8 +2033,7 @@
+ match unsafe {
+ ascii_to_basic_latin(src_remaining.as_ptr(), dst_remaining.as_mut_ptr(), length)
+ } {
+- None => {
+- source.pos += length;
++@@ -667,16 +690,20 @@ impl<'a> Utf16Destination<'a> {
+ self.pos += length;
+ return CopyAsciiResult::Stop((pending, source.pos, self.pos));
+ }
+@@ -2605,14 +2054,7 @@
+ #[inline(always)]
+ pub fn copy_ascii_from_check_space_astral<'b>(
+ &'b mut self,
+- source: &mut ByteSource,
+- ) -> CopyAsciiResult<(DecoderResult, usize, usize), (u8, Utf16AstralHandle<'b, 'a>)> {
+- let non_ascii_ret = {
+- let dst_len = self.slice.len();
+- let src_remaining = &source.slice[source.pos..];
+- let dst_remaining = &mut self.slice[self.pos..];
+- let (pending, length) = if dst_remaining.len() < src_remaining.len() {
+- (DecoderResult::OutputFull, dst_remaining.len())
++@@ -691,6 +718,8 @@ impl<'a> Utf16Destination<'a> {
+ } else {
+ (DecoderResult::InputEmpty, src_remaining.len())
+ };
+@@ -2621,8 +2063,7 @@
+ match unsafe {
+ ascii_to_basic_latin(src_remaining.as_ptr(), dst_remaining.as_mut_ptr(), length)
+ } {
+- None => {
+- source.pos += length;
++@@ -699,11 +728,13 @@ impl<'a> Utf16Destination<'a> {
+ self.pos += length;
+ return CopyAsciiResult::Stop((pending, source.pos, self.pos));
+ }
+@@ -2636,11 +2077,7 @@
+ non_ascii
+ } else {
+ return CopyAsciiResult::Stop((
+- DecoderResult::OutputFull,
+- source.pos,
+- self.pos,
+- ));
+- }
++@@ -715,6 +746,7 @@ impl<'a> Utf16Destination<'a> {
+ }
+ }
+ };
+@@ -2648,20 +2085,9 @@
+ CopyAsciiResult::GoOn((non_ascii_ret, Utf16AstralHandle::new(self)))
+ }
+ #[inline(always)]
+- pub fn copy_utf8_up_to_invalid_from(&mut self, source: &mut ByteSource) {
+- let src_remaining = &source.slice[source.pos..];
+- let dst_remaining = &mut self.slice[self.pos..];
+- let (read, written) = convert_utf8_to_utf16_up_to_invalid(src_remaining, dst_remaining);
+- source.pos += read;
+-diff --git a/third_party/rust/encoding_rs/src/lib.rs b/third_party/rust/encoding_rs/src/lib.rs
+ --- a/third_party/rust/encoding_rs/src/lib.rs
+ +++ b/third_party/rust/encoding_rs/src/lib.rs
+-@@ -684,37 +684,26 @@
+- //! <tr><td>TIS-620</td><td>windows-874</td></tr>
+- //! </tbody>
+- //! </table>
+- //!
+- //! See the section [_UTF-16LE, UTF-16BE and Unicode Encoding Schemes_](#utf-16le-utf-16be-and-unicode-encoding-schemes)
++@@ -689,7 +689,7 @@
+ //! for discussion about the UTF-16 family.
+
+ #![no_std]
+@@ -2670,9 +2096,7 @@
+
+ #[cfg(feature = "alloc")]
+ #[cfg_attr(test, macro_use)]
+- extern crate alloc;
+-
+- extern crate core;
++@@ -699,17 +699,6 @@ extern crate core;
+ #[macro_use]
+ extern crate cfg_if;
+
+@@ -2690,20 +2114,9 @@
+ #[cfg(feature = "serde")]
+ extern crate serde;
+
+- #[cfg(all(test, feature = "serde"))]
+- extern crate bincode;
+- #[cfg(all(test, feature = "serde"))]
+- #[macro_use]
+- extern crate serde_derive;
+-diff --git a/third_party/rust/encoding_rs/src/mem.rs b/third_party/rust/encoding_rs/src/mem.rs
+ --- a/third_party/rust/encoding_rs/src/mem.rs
+ +++ b/third_party/rust/encoding_rs/src/mem.rs
+-@@ -111,16 +111,21 @@ macro_rules! by_unit_check_alu {
+- until_alignment -= 1;
+- }
+- if accu >= $bound {
+- return false;
+- }
++@@ -116,6 +116,11 @@ macro_rules! by_unit_check_alu {
+ }
+ let len_minus_stride = len - ALU_ALIGNMENT / unit_size;
+ if offset + (4 * (ALU_ALIGNMENT / unit_size)) <= len {
+@@ -2715,17 +2128,7 @@
+ let len_minus_unroll = len - (4 * (ALU_ALIGNMENT / unit_size));
+ loop {
+ let unroll_accu = unsafe { *(src.add(offset) as *const usize) }
+- | unsafe {
+- *(src.add(offset + (ALU_ALIGNMENT / unit_size)) as *const usize)
+- }
+- | unsafe {
+- *(src.add(offset + (2 * (ALU_ALIGNMENT / unit_size)))
+-@@ -129,22 +134,24 @@ macro_rules! by_unit_check_alu {
+- | unsafe {
+- *(src.add(offset + (3 * (ALU_ALIGNMENT / unit_size)))
+- as *const usize)
+- };
+- if unroll_accu & $mask != 0 {
++@@ -134,12 +139,14 @@ macro_rules! by_unit_check_alu {
+ return false;
+ }
+ offset += 4 * (ALU_ALIGNMENT / unit_size);
+@@ -2740,17 +2143,7 @@
+ accu |= unsafe { *(src.add(offset) as *const usize) };
+ offset += ALU_ALIGNMENT / unit_size;
+ }
+- }
+- }
+- for &unit in &buffer[offset..] {
+- accu |= unit as usize;
+- }
+-@@ -184,16 +191,21 @@ macro_rules! by_unit_check_simd {
+- until_alignment -= 1;
+- }
+- if accu >= $bound {
+- return false;
+- }
++@@ -189,6 +196,11 @@ macro_rules! by_unit_check_simd {
+ }
+ let len_minus_stride = len - SIMD_STRIDE_SIZE / unit_size;
+ if offset + (4 * (SIMD_STRIDE_SIZE / unit_size)) <= len {
+@@ -2762,17 +2155,7 @@
+ let len_minus_unroll = len - (4 * (SIMD_STRIDE_SIZE / unit_size));
+ loop {
+ let unroll_accu = unsafe { *(src.add(offset) as *const $simd_ty) }
+- | unsafe {
+- *(src.add(offset + (SIMD_STRIDE_SIZE / unit_size))
+- as *const $simd_ty)
+- }
+- | unsafe {
+-@@ -203,23 +215,25 @@ macro_rules! by_unit_check_simd {
+- | unsafe {
+- *(src.add(offset + (3 * (SIMD_STRIDE_SIZE / unit_size)))
+- as *const $simd_ty)
+- };
+- if !$func(unroll_accu) {
++@@ -208,6 +220,7 @@ macro_rules! by_unit_check_simd {
+ return false;
+ }
+ offset += 4 * (SIMD_STRIDE_SIZE / unit_size);
+@@ -2780,7 +2163,7 @@
+ if offset > len_minus_unroll {
+ break;
+ }
+- }
++@@ -215,6 +228,7 @@ macro_rules! by_unit_check_simd {
+ }
+ let mut simd_accu = $splat;
+ while offset <= len_minus_stride {
+@@ -2788,17 +2171,7 @@
+ simd_accu = simd_accu | unsafe { *(src.add(offset) as *const $simd_ty) };
+ offset += SIMD_STRIDE_SIZE / unit_size;
+ }
+- if !$func(simd_accu) {
+- return false;
+- }
+- }
+- }
+-@@ -229,18 +243,18 @@ macro_rules! by_unit_check_simd {
+- accu < $bound
+- }
+- };
+- }
+-
++@@ -234,8 +248,8 @@ macro_rules! by_unit_check_simd {
+ cfg_if! {
+ if #[cfg(all(feature = "simd-accel", any(target_feature = "sse2", all(target_endian = "little", target_arch = "aarch64"), all(target_endian = "little", target_feature = "neon"))))] {
+ use crate::simd_funcs::*;
+@@ -2809,20 +2182,9 @@
+
+ const SIMD_ALIGNMENT: usize = 16;
+
+- const SIMD_ALIGNMENT_MASK: usize = 15;
+-
+- by_unit_check_simd!(is_ascii_impl, u8, u8x16::splat(0), u8x16, 0x80, simd_is_ascii);
+- by_unit_check_simd!(is_basic_latin_impl, u16, u16x8::splat(0), u16x8, 0x80, simd_is_basic_latin);
+- by_unit_check_simd!(is_utf16_latin1_impl, u16, u16x8::splat(0), u16x8, 0x100, simd_is_latin1);
+-diff --git a/third_party/rust/encoding_rs/src/simd_funcs.rs b/third_party/rust/encoding_rs/src/simd_funcs.rs
+ --- a/third_party/rust/encoding_rs/src/simd_funcs.rs
+ +++ b/third_party/rust/encoding_rs/src/simd_funcs.rs
+-@@ -2,65 +2,84 @@
+- // file at the top-level directory of this distribution.
+- //
+- // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+- // https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+- // <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
++@@ -7,55 +7,74 @@
+ // option. This file may not be copied, modified, or distributed
+ // except according to those terms.
+
+@@ -2906,17 +2268,7 @@
+ #[allow(dead_code)]
+ #[inline(always)]
+ pub unsafe fn store8_aligned(ptr: *mut u16, s: u16x8) {
+- *(ptr as *mut u16x8) = s;
+- }
+-
+- cfg_if! {
+- if #[cfg(all(target_feature = "sse2", target_arch = "x86_64"))] {
+-@@ -95,234 +114,241 @@ cfg_if! {
+- pub fn simd_byte_swap(s: u16x8) -> u16x8 {
+- let left = s << 8;
+- let right = s >> 8;
+- left | right
+- }
++@@ -100,7 +119,7 @@ pub fn simd_byte_swap(s: u16x8) -> u16x8
+
+ #[inline(always)]
+ pub fn to_u16_lanes(s: u8x16) -> u16x8 {
+@@ -2925,7 +2277,7 @@
+ }
+
+ cfg_if! {
+- if #[cfg(target_feature = "sse2")] {
++@@ -108,10 +127,11 @@ cfg_if! {
+
+ // Expose low-level mask instead of higher-level conclusion,
+ // because the non-ASCII case would perform less well otherwise.
+@@ -2938,13 +2290,7 @@
+ }
+ }
+
+- } else {
+-
+- }
+- }
+-
+- cfg_if! {
+- if #[cfg(target_feature = "sse2")] {
++@@ -125,14 +145,16 @@ cfg_if! {
+ #[inline(always)]
+ pub fn simd_is_ascii(s: u8x16) -> bool {
+ unsafe {
+@@ -2963,8 +2309,7 @@
+ }
+ }
+ } else {
+- #[inline(always)]
+- pub fn simd_is_ascii(s: u8x16) -> bool {
++@@ -141,7 +163,7 @@ cfg_if! {
+ // This optimizes better on ARM than
+ // the lt formulation.
+ let highest_ascii = u8x16::splat(0x7F);
+@@ -2973,12 +2318,7 @@
+ }
+ }
+ }
+-
+- cfg_if! {
+- if #[cfg(target_feature = "sse2")] {
+- #[inline(always)]
+- pub fn simd_is_str_latin1(s: u8x16) -> bool {
+- if simd_is_ascii(s) {
++@@ -154,20 +176,21 @@ cfg_if! {
+ return true;
+ }
+ let above_str_latin1 = u8x16::splat(0xC4);
+@@ -3003,9 +2343,7 @@
+ }
+ }
+ }
+-
+- cfg_if! {
+- if #[cfg(target_arch = "aarch64")]{
++@@ -177,21 +200,23 @@ cfg_if! {
+ #[inline(always)]
+ pub fn simd_is_basic_latin(s: u16x8) -> bool {
+ unsafe {
+@@ -3032,8 +2370,7 @@
+ }
+
+ #[inline(always)]
+- pub fn simd_is_latin1(s: u16x8) -> bool {
+- // For some reason, on SSE2 this formulation
++@@ -200,7 +225,7 @@ cfg_if! {
+ // seems faster in this case while the above
+ // function is better the other way round...
+ let highest_latin1 = u16x8::splat(0xFF);
+@@ -3042,8 +2379,7 @@
+ }
+ }
+ }
+-
+- #[inline(always)]
++@@ -209,7 +234,7 @@ cfg_if! {
+ pub fn contains_surrogates(s: u16x8) -> bool {
+ let mask = u16x8::splat(0xF800);
+ let surrogate_bits = u16x8::splat(0xD800);
+@@ -3052,7 +2388,7 @@
+ }
+
+ cfg_if! {
+- if #[cfg(target_arch = "aarch64")]{
++@@ -217,7 +242,8 @@ cfg_if! {
+ macro_rules! aarch64_return_false_if_below_hebrew {
+ ($s:ident) => ({
+ unsafe {
+@@ -3062,16 +2398,7 @@
+ return false;
+ }
+ }
+- })
+- }
+-
+- macro_rules! non_aarch64_return_false_if_all {
+- ($s:ident) => ()
+- }
+- } else {
+- macro_rules! aarch64_return_false_if_below_hebrew {
+- ($s:ident) => ()
+- }
++@@ -234,7 +260,7 @@ cfg_if! {
+
+ macro_rules! non_aarch64_return_false_if_all {
+ ($s:ident) => ({
+@@ -3080,10 +2407,7 @@
+ return false;
+ }
+ })
+- }
+- }
+- }
+-
++@@ -245,7 +271,7 @@ cfg_if! {
+ macro_rules! in_range16x8 {
+ ($s:ident, $start:expr, $end:expr) => {{
+ // SIMD sub is wrapping
+@@ -3092,13 +2416,7 @@
+ }};
+ }
+
+- #[inline(always)]
+- pub fn is_u16x8_bidi(s: u16x8) -> bool {
+- // We try to first quickly refute the RTLness of the vector. If that
+- // fails, we do the real RTL check, so in that case we end up wasting
+- // the work for the up-front quick checks. Even the quick-check is
+- // two-fold in order to return `false` ASAP if everything is below
+- // Hebrew.
++@@ -259,43 +285,44 @@ pub fn is_u16x8_bidi(s: u16x8) -> bool {
+
+ aarch64_return_false_if_below_hebrew!(s);
+
+@@ -3168,7 +2486,7 @@
+ }
+
+ cfg_if! {
+- if #[cfg(target_feature = "sse2")] {
++@@ -303,21 +330,20 @@ cfg_if! {
+ #[inline(always)]
+ pub fn simd_pack(a: u16x8, b: u16x8) -> u8x16 {
+ unsafe {
+@@ -3199,20 +2517,9 @@
+ }
+ }
+ }
+-
+- #[cfg(test)]
+- mod tests {
+- use super::*;
+- use alloc::vec::Vec;
+-diff --git a/third_party/rust/encoding_rs/src/single_byte.rs b/third_party/rust/encoding_rs/src/single_byte.rs
+ --- a/third_party/rust/encoding_rs/src/single_byte.rs
+ +++ b/third_party/rust/encoding_rs/src/single_byte.rs
+-@@ -48,16 +48,19 @@ impl SingleByteDecoder {
+- CopyAsciiResult::GoOn((mut non_ascii, mut handle)) => 'middle: loop {
+- // Start non-boilerplate
+- //
+- // Since the non-ASCIIness of `non_ascii` is hidden from
+- // the optimizer, it can't figure out that it's OK to
++@@ -53,6 +53,9 @@ impl SingleByteDecoder {
+ // statically omit the bound check when accessing
+ // `[u16; 128]` with an index
+ // `non_ascii as usize - 0x80usize`.
+@@ -3222,17 +2529,7 @@
+ let mapped =
+ unsafe { *(self.table.get_unchecked(non_ascii as usize - 0x80usize)) };
+ // let mapped = self.table[non_ascii as usize - 0x80usize];
+- if mapped == 0u16 {
+- return (
+- DecoderResult::Malformed(1, 0),
+- source.consumed(),
+- handle.written(),
+-@@ -146,82 +149,103 @@ impl SingleByteDecoder {
+- dst: &mut [u16],
+- _last: bool,
+- ) -> (DecoderResult, usize, usize) {
+- let (pending, length) = if dst.len() < src.len() {
+- (DecoderResult::OutputFull, dst.len())
++@@ -151,9 +154,12 @@ impl SingleByteDecoder {
+ } else {
+ (DecoderResult::InputEmpty, src.len())
+ };
+@@ -3245,10 +2542,7 @@
+ ascii_to_basic_latin(
+ src.as_ptr().add(converted),
+ dst.as_mut_ptr().add(converted),
+- length - converted,
+- )
+- } {
+- None => {
++@@ -164,6 +170,12 @@ impl SingleByteDecoder {
+ return (pending, length, length);
+ }
+ Some((mut non_ascii, consumed)) => {
+@@ -3261,8 +2555,7 @@
+ converted += consumed;
+ 'middle: loop {
+ // `converted` doesn't count the reading of `non_ascii` yet.
+- // Since the non-ASCIIness of `non_ascii` is hidden from
+- // the optimizer, it can't figure out that it's OK to
++@@ -172,6 +184,9 @@ impl SingleByteDecoder {
+ // statically omit the bound check when accessing
+ // `[u16; 128]` with an index
+ // `non_ascii as usize - 0x80usize`.
+@@ -3272,11 +2565,7 @@
+ let mapped =
+ unsafe { *(self.table.get_unchecked(non_ascii as usize - 0x80usize)) };
+ // let mapped = self.table[non_ascii as usize - 0x80usize];
+- if mapped == 0u16 {
+- return (
+- DecoderResult::Malformed(1, 0),
+- converted + 1, // +1 `for non_ascii`
+- converted,
++@@ -183,9 +198,10 @@ impl SingleByteDecoder {
+ );
+ }
+ unsafe {
+@@ -3288,12 +2577,7 @@
+ converted += 1;
+ // Next, handle ASCII punctuation and non-ASCII without
+ // going back to ASCII acceleration. Non-ASCII scripts
+- // use ASCII punctuation, so this avoid going to
+- // acceleration just for punctuation/space and then
+- // failing. This is a significant boost to non-ASCII
+- // scripts.
+- // TODO: Split out Latin converters without this part
+- // this stuff makes Latin script-conversion slower.
++@@ -198,7 +214,10 @@ impl SingleByteDecoder {
+ if converted == length {
+ return (pending, length, length);
+ }
+@@ -3304,9 +2588,7 @@
+ 'innermost: loop {
+ if b > 127 {
+ non_ascii = b;
+- continue 'middle;
+- }
+- // Testing on Haswell says that we should write the
++@@ -208,15 +227,20 @@ impl SingleByteDecoder {
+ // byte unconditionally instead of trying to unread it
+ // to make it part of the next SIMD stride.
+ unsafe {
+@@ -3327,17 +2609,7 @@
+ continue 'innermost;
+ }
+ // We've got markup or ASCII text
+- continue 'outermost;
+- }
+- }
+- }
+- }
+-@@ -229,16 +253,18 @@ impl SingleByteDecoder {
+- }
+-
+- pub fn latin1_byte_compatible_up_to(&self, buffer: &[u8]) -> usize {
+- let mut bytes = buffer;
+- let mut total = 0;
++@@ -234,6 +258,8 @@ impl SingleByteDecoder {
+ loop {
+ if let Some((non_ascii, offset)) = validate_ascii(bytes) {
+ total += offset;
+@@ -3346,17 +2618,7 @@
+ let mapped = unsafe { *(self.table.get_unchecked(non_ascii as usize - 0x80usize)) };
+ if mapped != u16::from(non_ascii) {
+ return total;
+- }
+- total += 1;
+- bytes = &bytes[offset + 1..];
+- } else {
+- return total;
+-@@ -379,64 +405,89 @@ impl SingleByteEncoder {
+- dst: &mut [u8],
+- _last: bool,
+- ) -> (EncoderResult, usize, usize) {
+- let (pending, length) = if dst.len() < src.len() {
+- (EncoderResult::OutputFull, dst.len())
++@@ -384,9 +410,12 @@ impl SingleByteEncoder {
+ } else {
+ (EncoderResult::InputEmpty, src.len())
+ };
+@@ -3369,10 +2631,7 @@
+ basic_latin_to_ascii(
+ src.as_ptr().add(converted),
+ dst.as_mut_ptr().add(converted),
+- length - converted,
+- )
+- } {
+- None => {
++@@ -397,15 +426,23 @@ impl SingleByteEncoder {
+ return (pending, length, length);
+ }
+ Some((mut non_ascii, consumed)) => {
+@@ -3396,15 +2655,7 @@
+ }
+ None => {
+ // At this point, we need to know if we
+- // have a surrogate.
+- let high_bits = non_ascii & 0xFC00u16;
+- if high_bits == 0xD800u16 {
+- // high surrogate
+- if converted + 1 == length {
+- // End of buffer. This surrogate is unpaired.
+- return (
+- EncoderResult::Unmappable('\u{FFFD}'),
+- converted + 1, // +1 `for non_ascii`
++@@ -421,6 +458,8 @@ impl SingleByteEncoder {
+ converted,
+ );
+ }
+@@ -3413,11 +2664,7 @@
+ let second =
+ u32::from(unsafe { *src.get_unchecked(converted + 1) });
+ if second & 0xFC00u32 != 0xDC00u32 {
+- return (
+- EncoderResult::Unmappable('\u{FFFD}'),
+- converted + 1, // +1 `for non_ascii`
+- converted,
+- );
++@@ -432,6 +471,18 @@ impl SingleByteEncoder {
+ }
+ // The next code unit is a low surrogate.
+ let astral: char = unsafe {
+@@ -3436,17 +2683,7 @@
+ ::core::char::from_u32_unchecked(
+ (u32::from(non_ascii) << 10) + second
+ - (((0xD800u32 << 10) - 0x1_0000u32) + 0xDC00u32),
+- )
+- };
+- return (
+- EncoderResult::Unmappable(astral),
+- converted + 2, // +2 `for non_ascii` and `second`
+-@@ -451,52 +502,63 @@ impl SingleByteEncoder {
+- converted,
+- );
+- }
+- return (
+- EncoderResult::unmappable_from_bmp(non_ascii),
++@@ -456,6 +507,7 @@ impl SingleByteEncoder {
+ converted + 1, // +1 `for non_ascii`
+ converted,
+ );
+@@ -3454,13 +2691,7 @@
+ }
+ }
+ // Next, handle ASCII punctuation and non-ASCII without
+- // going back to ASCII acceleration. Non-ASCII scripts
+- // use ASCII punctuation, so this avoid going to
+- // acceleration just for punctuation/space and then
+- // failing. This is a significant boost to non-ASCII
+- // scripts.
+- // TODO: Split out Latin converters without this part
+- // this stuff makes Latin script-conversion slower.
++@@ -469,8 +521,12 @@ impl SingleByteEncoder {
+ if converted == length {
+ return (pending, length, length);
+ }
+@@ -3473,8 +2704,7 @@
+ if unit > 127 {
+ non_ascii = unit;
+ continue 'middle;
+- }
+- // Testing on Haswell says that we should write the
++@@ -479,19 +535,25 @@ impl SingleByteEncoder {
+ // byte unconditionally instead of trying to unread it
+ // to make it part of the next SIMD stride.
+ unsafe {
+@@ -3500,20 +2730,9 @@
+ }
+ }
+ }
+- }
+- }
+- }
+- }
+-
+-diff --git a/third_party/rust/encoding_rs/src/x_user_defined.rs b/third_party/rust/encoding_rs/src/x_user_defined.rs
+ --- a/third_party/rust/encoding_rs/src/x_user_defined.rs
+ +++ b/third_party/rust/encoding_rs/src/x_user_defined.rs
+-@@ -9,22 +9,23 @@
+-
+- use super::*;
+- use crate::handles::*;
+- use crate::variant::*;
+-
++@@ -14,12 +14,13 @@ use crate::variant::*;
+ cfg_if! {
+ if #[cfg(feature = "simd-accel")] {
+ use simd_funcs::*;
+@@ -3529,17 +2748,7 @@
+ } else {
+ }
+ }
+-
+- pub struct UserDefinedDecoder;
+-
+- impl UserDefinedDecoder {
+- pub fn new() -> VariantDecoder {
+-@@ -111,20 +112,25 @@ impl UserDefinedDecoder {
+- } else {
+- (DecoderResult::InputEmpty, src.len())
+- };
+- // Not bothering with alignment
+- let tail_start = length & !0xF;
++@@ -116,10 +117,15 @@ impl UserDefinedDecoder {
+ let simd_iterations = length >> 4;
+ let src_ptr = src.as_ptr();
+ let dst_ptr = dst.as_mut_ptr();
+@@ -3555,20 +2764,11 @@
+ store8_unaligned(dst_ptr.add(i * 16), shift_upper(first));
+ store8_unaligned(dst_ptr.add((i * 16) + 8), shift_upper(second));
+ }
+- }
+- let src_tail = &src[tail_start..length];
+- let dst_tail = &mut dst[tail_start..length];
+- src_tail
+- .iter()
+-diff --git a/third_party/rust/packed_simd/.cargo-checksum.json b/third_party/rust/packed_simd/.cargo-checksum.json
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/.cargo-checksum.json
+ +++ /dev/null
+-@@ -1,1 +0,0 @@
++@@ -1 +0,0 @@
+ -{"files":{"Cargo.toml":"ae219b55eab1f8cd8c3497d7327ea0e5426dba23d2446f7981ca799ad80b6a52","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"c4ac7027a9ab7d7858aa8957d7454dbfcdbb81e605b6a171f05310cc3cad3762","bors.toml":"dee881dc69b9b7834e4eba5d95c3ed5a416d4628815a167d6a22d4cb4fb064b8","build.rs":"019ed29c43989782d8eec3a961654cfc172d7a7898da4eca8f654700af7e1988","ci/all.sh":"2ae6b2445b4db83833e40b37efd0016c6b9879ee988b9b3ef94db5439a3e1606","ci/android-install-ndk.sh":"bdcf93ba9043ac1184e2c504a3d40c47c6c1601d882e0f0a27a8eb56fbabcb5f","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-unknown-linux-gnueabi/Dockerfile":"bb5f8ae890707c128652290ffc544447643bf12037ddd73c6ad6989f848cb380","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"1afaefcbc05b740859acd4e067bc92439be6bcbe8f2e9678474fb434bcd398d9","ci/docker/armv7-linux-androideabi/Dockerfile":"370e55d3330a413a3ccf677b3afb3e0ef9018a5fab263faa97ae8ac017fc2286","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":"ae8274309928620a5dd232a46264e05399bb746288ebee3843a71c4162208cc3","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"ba5fbc4bf3bb91cd50b407248da31225681efc8f2be7618f4a0ab1219b389508","ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile":"53f97f8b9b5aca7534b9bf9ea48f35175052cd2a560a107e01ad270731c032fc","ci/docker/s390x-unknown-linux-gnu/Dockerfile":"89f5421cf06d817ae94092987e914472ef384ad2d1fff2735be3d8786ba11214","ci/docker/sparc64-unknown-linux-gnu/Dockerfile":"83eba19576486f9d10d7c037d669d72b31a65565a479f30b22aab36aaa2ff8dc","ci/docker/thumbv7neon-linux-androideabi/Dockerfile":"c2decd5591bd7a09378901bef629cd944acf052eb55e4f35b79eb9cb4d62246a","ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile":"51955a8bf3c4d440f47382af6f5426ebff94ab01a04da36175babda9a057740f","ci/docker/wasm32-unknown-unknown/Dockerfile":"b982b421c70db476900df5b60e19ef8815e6c7dae22687225002780cab7b0a76","ci/docker/x86_64-linux-android/Dockerfile":"a17ebdb186ce2dd6b62100b5a439e05a1ab9adab113e2508843e121aaea52992","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":"9afabc961e0ee83b87201f3fd554c19e5b0c36f3a95d013595e276c9882dd0a4","ci/run_examples.sh":"d1a23c6c35374a0678ba5114b9b8fefd8be0a79e774872a8bf0898d1baca18d0","ci/runtest-android.rs":"145a8e9799a5223975061fe7e586ade5669ee4877a7d7a4cf6b4ab48e8e36c7c","ci/setup_benchmarks.sh":"fae3960023f6f3d1388cd2ad22fdbab4b075f1f29dd4292d7994a20783beb6cf","ci/test-runner-linux":"c8aa6025cff5306f4f31d0c61dc5f9d4dd5a1d189ab613ef8d4c367c694d9ccd","contributing.md":"2d2629310ad4d464c482bdbb5819f0d6ce223c576aeef2cdce6a1f6857085ea5","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":"01197acf6f0adec8db32b8591811f69cecb6555a2b05dc5d5ec27d0e3f7b065e","perf-guide/src/vert-hor-ops.md":"c6211c0ee91e60552ec592d89d9d957eedc21dee3cbd89e1ad6765ea06a27471","rust-toolchain":"58bea07cb6d97f9cfcd5c8f98b1feca0fb81cce5b0bf29a8e70ed2641956e9a6","rustfmt.toml":"d99a43f3f8ef9e425cf01c333fba9f0051f888f5d87ab4e8f63c2f7d0fe6620f","src/api.rs":"45508c6c0241519fc01a7f00c9105554c24c312c4e46900ef9c75139ea438305","src/api/bit_manip.rs":"27f3097fc0a11e3c4107049d9779e680dcd67407a066704008a6b9c4fd529e05","src/api/bitmask.rs":"058ebc38a2e0363f07a441d3e9a4775aaec57ccb170a0e5d5efa5dc4743ab07b","src/api/cast.rs":"03b94a3d316ac7b7be7068810044911e965e889a0ace7bae762749ca74a92747","src/api/cast/macros.rs":"b0a14d0c83ad2ebb7a275180f6d9e3f2bc312ba57a7d3d6c39fad4e0f20f9408","src/api/cast/v128.rs":"edd0994efac4379dff26e178423a52dbb3ffeb38b1fc97cae975d744c00b4fb6","src/api/cast/v16.rs":"96bd98c2d21b0663abe6c0ab33005b1fa693f3db7ee6795351391343863484da","src/api/cast/v256.rs":"8c31fe91f5e78ef737dfba6979cc1240210cb094a89d284fe459bf8a991ca24b","src/api/cast/v32.rs":"a99a79dd84d2a5e6adf9db98705675915bd03fd1287d489c7fe38e84d7e4a086","src/api/cast/v512.rs":"c0dd526f41ed7b8a71c3743d91267554ec0a0c75834ccc2e3ecb0ef3004af642","src/api/cast/v64.rs":"6572fdba2a1241a6cd666d3f0cce3306cd2cb7e5e236172e59d5d4351c8a88af","src/api/cmp.rs":"357c3a2a09c6d4611c32dd7fa95be2fae933d513e229026ec9b44451a77b884e","src/api/cmp/eq.rs":"60f70f355bae4cb5b17db53204cacc3890f70670611c17df638d4c04f7cc8075","src/api/cmp/ord.rs":"589f7234761c294fa5df8f525bc4acd5a47cdb602207d524a0d4e19804cd9695","src/api/cmp/partial_eq.rs":"902ccb8aa01fd5738b30ba0b712669c21d4801958907e03bad23432c7dba0198","src/api/cmp/partial_ord.rs":"9db0c37d7434cdfc62d8d66912e972fa3d8c115ab2af051a6f45e414bd3e4f1c","src/api/cmp/vertical.rs":"de3d62f38eba817299aa16f1e1939954c9a447e316509397465c2830852ba053","src/api/default.rs":"67bf21c134127d12a7028c8b88a57f0ceee8ccbd74976da8ca74eb9f16a174d5","src/api/fmt.rs":"67fb804bb86b6cd77cf8cd492b5733ce437071b66fe3297278b8a6552c325dda","src/api/fmt/binary.rs":"02b2b287f7404f8a983813cf70c87108c8da3835578b63ab303116885f609413","src/api/fmt/debug.rs":"56e1c3bdc092747344fffaafff9da7163ee7827857f6fb7cb1c9923eca4f6fa0","src/api/fmt/lower_hex.rs":"558fd592f7f485712fb051509cecc7174a21e6bf62e5ce64766e75afc97bb8e1","src/api/fmt/octal.rs":"3b2e70877a4f368c7704f8e254236c014c365c74d93371c1feb5f030e6c66422","src/api/fmt/upper_hex.rs":"2a442f666bc80e22d41f903f881238fe114dd49344c3ed69849250e853cafc5d","src/api/from.rs":"2e599d8329cb05eaf06224cc441355c4b7b51254fc19256619333be8c149d444","src/api/from/from_array.rs":"5d2cc700568376bf6ee1fe5e406da3bc2d488ff155644bf73d06a1349b73fc53","src/api/from/from_vector.rs":"9764371aa9e6005aace74dea14f59e5611a095b7cf42707940924749282c52f0","src/api/hash.rs":"5076ece87969592c876486f5b1ea8affbeaec379d1a14a30859e0aa5592019de","src/api/into_bits.rs":"8f8011627250e23e66b5c0ca641afb079d8232674bb1354140b536bdbea63e55","src/api/into_bits/arch_specific.rs":"e7445021f3908326bfee758835e5fc5ad56aa1baa77fc1c58abe4350c66c670a","src/api/into_bits/macros.rs":"bb4fe99be2af6a21d805efab44c8e4e61a7b2adb42a65504a0cf26d13efdadcd","src/api/into_bits/v128.rs":"145a44922b09a5ca5b62d88a461d327d399a997a15db4b11d7b17e554a9fa4c0","src/api/into_bits/v16.rs":"f4f4f61ba88aa51b158ec56ca3dce234349aea0daf2b3029a14ab5125d1e41e5","src/api/into_bits/v256.rs":"8cea9c5d9809f11323cb7cdc53b83df593fd17caf926251e412ae9777bed547f","src/api/into_bits/v32.rs":"905ba683d342fa32f4202b80bb46530807bd0a5b588f6c2e8c9f475223c47775","src/api/into_bits/v512.rs":"e25afa1fbf088a5d58e7d75d197b6cd4c56637ea28542ba18e46a451f29d04e7","src/api/into_bits/v64.rs":"d6238022ccff7b92e55b3f6017fc269acb6f36330a6d7e8fb389853a0f1b6478","src/api/math.rs":"8b2a2fc651917a850539f993aa0b9e5bf4da67b11685285b8de8cdca311719ec","src/api/math/float.rs":"969a75cdb3743c5ac7cde653d1a7f659ac65f2a5afb004c9928a7b34b79c3e39","src/api/math/float/abs.rs":"5b6b2701e2e11135b7ce58a05052ea8120e10e4702c95d046b9d21b827b26bf8","src/api/math/float/consts.rs":"6302c9261da4291d144d5bb53493cdd073498feb40955fb6860ea3c4d06c978a","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/math/float/tanh.rs":"e57940434cc05981b086f0f3b92d32caceb38d67b90aebce5d3ed8e07c80538f","src/api/minimal.rs":"1f22bcc528555444e76de569ec0ae2029b9ae9d04805efeafa93369c8098036b","src/api/minimal/iuf.rs":"819cff26d3e196f807645bcc1d79eb27d9f175edb89910f2274d52a1e913cd11","src/api/minimal/mask.rs":"0cae10ae1fc65f5070e686c0c79bfba27b86b33d6c399367bd4848fb367dcec4","src/api/minimal/ptr.rs":"f74d7a4925d7209faebc26ea8315259cb2c08ec65789a70869e595649a9bc39a","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":"c4773d435c3f9da4454327e6fbb2b5b41a1c0ebb1cca7372e69dc7a344a1b6e4","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":"6c3f761d9d551f6365a8a95539ceace4b1a02e0b12d144f34ed68db94e88cff4","src/api/ops/vector_shifts.rs":"e510be14127c0ffd58a2573a39701da3557d66bedec09837ac8bbd44d579da00","src/api/ptr.rs":"8a793251bed6130dcfb2f1519ceaa18b751bbb15875928d0fb6deb5a5e07523a","src/api/ptr/gather_scatter.rs":"3d614f9d5b4ca201a9f7e46af4405e1d2c28ecee1620297c23b52e37b92cc0ea","src/api/reductions.rs":"ae5baca81352ecd44526d6c30c0a1feeda475ec73ddd3c3ec6b14e944e5448ee","src/api/reductions/bitwise.rs":"8bf910ae226188bd15fc7e125f058cd2566b6186fcd0cd8fd020f352c39ce139","src/api/reductions/float_arithmetic.rs":"47a5679896db2cbb56c31372fe42143da015b6beae7db5d2f3a0309ddf427ae1","src/api/reductions/integer_arithmetic.rs":"c2df3cf7493cca4174f2c65aea422a3d20d8a23af03f8d57cef72c19fee8f20d","src/api/reductions/mask.rs":"db83327a950e33a317f37fd33ca4e20c347fb415975ec024f3e23da8509425af","src/api/reductions/min_max.rs":"6af8c9aa45c69961b1b6fc205395f4767d4421869fb105fb3d563c5605fc13cd","src/api/select.rs":"6b07e7e8026df561f7307221a896f0fbb272536f41b9109040ac094c24c69331","src/api/shuffle.rs":"be7faff9b59654926df12897b2f98a4baa7d6acf2af1aaf93d388ba6e96f83ec","src/api/shuffle1_dyn.rs":"bfea5a91905b31444e9ef7ca6eddb7a9606b7e22d3f71bb842eb2795a0346620","src/api/slice.rs":"ee87484e8af329547b9a5d4f2a69e8bed6ea10bbd96270d706083843d4eea2ac","src/api/slice/from_slice.rs":"3735363000737104a8fc5f394ad8c31ec14e885952bd57647dd2a84001aee0a6","src/api/slice/write_to_slice.rs":"79d09c64d00724783c77c42e4583eeec97b18db94cf2ae146b564c3f85cfefd6","src/api/swap_bytes.rs":"05b4262eaade2f63e6cd3b780c19a03aecd2459d4cc4360051fc088887179a6e","src/codegen.rs":"db4f232fb9f5728db310b87dc8c4733be48afacab1053798c06106bef9a42b05","src/codegen/bit_manip.rs":"525ea6ff7ad1e043b6f6136992166f1803ed5563b7f6fc292c1c40257d20e264","src/codegen/llvm.rs":"12e748b4928c3be6cc12b4165c3041a3d0efccf6195338ecd3d88b8fdb0bbcc7","src/codegen/math.rs":"dfcf02ad34e2fdfe22c3f1cc2822001cc895e65031b4d06e585e5047839febb7","src/codegen/math/float.rs":"b2f31f479c5c70a6ff9ad33872c1e65506f72882b77a2e3f9e71c42e92af9355","src/codegen/math/float/abs.rs":"d5aaadcf540bdb9b4264dca6471a255fd7bf509e763bef0239c0144a68466fea","src/codegen/math/float/cos.rs":"17f28d2900c852dca221fa9c92a9cd5fe7fd2df8d427bbc60216c749b2be013d","src/codegen/math/float/cos_pi.rs":"dbaf9f443f9846a491d4ec52210a7b5835dd593b03366e3135b05c37d70f9d6c","src/codegen/math/float/exp.rs":"d300058a4bcc7ae7976f216f81902cd73a9e603ad63880dff3bbc866c27a9f37","src/codegen/math/float/ln.rs":"c851e211e43f8256093ba75b03ae0c307c9962ee66d94f09b4dd80068190cbdf","src/codegen/math/float/macros.rs":"fc9924869ed85e4795983af228cacf23158f4f35919adce16c920ad4a3f0a009","src/codegen/math/float/mul_add.rs":"041a5b69d5991d93ef795351b17560c10faf80b78fd26ad7df42a239b32cf9de","src/codegen/math/float/mul_adde.rs":"d71d5f0f3333b62a7439b823cb7adf5340ea1555ce820fb4a3f4cb922f73f5f5","src/codegen/math/float/powf.rs":"9742c3877f1a5509ca5c9492a40884b6579ba6dd11c26b7112e63f70666b395d","src/codegen/math/float/sin.rs":"0e9868d35531566509f3a01d85d5253045eb4afa8525d8407dcc1f5f33c56036","src/codegen/math/float/sin_cos_pi.rs":"8e6b6142d7dd240cdb36669722e82ab9810a2261e86e659f7d97a942ad8b1258","src/codegen/math/float/sin_pi.rs":"bb6d39db8f921e03a301fc5206ac1a61a97def8a2cb83b87ccf189f3fc48d548","src/codegen/math/float/sqrt.rs":"e6ebb0c5f428efad1f672b9a8fe4e58534dbf1ea5a8fe092ce5ce76b52fe89cb","src/codegen/math/float/sqrte.rs":"23acfaea38d0e081a6d9021c1094e813d0cfd12c58c1eca9662aade5e625d51c","src/codegen/math/float/tanh.rs":"816fd107f134920fb1a21cd792029d4b89306f6cf16d6f030cc1136823b033e7","src/codegen/pointer_sized_int.rs":"6ca13c214b6cf7e0929dbe18e96a16fc0bb7d8799608df29c4c8115490f99e01","src/codegen/reductions.rs":"8eb18ebac76985d2aa30262a2edd8cb004230b511a765d657525f677a585c12c","src/codegen/reductions/mask.rs":"e67f35a1f4d156a4894a2d6ea5a935b4d898cf70eefb2715f5c1cc165e776c11","src/codegen/reductions/mask/aarch64.rs":"84b101c17cad1ede4eb6d38cada0ac7da239dba8cea3badd3829b967e558431f","src/codegen/reductions/mask/arm.rs":"aaa07129bd078ae7e677cf8b8e67ec9f30536606a0c7ed1baaa18fd1793bb218","src/codegen/reductions/mask/fallback.rs":"3eb9319d2c7cf19216b607b8459612c4e027b643cf11b036937d36896bf76786","src/codegen/reductions/mask/fallback_impl.rs":"76547f396e55ef403327c77c314cf8db8c7a5c9b9819bfb925abeacf130249e5","src/codegen/reductions/mask/x86.rs":"36dcd8af4ab99730a078ed113d3955f74eb1a2876e2e6d9f224e0ff462c216d1","src/codegen/reductions/mask/x86/avx.rs":"3a40868b38c86e35aefb96d7578de6322efe89d8135e0366359b54ddd06f861a","src/codegen/reductions/mask/x86/avx2.rs":"677aed3f056285285daa3adff8bc65e739630b4424defa6d9665e160f027507e","src/codegen/reductions/mask/x86/sse.rs":"8522f6ed03f6c32dd577d4298df477c08aeaaa38563706f29096e1911ed731f2","src/codegen/reductions/mask/x86/sse2.rs":"54ec56e49b0c6841eccb719e4f310d65fe767c04136b2ec20bd8b9d7d9897b9e","src/codegen/shuffle.rs":"1ec2930f4e1acc43ac30b518af298d466a79e9e75734a51c380b7810efd1a27f","src/codegen/shuffle1_dyn.rs":"3f13ca1597378758d05106bf5ff3715eee531f3cb6d88f48b9182bd6c9386b51","src/codegen/swap_bytes.rs":"c67c86e91ca3fc77539e0efcea081a3c62548cccf503963ae408f2e86f4e6a21","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":"f0753b405cdc865bdf8e82c6505f299ea1f96136239ebbaf7f9ce93d310764b8","src/codegen/vSize.rs":"c89f5fdeb28ac4c8272ed1816fce03d9d95308cc32bb2533bd8b20cd5ac102ac","src/lib.rs":"05048c6a85ec65cf902d9dd8f757a3f76392b703a6794ea71f0d41500a89f78f","src/masks.rs":"70fc0abe4c2907ce2a491c574e1cfb9f3423385da2e1a923a48c9c13f8ba6ed8","src/sealed.rs":"ae7fdeaf5d84cd7710ed730ca72ca7eaba93df6cb0acb183e5c0a7327acf197f","src/testing.rs":"896669c08d8c801448a4d2fadc9d633eda0fbe879d229997e2a182e31278e469","src/testing/macros.rs":"403bbc5ecb7c786fe36156df302d0c07a8122408dbb15f7474d7682224ba1106","src/testing/utils.rs":"41912a92266dfe884647fc035e4242fd746100df8e839808ae0397af3759a3c8","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":"5147f86d224c4c540b772033da2f994cad9bc9c035f38ec21e23bc4e55f8a759"},"package":"1f9f08af0c877571712e2e3e686ad79efad9657dbf0f7c3c8ba943ff6c38932d"}
+ \ No newline at end of file
+-diff --git a/third_party/rust/packed_simd/Cargo.toml b/third_party/rust/packed_simd/Cargo.toml
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/Cargo.toml
+ +++ /dev/null
+ @@ -1,83 +0,0 @@
+@@ -3655,8 +2855,6 @@
+ -
+ -[badges.maintenance]
+ -status = "experimental"
+-diff --git a/third_party/rust/packed_simd/README.md b/third_party/rust/packed_simd/README.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/README.md
+ +++ /dev/null
+ @@ -1,144 +0,0 @@
+@@ -3804,8 +3002,6 @@
+ -[sleef_sys]: https://crates.io/crates/sleef-sys
+ -[contributing instructions]: contributing.md
+ -[Code of Conduct]: https://www.rust-lang.org/en-US/conduct.html
+-diff --git a/third_party/rust/packed_simd/bors.toml b/third_party/rust/packed_simd/bors.toml
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/bors.toml
+ +++ /dev/null
+ @@ -1,3 +0,0 @@
+@@ -3813,8 +3009,6 @@
+ - "continuous-integration/travis-ci/push"
+ -]
+ \ No newline at end of file
+-diff --git a/third_party/rust/packed_simd/build.rs b/third_party/rust/packed_simd/build.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/build.rs
+ +++ /dev/null
+ @@ -1,6 +0,0 @@
+@@ -3824,8 +3018,6 @@
+ - println!("cargo:rustc-cfg=libcore_neon");
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/ci/all.sh b/third_party/rust/packed_simd/ci/all.sh
+-deleted file mode 100755
+ --- a/third_party/rust/packed_simd/ci/all.sh
+ +++ /dev/null
+ @@ -1,71 +0,0 @@
+@@ -3900,8 +3092,6 @@
+ - cd micro_benchmarks
+ - $CMD
+ -)
+-diff --git a/third_party/rust/packed_simd/ci/android-install-ndk.sh b/third_party/rust/packed_simd/ci/android-install-ndk.sh
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/android-install-ndk.sh
+ +++ /dev/null
+ @@ -1,21 +0,0 @@
+@@ -3926,8 +3116,6 @@
+ -rm $ANDROID_NDK_ARCHIVE
+ -mv android-ndk-* ndk
+ -rm -rf android-ndk-*
+-diff --git a/third_party/rust/packed_simd/ci/android-install-sdk.sh b/third_party/rust/packed_simd/ci/android-install-sdk.sh
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/android-install-sdk.sh
+ +++ /dev/null
+ @@ -1,60 +0,0 @@
+@@ -3991,8 +3179,6 @@
+ - ./sdk/tools/bin/avdmanager create avd \
+ - --name "${1}" \
+ - --package "system-images;android-24;default;$abi"
+-diff --git a/third_party/rust/packed_simd/ci/android-sysimage.sh b/third_party/rust/packed_simd/ci/android-sysimage.sh
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/android-sysimage.sh
+ +++ /dev/null
+ @@ -1,56 +0,0 @@
+@@ -4052,8 +3238,6 @@
+ -}
+ -
+ -main "${@}"
+-diff --git a/third_party/rust/packed_simd/ci/benchmark.sh b/third_party/rust/packed_simd/ci/benchmark.sh
+-deleted file mode 100755
+ --- a/third_party/rust/packed_simd/ci/benchmark.sh
+ +++ /dev/null
+ @@ -1,32 +0,0 @@
+@@ -4089,8 +3273,6 @@
+ - cd -
+ -done
+ -
+-diff --git a/third_party/rust/packed_simd/ci/deploy_and_run_on_ios_simulator.rs b/third_party/rust/packed_simd/ci/deploy_and_run_on_ios_simulator.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/deploy_and_run_on_ios_simulator.rs
+ +++ /dev/null
+ @@ -1,176 +0,0 @@
+@@ -4270,8 +3452,6 @@
+ - install_app_to_simulator();
+ - run_app_on_simulator();
+ -}
+-diff --git a/third_party/rust/packed_simd/ci/docker/aarch64-linux-android/Dockerfile b/third_party/rust/packed_simd/ci/docker/aarch64-linux-android/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/aarch64-linux-android/Dockerfile
+ +++ /dev/null
+ @@ -1,47 +0,0 @@
+@@ -4322,8 +3502,6 @@
+ - exec \"$@\"", \
+ - "--" \
+ -]
+-diff --git a/third_party/rust/packed_simd/ci/docker/aarch64-unknown-linux-gnu/Dockerfile b/third_party/rust/packed_simd/ci/docker/aarch64-unknown-linux-gnu/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/aarch64-unknown-linux-gnu/Dockerfile
+ +++ /dev/null
+ @@ -1,14 +0,0 @@
+@@ -4341,8 +3519,6 @@
+ -ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \
+ - CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER="qemu-aarch64 -L /usr/aarch64-linux-gnu" \
+ - OBJDUMP=aarch64-linux-gnu-objdump
+-diff --git a/third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabi/Dockerfile b/third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabi/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabi/Dockerfile
+ +++ /dev/null
+ @@ -1,15 +0,0 @@
+@@ -4361,8 +3537,6 @@
+ -ENV CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABI_LINKER=arm-linux-gnueabi-gcc \
+ - CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABI_RUNNER="qemu-arm -L /usr/arm-linux-gnueabi" \
+ - OBJDUMP=arm-linux-gnueabi-objdump
+-diff --git a/third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile b/third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile
+ +++ /dev/null
+ @@ -1,13 +0,0 @@
+@@ -4379,8 +3553,6 @@
+ -ENV CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
+ - CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -L /usr/arm-linux-gnueabihf" \
+ - OBJDUMP=arm-linux-gnueabihf-objdump
+-diff --git a/third_party/rust/packed_simd/ci/docker/armv7-linux-androideabi/Dockerfile b/third_party/rust/packed_simd/ci/docker/armv7-linux-androideabi/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/armv7-linux-androideabi/Dockerfile
+ +++ /dev/null
+ @@ -1,47 +0,0 @@
+@@ -4431,8 +3603,6 @@
+ - exec \"$@\"", \
+ - "--" \
+ -]
+-diff --git a/third_party/rust/packed_simd/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile b/third_party/rust/packed_simd/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile
+ +++ /dev/null
+ @@ -1,13 +0,0 @@
+@@ -4449,8 +3619,6 @@
+ -ENV CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
+ - CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -L /usr/arm-linux-gnueabihf" \
+ - OBJDUMP=arm-linux-gnueabihf-objdump
+-diff --git a/third_party/rust/packed_simd/ci/docker/i586-unknown-linux-gnu/Dockerfile b/third_party/rust/packed_simd/ci/docker/i586-unknown-linux-gnu/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/i586-unknown-linux-gnu/Dockerfile
+ +++ /dev/null
+ @@ -1,7 +0,0 @@
+@@ -4461,8 +3629,6 @@
+ - file \
+ - make \
+ - ca-certificates
+-diff --git a/third_party/rust/packed_simd/ci/docker/i686-unknown-linux-gnu/Dockerfile b/third_party/rust/packed_simd/ci/docker/i686-unknown-linux-gnu/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/i686-unknown-linux-gnu/Dockerfile
+ +++ /dev/null
+ @@ -1,7 +0,0 @@
+@@ -4473,8 +3639,6 @@
+ - file \
+ - make \
+ - ca-certificates
+-diff --git a/third_party/rust/packed_simd/ci/docker/mips-unknown-linux-gnu/Dockerfile b/third_party/rust/packed_simd/ci/docker/mips-unknown-linux-gnu/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/mips-unknown-linux-gnu/Dockerfile
+ +++ /dev/null
+ @@ -1,13 +0,0 @@
+@@ -4492,8 +3656,6 @@
+ - CARGO_TARGET_MIPS_UNKNOWN_LINUX_GNU_RUNNER="qemu-mips -L /usr/mips-linux-gnu" \
+ - OBJDUMP=mips-linux-gnu-objdump
+ \ No newline at end of file
+-diff --git a/third_party/rust/packed_simd/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile b/third_party/rust/packed_simd/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile
+ +++ /dev/null
+ @@ -1,10 +0,0 @@
+@@ -4508,8 +3670,6 @@
+ - CARGO_TARGET_MIPS64_UNKNOWN_LINUX_GNUABI64_RUNNER="qemu-mips64 -L /usr/mips64-linux-gnuabi64" \
+ - OBJDUMP=mips64-linux-gnuabi64-objdump
+ \ No newline at end of file
+-diff --git a/third_party/rust/packed_simd/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile b/third_party/rust/packed_simd/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile
+ +++ /dev/null
+ @@ -1,10 +0,0 @@
+@@ -4524,8 +3684,6 @@
+ - CARGO_TARGET_MIPS64EL_UNKNOWN_LINUX_GNUABI64_RUNNER="qemu-mips64el -L /usr/mips64el-linux-gnuabi64" \
+ - OBJDUMP=mips64el-linux-gnuabi64-objdump
+ \ No newline at end of file
+-diff --git a/third_party/rust/packed_simd/ci/docker/mipsel-unknown-linux-musl/Dockerfile b/third_party/rust/packed_simd/ci/docker/mipsel-unknown-linux-musl/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/mipsel-unknown-linux-musl/Dockerfile
+ +++ /dev/null
+ @@ -1,25 +0,0 @@
+@@ -4554,8 +3712,6 @@
+ - CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
+ - CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_MUSL_LINKER=mipsel-openwrt-linux-gcc \
+ - CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_MUSL_RUNNER="qemu-mipsel -L /toolchain"
+-diff --git a/third_party/rust/packed_simd/ci/docker/powerpc-unknown-linux-gnu/Dockerfile b/third_party/rust/packed_simd/ci/docker/powerpc-unknown-linux-gnu/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/powerpc-unknown-linux-gnu/Dockerfile
+ +++ /dev/null
+ @@ -1,13 +0,0 @@
+@@ -4572,8 +3728,6 @@
+ - CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc -cpu Vger -L /usr/powerpc-linux-gnu" \
+ - CC=powerpc-linux-gnu-gcc \
+ - OBJDUMP=powerpc-linux-gnu-objdump
+-diff --git a/third_party/rust/packed_simd/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile b/third_party/rust/packed_simd/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile
+ +++ /dev/null
+ @@ -1,17 +0,0 @@
+@@ -4594,8 +3748,6 @@
+ - CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc64 -L /usr/powerpc64-linux-gnu" \
+ - CC=powerpc64-linux-gnu-gcc \
+ - OBJDUMP=powerpc64-linux-gnu-objdump
+-diff --git a/third_party/rust/packed_simd/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile b/third_party/rust/packed_simd/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile
+ +++ /dev/null
+ @@ -1,11 +0,0 @@
+@@ -4610,8 +3762,6 @@
+ - CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc64le -L /usr/powerpc64le-linux-gnu" \
+ - CC=powerpc64le-linux-gnu-gcc \
+ - OBJDUMP=powerpc64le-linux-gnu-objdump
+-diff --git a/third_party/rust/packed_simd/ci/docker/s390x-unknown-linux-gnu/Dockerfile b/third_party/rust/packed_simd/ci/docker/s390x-unknown-linux-gnu/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/s390x-unknown-linux-gnu/Dockerfile
+ +++ /dev/null
+ @@ -1,20 +0,0 @@
+@@ -4635,8 +3785,6 @@
+ - CC_s390x_unknown_linux_gnu=s390x-linux-gnu-gcc \
+ - CXX_s390x_unknown_linux_gnu=s390x-linux-gnu-g++ \
+ - OBJDUMP=s390x-linux-gnu-objdump
+-diff --git a/third_party/rust/packed_simd/ci/docker/sparc64-unknown-linux-gnu/Dockerfile b/third_party/rust/packed_simd/ci/docker/sparc64-unknown-linux-gnu/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/sparc64-unknown-linux-gnu/Dockerfile
+ +++ /dev/null
+ @@ -1,18 +0,0 @@
+@@ -4658,8 +3806,6 @@
+ - CARGO_TARGET_SPARC64_UNKNOWN_LINUX_GNU_RUNNER="/test-runner-linux sparc64" \
+ - CC_sparc64_unknown_linux_gnu=sparc64-linux-gnu-gcc \
+ - PATH=$PATH:/rust/bin
+-diff --git a/third_party/rust/packed_simd/ci/docker/thumbv7neon-linux-androideabi/Dockerfile b/third_party/rust/packed_simd/ci/docker/thumbv7neon-linux-androideabi/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/thumbv7neon-linux-androideabi/Dockerfile
+ +++ /dev/null
+ @@ -1,47 +0,0 @@
+@@ -4710,8 +3856,6 @@
+ - exec \"$@\"", \
+ - "--" \
+ -]
+-diff --git a/third_party/rust/packed_simd/ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile b/third_party/rust/packed_simd/ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile
+ +++ /dev/null
+ @@ -1,13 +0,0 @@
+@@ -4728,8 +3872,6 @@
+ -ENV CARGO_TARGET_THUMBV7NEON_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
+ - CARGO_TARGET_THUMBV7NEON_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -L /usr/arm-linux-gnueabihf" \
+ - OBJDUMP=arm-linux-gnueabihf-objdump
+-diff --git a/third_party/rust/packed_simd/ci/docker/wasm32-unknown-unknown/Dockerfile b/third_party/rust/packed_simd/ci/docker/wasm32-unknown-unknown/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/wasm32-unknown-unknown/Dockerfile
+ +++ /dev/null
+ @@ -1,39 +0,0 @@
+@@ -4772,8 +3914,6 @@
+ -# Rustc isn't available until this container starts, so defer compilation of the
+ -# shim.
+ -ENTRYPOINT /rust/bin/rustc /lld-shim.rs -o /tmp/lld-shim && exec bash "$@"
+-diff --git a/third_party/rust/packed_simd/ci/docker/x86_64-linux-android/Dockerfile b/third_party/rust/packed_simd/ci/docker/x86_64-linux-android/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/x86_64-linux-android/Dockerfile
+ +++ /dev/null
+ @@ -1,31 +0,0 @@
+@@ -4808,8 +3948,6 @@
+ - CXX_x86_64_linux_android=x86_64-linux-android21-clang++ \
+ - OBJDUMP=llvm-objdump \
+ - HOME=/tmp
+-diff --git a/third_party/rust/packed_simd/ci/docker/x86_64-unknown-linux-gnu-emulated/Dockerfile b/third_party/rust/packed_simd/ci/docker/x86_64-unknown-linux-gnu-emulated/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/x86_64-unknown-linux-gnu-emulated/Dockerfile
+ +++ /dev/null
+ @@ -1,16 +0,0 @@
+@@ -4829,8 +3967,6 @@
+ -RUN wget https://github.com/gnzlbg/intel_sde/raw/master/sde-external-8.16.0-2018-01-30-lin.tar.bz2
+ -RUN tar -xjf sde-external-8.16.0-2018-01-30-lin.tar.bz2
+ -ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER="/sde-external-8.16.0-2018-01-30-lin/sde64 --"
+-diff --git a/third_party/rust/packed_simd/ci/docker/x86_64-unknown-linux-gnu/Dockerfile b/third_party/rust/packed_simd/ci/docker/x86_64-unknown-linux-gnu/Dockerfile
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/docker/x86_64-unknown-linux-gnu/Dockerfile
+ +++ /dev/null
+ @@ -1,10 +0,0 @@
+@@ -4844,8 +3980,6 @@
+ - cmake \
+ - libclang-dev \
+ - clang
+-diff --git a/third_party/rust/packed_simd/ci/dox.sh b/third_party/rust/packed_simd/ci/dox.sh
+-deleted file mode 100755
+ --- a/third_party/rust/packed_simd/ci/dox.sh
+ +++ /dev/null
+ @@ -1,27 +0,0 @@
+@@ -4876,8 +4010,6 @@
+ - ghp-import -n target/doc
+ - git push -qf https://${GH_PAGES}@github.com/${TRAVIS_REPO_SLUG}.git gh-pages
+ -fi
+-diff --git a/third_party/rust/packed_simd/ci/linux-s390x.sh b/third_party/rust/packed_simd/ci/linux-s390x.sh
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/linux-s390x.sh
+ +++ /dev/null
+ @@ -1,18 +0,0 @@
+@@ -4899,8 +4031,6 @@
+ -rm ../initrd.gz
+ -cp /usr/s390x-linux-gnu/lib/libgcc_s.so.1 usr/lib/
+ -chmod a+w .
+-diff --git a/third_party/rust/packed_simd/ci/linux-sparc64.sh b/third_party/rust/packed_simd/ci/linux-sparc64.sh
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/linux-sparc64.sh
+ +++ /dev/null
+ @@ -1,17 +0,0 @@
+@@ -4921,8 +4051,6 @@
+ -rm ../initrd.gz
+ -cp /usr/sparc64-linux-gnu/lib/libgcc_s.so.1 usr/lib/
+ -chmod a+w .
+-diff --git a/third_party/rust/packed_simd/ci/lld-shim.rs b/third_party/rust/packed_simd/ci/lld-shim.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/lld-shim.rs
+ +++ /dev/null
+ @@ -1,11 +0,0 @@
+@@ -4937,8 +4065,6 @@
+ - .collect::<Vec<_>>();
+ - panic!("failed to exec: {}", Command::new("rust-lld").args(&args).exec());
+ -}
+-diff --git a/third_party/rust/packed_simd/ci/max_line_width.sh b/third_party/rust/packed_simd/ci/max_line_width.sh
+-deleted file mode 100755
+ --- a/third_party/rust/packed_simd/ci/max_line_width.sh
+ +++ /dev/null
+ @@ -1,17 +0,0 @@
+@@ -4959,8 +4085,6 @@
+ - fi
+ -done
+ -
+-diff --git a/third_party/rust/packed_simd/ci/run-docker.sh b/third_party/rust/packed_simd/ci/run-docker.sh
+-deleted file mode 100755
+ --- a/third_party/rust/packed_simd/ci/run-docker.sh
+ +++ /dev/null
+ @@ -1,38 +0,0 @@
+@@ -5002,8 +4126,6 @@
+ -else
+ - run ${TARGET}
+ -fi
+-diff --git a/third_party/rust/packed_simd/ci/run.sh b/third_party/rust/packed_simd/ci/run.sh
+-deleted file mode 100755
+ --- a/third_party/rust/packed_simd/ci/run.sh
+ +++ /dev/null
+ @@ -1,99 +0,0 @@
+@@ -5106,8 +4228,6 @@
+ -
+ -# FIXME: Figure out which examples take too long to run and ignore or adjust those
+ -#. ci/run_examples.sh
+-diff --git a/third_party/rust/packed_simd/ci/run_examples.sh b/third_party/rust/packed_simd/ci/run_examples.sh
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/run_examples.sh
+ +++ /dev/null
+ @@ -1,51 +0,0 @@
+@@ -5162,8 +4282,6 @@
+ -
+ -cp -r examples/triangle_xform target/triangle_xform
+ -cargo_test --manifest-path=target/triangle_xform/Cargo.toml --release
+-diff --git a/third_party/rust/packed_simd/ci/runtest-android.rs b/third_party/rust/packed_simd/ci/runtest-android.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/ci/runtest-android.rs
+ +++ /dev/null
+ @@ -1,45 +0,0 @@
+@@ -5212,8 +4330,6 @@
+ - panic!("failed to find successful test run");
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/ci/setup_benchmarks.sh b/third_party/rust/packed_simd/ci/setup_benchmarks.sh
+-deleted file mode 100755
+ --- a/third_party/rust/packed_simd/ci/setup_benchmarks.sh
+ +++ /dev/null
+ @@ -1,7 +0,0 @@
+@@ -5224,8 +4340,6 @@
+ -# Get latest ISPC binary for the target and put it in the path
+ -git clone https://github.com/gnzlbg/ispc-binaries
+ -cp ispc-binaries/ispc-${TARGET} ispc
+-diff --git a/third_party/rust/packed_simd/ci/test-runner-linux b/third_party/rust/packed_simd/ci/test-runner-linux
+-deleted file mode 100755
+ --- a/third_party/rust/packed_simd/ci/test-runner-linux
+ +++ /dev/null
+ @@ -1,24 +0,0 @@
+@@ -5253,8 +4367,6 @@
+ -
+ -# if the output contains a failure, return error
+ -! grep FAILED output > /dev/null
+-diff --git a/third_party/rust/packed_simd/contributing.md b/third_party/rust/packed_simd/contributing.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/contributing.md
+ +++ /dev/null
+ @@ -1,67 +0,0 @@
+@@ -5325,8 +4437,6 @@
+ -
+ -[perf-guide]: https://rust-lang-nursery.github.io/packed_simd/perf-guide/
+ -[mdBook]: https://github.com/rust-lang-nursery/mdBook
+-diff --git a/third_party/rust/packed_simd/perf-guide/book.toml b/third_party/rust/packed_simd/perf-guide/book.toml
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/book.toml
+ +++ /dev/null
+ @@ -1,12 +0,0 @@
+@@ -5342,8 +4452,6 @@
+ -
+ -[output.html]
+ -additional-css = ["./src/ascii.css"]
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/SUMMARY.md b/third_party/rust/packed_simd/perf-guide/src/SUMMARY.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/SUMMARY.md
+ +++ /dev/null
+ @@ -1,21 +0,0 @@
+@@ -5368,8 +4476,6 @@
+ -- [Performance profiling](./prof/profiling.md)
+ - - [Profiling on Linux](./prof/linux.md)
+ - - [Using machine code analyzers](./prof/mca.md)
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/ascii.css b/third_party/rust/packed_simd/perf-guide/src/ascii.css
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/ascii.css
+ +++ /dev/null
+ @@ -1,4 +0,0 @@
+@@ -5377,8 +4483,6 @@
+ - /* "Source Code Pro" breaks ASCII art */
+ - font-family: Consolas, "Ubuntu Mono", Menlo, "DejaVu Sans Mono", monospace;
+ -}
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/bound_checks.md b/third_party/rust/packed_simd/perf-guide/src/bound_checks.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/bound_checks.md
+ +++ /dev/null
+ @@ -1,22 +0,0 @@
+@@ -5404,8 +4508,6 @@
+ -
+ -These assertions do often significantly impact performance and you should be
+ -aware of them.
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/float-math/approx.md b/third_party/rust/packed_simd/perf-guide/src/float-math/approx.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/float-math/approx.md
+ +++ /dev/null
+ @@ -1,8 +0,0 @@
+@@ -5417,8 +4519,6 @@
+ -that people should check whether the error is good enough for their
+ -applications. Explain that this error is currently unstable and might change.
+ --->
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/float-math/fma.md b/third_party/rust/packed_simd/perf-guide/src/float-math/fma.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/float-math/fma.md
+ +++ /dev/null
+ @@ -1,6 +0,0 @@
+@@ -5428,16 +4528,12 @@
+ -Explain that this is a compound operation, infinite precision, difference
+ -between `mul_add` and `mul_adde`, that LLVM cannot do this by itself, etc.
+ --->
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/float-math/fp.md b/third_party/rust/packed_simd/perf-guide/src/float-math/fp.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/float-math/fp.md
+ +++ /dev/null
+ @@ -1,3 +0,0 @@
+ -# Floating-point math
+ -
+ -This chapter contains information pertaining to working with floating-point numbers.
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/float-math/svml.md b/third_party/rust/packed_simd/perf-guide/src/float-math/svml.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/float-math/svml.md
+ +++ /dev/null
+ @@ -1,7 +0,0 @@
+@@ -5448,8 +4544,6 @@
+ -
+ -Explain how to enable `sleef`, etc.
+ --->
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/introduction.md b/third_party/rust/packed_simd/perf-guide/src/introduction.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/introduction.md
+ +++ /dev/null
+ @@ -1,26 +0,0 @@
+@@ -5479,8 +4573,6 @@
+ -
+ -This book attempts to document these best practices and provides practical examples
+ -on how to apply the tips to _your_ code.
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/prof/linux.md b/third_party/rust/packed_simd/perf-guide/src/prof/linux.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/prof/linux.md
+ +++ /dev/null
+ @@ -1,107 +0,0 @@
+@@ -5591,8 +4683,6 @@
+ -TODO: explain valgrind's dynamic binary translation, warn about massive
+ -slowdown, talk about `kcachegrind` for a GUI
+ --->
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/prof/mca.md b/third_party/rust/packed_simd/perf-guide/src/prof/mca.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/prof/mca.md
+ +++ /dev/null
+ @@ -1,100 +0,0 @@
+@@ -5696,8 +4786,6 @@
+ -TODO: once LLVM 7 gets released, write a chapter on using llvm-mca
+ -with SIMD disassembly.
+ --->
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/prof/profiling.md b/third_party/rust/packed_simd/perf-guide/src/prof/profiling.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/prof/profiling.md
+ +++ /dev/null
+ @@ -1,14 +0,0 @@
+@@ -5715,8 +4803,6 @@
+ -
+ -[profiling]: https://en.wikipedia.org/wiki/Profiling_(computer_programming)
+ -[cargo-ref]: https://doc.rust-lang.org/cargo/reference/manifest.html#the-profile-sections
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/target-feature/attribute.md b/third_party/rust/packed_simd/perf-guide/src/target-feature/attribute.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/target-feature/attribute.md
+ +++ /dev/null
+ @@ -1,5 +0,0 @@
+@@ -5725,8 +4811,6 @@
+ -<!-- TODO:
+ -Explain the `#[target_feature]` attribute
+ --->
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/target-feature/features.md b/third_party/rust/packed_simd/perf-guide/src/target-feature/features.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/target-feature/features.md
+ +++ /dev/null
+ @@ -1,13 +0,0 @@
+@@ -5743,8 +4827,6 @@
+ -specifications [in the compiler's source code][targets].
+ -
+ -[targets]: https://github.com/rust-lang/rust/tree/master/src/librustc_target/spec
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/target-feature/inlining.md b/third_party/rust/packed_simd/perf-guide/src/target-feature/inlining.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/target-feature/inlining.md
+ +++ /dev/null
+ @@ -1,5 +0,0 @@
+@@ -5753,8 +4835,6 @@
+ -<!-- TODO:
+ -Explain how the `#[target_feature]` attribute interacts with inlining
+ --->
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/target-feature/practice.md b/third_party/rust/packed_simd/perf-guide/src/target-feature/practice.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/target-feature/practice.md
+ +++ /dev/null
+ @@ -1,31 +0,0 @@
+@@ -5789,8 +4869,6 @@
+ -generated instructions with the [VEX] prefix.
+ -
+ -[VEX]: https://en.wikipedia.org/wiki/VEX_prefix
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/target-feature/runtime.md b/third_party/rust/packed_simd/perf-guide/src/target-feature/runtime.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/target-feature/runtime.md
+ +++ /dev/null
+ @@ -1,5 +0,0 @@
+@@ -5799,8 +4877,6 @@
+ -<!-- TODO:
+ -Explain cost (how it works).
+ --->
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/target-feature/rustflags.md b/third_party/rust/packed_simd/perf-guide/src/target-feature/rustflags.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/target-feature/rustflags.md
+ +++ /dev/null
+ @@ -1,77 +0,0 @@
+@@ -5881,8 +4957,6 @@
+ - plan to only use locally. This should never be used when the generated programs
+ - are meant to be run on other computers, such as when packaging for distribution
+ - or cross-compiling.
+-diff --git a/third_party/rust/packed_simd/perf-guide/src/vert-hor-ops.md b/third_party/rust/packed_simd/perf-guide/src/vert-hor-ops.md
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/perf-guide/src/vert-hor-ops.md
+ +++ /dev/null
+ @@ -1,76 +0,0 @@
+@@ -5962,14 +5036,10 @@
+ -than `slow_sum`. You can run the [slice_sum]() example and see for yourself. On
+ -the particular machine tested there the algorithm using the horizontal vector
+ -addition is 2.7x slower than the one using vertical vector operations!
+-diff --git a/third_party/rust/packed_simd/rust-toolchain b/third_party/rust/packed_simd/rust-toolchain
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/rust-toolchain
+ +++ /dev/null
+-@@ -1,1 +0,0 @@
++@@ -1 +0,0 @@
+ -nightly
+-diff --git a/third_party/rust/packed_simd/rustfmt.toml b/third_party/rust/packed_simd/rustfmt.toml
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/rustfmt.toml
+ +++ /dev/null
+ @@ -1,5 +0,0 @@
+@@ -5979,8 +5049,6 @@
+ -edition = "2018"
+ -error_on_line_overflow = true
+ \ No newline at end of file
+-diff --git a/third_party/rust/packed_simd/src/api.rs b/third_party/rust/packed_simd/src/api.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api.rs
+ +++ /dev/null
+ @@ -1,309 +0,0 @@
+@@ -6293,8 +5361,6 @@
+ - impl_ptr_write!([$elem_ty; $elem_n]: $tuple_id, $mask_ty | $test_tt);
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/bit_manip.rs b/third_party/rust/packed_simd/src/api/bit_manip.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/bit_manip.rs
+ +++ /dev/null
+ @@ -1,129 +0,0 @@
+@@ -6427,8 +5493,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/bitmask.rs b/third_party/rust/packed_simd/src/api/bitmask.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/bitmask.rs
+ +++ /dev/null
+ @@ -1,79 +0,0 @@
+@@ -6511,8 +5575,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/cast.rs b/third_party/rust/packed_simd/src/api/cast.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/cast.rs
+ +++ /dev/null
+ @@ -1,108 +0,0 @@
+@@ -6624,8 +5686,6 @@
+ -
+ -mod v512;
+ -pub use self::v512::*;
+-diff --git a/third_party/rust/packed_simd/src/api/cast/macros.rs b/third_party/rust/packed_simd/src/api/cast/macros.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/cast/macros.rs
+ +++ /dev/null
+ @@ -1,82 +0,0 @@
+@@ -6711,8 +5771,6 @@
+ - )*
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/cast/v128.rs b/third_party/rust/packed_simd/src/api/cast/v128.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/cast/v128.rs
+ +++ /dev/null
+ @@ -1,302 +0,0 @@
+@@ -7018,8 +6076,6 @@
+ -impl_from_cast!(i128x1[test_v128]: u128x1, m128x1);
+ -impl_from_cast!(u128x1[test_v128]: i128x1, m128x1);
+ -impl_from_cast!(m128x1[test_v128]: i128x1, u128x1);
+-diff --git a/third_party/rust/packed_simd/src/api/cast/v16.rs b/third_party/rust/packed_simd/src/api/cast/v16.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/cast/v16.rs
+ +++ /dev/null
+ @@ -1,68 +0,0 @@
+@@ -7091,8 +6147,6 @@
+ - usizex2,
+ - msizex2
+ -);
+-diff --git a/third_party/rust/packed_simd/src/api/cast/v256.rs b/third_party/rust/packed_simd/src/api/cast/v256.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/cast/v256.rs
+ +++ /dev/null
+ @@ -1,298 +0,0 @@
+@@ -7394,8 +6448,6 @@
+ - isizex4,
+ - usizex4
+ -);
+-diff --git a/third_party/rust/packed_simd/src/api/cast/v32.rs b/third_party/rust/packed_simd/src/api/cast/v32.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/cast/v32.rs
+ +++ /dev/null
+ @@ -1,132 +0,0 @@
+@@ -7531,8 +6583,6 @@
+ - usizex2,
+ - msizex2
+ -);
+-diff --git a/third_party/rust/packed_simd/src/api/cast/v512.rs b/third_party/rust/packed_simd/src/api/cast/v512.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/cast/v512.rs
+ +++ /dev/null
+ @@ -1,209 +0,0 @@
+@@ -7745,8 +6795,6 @@
+ - isizex8,
+ - usizex8
+ -);
+-diff --git a/third_party/rust/packed_simd/src/api/cast/v64.rs b/third_party/rust/packed_simd/src/api/cast/v64.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/cast/v64.rs
+ +++ /dev/null
+ @@ -1,208 +0,0 @@
+@@ -7958,8 +7006,6 @@
+ - usizex2,
+ - msizex2
+ -);
+-diff --git a/third_party/rust/packed_simd/src/api/cmp.rs b/third_party/rust/packed_simd/src/api/cmp.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/cmp.rs
+ +++ /dev/null
+ @@ -1,16 +0,0 @@
+@@ -7979,8 +7025,6 @@
+ -
+ -#[macro_use]
+ -mod vertical;
+-diff --git a/third_party/rust/packed_simd/src/api/cmp/eq.rs b/third_party/rust/packed_simd/src/api/cmp/eq.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/cmp/eq.rs
+ +++ /dev/null
+ @@ -1,27 +0,0 @@
+@@ -8011,8 +7055,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/cmp/ord.rs b/third_party/rust/packed_simd/src/api/cmp/ord.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/cmp/ord.rs
+ +++ /dev/null
+ @@ -1,43 +0,0 @@
+@@ -8059,8 +7101,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/cmp/partial_eq.rs b/third_party/rust/packed_simd/src/api/cmp/partial_eq.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/cmp/partial_eq.rs
+ +++ /dev/null
+ @@ -1,65 +0,0 @@
+@@ -8129,8 +7169,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/cmp/partial_ord.rs b/third_party/rust/packed_simd/src/api/cmp/partial_ord.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/cmp/partial_ord.rs
+ +++ /dev/null
+ @@ -1,230 +0,0 @@
+@@ -8364,8 +7402,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/cmp/vertical.rs b/third_party/rust/packed_simd/src/api/cmp/vertical.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/cmp/vertical.rs
+ +++ /dev/null
+ @@ -1,114 +0,0 @@
+@@ -8483,8 +7519,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/default.rs b/third_party/rust/packed_simd/src/api/default.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/default.rs
+ +++ /dev/null
+ @@ -1,30 +0,0 @@
+@@ -8518,8 +7552,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/fmt.rs b/third_party/rust/packed_simd/src/api/fmt.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/fmt.rs
+ +++ /dev/null
+ @@ -1,12 +0,0 @@
+@@ -8535,8 +7567,6 @@
+ -mod octal;
+ -#[macro_use]
+ -mod binary;
+-diff --git a/third_party/rust/packed_simd/src/api/fmt/binary.rs b/third_party/rust/packed_simd/src/api/fmt/binary.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/fmt/binary.rs
+ +++ /dev/null
+ @@ -1,54 +0,0 @@
+@@ -8594,8 +7624,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/fmt/debug.rs b/third_party/rust/packed_simd/src/api/fmt/debug.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/fmt/debug.rs
+ +++ /dev/null
+ @@ -1,60 +0,0 @@
+@@ -8659,8 +7687,6 @@
+ - impl_fmt_debug_tests!([$elem_ty; $elem_count]: $id | $test_tt);
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/fmt/lower_hex.rs b/third_party/rust/packed_simd/src/api/fmt/lower_hex.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/fmt/lower_hex.rs
+ +++ /dev/null
+ @@ -1,54 +0,0 @@
+@@ -8718,8 +7744,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/fmt/octal.rs b/third_party/rust/packed_simd/src/api/fmt/octal.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/fmt/octal.rs
+ +++ /dev/null
+ @@ -1,54 +0,0 @@
+@@ -8777,8 +7801,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/fmt/upper_hex.rs b/third_party/rust/packed_simd/src/api/fmt/upper_hex.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/fmt/upper_hex.rs
+ +++ /dev/null
+ @@ -1,54 +0,0 @@
+@@ -8836,8 +7858,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/from.rs b/third_party/rust/packed_simd/src/api/from.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/from.rs
+ +++ /dev/null
+ @@ -1,7 +0,0 @@
+@@ -8848,8 +7868,6 @@
+ -
+ -#[macro_use]
+ -mod from_vector;
+-diff --git a/third_party/rust/packed_simd/src/api/from/from_array.rs b/third_party/rust/packed_simd/src/api/from/from_array.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/from/from_array.rs
+ +++ /dev/null
+ @@ -1,124 +0,0 @@
+@@ -8977,8 +7995,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/from/from_vector.rs b/third_party/rust/packed_simd/src/api/from/from_vector.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/from/from_vector.rs
+ +++ /dev/null
+ @@ -1,67 +0,0 @@
+@@ -9049,8 +8065,6 @@
+ - )*
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/hash.rs b/third_party/rust/packed_simd/src/api/hash.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/hash.rs
+ +++ /dev/null
+ @@ -1,49 +0,0 @@
+@@ -9103,8 +8117,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/into_bits.rs b/third_party/rust/packed_simd/src/api/into_bits.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/into_bits.rs
+ +++ /dev/null
+ @@ -1,59 +0,0 @@
+@@ -9167,8 +8179,6 @@
+ -
+ -mod arch_specific;
+ -pub use self::arch_specific::*;
+-diff --git a/third_party/rust/packed_simd/src/api/into_bits/arch_specific.rs b/third_party/rust/packed_simd/src/api/into_bits/arch_specific.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/into_bits/arch_specific.rs
+ +++ /dev/null
+ @@ -1,345 +0,0 @@
+@@ -9517,8 +8527,6 @@
+ -
+ -////////////////////////////////////////////////////////////////////////////////
+ -// FIXME: Implementations for the 512-bit wide vector types
+-diff --git a/third_party/rust/packed_simd/src/api/into_bits/macros.rs b/third_party/rust/packed_simd/src/api/into_bits/macros.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/into_bits/macros.rs
+ +++ /dev/null
+ @@ -1,74 +0,0 @@
+@@ -9596,8 +8604,6 @@
+ - )*
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/into_bits/v128.rs b/third_party/rust/packed_simd/src/api/into_bits/v128.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/into_bits/v128.rs
+ +++ /dev/null
+ @@ -1,232 +0,0 @@
+@@ -9833,8 +8839,6 @@
+ -);
+ -// note: m128x1 cannot be constructed from all the other masks bit patterns in
+ -// here
+-diff --git a/third_party/rust/packed_simd/src/api/into_bits/v16.rs b/third_party/rust/packed_simd/src/api/into_bits/v16.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/into_bits/v16.rs
+ +++ /dev/null
+ @@ -1,9 +0,0 @@
+@@ -9847,8 +8851,6 @@
+ -impl_from_bits!(i8x2[test_v16]: u8x2, m8x2);
+ -impl_from_bits!(u8x2[test_v16]: i8x2, m8x2);
+ -// note: m8x2 cannot be constructed from all i8x2 or u8x2 bit patterns
+-diff --git a/third_party/rust/packed_simd/src/api/into_bits/v256.rs b/third_party/rust/packed_simd/src/api/into_bits/v256.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/into_bits/v256.rs
+ +++ /dev/null
+ @@ -1,232 +0,0 @@
+@@ -10084,8 +9086,6 @@
+ -);
+ -// note: m128x2 cannot be constructed from all the other masks bit patterns in
+ -// here
+-diff --git a/third_party/rust/packed_simd/src/api/into_bits/v32.rs b/third_party/rust/packed_simd/src/api/into_bits/v32.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/into_bits/v32.rs
+ +++ /dev/null
+ @@ -1,13 +0,0 @@
+@@ -10102,8 +9102,6 @@
+ -impl_from_bits!(i16x2[test_v32]: i8x4, u8x4, m8x4, u16x2, m16x2);
+ -impl_from_bits!(u16x2[test_v32]: i8x4, u8x4, m8x4, i16x2, m16x2);
+ -// note: m16x2 cannot be constructed from all m8x4 bit patterns
+-diff --git a/third_party/rust/packed_simd/src/api/into_bits/v512.rs b/third_party/rust/packed_simd/src/api/into_bits/v512.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/into_bits/v512.rs
+ +++ /dev/null
+ @@ -1,232 +0,0 @@
+@@ -10339,8 +9337,6 @@
+ -);
+ -// note: m128x4 cannot be constructed from all the other masks bit patterns in
+ -// here
+-diff --git a/third_party/rust/packed_simd/src/api/into_bits/v64.rs b/third_party/rust/packed_simd/src/api/into_bits/v64.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/into_bits/v64.rs
+ +++ /dev/null
+ @@ -1,18 +0,0 @@
+@@ -10362,8 +9358,6 @@
+ -impl_from_bits!(u32x2[test_v64]: i8x8, u8x8, m8x8, i16x4, u16x4, m16x4, i32x2, f32x2, m32x2);
+ -impl_from_bits!(f32x2[test_v64]: i8x8, u8x8, m8x8, i16x4, u16x4, m16x4, i32x2, u32x2, m32x2);
+ -// note: m32x2 cannot be constructed from all m16x4 or m8x8 bit patterns
+-diff --git a/third_party/rust/packed_simd/src/api/math.rs b/third_party/rust/packed_simd/src/api/math.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/math.rs
+ +++ /dev/null
+ @@ -1,4 +0,0 @@
+@@ -10371,8 +9365,6 @@
+ -
+ -#[macro_use]
+ -mod float;
+-diff --git a/third_party/rust/packed_simd/src/api/math/float.rs b/third_party/rust/packed_simd/src/api/math/float.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/math/float.rs
+ +++ /dev/null
+ @@ -1,64 +0,0 @@
+@@ -10440,8 +9432,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/math/float/abs.rs b/third_party/rust/packed_simd/src/api/math/float/abs.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/math/float/abs.rs
+ +++ /dev/null
+ @@ -1,31 +0,0 @@
+@@ -10476,8 +9466,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/math/float/consts.rs b/third_party/rust/packed_simd/src/api/math/float/consts.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/math/float/consts.rs
+ +++ /dev/null
+ @@ -1,74 +0,0 @@
+@@ -10555,8 +9543,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/math/float/cos.rs b/third_party/rust/packed_simd/src/api/math/float/cos.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/math/float/cos.rs
+ +++ /dev/null
+ @@ -1,44 +0,0 @@
+@@ -10604,8 +9590,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/math/float/exp.rs b/third_party/rust/packed_simd/src/api/math/float/exp.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/math/float/exp.rs
+ +++ /dev/null
+ @@ -1,33 +0,0 @@
+@@ -10642,8 +9626,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/math/float/ln.rs b/third_party/rust/packed_simd/src/api/math/float/ln.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/math/float/ln.rs
+ +++ /dev/null
+ @@ -1,33 +0,0 @@
+@@ -10680,8 +9662,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/math/float/mul_add.rs b/third_party/rust/packed_simd/src/api/math/float/mul_add.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/math/float/mul_add.rs
+ +++ /dev/null
+ @@ -1,44 +0,0 @@
+@@ -10729,8 +9709,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/math/float/mul_adde.rs b/third_party/rust/packed_simd/src/api/math/float/mul_adde.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/math/float/mul_adde.rs
+ +++ /dev/null
+ @@ -1,48 +0,0 @@
+@@ -10782,8 +9760,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/math/float/powf.rs b/third_party/rust/packed_simd/src/api/math/float/powf.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/math/float/powf.rs
+ +++ /dev/null
+ @@ -1,36 +0,0 @@
+@@ -10823,8 +9799,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/math/float/recpre.rs b/third_party/rust/packed_simd/src/api/math/float/recpre.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/math/float/recpre.rs
+ +++ /dev/null
+ @@ -1,36 +0,0 @@
+@@ -10864,8 +9838,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/math/float/rsqrte.rs b/third_party/rust/packed_simd/src/api/math/float/rsqrte.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/math/float/rsqrte.rs
+ +++ /dev/null
+ @@ -1,40 +0,0 @@
+@@ -10909,8 +9881,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/math/float/sin.rs b/third_party/rust/packed_simd/src/api/math/float/sin.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/math/float/sin.rs
+ +++ /dev/null
+ @@ -1,50 +0,0 @@
+@@ -10964,8 +9934,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/math/float/sqrt.rs b/third_party/rust/packed_simd/src/api/math/float/sqrt.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/math/float/sqrt.rs
+ +++ /dev/null
+ @@ -1,35 +0,0 @@
+@@ -11004,8 +9972,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/math/float/sqrte.rs b/third_party/rust/packed_simd/src/api/math/float/sqrte.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/math/float/sqrte.rs
+ +++ /dev/null
+ @@ -1,44 +0,0 @@
+@@ -11053,8 +10019,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/math/float/tanh.rs b/third_party/rust/packed_simd/src/api/math/float/tanh.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/math/float/tanh.rs
+ +++ /dev/null
+ @@ -1,29 +0,0 @@
+@@ -11087,8 +10051,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/minimal.rs b/third_party/rust/packed_simd/src/api/minimal.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/minimal.rs
+ +++ /dev/null
+ @@ -1,6 +0,0 @@
+@@ -11098,8 +10060,6 @@
+ -mod mask;
+ -#[macro_use]
+ -mod ptr;
+-diff --git a/third_party/rust/packed_simd/src/api/minimal/iuf.rs b/third_party/rust/packed_simd/src/api/minimal/iuf.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/minimal/iuf.rs
+ +++ /dev/null
+ @@ -1,169 +0,0 @@
+@@ -11272,8 +10232,6 @@
+ - }
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/minimal/mask.rs b/third_party/rust/packed_simd/src/api/minimal/mask.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/minimal/mask.rs
+ +++ /dev/null
+ @@ -1,176 +0,0 @@
+@@ -11453,8 +10411,6 @@
+ - }
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/minimal/ptr.rs b/third_party/rust/packed_simd/src/api/minimal/ptr.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/minimal/ptr.rs
+ +++ /dev/null
+ @@ -1,1373 +0,0 @@
+@@ -12831,8 +11787,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/ops.rs b/third_party/rust/packed_simd/src/api/ops.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/ops.rs
+ +++ /dev/null
+ @@ -1,32 +0,0 @@
+@@ -12868,8 +11822,6 @@
+ -
+ -#[macro_use]
+ -mod vector_float_min_max;
+-diff --git a/third_party/rust/packed_simd/src/api/ops/scalar_arithmetic.rs b/third_party/rust/packed_simd/src/api/ops/scalar_arithmetic.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/ops/scalar_arithmetic.rs
+ +++ /dev/null
+ @@ -1,203 +0,0 @@
+@@ -13076,8 +12028,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/ops/scalar_bitwise.rs b/third_party/rust/packed_simd/src/api/ops/scalar_bitwise.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/ops/scalar_bitwise.rs
+ +++ /dev/null
+ @@ -1,162 +0,0 @@
+@@ -13243,8 +12193,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/ops/scalar_mask_bitwise.rs b/third_party/rust/packed_simd/src/api/ops/scalar_mask_bitwise.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/ops/scalar_mask_bitwise.rs
+ +++ /dev/null
+ @@ -1,140 +0,0 @@
+@@ -13388,8 +12336,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/ops/scalar_shifts.rs b/third_party/rust/packed_simd/src/api/ops/scalar_shifts.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/ops/scalar_shifts.rs
+ +++ /dev/null
+ @@ -1,106 +0,0 @@
+@@ -13499,8 +12445,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/ops/vector_arithmetic.rs b/third_party/rust/packed_simd/src/api/ops/vector_arithmetic.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/ops/vector_arithmetic.rs
+ +++ /dev/null
+ @@ -1,148 +0,0 @@
+@@ -13652,8 +12596,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/ops/vector_bitwise.rs b/third_party/rust/packed_simd/src/api/ops/vector_bitwise.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/ops/vector_bitwise.rs
+ +++ /dev/null
+ @@ -1,129 +0,0 @@
+@@ -13786,8 +12728,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/ops/vector_float_min_max.rs b/third_party/rust/packed_simd/src/api/ops/vector_float_min_max.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/ops/vector_float_min_max.rs
+ +++ /dev/null
+ @@ -1,74 +0,0 @@
+@@ -13865,8 +12805,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/ops/vector_int_min_max.rs b/third_party/rust/packed_simd/src/api/ops/vector_int_min_max.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/ops/vector_int_min_max.rs
+ +++ /dev/null
+ @@ -1,57 +0,0 @@
+@@ -13927,8 +12865,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/ops/vector_mask_bitwise.rs b/third_party/rust/packed_simd/src/api/ops/vector_mask_bitwise.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/ops/vector_mask_bitwise.rs
+ +++ /dev/null
+ @@ -1,116 +0,0 @@
+@@ -14048,8 +12984,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/ops/vector_neg.rs b/third_party/rust/packed_simd/src/api/ops/vector_neg.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/ops/vector_neg.rs
+ +++ /dev/null
+ @@ -1,43 +0,0 @@
+@@ -14096,8 +13030,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/ops/vector_rotates.rs b/third_party/rust/packed_simd/src/api/ops/vector_rotates.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/ops/vector_rotates.rs
+ +++ /dev/null
+ @@ -1,92 +0,0 @@
+@@ -14193,8 +13125,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/ops/vector_shifts.rs b/third_party/rust/packed_simd/src/api/ops/vector_shifts.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/ops/vector_shifts.rs
+ +++ /dev/null
+ @@ -1,106 +0,0 @@
+@@ -14304,8 +13234,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/ptr.rs b/third_party/rust/packed_simd/src/api/ptr.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/ptr.rs
+ +++ /dev/null
+ @@ -1,4 +0,0 @@
+@@ -14313,8 +13241,6 @@
+ -
+ -#[macro_use]
+ -mod gather_scatter;
+-diff --git a/third_party/rust/packed_simd/src/api/ptr/gather_scatter.rs b/third_party/rust/packed_simd/src/api/ptr/gather_scatter.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/ptr/gather_scatter.rs
+ +++ /dev/null
+ @@ -1,216 +0,0 @@
+@@ -14534,8 +13460,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/reductions.rs b/third_party/rust/packed_simd/src/api/reductions.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/reductions.rs
+ +++ /dev/null
+ @@ -1,12 +0,0 @@
+@@ -14551,8 +13475,6 @@
+ -mod mask;
+ -#[macro_use]
+ -mod min_max;
+-diff --git a/third_party/rust/packed_simd/src/api/reductions/bitwise.rs b/third_party/rust/packed_simd/src/api/reductions/bitwise.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/reductions/bitwise.rs
+ +++ /dev/null
+ @@ -1,151 +0,0 @@
+@@ -14707,8 +13629,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/reductions/float_arithmetic.rs b/third_party/rust/packed_simd/src/api/reductions/float_arithmetic.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/reductions/float_arithmetic.rs
+ +++ /dev/null
+ @@ -1,313 +0,0 @@
+@@ -15025,8 +13945,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/reductions/integer_arithmetic.rs b/third_party/rust/packed_simd/src/api/reductions/integer_arithmetic.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/reductions/integer_arithmetic.rs
+ +++ /dev/null
+ @@ -1,193 +0,0 @@
+@@ -15223,8 +14141,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/reductions/mask.rs b/third_party/rust/packed_simd/src/api/reductions/mask.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/reductions/mask.rs
+ +++ /dev/null
+ @@ -1,89 +0,0 @@
+@@ -15317,8 +14233,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/reductions/min_max.rs b/third_party/rust/packed_simd/src/api/reductions/min_max.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/reductions/min_max.rs
+ +++ /dev/null
+ @@ -1,360 +0,0 @@
+@@ -15682,8 +14596,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/select.rs b/third_party/rust/packed_simd/src/api/select.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/select.rs
+ +++ /dev/null
+ @@ -1,73 +0,0 @@
+@@ -15760,8 +14672,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/shuffle.rs b/third_party/rust/packed_simd/src/api/shuffle.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/shuffle.rs
+ +++ /dev/null
+ @@ -1,184 +0,0 @@
+@@ -15949,8 +14859,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/shuffle1_dyn.rs b/third_party/rust/packed_simd/src/api/shuffle1_dyn.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/shuffle1_dyn.rs
+ +++ /dev/null
+ @@ -1,159 +0,0 @@
+@@ -16113,8 +15021,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/slice.rs b/third_party/rust/packed_simd/src/api/slice.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/slice.rs
+ +++ /dev/null
+ @@ -1,7 +0,0 @@
+@@ -16125,8 +15031,6 @@
+ -
+ -#[macro_use]
+ -mod write_to_slice;
+-diff --git a/third_party/rust/packed_simd/src/api/slice/from_slice.rs b/third_party/rust/packed_simd/src/api/slice/from_slice.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/slice/from_slice.rs
+ +++ /dev/null
+ @@ -1,202 +0,0 @@
+@@ -16332,8 +15236,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/slice/write_to_slice.rs b/third_party/rust/packed_simd/src/api/slice/write_to_slice.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/slice/write_to_slice.rs
+ +++ /dev/null
+ @@ -1,196 +0,0 @@
+@@ -16533,8 +15435,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/api/swap_bytes.rs b/third_party/rust/packed_simd/src/api/swap_bytes.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/api/swap_bytes.rs
+ +++ /dev/null
+ @@ -1,192 +0,0 @@
+@@ -16730,8 +15630,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen.rs b/third_party/rust/packed_simd/src/codegen.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen.rs
+ +++ /dev/null
+ @@ -1,62 +0,0 @@
+@@ -16797,8 +15695,6 @@
+ -
+ -pub(crate) mod vPtr;
+ -pub(crate) use self::vPtr::*;
+-diff --git a/third_party/rust/packed_simd/src/codegen/bit_manip.rs b/third_party/rust/packed_simd/src/codegen/bit_manip.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/bit_manip.rs
+ +++ /dev/null
+ @@ -1,347 +0,0 @@
+@@ -17149,8 +16045,6 @@
+ - compile_error!("unsupported target_pointer_width");
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/llvm.rs b/third_party/rust/packed_simd/src/codegen/llvm.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/llvm.rs
+ +++ /dev/null
+ @@ -1,122 +0,0 @@
+@@ -17276,16 +16170,12 @@
+ -
+ - pub(crate) fn simd_bitmask<T, U>(value: T) -> U;
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/math.rs b/third_party/rust/packed_simd/src/codegen/math.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/math.rs
+ +++ /dev/null
+ @@ -1,3 +0,0 @@
+ -//! Vertical math operations
+ -
+ -pub(crate) mod float;
+-diff --git a/third_party/rust/packed_simd/src/codegen/math/float.rs b/third_party/rust/packed_simd/src/codegen/math/float.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/math/float.rs
+ +++ /dev/null
+ @@ -1,19 +0,0 @@
+@@ -17308,8 +16198,6 @@
+ -pub(crate) mod sqrt;
+ -pub(crate) mod sqrte;
+ -pub(crate) mod tanh;
+-diff --git a/third_party/rust/packed_simd/src/codegen/math/float/abs.rs b/third_party/rust/packed_simd/src/codegen/math/float/abs.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/math/float/abs.rs
+ +++ /dev/null
+ @@ -1,103 +0,0 @@
+@@ -17416,8 +16304,6 @@
+ - impl_unary!(f64x8: fabs_v8f64);
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/math/float/cos.rs b/third_party/rust/packed_simd/src/codegen/math/float/cos.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/math/float/cos.rs
+ +++ /dev/null
+ @@ -1,103 +0,0 @@
+@@ -17524,8 +16410,6 @@
+ - impl_unary!(f64x8: cos_v8f64);
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/math/float/cos_pi.rs b/third_party/rust/packed_simd/src/codegen/math/float/cos_pi.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/math/float/cos_pi.rs
+ +++ /dev/null
+ @@ -1,87 +0,0 @@
+@@ -17616,8 +16500,6 @@
+ - impl_def64!(f64x8);
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/math/float/exp.rs b/third_party/rust/packed_simd/src/codegen/math/float/exp.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/math/float/exp.rs
+ +++ /dev/null
+ @@ -1,112 +0,0 @@
+@@ -17733,8 +16615,6 @@
+ - impl_unary!(f64x8: exp_v8f64);
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/math/float/ln.rs b/third_party/rust/packed_simd/src/codegen/math/float/ln.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/math/float/ln.rs
+ +++ /dev/null
+ @@ -1,112 +0,0 @@
+@@ -17850,8 +16730,6 @@
+ - impl_unary!(f64x8: ln_v8f64);
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/math/float/macros.rs b/third_party/rust/packed_simd/src/codegen/math/float/macros.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/math/float/macros.rs
+ +++ /dev/null
+ @@ -1,470 +0,0 @@
+@@ -18325,8 +17203,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/math/float/mul_add.rs b/third_party/rust/packed_simd/src/codegen/math/float/mul_add.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/math/float/mul_add.rs
+ +++ /dev/null
+ @@ -1,109 +0,0 @@
+@@ -18439,8 +17315,6 @@
+ - impl_tertiary!(f64x8: fma_v8f64);
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/math/float/mul_adde.rs b/third_party/rust/packed_simd/src/codegen/math/float/mul_adde.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/math/float/mul_adde.rs
+ +++ /dev/null
+ @@ -1,60 +0,0 @@
+@@ -18504,8 +17378,6 @@
+ -impl_mul_adde!(f64x2: fmuladd_v2f64);
+ -impl_mul_adde!(f64x4: fmuladd_v4f64);
+ -impl_mul_adde!(f64x8: fmuladd_v8f64);
+-diff --git a/third_party/rust/packed_simd/src/codegen/math/float/powf.rs b/third_party/rust/packed_simd/src/codegen/math/float/powf.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/math/float/powf.rs
+ +++ /dev/null
+ @@ -1,112 +0,0 @@
+@@ -18621,8 +17493,6 @@
+ - impl_binary!(f64x8: powf_v8f64);
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/math/float/sin.rs b/third_party/rust/packed_simd/src/codegen/math/float/sin.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/math/float/sin.rs
+ +++ /dev/null
+ @@ -1,103 +0,0 @@
+@@ -18729,8 +17599,6 @@
+ - impl_unary!(f64x8: sin_v8f64);
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/math/float/sin_cos_pi.rs b/third_party/rust/packed_simd/src/codegen/math/float/sin_cos_pi.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/math/float/sin_cos_pi.rs
+ +++ /dev/null
+ @@ -1,188 +0,0 @@
+@@ -18922,8 +17790,6 @@
+ - impl_def64!(f64x8);
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/math/float/sin_pi.rs b/third_party/rust/packed_simd/src/codegen/math/float/sin_pi.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/math/float/sin_pi.rs
+ +++ /dev/null
+ @@ -1,87 +0,0 @@
+@@ -19014,8 +17880,6 @@
+ - impl_def64!(f64x8);
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/math/float/sqrt.rs b/third_party/rust/packed_simd/src/codegen/math/float/sqrt.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/math/float/sqrt.rs
+ +++ /dev/null
+ @@ -1,103 +0,0 @@
+@@ -19122,8 +17986,6 @@
+ - impl_unary!(f64x8: sqrt_v8f64);
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/math/float/sqrte.rs b/third_party/rust/packed_simd/src/codegen/math/float/sqrte.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/math/float/sqrte.rs
+ +++ /dev/null
+ @@ -1,67 +0,0 @@
+@@ -19194,8 +18056,6 @@
+ - impl_unary!(f64x8[g]: simd_fsqrt);
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/math/float/tanh.rs b/third_party/rust/packed_simd/src/codegen/math/float/tanh.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/math/float/tanh.rs
+ +++ /dev/null
+ @@ -1,120 +0,0 @@
+@@ -19319,8 +18179,6 @@
+ - impl_unary!(f64x8: tanh_v8f64);
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/pointer_sized_int.rs b/third_party/rust/packed_simd/src/codegen/pointer_sized_int.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/pointer_sized_int.rs
+ +++ /dev/null
+ @@ -1,28 +0,0 @@
+@@ -19352,14 +18210,10 @@
+ - compile_error!("unsupported target_pointer_width");
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/reductions.rs b/third_party/rust/packed_simd/src/codegen/reductions.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/reductions.rs
+ +++ /dev/null
+-@@ -1,1 +0,0 @@
++@@ -1 +0,0 @@
+ -pub(crate) mod mask;
+-diff --git a/third_party/rust/packed_simd/src/codegen/reductions/mask.rs b/third_party/rust/packed_simd/src/codegen/reductions/mask.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/reductions/mask.rs
+ +++ /dev/null
+ @@ -1,69 +0,0 @@
+@@ -19432,8 +18286,6 @@
+ -impl_mask_reductions!(msizex2);
+ -impl_mask_reductions!(msizex4);
+ -impl_mask_reductions!(msizex8);
+-diff --git a/third_party/rust/packed_simd/src/codegen/reductions/mask/aarch64.rs b/third_party/rust/packed_simd/src/codegen/reductions/mask/aarch64.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/reductions/mask/aarch64.rs
+ +++ /dev/null
+ @@ -1,81 +0,0 @@
+@@ -19518,8 +18370,6 @@
+ - fallback_impl!($id);
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/reductions/mask/arm.rs b/third_party/rust/packed_simd/src/codegen/reductions/mask/arm.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/reductions/mask/arm.rs
+ +++ /dev/null
+ @@ -1,56 +0,0 @@
+@@ -19579,8 +18429,6 @@
+ - fallback_impl!($id);
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/reductions/mask/fallback.rs b/third_party/rust/packed_simd/src/codegen/reductions/mask/fallback.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/reductions/mask/fallback.rs
+ +++ /dev/null
+ @@ -1,8 +0,0 @@
+@@ -19592,8 +18440,6 @@
+ - fallback_impl!($id);
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/reductions/mask/fallback_impl.rs b/third_party/rust/packed_simd/src/codegen/reductions/mask/fallback_impl.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/reductions/mask/fallback_impl.rs
+ +++ /dev/null
+ @@ -1,237 +0,0 @@
+@@ -19834,8 +18680,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/reductions/mask/x86.rs b/third_party/rust/packed_simd/src/codegen/reductions/mask/x86.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/reductions/mask/x86.rs
+ +++ /dev/null
+ @@ -1,216 +0,0 @@
+@@ -20055,8 +18899,6 @@
+ - fallback_impl!($id);
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/avx.rs b/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/avx.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/avx.rs
+ +++ /dev/null
+ @@ -1,95 +0,0 @@
+@@ -20155,8 +18997,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/avx2.rs b/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/avx2.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/avx2.rs
+ +++ /dev/null
+ @@ -1,35 +0,0 @@
+@@ -20195,8 +19035,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse.rs b/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse.rs
+ +++ /dev/null
+ @@ -1,35 +0,0 @@
+@@ -20235,8 +19073,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse2.rs b/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse2.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse2.rs
+ +++ /dev/null
+ @@ -1,68 +0,0 @@
+@@ -20308,8 +19144,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/shuffle.rs b/third_party/rust/packed_simd/src/codegen/shuffle.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/shuffle.rs
+ +++ /dev/null
+ @@ -1,150 +0,0 @@
+@@ -20463,8 +19297,6 @@
+ -impl_shuffle! { [u32; 1], m128, crate::codegen::m128x1 }
+ -impl_shuffle! { [u32; 2], m128, crate::codegen::m128x2 }
+ -impl_shuffle! { [u32; 4], m128, crate::codegen::m128x4 }
+-diff --git a/third_party/rust/packed_simd/src/codegen/shuffle1_dyn.rs b/third_party/rust/packed_simd/src/codegen/shuffle1_dyn.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/shuffle1_dyn.rs
+ +++ /dev/null
+ @@ -1,408 +0,0 @@
+@@ -20876,8 +19708,6 @@
+ -impl_shuffle1_dyn_ptr!(mptrx2, usizex2);
+ -impl_shuffle1_dyn_ptr!(mptrx4, usizex4);
+ -impl_shuffle1_dyn_ptr!(mptrx8, usizex8);
+-diff --git a/third_party/rust/packed_simd/src/codegen/swap_bytes.rs b/third_party/rust/packed_simd/src/codegen/swap_bytes.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/swap_bytes.rs
+ +++ /dev/null
+ @@ -1,149 +0,0 @@
+@@ -21030,8 +19860,6 @@
+ - compile_error!("unsupported target_pointer_width");
+ - }
+ -}
+-diff --git a/third_party/rust/packed_simd/src/codegen/v128.rs b/third_party/rust/packed_simd/src/codegen/v128.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/v128.rs
+ +++ /dev/null
+ @@ -1,46 +0,0 @@
+@@ -21081,8 +19909,6 @@
+ -impl_simd_array!([i128; 1]: i128x1 | i128);
+ -impl_simd_array!([u128; 1]: u128x1 | u128);
+ -impl_simd_array!([m128; 1]: m128x1 | i128);
+-diff --git a/third_party/rust/packed_simd/src/codegen/v16.rs b/third_party/rust/packed_simd/src/codegen/v16.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/v16.rs
+ +++ /dev/null
+ @@ -1,7 +0,0 @@
+@@ -21093,8 +19919,6 @@
+ -impl_simd_array!([i8; 2]: i8x2 | i8, i8);
+ -impl_simd_array!([u8; 2]: u8x2 | u8, u8);
+ -impl_simd_array!([m8; 2]: m8x2 | i8, i8);
+-diff --git a/third_party/rust/packed_simd/src/codegen/v256.rs b/third_party/rust/packed_simd/src/codegen/v256.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/v256.rs
+ +++ /dev/null
+ @@ -1,78 +0,0 @@
+@@ -21176,8 +20000,6 @@
+ -impl_simd_array!([i128; 2]: i128x2 | i128, i128);
+ -impl_simd_array!([u128; 2]: u128x2 | u128, u128);
+ -impl_simd_array!([m128; 2]: m128x2 | i128, i128);
+-diff --git a/third_party/rust/packed_simd/src/codegen/v32.rs b/third_party/rust/packed_simd/src/codegen/v32.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/v32.rs
+ +++ /dev/null
+ @@ -1,11 +0,0 @@
+@@ -21192,8 +20014,6 @@
+ -impl_simd_array!([i16; 2]: i16x2 | i16, i16);
+ -impl_simd_array!([u16; 2]: u16x2 | u16, u16);
+ -impl_simd_array!([m16; 2]: m16x2 | i16, i16);
+-diff --git a/third_party/rust/packed_simd/src/codegen/v512.rs b/third_party/rust/packed_simd/src/codegen/v512.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/v512.rs
+ +++ /dev/null
+ @@ -1,145 +0,0 @@
+@@ -21342,8 +20162,6 @@
+ -impl_simd_array!([i128; 4]: i128x4 | i128, i128, i128, i128);
+ -impl_simd_array!([u128; 4]: u128x4 | u128, u128, u128, u128);
+ -impl_simd_array!([m128; 4]: m128x4 | i128, i128, i128, i128);
+-diff --git a/third_party/rust/packed_simd/src/codegen/v64.rs b/third_party/rust/packed_simd/src/codegen/v64.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/v64.rs
+ +++ /dev/null
+ @@ -1,21 +0,0 @@
+@@ -21368,8 +20186,6 @@
+ -impl_simd_array!([u64; 1]: u64x1 | u64);
+ -impl_simd_array!([f64; 1]: f64x1 | f64);
+ -impl_simd_array!([m64; 1]: m64x1 | i64);
+-diff --git a/third_party/rust/packed_simd/src/codegen/vPtr.rs b/third_party/rust/packed_simd/src/codegen/vPtr.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/vPtr.rs
+ +++ /dev/null
+ @@ -1,35 +0,0 @@
+@@ -21408,8 +20224,6 @@
+ -impl_simd_ptr!([*mut T; 2]: mptrx2 | T | T, T);
+ -impl_simd_ptr!([*mut T; 4]: mptrx4 | T | T, T, T, T);
+ -impl_simd_ptr!([*mut T; 8]: mptrx8 | T | T, T, T, T, T, T, T, T);
+-diff --git a/third_party/rust/packed_simd/src/codegen/vSize.rs b/third_party/rust/packed_simd/src/codegen/vSize.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/codegen/vSize.rs
+ +++ /dev/null
+ @@ -1,16 +0,0 @@
+@@ -21429,8 +20243,6 @@
+ -impl_simd_array!([isize; 8]: isizex8 | isize_, isize_, isize_, isize_, isize_, isize_, isize_, isize_);
+ -impl_simd_array!([usize; 8]: usizex8 | usize_, usize_, usize_, usize_, usize_, usize_, usize_, usize_);
+ -impl_simd_array!([msize; 8]: msizex8 | isize_, isize_, isize_, isize_, isize_, isize_, isize_, isize_);
+-diff --git a/third_party/rust/packed_simd/src/lib.rs b/third_party/rust/packed_simd/src/lib.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/lib.rs
+ +++ /dev/null
+ @@ -1,348 +0,0 @@
+@@ -21782,8 +20594,6 @@
+ -pub(crate) mod llvm {
+ - pub(crate) use crate::codegen::llvm::*;
+ -}
+-diff --git a/third_party/rust/packed_simd/src/masks.rs b/third_party/rust/packed_simd/src/masks.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/masks.rs
+ +++ /dev/null
+ @@ -1,126 +0,0 @@
+@@ -21913,8 +20723,6 @@
+ -);
+ -impl_mask_ty!(msize: isize | /// isize-wide mask.
+ -);
+-diff --git a/third_party/rust/packed_simd/src/sealed.rs b/third_party/rust/packed_simd/src/sealed.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/sealed.rs
+ +++ /dev/null
+ @@ -1,42 +0,0 @@
+@@ -21960,8 +20768,6 @@
+ -pub trait Mask: Seal {
+ - fn test(&self) -> bool;
+ -}
+-diff --git a/third_party/rust/packed_simd/src/testing.rs b/third_party/rust/packed_simd/src/testing.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/testing.rs
+ +++ /dev/null
+ @@ -1,8 +0,0 @@
+@@ -21973,8 +20779,6 @@
+ -#[cfg(test)]
+ -#[macro_use]
+ -pub(crate) mod utils;
+-diff --git a/third_party/rust/packed_simd/src/testing/macros.rs b/third_party/rust/packed_simd/src/testing/macros.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/testing/macros.rs
+ +++ /dev/null
+ @@ -1,44 +0,0 @@
+@@ -22022,8 +20826,6 @@
+ - &mut $anything
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/testing/utils.rs b/third_party/rust/packed_simd/src/testing/utils.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/testing/utils.rs
+ +++ /dev/null
+ @@ -1,130 +0,0 @@
+@@ -22157,8 +20959,6 @@
+ - }
+ - };
+ -}
+-diff --git a/third_party/rust/packed_simd/src/v128.rs b/third_party/rust/packed_simd/src/v128.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/v128.rs
+ +++ /dev/null
+ @@ -1,80 +0,0 @@
+@@ -22242,8 +21042,6 @@
+ - From: /*m8x1, m16x1, m32x1, m64x1 */ | // FIXME: unary small vector types
+ - /// A 128-bit vector mask with 1 `m128` lane.
+ -);
+-diff --git a/third_party/rust/packed_simd/src/v16.rs b/third_party/rust/packed_simd/src/v16.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/v16.rs
+ +++ /dev/null
+ @@ -1,16 +0,0 @@
+@@ -22263,8 +21061,6 @@
+ - From: m16x2, m32x2, m64x2, m128x2 |
+ - /// A 16-bit vector mask with 2 `m8` lanes.
+ -);
+-diff --git a/third_party/rust/packed_simd/src/v256.rs b/third_party/rust/packed_simd/src/v256.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/v256.rs
+ +++ /dev/null
+ @@ -1,86 +0,0 @@
+@@ -22354,8 +21150,6 @@
+ - From: m8x2, m16x2, m32x2, m64x2 |
+ - /// A 256-bit vector mask with 2 `m128` lanes.
+ -);
+-diff --git a/third_party/rust/packed_simd/src/v32.rs b/third_party/rust/packed_simd/src/v32.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/v32.rs
+ +++ /dev/null
+ @@ -1,29 +0,0 @@
+@@ -22388,8 +21182,6 @@
+ - From: m8x2, m32x2, m64x2, m128x2 |
+ - /// A 32-bit vector mask with 2 `m16` lanes.
+ -);
+-diff --git a/third_party/rust/packed_simd/src/v512.rs b/third_party/rust/packed_simd/src/v512.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/v512.rs
+ +++ /dev/null
+ @@ -1,99 +0,0 @@
+@@ -22492,8 +21284,6 @@
+ - From: m8x4, m16x4, m32x4, m64x4 |
+ - /// A 512-bit vector mask with 4 `m128` lanes.
+ -);
+-diff --git a/third_party/rust/packed_simd/src/v64.rs b/third_party/rust/packed_simd/src/v64.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/v64.rs
+ +++ /dev/null
+ @@ -1,66 +0,0 @@
+@@ -22563,8 +21353,6 @@
+ - /// A 64-bit vector with 1 `f64` lanes.
+ -);
+ -*/
+-diff --git a/third_party/rust/packed_simd/src/vPtr.rs b/third_party/rust/packed_simd/src/vPtr.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/vPtr.rs
+ +++ /dev/null
+ @@ -1,34 +0,0 @@
+@@ -22602,8 +21390,6 @@
+ - [*mut T; 8]: mptrx8, msizex8, usizex8, isizex8 | test_v512 | x0, x1, x2, x3, x4, x5, x6, x7 | From: |
+ - /// A vector with 8 `*mut T` lanes
+ -);
+-diff --git a/third_party/rust/packed_simd/src/vSize.rs b/third_party/rust/packed_simd/src/vSize.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/src/vSize.rs
+ +++ /dev/null
+ @@ -1,53 +0,0 @@
+@@ -22660,8 +21446,6 @@
+ - From: |
+ - /// A vector mask with 8 `msize` lanes.
+ -);
+-diff --git a/third_party/rust/packed_simd/tests/endianness.rs b/third_party/rust/packed_simd/tests/endianness.rs
+-deleted file mode 100644
+ --- a/third_party/rust/packed_simd/tests/endianness.rs
+ +++ /dev/null
+ @@ -1,268 +0,0 @@
+@@ -22933,4 +21717,467 @@
+ - assert_eq!(x.10 as i16, e[10]);
+ - assert_eq!(x.11 as i16, e[11]);
+ -}
+-
++--- /dev/null
+++++ b/third_party/rust/any_all_workaround/LICENSE-APACHE
++@@ -0,0 +1,201 @@
+++ Apache License
+++ Version 2.0, January 2004
+++ http://www.apache.org/licenses/
+++
+++TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+++
+++1. Definitions.
+++
+++ "License" shall mean the terms and conditions for use, reproduction,
+++ and distribution as defined by Sections 1 through 9 of this document.
+++
+++ "Licensor" shall mean the copyright owner or entity authorized by
+++ the copyright owner that is granting the License.
+++
+++ "Legal Entity" shall mean the union of the acting entity and all
+++ other entities that control, are controlled by, or are under common
+++ control with that entity. For the purposes of this definition,
+++ "control" means (i) the power, direct or indirect, to cause the
+++ direction or management of such entity, whether by contract or
+++ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+++ outstanding shares, or (iii) beneficial ownership of such entity.
+++
+++ "You" (or "Your") shall mean an individual or Legal Entity
+++ exercising permissions granted by this License.
+++
+++ "Source" form shall mean the preferred form for making modifications,
+++ including but not limited to software source code, documentation
+++ source, and configuration files.
+++
+++ "Object" form shall mean any form resulting from mechanical
+++ transformation or translation of a Source form, including but
+++ not limited to compiled object code, generated documentation,
+++ and conversions to other media types.
+++
+++ "Work" shall mean the work of authorship, whether in Source or
+++ Object form, made available under the License, as indicated by a
+++ copyright notice that is included in or attached to the work
+++ (an example is provided in the Appendix below).
+++
+++ "Derivative Works" shall mean any work, whether in Source or Object
+++ form, that is based on (or derived from) the Work and for which the
+++ editorial revisions, annotations, elaborations, or other modifications
+++ represent, as a whole, an original work of authorship. For the purposes
+++ of this License, Derivative Works shall not include works that remain
+++ separable from, or merely link (or bind by name) to the interfaces of,
+++ the Work and Derivative Works thereof.
+++
+++ "Contribution" shall mean any work of authorship, including
+++ the original version of the Work and any modifications or additions
+++ to that Work or Derivative Works thereof, that is intentionally
+++ submitted to Licensor for inclusion in the Work by the copyright owner
+++ or by an individual or Legal Entity authorized to submit on behalf of
+++ the copyright owner. For the purposes of this definition, "submitted"
+++ means any form of electronic, verbal, or written communication sent
+++ to the Licensor or its representatives, including but not limited to
+++ communication on electronic mailing lists, source code control systems,
+++ and issue tracking systems that are managed by, or on behalf of, the
+++ Licensor for the purpose of discussing and improving the Work, but
+++ excluding communication that is conspicuously marked or otherwise
+++ designated in writing by the copyright owner as "Not a Contribution."
+++
+++ "Contributor" shall mean Licensor and any individual or Legal Entity
+++ on behalf of whom a Contribution has been received by Licensor and
+++ subsequently incorporated within the Work.
+++
+++2. Grant of Copyright License. Subject to the terms and conditions of
+++ this License, each Contributor hereby grants to You a perpetual,
+++ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+++ copyright license to reproduce, prepare Derivative Works of,
+++ publicly display, publicly perform, sublicense, and distribute the
+++ Work and such Derivative Works in Source or Object form.
+++
+++3. Grant of Patent License. Subject to the terms and conditions of
+++ this License, each Contributor hereby grants to You a perpetual,
+++ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+++ (except as stated in this section) patent license to make, have made,
+++ use, offer to sell, sell, import, and otherwise transfer the Work,
+++ where such license applies only to those patent claims licensable
+++ by such Contributor that are necessarily infringed by their
+++ Contribution(s) alone or by combination of their Contribution(s)
+++ with the Work to which such Contribution(s) was submitted. If You
+++ institute patent litigation against any entity (including a
+++ cross-claim or counterclaim in a lawsuit) alleging that the Work
+++ or a Contribution incorporated within the Work constitutes direct
+++ or contributory patent infringement, then any patent licenses
+++ granted to You under this License for that Work shall terminate
+++ as of the date such litigation is filed.
+++
+++4. Redistribution. You may reproduce and distribute copies of the
+++ Work or Derivative Works thereof in any medium, with or without
+++ modifications, and in Source or Object form, provided that You
+++ meet the following conditions:
+++
+++ (a) You must give any other recipients of the Work or
+++ Derivative Works a copy of this License; and
+++
+++ (b) You must cause any modified files to carry prominent notices
+++ stating that You changed the files; and
+++
+++ (c) You must retain, in the Source form of any Derivative Works
+++ that You distribute, all copyright, patent, trademark, and
+++ attribution notices from the Source form of the Work,
+++ excluding those notices that do not pertain to any part of
+++ the Derivative Works; and
+++
+++ (d) If the Work includes a "NOTICE" text file as part of its
+++ distribution, then any Derivative Works that You distribute must
+++ include a readable copy of the attribution notices contained
+++ within such NOTICE file, excluding those notices that do not
+++ pertain to any part of the Derivative Works, in at least one
+++ of the following places: within a NOTICE text file distributed
+++ as part of the Derivative Works; within the Source form or
+++ documentation, if provided along with the Derivative Works; or,
+++ within a display generated by the Derivative Works, if and
+++ wherever such third-party notices normally appear. The contents
+++ of the NOTICE file are for informational purposes only and
+++ do not modify the License. You may add Your own attribution
+++ notices within Derivative Works that You distribute, alongside
+++ or as an addendum to the NOTICE text from the Work, provided
+++ that such additional attribution notices cannot be construed
+++ as modifying the License.
+++
+++ You may add Your own copyright statement to Your modifications and
+++ may provide additional or different license terms and conditions
+++ for use, reproduction, or distribution of Your modifications, or
+++ for any such Derivative Works as a whole, provided Your use,
+++ reproduction, and distribution of the Work otherwise complies with
+++ the conditions stated in this License.
+++
+++5. Submission of Contributions. Unless You explicitly state otherwise,
+++ any Contribution intentionally submitted for inclusion in the Work
+++ by You to the Licensor shall be under the terms and conditions of
+++ this License, without any additional terms or conditions.
+++ Notwithstanding the above, nothing herein shall supersede or modify
+++ the terms of any separate license agreement you may have executed
+++ with Licensor regarding such Contributions.
+++
+++6. Trademarks. This License does not grant permission to use the trade
+++ names, trademarks, service marks, or product names of the Licensor,
+++ except as required for reasonable and customary use in describing the
+++ origin of the Work and reproducing the content of the NOTICE file.
+++
+++7. Disclaimer of Warranty. Unless required by applicable law or
+++ agreed to in writing, Licensor provides the Work (and each
+++ Contributor provides its Contributions) on an "AS IS" BASIS,
+++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+++ implied, including, without limitation, any warranties or conditions
+++ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+++ PARTICULAR PURPOSE. You are solely responsible for determining the
+++ appropriateness of using or redistributing the Work and assume any
+++ risks associated with Your exercise of permissions under this License.
+++
+++8. Limitation of Liability. In no event and under no legal theory,
+++ whether in tort (including negligence), contract, or otherwise,
+++ unless required by applicable law (such as deliberate and grossly
+++ negligent acts) or agreed to in writing, shall any Contributor be
+++ liable to You for damages, including any direct, indirect, special,
+++ incidental, or consequential damages of any character arising as a
+++ result of this License or out of the use or inability to use the
+++ Work (including but not limited to damages for loss of goodwill,
+++ work stoppage, computer failure or malfunction, or any and all
+++ other commercial damages or losses), even if such Contributor
+++ has been advised of the possibility of such damages.
+++
+++9. Accepting Warranty or Additional Liability. While redistributing
+++ the Work or Derivative Works thereof, You may choose to offer,
+++ and charge a fee for, acceptance of support, warranty, indemnity,
+++ or other liability obligations and/or rights consistent with this
+++ License. However, in accepting such obligations, You may act only
+++ on Your own behalf and on Your sole responsibility, not on behalf
+++ of any other Contributor, and only if You agree to indemnify,
+++ defend, and hold each Contributor harmless for any liability
+++ incurred by, or claims asserted against, such Contributor by reason
+++ of your accepting any such warranty or additional liability.
+++
+++END OF TERMS AND CONDITIONS
+++
+++APPENDIX: How to apply the Apache License to your work.
+++
+++ To apply the Apache License to your work, attach the following
+++ boilerplate notice, with the fields enclosed by brackets "[]"
+++ replaced with your own identifying information. (Don't include
+++ the brackets!) The text should be enclosed in the appropriate
+++ comment syntax for the file format. We also recommend that a
+++ file or class name and description of purpose be included on the
+++ same "printed page" as the copyright notice for easier
+++ identification within third-party archives.
+++
+++Copyright [yyyy] [name of copyright owner]
+++
+++Licensed under the Apache License, Version 2.0 (the "License");
+++you may not use this file except in compliance with the License.
+++You may obtain a copy of the License at
+++
+++ http://www.apache.org/licenses/LICENSE-2.0
+++
+++Unless required by applicable law or agreed to in writing, software
+++distributed under the License is distributed on an "AS IS" BASIS,
+++WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+++See the License for the specific language governing permissions and
+++limitations under the License.
++--- /dev/null
+++++ b/third_party/rust/any_all_workaround/LICENSE-MIT
++@@ -0,0 +1,25 @@
+++Copyright (c) 2014 The Rust Project Developers
+++
+++Permission is hereby granted, free of charge, to any
+++person obtaining a copy of this software and associated
+++documentation files (the "Software"), to deal in the
+++Software without restriction, including without
+++limitation the rights to use, copy, modify, merge,
+++publish, distribute, sublicense, and/or sell copies of
+++the Software, and to permit persons to whom the Software
+++is furnished to do so, subject to the following
+++conditions:
+++
+++The above copyright notice and this permission notice
+++shall be included in all copies or substantial portions
+++of the Software.
+++
+++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+++ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+++TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+++PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+++SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+++CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+++OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+++IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+++DEALINGS IN THE SOFTWARE.
++--- a/third_party/rust/packed_simd/LICENSE-APACHE
+++++ /dev/null
++@@ -1,201 +0,0 @@
++- Apache License
++- Version 2.0, January 2004
++- http://www.apache.org/licenses/
++-
++-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
++-
++-1. Definitions.
++-
++- "License" shall mean the terms and conditions for use, reproduction,
++- and distribution as defined by Sections 1 through 9 of this document.
++-
++- "Licensor" shall mean the copyright owner or entity authorized by
++- the copyright owner that is granting the License.
++-
++- "Legal Entity" shall mean the union of the acting entity and all
++- other entities that control, are controlled by, or are under common
++- control with that entity. For the purposes of this definition,
++- "control" means (i) the power, direct or indirect, to cause the
++- direction or management of such entity, whether by contract or
++- otherwise, or (ii) ownership of fifty percent (50%) or more of the
++- outstanding shares, or (iii) beneficial ownership of such entity.
++-
++- "You" (or "Your") shall mean an individual or Legal Entity
++- exercising permissions granted by this License.
++-
++- "Source" form shall mean the preferred form for making modifications,
++- including but not limited to software source code, documentation
++- source, and configuration files.
++-
++- "Object" form shall mean any form resulting from mechanical
++- transformation or translation of a Source form, including but
++- not limited to compiled object code, generated documentation,
++- and conversions to other media types.
++-
++- "Work" shall mean the work of authorship, whether in Source or
++- Object form, made available under the License, as indicated by a
++- copyright notice that is included in or attached to the work
++- (an example is provided in the Appendix below).
++-
++- "Derivative Works" shall mean any work, whether in Source or Object
++- form, that is based on (or derived from) the Work and for which the
++- editorial revisions, annotations, elaborations, or other modifications
++- represent, as a whole, an original work of authorship. For the purposes
++- of this License, Derivative Works shall not include works that remain
++- separable from, or merely link (or bind by name) to the interfaces of,
++- the Work and Derivative Works thereof.
++-
++- "Contribution" shall mean any work of authorship, including
++- the original version of the Work and any modifications or additions
++- to that Work or Derivative Works thereof, that is intentionally
++- submitted to Licensor for inclusion in the Work by the copyright owner
++- or by an individual or Legal Entity authorized to submit on behalf of
++- the copyright owner. For the purposes of this definition, "submitted"
++- means any form of electronic, verbal, or written communication sent
++- to the Licensor or its representatives, including but not limited to
++- communication on electronic mailing lists, source code control systems,
++- and issue tracking systems that are managed by, or on behalf of, the
++- Licensor for the purpose of discussing and improving the Work, but
++- excluding communication that is conspicuously marked or otherwise
++- designated in writing by the copyright owner as "Not a Contribution."
++-
++- "Contributor" shall mean Licensor and any individual or Legal Entity
++- on behalf of whom a Contribution has been received by Licensor and
++- subsequently incorporated within the Work.
++-
++-2. Grant of Copyright License. Subject to the terms and conditions of
++- this License, each Contributor hereby grants to You a perpetual,
++- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
++- copyright license to reproduce, prepare Derivative Works of,
++- publicly display, publicly perform, sublicense, and distribute the
++- Work and such Derivative Works in Source or Object form.
++-
++-3. Grant of Patent License. Subject to the terms and conditions of
++- this License, each Contributor hereby grants to You a perpetual,
++- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
++- (except as stated in this section) patent license to make, have made,
++- use, offer to sell, sell, import, and otherwise transfer the Work,
++- where such license applies only to those patent claims licensable
++- by such Contributor that are necessarily infringed by their
++- Contribution(s) alone or by combination of their Contribution(s)
++- with the Work to which such Contribution(s) was submitted. If You
++- institute patent litigation against any entity (including a
++- cross-claim or counterclaim in a lawsuit) alleging that the Work
++- or a Contribution incorporated within the Work constitutes direct
++- or contributory patent infringement, then any patent licenses
++- granted to You under this License for that Work shall terminate
++- as of the date such litigation is filed.
++-
++-4. Redistribution. You may reproduce and distribute copies of the
++- Work or Derivative Works thereof in any medium, with or without
++- modifications, and in Source or Object form, provided that You
++- meet the following conditions:
++-
++- (a) You must give any other recipients of the Work or
++- Derivative Works a copy of this License; and
++-
++- (b) You must cause any modified files to carry prominent notices
++- stating that You changed the files; and
++-
++- (c) You must retain, in the Source form of any Derivative Works
++- that You distribute, all copyright, patent, trademark, and
++- attribution notices from the Source form of the Work,
++- excluding those notices that do not pertain to any part of
++- the Derivative Works; and
++-
++- (d) If the Work includes a "NOTICE" text file as part of its
++- distribution, then any Derivative Works that You distribute must
++- include a readable copy of the attribution notices contained
++- within such NOTICE file, excluding those notices that do not
++- pertain to any part of the Derivative Works, in at least one
++- of the following places: within a NOTICE text file distributed
++- as part of the Derivative Works; within the Source form or
++- documentation, if provided along with the Derivative Works; or,
++- within a display generated by the Derivative Works, if and
++- wherever such third-party notices normally appear. The contents
++- of the NOTICE file are for informational purposes only and
++- do not modify the License. You may add Your own attribution
++- notices within Derivative Works that You distribute, alongside
++- or as an addendum to the NOTICE text from the Work, provided
++- that such additional attribution notices cannot be construed
++- as modifying the License.
++-
++- You may add Your own copyright statement to Your modifications and
++- may provide additional or different license terms and conditions
++- for use, reproduction, or distribution of Your modifications, or
++- for any such Derivative Works as a whole, provided Your use,
++- reproduction, and distribution of the Work otherwise complies with
++- the conditions stated in this License.
++-
++-5. Submission of Contributions. Unless You explicitly state otherwise,
++- any Contribution intentionally submitted for inclusion in the Work
++- by You to the Licensor shall be under the terms and conditions of
++- this License, without any additional terms or conditions.
++- Notwithstanding the above, nothing herein shall supersede or modify
++- the terms of any separate license agreement you may have executed
++- with Licensor regarding such Contributions.
++-
++-6. Trademarks. This License does not grant permission to use the trade
++- names, trademarks, service marks, or product names of the Licensor,
++- except as required for reasonable and customary use in describing the
++- origin of the Work and reproducing the content of the NOTICE file.
++-
++-7. Disclaimer of Warranty. Unless required by applicable law or
++- agreed to in writing, Licensor provides the Work (and each
++- Contributor provides its Contributions) on an "AS IS" BASIS,
++- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
++- implied, including, without limitation, any warranties or conditions
++- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
++- PARTICULAR PURPOSE. You are solely responsible for determining the
++- appropriateness of using or redistributing the Work and assume any
++- risks associated with Your exercise of permissions under this License.
++-
++-8. Limitation of Liability. In no event and under no legal theory,
++- whether in tort (including negligence), contract, or otherwise,
++- unless required by applicable law (such as deliberate and grossly
++- negligent acts) or agreed to in writing, shall any Contributor be
++- liable to You for damages, including any direct, indirect, special,
++- incidental, or consequential damages of any character arising as a
++- result of this License or out of the use or inability to use the
++- Work (including but not limited to damages for loss of goodwill,
++- work stoppage, computer failure or malfunction, or any and all
++- other commercial damages or losses), even if such Contributor
++- has been advised of the possibility of such damages.
++-
++-9. Accepting Warranty or Additional Liability. While redistributing
++- the Work or Derivative Works thereof, You may choose to offer,
++- and charge a fee for, acceptance of support, warranty, indemnity,
++- or other liability obligations and/or rights consistent with this
++- License. However, in accepting such obligations, You may act only
++- on Your own behalf and on Your sole responsibility, not on behalf
++- of any other Contributor, and only if You agree to indemnify,
++- defend, and hold each Contributor harmless for any liability
++- incurred by, or claims asserted against, such Contributor by reason
++- of your accepting any such warranty or additional liability.
++-
++-END OF TERMS AND CONDITIONS
++-
++-APPENDIX: How to apply the Apache License to your work.
++-
++- To apply the Apache License to your work, attach the following
++- boilerplate notice, with the fields enclosed by brackets "[]"
++- replaced with your own identifying information. (Don't include
++- the brackets!) The text should be enclosed in the appropriate
++- comment syntax for the file format. We also recommend that a
++- file or class name and description of purpose be included on the
++- same "printed page" as the copyright notice for easier
++- identification within third-party archives.
++-
++-Copyright [yyyy] [name of copyright owner]
++-
++-Licensed under the Apache License, Version 2.0 (the "License");
++-you may not use this file except in compliance with the License.
++-You may obtain a copy of the License at
++-
++- http://www.apache.org/licenses/LICENSE-2.0
++-
++-Unless required by applicable law or agreed to in writing, software
++-distributed under the License is distributed on an "AS IS" BASIS,
++-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++-See the License for the specific language governing permissions and
++-limitations under the License.
++--- a/third_party/rust/packed_simd/LICENSE-MIT
+++++ /dev/null
++@@ -1,25 +0,0 @@
++-Copyright (c) 2014 The Rust Project Developers
++-
++-Permission is hereby granted, free of charge, to any
++-person obtaining a copy of this software and associated
++-documentation files (the "Software"), to deal in the
++-Software without restriction, including without
++-limitation the rights to use, copy, modify, merge,
++-publish, distribute, sublicense, and/or sell copies of
++-the Software, and to permit persons to whom the Software
++-is furnished to do so, subject to the following
++-conditions:
++-
++-The above copyright notice and this permission notice
++-shall be included in all copies or substantial portions
++-of the Software.
++-
++-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
++-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
++-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
++-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
++-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
++-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
++-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
++-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
++-DEALINGS IN THE SOFTWARE.
diff --git a/scripts/prep-librewolf-dpkg.conf b/scripts/prep-librewolf-dpkg.conf
index 0b82198..97e35b3 100644
--- a/scripts/prep-librewolf-dpkg.conf
+++ b/scripts/prep-librewolf-dpkg.conf
@@ -4,11 +4,11 @@
# Available options for DISTRO: debian
DISTRO=${DISTRO:-'debian'}
# current version of Firefox package in target distro
-distro_firefox_version=${distro_firefox_version:-'125.0.1-1'}
+distro_firefox_version=${distro_firefox_version:-'126.0-1'}
# current version of Firefox, as defined by name of the orig tarball.
-firefox_version=${firefox_version:-'125.0.1'}
+firefox_version=${firefox_version:-'126.0'}
# input git tag of source repo
-source_version=${source_version:-'125.0.1-1'}
+source_version=${source_version:-'126.0-1'}
settings_commit=${settings_commit:-'master'}
CI_PROJECT_DIR=${CI_PROJECT_DIR:-$(realpath $(dirname $0)/../)}
output_dir=${CI_PROJECT_DIR}/out
diff --git a/scripts/prep-librewolf-dpkg.sh b/scripts/prep-librewolf-dpkg.sh
index 0a7b496..dba3b95 100755
--- a/scripts/prep-librewolf-dpkg.sh
+++ b/scripts/prep-librewolf-dpkg.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# File: prep-librewolf-dpkg.sh
# Location: https://gitlab.com/bgstack15/librewolf-linux.git
-# Latest supported version: librewolf-125.0.1-1
+# Latest supported version: librewolf-126.0-1
# Author: bgstack15
# SPDX-License-Identifier: CC-BY-SA-4.0
# Startdate: 2020-11-29
@@ -46,6 +46,7 @@ git_source_dir=${CI_PROJECT_DIR}/git # where LibreWolf git contents are cached
debian_dir=${CI_PROJECT_DIR}/${firefox_version}/debian # where the firefox_debian.tar.xz file is extracted
source_dir=${CI_PROJECT_DIR}/${firefox_version}/librewolf_${firefox_version} # where firefox.orig.tar.xz file is extracted with --strip-components=1
work_dir=${CI_PROJECT_DIR}/prepared/
+scripts_dir="${CI_PROJECT_DIR}/scripts"
#####################################
# Download initial components
@@ -200,6 +201,8 @@ else
awk -F'/' '{print "librewolf/"$NF}' "${git_source_dir}"/source/assets/patches.txt | \
sed -r -e 's@$@ -p1@' -e '/vpn-ad/d' >> "${debian_dir}/patches/series"
#echo "librewolf/webrender_ffi.patch -p1" >> "${debian_dir}/patches/series"
+ # added 126.0 ; just defuzzing this patch
+ test -n "1" && patch -p1 "${debian_dir}/patches/librewolf/encoding_rs.patch" < "${scripts_dir}/126.0_defuzz-encoding_rs.patch"
# added 120.0.1; just defuzzing this patch
test -n "1" && patch -p1 "${debian_dir}/patches/librewolf/rust-gentoo-musl.patch" <<'EOF'
--- a/librewolf/rust-gentoo-musl.patch 2023-12-05 09:05:23.029244795 -0500
bgstack15