Can't generate a 'movd' instructuction

James HAUXWELL james.hauxwell@st.com
Fri Nov 26 07:52:00 GMT 2004


Hi,

I have a piece of code using mmx/sse intrinsics

    ta = __builtin_ia32_pmaddwd(ia, one);
    tb = (v2si)__builtin_ia32_psrlq((di)ta, 32);
    dest.__v = __builtin_ia32_paddd(ta, tb);
    satd = dest.__a[0];

At the phase where I move the bottom 32bits of the mmx register to a 
normal register I should be able to use a movd instruction (according to 
intel documentation), but what ever I do I can't generate one.  It is 
currently generating a movq to a memory loacation and then doing a 
shorter load from the same location.

should be something like.

    ta = __builtin_ia32_pmaddwd(ia, one);
    tb = (v2si)__builtin_ia32_psrlq((di)ta, 32);
    satd = (int)__builtin_ia32_paddd(ta, tb);

Is anyone familiar enough with intrinsics to know why this doesn't work?

Jim



More information about the Gcc-help mailing list