From 3b6c5510689920ba5e69c1910aa4797a6875203d Mon Sep 17 00:00:00 2001 From: rth Date: Mon, 20 Dec 2004 11:48:42 +0000 Subject: [PATCH] * config/i386/i386.md (sse2_movsd): Remove ix86_binary_operator_ok check. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92416 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/i386.md | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b8876af..8e3f21c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-12-20 Richard Henderson + + * config/i386/i386.md (sse2_movsd): Remove ix86_binary_operator_ok + check. + 2004-12-20 Steven Bosscher Andrew Pinski diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index b575d42..37fe29b 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -23873,13 +23873,18 @@ [(set_attr "type" "ssecvt") (set_attr "mode" "DF")]) +;; ??? We ought to be using ix86_binary_operator_ok on this pattern, so +;; that we enforce the whole matching memory thing through combine et al. +;; But that requires that things be set up properly when invoked via an +;; intrinsic, which we don't do. Which leads to instantiate virtual regs +;; lossage, as seen compiling gcc.dg/i386-sse-2.c for x86_64 at -O0. (define_insn "sse2_movsd" [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,x,m") (vec_merge:V2DF (match_operand:V2DF 1 "nonimmediate_operand" "0,0,0") (match_operand:V2DF 2 "nonimmediate_operand" "x,m,x") (const_int 2)))] - "TARGET_SSE2 && ix86_binary_operator_ok (UNKNOWN, V2DFmode, operands)" + "TARGET_SSE2" "@movsd\t{%2, %0|%0, %2} movlpd\t{%2, %0|%0, %2} movlpd\t{%2, %0|%0, %2}" -- 2.7.4