Skip to content

Add vmull_p64 and vmull_high_p64 for aarch64 #1157

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 15, 2021

Conversation

SparrowLii
Copy link
Member

@SparrowLii SparrowLii commented May 10, 2021

FIXES #1156
This PR serves as a supplement to #1147
Although vmull_p64 is temporarily unavailable on Arm32 due to the llvm‘s unsupporting, we can still make it available on aarch64.

@rust-highfive
Copy link

r? @Amanieu

(rust-highfive has picked a reviewer for you, use r? to override)

@LuoZijun
Copy link

Why they have different type signatures ?

stdarch:

pub type p64  = u64;
pub type p128 = u128;

pub unsafe fn vmull_p64(a: p64, b: p64) -> p128 {
     ...
}

AARCH64 Neon Intrinsics: https://developer.arm.com/architectures/instruction-sets/simd-isas/neon/intrinsics?search=vmull_p64

poly128_t  vmull_p64 (poly64_t a, poly64_t b)
poly128_t  vmull_high_p64 (poly64x2_t a, poly64x2_t b)

@SparrowLii
Copy link
Member Author

SparrowLii commented May 10, 2021

This is to be consistent with other primitive variables(u64, s64). float64_t will also be replaced with f64 in function signatures.
You can look at https://github.com/rust-lang/stdarch/blob/master/crates/stdarch-verify/src/lib.rs#L252 and https://github.com/rust-lang/stdarch/blob/master/crates/stdarch-verify/tests/arm.rs#L824. Both p64 and poly64_t are regarded as P64 type.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Why vmull_p64 was removed?
4 participants