This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Can't generate a 'movd' instructuction


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]