You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Apparently we need an extra version of the load/store intrinsics we delegate those intrinsics to with matching feature flags, see https://godbolt.org/z/WxozeEPav
The text was updated successfully, but these errors were encountered:
hkratz
changed the title
p64 intrinsics not properly inlined on arm
p64 load/store intrinsics not properly inlined on arm
Oct 25, 2021
It looks like this is because the Rust compiler doesn't support inlining a function labeled with some target_feature(enable = "foo") into another function labeled with another set of enabled features (unless all the features in foo are enabled in compiler flags).
Concretely, the problem is that you're trying to inline a function labeled neon,v7 within a function labeled neon,aes,v8. If I compile the first code with -C target-feature=+aes,+v7,+v8, then the intrinsic is inlined.
#[inline]// This doesn't apply to a function labeled with other features.#[target_feature(enable = "neon,v7")]pubunsafefnvld2_s64(a:*consti64) -> int64x1x2_t{
...}#[inline]#[target_feature(enable = "neon,aes,v8"))]pubunsafefnvld2_p64(a:*constp64) -> poly64x1x2_t{transmute(vld2_s64(transmute(a)))}#[target_feature(enable = "neon,aes,v8"))]#[inline(never)]pubunsafefnvld2_p64_testshim(ptr:*constp64) -> poly64x1x2_t{vld2_p64(ptr)}
The following tests fail the inlining check on arm (but pass on aarch64):
Apparently we need an extra version of the load/store intrinsics we delegate those intrinsics to with matching feature flags, see https://godbolt.org/z/WxozeEPav
The text was updated successfully, but these errors were encountered: