summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaibo Huang <hhb@google.com>2020-08-21 23:11:43 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-08-21 23:11:43 +0000
commit6ac4a3d6245df1fb759aedeead8f15102e3ddf6f (patch)
tree4c4b2ec9fa9a5736190815f82398e9b4a3081883
parenta5cbe582b6ae928d60a15e3cb9b2a961cd607977 (diff)
parenta894757227d6ebd5348fe80c6d9d082c89d4e3e3 (diff)
downloadppv-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.json2
-rw-r--r--Cargo.toml2
-rw-r--r--Cargo.toml.orig2
-rw-r--r--METADATA12
-rw-r--r--patches/std.diff14
-rw-r--r--src/generic.rs28
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"
}
}
diff --git a/Cargo.toml b/Cargo.toml
index 9a82142..6b87ae6 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -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"
diff --git a/METADATA b/METADATA
index cab335b..06bd08c 100644
--- a/METADATA
+++ b/METADATA
@@ -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])
}
}