Currently we gate a lot of p64 functions under aes, but I couldn't spot any pattern on when we add aes. We have aes in the following functions
vld1{q}_p64{_x2,_x3,_x4}
vld{1,2,3,4}{q}{,_dup, _lane}_p64
vmull{_high}_p64
vs{r,l}i{q}_n_p64
vst1{q}_p64
vst1{q}_p64_{x2,x3,x4}
vst{2,3,4}{_lane, q_lane,}_p64
vcreate_p64
vreinterpret_*_p{64,128}
vreinterpret_p{64,128}_*
vset{q}_lane_p64
whereas, the following functions, even though they have a p64 argument, don't have aes
vceq{z}{q}_p64
vcopy{q}_lane{q}_p64
vdup{q}_lane{q}_p64
vextq_p64
vldap1{q}_lane_p64
vtrn{1,2}q_p64,
vtst{q}_p64
vuzp{1,2}q_p64
vzip{1,2}q_p64
vadd{q}_p64
vget_{high,low}_p64
vget{q}_lane_p64
vreinterpret{q}_{f32,f64,s64,u64}_p64
The only reference of this in ACLE I could find was the fact that GCC gates all p64 functions and types under target ("fpu=crypto-neon-fp-armv8"), but afaik this does not translate to the Rust feature aes. I believe the closest would be the LLVM codegen feature crypto.
@rustbot ping arm
Currently we gate a lot of
p64functions underaes, but I couldn't spot any pattern on when we addaes. We haveaesin the following functionsvld1{q}_p64{_x2,_x3,_x4}vld{1,2,3,4}{q}{,_dup, _lane}_p64vmull{_high}_p64vs{r,l}i{q}_n_p64vst1{q}_p64vst1{q}_p64_{x2,x3,x4}vst{2,3,4}{_lane, q_lane,}_p64vcreate_p64vreinterpret_*_p{64,128}vreinterpret_p{64,128}_*vset{q}_lane_p64whereas, the following functions, even though they have a
p64argument, don't haveaesvceq{z}{q}_p64vcopy{q}_lane{q}_p64vdup{q}_lane{q}_p64vextq_p64vldap1{q}_lane_p64vtrn{1,2}q_p64,vtst{q}_p64vuzp{1,2}q_p64vzip{1,2}q_p64vadd{q}_p64vget_{high,low}_p64vget{q}_lane_p64vreinterpret{q}_{f32,f64,s64,u64}_p64The only reference of this in ACLE I could find was the fact that GCC gates all
p64functions and types undertarget ("fpu=crypto-neon-fp-armv8"), but afaik this does not translate to the Rust featureaes. I believe the closest would be the LLVM codegen featurecrypto.@rustbot ping arm