Partially revert:
authorUros Bizjak <uros@gcc.gnu.org>
Thu, 28 Oct 2010 20:49:46 +0000 (22:49 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Thu, 28 Oct 2010 20:49:46 +0000 (22:49 +0200)
2010-10-28  Uros Bizjak  <ubizjak@gmail.com>

PR target/46153
* config/i386/sse.md (*avx_movhlps): Use ix86_binary_operator_ok
in insn predicate.
(sse_movhlps): Ditto.
(*avx_movlhps): Ditto.
(sse_movlhps): Ditto.
(*avx_loadhps): Ditto.
(sse_loadhps): Ditto.
(*avx_loadhpd): Ditto.
(sse_loadhpd): Ditto.
(*avx_storelps): Prevent both operands in memory.
(sse_storelps): Ditto.

From-SVN: r166047

gcc/ChangeLog
gcc/config/i386/sse.md

index 01c7b6a..9753886 100644 (file)
        (sse_loadlps_exp): Ditto.
        (sse2_loadhpd_exp): Ditto.
        (sse2_loadlpd_exp): Ditto.
-       (*avx_movhlps): Use ix86_binary_operator_ok in insn predicate.
-       (sse_movhlps): Ditto.
-       (*avx_movlhps): Ditto.
-       (sse_movlhps): Ditto.
-       (*avx_loadhps): Ditto.
-       (sse_loadhps): Ditto.
-       (*avx_loadhpd): Ditto.
-       (sse_loadhpd): Ditto.
-       (*avx_storelps): Prevent both operands in memory.
-       (sse_storelps): Ditto.
 
 2010-10-28  Andrew Stubbs  <ams@codesourcery.com>
 
index eefa745..c359aed 100644 (file)
                     (const_int 7)
                     (const_int 2)
                     (const_int 3)])))]
-  "TARGET_AVX && ix86_binary_operator_ok (UNKNOWN, V4SFmode, operands)"
+  "TARGET_AVX && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
   "@
    vmovhlps\t{%2, %1, %0|%0, %1, %2}
    vmovlps\t{%H2, %1, %0|%0, %1, %H2}
                     (const_int 7)
                     (const_int 2)
                     (const_int 3)])))]
-  "TARGET_SSE && ix86_binary_operator_ok (UNKNOWN, V4SFmode, operands)"
+  "TARGET_SSE && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
   "@
    movhlps\t{%2, %0|%0, %2}
    movlps\t{%H2, %0|%0, %H2}
            (match_operand:V4SF 1 "nonimmediate_operand" "x,x,0")
            (parallel [(const_int 0) (const_int 1)]))
          (match_operand:V2SF 2 "nonimmediate_operand" "m,x,x")))]
-  "TARGET_AVX && ix86_binary_operator_ok (UNKNOWN, V4SFmode, operands)"
+  "TARGET_AVX"
   "@
    vmovhps\t{%2, %1, %0|%0, %1, %2}
    vmovlhps\t{%2, %1, %0|%0, %1, %2}
            (match_operand:V4SF 1 "nonimmediate_operand" "0,0,0")
            (parallel [(const_int 0) (const_int 1)]))
          (match_operand:V2SF 2 "nonimmediate_operand" "m,x,x")))]
-  "TARGET_SSE && ix86_binary_operator_ok (UNKNOWN, V4SFmode, operands)"
+  "TARGET_SSE"
   "@
    movhps\t{%2, %0|%0, %2}
    movlhps\t{%2, %0|%0, %2}
        (vec_select:V2SF
          (match_operand:V4SF 1 "nonimmediate_operand" "x,x,m")
          (parallel [(const_int 0) (const_int 1)])))]
-  "TARGET_AVX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
+  "TARGET_AVX"
   "@
    vmovlps\t{%1, %0|%0, %1}
    vmovaps\t{%1, %0|%0, %1}
        (vec_select:V2SF
          (match_operand:V4SF 1 "nonimmediate_operand" "x,x,m")
          (parallel [(const_int 0) (const_int 1)])))]
-  "TARGET_SSE && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
+  "TARGET_SSE"
   "@
    movlps\t{%1, %0|%0, %1}
    movaps\t{%1, %0|%0, %1}
          (vec_select:V2SF
            (match_operand:V4SF 1 "nonimmediate_operand" "x,x,0")
            (parallel [(const_int 2) (const_int 3)]))))]
-  "TARGET_AVX && ix86_binary_operator_ok (UNKNOWN, V4SFmode, operands)"
+  "TARGET_AVX"
   "@
    shufps\t{$0xe4, %1, %2, %0|%0, %2, %1, 0xe4}
    vmovlps\t{%2, %1, %0|%0, %1, %2}
          (vec_select:V2SF
            (match_operand:V4SF 1 "nonimmediate_operand" "x,0,0")
            (parallel [(const_int 2) (const_int 3)]))))]
-  "TARGET_SSE && ix86_binary_operator_ok (UNKNOWN, V4SFmode, operands)"
+  "TARGET_SSE"
   "@
    shufps\t{$0xe4, %1, %0|%0, %1, 0xe4}
    movlps\t{%2, %0|%0, %2}
            (match_operand:V2DF 1 "nonimmediate_operand" " x,x,0,0,0")
            (parallel [(const_int 0)]))
          (match_operand:DF 2 "nonimmediate_operand"     " m,x,x,*f,r")))]
-  "TARGET_AVX && ix86_binary_operator_ok (UNKNOWN, V2DFmode, operands)"
+  "TARGET_AVX && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
   "@
    vmovhpd\t{%2, %1, %0|%0, %1, %2}
    vunpcklpd\t{%2, %1, %0|%0, %1, %2}
            (match_operand:V2DF 1 "nonimmediate_operand" " 0,0,x,0,0,0")
            (parallel [(const_int 0)]))
          (match_operand:DF 2 "nonimmediate_operand"     " m,x,0,x,*f,r")))]
-  "TARGET_SSE2 && ix86_binary_operator_ok (UNKNOWN, V2DFmode, operands)"
+  "TARGET_SSE2 && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
   "@
    movhpd\t{%2, %0|%0, %2}
    unpcklpd\t{%2, %0|%0, %2}