aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <uros@kss-loka.si>2005-01-18 07:17:55 +0100
committerUros Bizjak <uros@gcc.gnu.org>2005-01-18 07:17:55 +0100
commitd0405259e6be52fe612f8665fef12c4dbd2da0da (patch)
treef302051dced985ae3470c70aee8e0f50dcf9cd44 /gcc
parentf2fd382112219f61042c6521d4b288888d52f8bc (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/config/i386/mmx.md18
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