diff options
author | Uros Bizjak <uros@kss-loka.si> | 2005-01-18 07:17:55 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2005-01-18 07:17:55 +0100 |
commit | d0405259e6be52fe612f8665fef12c4dbd2da0da (patch) | |
tree | f302051dced985ae3470c70aee8e0f50dcf9cd44 /gcc | |
parent | f2fd382112219f61042c6521d4b288888d52f8bc (diff) | |
download | gcc-d0405259e6be52fe612f8665fef12c4dbd2da0da.zip gcc-d0405259e6be52fe612f8665fef12c4dbd2da0da.tar.gz gcc-d0405259e6be52fe612f8665fef12c4dbd2da0da.tar.bz2 |
re PR target/19424 (Error: suffix or operands invalid for `movlps')
PR target/19424
* config/i386/mmx.md (*movv2sf_internal_rex64, *movv2sf_internal):
Add movaps alternative for xmm reg->reg move.
From-SVN: r93814
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/mmx.md | 18 |
2 files changed, 16 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b85f270..8e63550 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-01-18 Uros Bizjak <uros@kss-loka.si> + + PR target/19424 + * config/i386/mmx.md (*movv2sf_internal_rex64, *movv2sf_internal): + Add movaps alternative for xmm reg->reg move. + 2005-01-17 Jeff Law <law@redhat.com> * tree-ssa-dom.c (tree_ssa_dominator_optimize): Clear SSA_NAME_VALUE diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md index 2f710a4..ccee83d 100644 --- a/gcc/config/i386/mmx.md +++ b/gcc/config/i386/mmx.md @@ -121,9 +121,9 @@ (define_insn "*movv2sf_internal_rex64" [(set (match_operand:V2SF 0 "nonimmediate_operand" - "=rm,r,*y ,*y ,m ,*y,Y ,x,x ,m,r,x") + "=rm,r,*y ,*y ,m ,*y,Y ,x,x,x,m,r,x") (match_operand:V2SF 1 "vector_move_operand" - "Cr ,m ,C ,*ym,*y,Y ,*y,C,xm,x,x,r"))] + "Cr ,m ,C ,*ym,*y,Y ,*y,C,x,m,x,x,r"))] "TARGET_64BIT && TARGET_MMX && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)" "@ @@ -135,18 +135,19 @@ movdq2q\t{%1, %0|%0, %1} movq2dq\t{%1, %0|%0, %1} xorps\t%0, %0 + movaps\t{%1, %0|%0, %1} movlps\t{%1, %0|%0, %1} movlps\t{%1, %0|%0, %1} movd\t{%1, %0|%0, %1} movd\t{%1, %0|%0, %1}" - [(set_attr "type" "imov,imov,mmxmov,mmxmov,mmxmov,ssecvt,ssecvt,ssemov,ssemov,ssemov,ssemov,ssemov") - (set_attr "mode" "DI,DI,DI,DI,DI,DI,DI,V4SF,V2SF,V2SF,DI,DI")]) + [(set_attr "type" "imov,imov,mmxmov,mmxmov,mmxmov,ssecvt,ssecvt,ssemov,ssemov,ssemov,ssemov,ssemov,ssemov") + (set_attr "mode" "DI,DI,DI,DI,DI,DI,DI,V4SF,V4SF,V2SF,V2SF,DI,DI")]) (define_insn "*movv2sf_internal" [(set (match_operand:V2SF 0 "nonimmediate_operand" - "=*y,*y ,m,*y,*Y,*x,*x ,m ,?r ,?m") + "=*y,*y ,m,*y,*Y,*x,*x,*x,m ,?r ,?m") (match_operand:V2SF 1 "vector_move_operand" - "C ,*ym,*y,*Y,*y,C ,*xm,*x,irm,r"))] + "C ,*ym,*y,*Y,*y,C ,*x,m ,*x,irm,r"))] "TARGET_MMX && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)" "@ @@ -156,12 +157,13 @@ movdq2q\t{%1, %0|%0, %1} movq2dq\t{%1, %0|%0, %1} xorps\t%0, %0 + movaps\t{%1, %0|%0, %1} movlps\t{%1, %0|%0, %1} movlps\t{%1, %0|%0, %1} # #" - [(set_attr "type" "mmxmov,mmxmov,mmxmov,ssecvt,ssecvt,ssemov,ssemov,ssemov,*,*") - (set_attr "mode" "DI,DI,DI,DI,DI,V4SF,V2SF,V2SF,DI,DI")]) + [(set_attr "type" "mmxmov,mmxmov,mmxmov,ssecvt,ssecvt,ssemov,ssemov,ssemov,ssemov,*,*") + (set_attr "mode" "DI,DI,DI,DI,DI,V4SF,V4SF,V2SF,V2SF,DI,DI")]) ;; %%% This multiword shite has got to go. (define_split |