diff options
author | Haibo Huang <hhb@google.com> | 2020-08-21 23:11:43 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-08-21 23:11:43 +0000 |
commit | 6ac4a3d6245df1fb759aedeead8f15102e3ddf6f (patch) | |
tree | 4c4b2ec9fa9a5736190815f82398e9b4a3081883 | |
parent | a5cbe582b6ae928d60a15e3cb9b2a961cd607977 (diff) | |
parent | a894757227d6ebd5348fe80c6d9d082c89d4e3e3 (diff) | |
download | ppv-lite86-6ac4a3d6245df1fb759aedeead8f15102e3ddf6f.tar.gz |
Upgrade rust/crates/ppv-lite86 to 0.2.9 am: a894757227
Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/ppv-lite86/+/1405279
Change-Id: I1c3667e021ee32b7d137e966db1aacd6d460c425
-rw-r--r-- | .cargo_vcs_info.json | 2 | ||||
-rw-r--r-- | Cargo.toml | 2 | ||||
-rw-r--r-- | Cargo.toml.orig | 2 | ||||
-rw-r--r-- | METADATA | 12 | ||||
-rw-r--r-- | patches/std.diff | 14 | ||||
-rw-r--r-- | src/generic.rs | 28 |
6 files changed, 42 insertions, 18 deletions
diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json index dbd911b..0cd0fb1 100644 --- a/.cargo_vcs_info.json +++ b/.cargo_vcs_info.json @@ -1,5 +1,5 @@ { "git": { - "sha1": "5f35a9f923de2beb56ea3d376bd47e095fad277c" + "sha1": "99df5dba5fa2471d51f58e3691621e5cd22d464d" } } @@ -13,7 +13,7 @@ [package] edition = "2018" name = "ppv-lite86" -version = "0.2.8" +version = "0.2.9" authors = ["The CryptoCorrosion Contributors"] description = "Implementation of the crypto-simd API for x86" keywords = ["crypto", "simd", "x86"] diff --git a/Cargo.toml.orig b/Cargo.toml.orig index 008543e..84a59ad 100644 --- a/Cargo.toml.orig +++ b/Cargo.toml.orig @@ -1,6 +1,6 @@ [package] name = "ppv-lite86" -version = "0.2.8" +version = "0.2.9" authors = ["The CryptoCorrosion Contributors"] edition = "2018" license = "MIT/Apache-2.0" @@ -1,7 +1,5 @@ name: "ppv-lite86" -description: - "Implementation of the crypto-simd API for x86" - +description: "Implementation of the crypto-simd API for x86" third_party { url { type: HOMEPAGE @@ -11,7 +9,11 @@ third_party { type: GIT value: "https://github.com/cryptocorrosion/cryptocorrosion" } - version: "0.2.8" - last_upgrade_date { year: 2020 month: 6 day: 18 } + version: "0.2.9" license_type: NOTICE + last_upgrade_date { + year: 2020 + month: 8 + day: 21 + } } diff --git a/patches/std.diff b/patches/std.diff new file mode 100644 index 0000000..cdb5b08 --- /dev/null +++ b/patches/std.diff @@ -0,0 +1,14 @@ +Index: ppv-lite86/src/lib.rs +=================================================================== +--- ppv-lite86.orig/src/lib.rs ++++ ppv-lite86/src/lib.rs +@@ -5,6 +5,9 @@ + // Machine (which is a ZST + Copy type), which can only by created unsafely or safely + // through feature detection (e.g. fn AVX2::try_get() -> Option<Machine>). + ++// ANDROID: Use std to allow building as a dylib. ++extern crate std; ++ + mod soft; + mod types; + pub use self::types::*; diff --git a/src/generic.rs b/src/generic.rs index 4f4113f..d26266c 100644 --- a/src/generic.rs +++ b/src/generic.rs @@ -4,11 +4,11 @@ use core::ops::*; use crate::soft::{x2, x4}; use crate::types::*; +#[repr(C)] #[derive(Clone, Copy)] pub union vec128_storage { d: [u32; 4], q: [u64; 2], - o: [u128; 1], } impl From<[u32; 4]> for vec128_storage { #[inline] @@ -37,14 +37,14 @@ impl From<vec128_storage> for [u64; 2] { impl Default for vec128_storage { #[inline] fn default() -> Self { - Self { o: [0] } + Self { q: [0, 0] } } } impl Eq for vec128_storage {} impl PartialEq<vec128_storage> for vec128_storage { #[inline] fn eq(&self, rhs: &Self) -> bool { - unsafe { self.o == rhs.o } + unsafe { self.q == rhs.q } } } #[derive(Clone, Copy, PartialEq, Eq, Default)] @@ -151,14 +151,22 @@ where unsafe { T::unpack(q) } } +fn o_of_q(q: [u64; 2]) -> u128 { + u128::from(q[0]) | (u128::from(q[1]) << 64) +} + +fn q_of_o(o: u128) -> [u64; 2] { + [o as u64, (o >> 64) as u64] +} + fn omap<T, F>(a: T, f: F) -> T where T: Store<vec128_storage> + Into<vec128_storage>, F: Fn(u128) -> u128, { let a: vec128_storage = a.into(); - let ao = unsafe { a.o }; - let o = vec128_storage { o: [f(ao[0])] }; + let ao = o_of_q(unsafe { a.q }); + let o = vec128_storage { q: q_of_o(f(ao)) }; unsafe { T::unpack(o) } } @@ -169,10 +177,10 @@ where { let a: vec128_storage = a.into(); let b: vec128_storage = b.into(); - let ao = unsafe { a.o }; - let bo = unsafe { b.o }; + let ao = o_of_q(unsafe { a.q }); + let bo = o_of_q(unsafe { b.q }); let o = vec128_storage { - o: [f(ao[0], bo[0])], + q: q_of_o(f(ao, bo)), }; unsafe { T::unpack(o) } } @@ -456,7 +464,7 @@ impl From<u64x2_generic> for vec128_storage { impl From<u128x1_generic> for vec128_storage { #[inline(always)] fn from(o: u128x1_generic) -> Self { - Self { o: o.0 } + Self { q: q_of_o(o.0[0]) } } } @@ -475,7 +483,7 @@ impl Store<vec128_storage> for u64x2_generic { impl Store<vec128_storage> for u128x1_generic { #[inline(always)] unsafe fn unpack(s: vec128_storage) -> Self { - Self(s.o) + Self([o_of_q(s.q); 1]) } } |