On Wed, May 04, 2011 at 12:02:17PM +0200, Uros Bizjak wrote: > Tested on x86_64-pc-linux-gnu, committed to mainline SVN. I will audit > movq usage in other release branches as well.
s/reqire/require/g > --- config/i386/i386.md (revision 173353) > +++ config/i386/i386.md (working copy) > @@ -2001,11 +2001,13 @@ > case TYPE_SSEMOV: > if (get_attr_mode (insn) == MODE_TI) > return "%vmovdqa\t{%1, %0|%0, %1}"; > + /* Handle broken assemblers that reqire movd instead of movq. */ > + if (GENERAL_REG_P (operands[0]) || GENERAL_REG_P (operands[1])) > + return "%vmovd\t{%1, %0|%0, %1}"; > return "%vmovq\t{%1, %0|%0, %1}"; > > case TYPE_MMXMOV: > - /* Moves from and into integer register is done using movd > - opcode with REX prefix. */ > + /* Handle broken assemblers that reqire movd instead of movq. */ > if (GENERAL_REG_P (operands[0]) || GENERAL_REG_P (operands[1])) > return "movd\t{%1, %0|%0, %1}"; > return "movq\t{%1, %0|%0, %1}"; > @@ -3018,7 +3020,8 @@ > > case 11: > case 12: > - return "%vmovd\t{%1, %0|%0, %1}"; > + /* Handle broken assemblers that reqire movd instead of movq. */ > + return "%vmovd\t{%1, %0|%0, %1}"; > > default: > gcc_unreachable(); Jakub