Hello, On ARM+Neon, the expansion of vld1q_dup_s64() and vld1q_dup_u64() builtins currently fails to load the second vector element.
Here is a small patch to address this problem: 2012-05-07 Christophe Lyon <christophe.l...@st.com> * gcc/config/arm/neon.md (neon_vld1_dup): Fix vld1q_dup_s64. Index: gcc/config/arm/neon.md =================================================================== --- gcc/config/arm/neon.md (revision 2659) +++ gcc/config/arm/neon.md (revision 2660) @@ -4203,7 +4203,7 @@ if (GET_MODE_NUNITS (<MODE>mode) > 2) return "vld1.<V_sz_elem>\t{%e0[], %f0[]}, %A1"; else - return "vld1.<V_sz_elem>\t%h0, %A1"; + return "vld1.<V_sz_elem>\t%e0, %A1 \;vmov\t%f0, %e0"; } [(set (attr "neon_type") (if_then_else (gt (const_string "<V_mode_nunits>") (const_string "1")) OK? Thanks, Christophe.