* config/i386/sse.md (sse4_2_pcmpestr): Use reg_not_xmm0_operand
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 Dec 2007 15:33:34 +0000 (15:33 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 Dec 2007 15:33:34 +0000 (15:33 +0000)
constraint for operand2.  Use nonimm_not_xmm0_operand constraint
for operand 4.  Update arguments in the call to
gen_sse4_2_pcmpestr_cconly.
(sse_4_2_pcmpestr_cconly): Renumber insn operands and update insn
template accordingly.
(sse4_2_pcmpistr): Use reg_not_xmm0_operand constraint for operand2.
Use nonimm_not_xmm0_operand constraint for operand 3.  Update
arguments in the call to gen_sse4_2_pcmpistr_cconly.
(sse_4_2_pcmpistr_cconly): Renumber insn operands and update insn

testsuite/ChangeLog:

* gcc.target/i386/sse-12.c (dg-options): Use -msse4
instead of -msse4.1.
* gcc.target/i386/sse-12.c (dg-options): Ditto.
* g++.dg/other/i386-2.C (dg-options): Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130934 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/sse.md
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/other/i386-2.C
gcc/testsuite/gcc.target/i386/sse-12.c
gcc/testsuite/gcc.target/i386/sse-13.c

index 8a742f9..b006b49 100644 (file)
@@ -1,3 +1,16 @@
+2007-12-14  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/sse.md (sse4_2_pcmpestr): Use reg_not_xmm0_operand
+       constraint for operand2.  Use nonimm_not_xmm0_operand constraint
+       for operand 4.  Update arguments in the call to
+       gen_sse4_2_pcmpestr_cconly.
+       (sse_4_2_pcmpestr_cconly): Renumber insn operands and update insn
+       template accordingly.
+       (sse4_2_pcmpistr): Use reg_not_xmm0_operand constraint for operand2.
+       Use nonimm_not_xmm0_operand constraint for operand 3.  Update
+       arguments in the call to gen_sse4_2_pcmpistr_cconly.
+       (sse_4_2_pcmpistr_cconly): Renumber insn operands and update insn
+
 2007-12-14  Richard Guenther  <rguenther@suse.de>
 
        PR middle-end/34462
index 9cf5555..12fb4a2 100644 (file)
 (define_insn_and_split "sse4_2_pcmpestr"
   [(set (match_operand:SI 0 "register_operand" "=c,c")
        (unspec:SI
-         [(match_operand:V16QI 2 "register_operand" "x,x")
+         [(match_operand:V16QI 2 "reg_not_xmm0_operand" "x,x")
           (match_operand:SI 3 "register_operand" "a,a")
-          (match_operand:V16QI 4 "nonimmediate_operand" "x,m")
+          (match_operand:V16QI 4 "nonimm_not_xmm0_operand" "x,m")
           (match_operand:SI 5 "register_operand" "d,d")
           (match_operand:SI 6 "const_0_to_255_operand" "n,n")]
          UNSPEC_PCMPESTR))
                                     operands[3], operands[4],
                                     operands[5], operands[6]));
   if (flags && !(ecx || xmm0))
-    emit_insn (gen_sse4_2_pcmpestr_cconly (operands[2], operands[3],
+    emit_insn (gen_sse4_2_pcmpestr_cconly (NULL, NULL,
+                                          operands[2], operands[3],
                                           operands[4], operands[5],
                                           operands[6]));
   DONE;
 (define_insn "sse4_2_pcmpestr_cconly"
   [(set (reg:CC FLAGS_REG)
        (unspec:CC
-         [(match_operand:V16QI 0 "register_operand" "x,x,x,x")
-          (match_operand:SI 1 "register_operand" "a,a,a,a")
-          (match_operand:V16QI 2 "nonimmediate_operand" "x,m,x,m")
-          (match_operand:SI 3 "register_operand" "d,d,d,d")
-          (match_operand:SI 4 "const_0_to_255_operand" "n,n,n,n")]
+         [(match_operand:V16QI 2 "register_operand" "x,x,x,x")
+          (match_operand:SI 3 "register_operand" "a,a,a,a")
+          (match_operand:V16QI 4 "nonimmediate_operand" "x,m,x,m")
+          (match_operand:SI 5 "register_operand" "d,d,d,d")
+          (match_operand:SI 6 "const_0_to_255_operand" "n,n,n,n")]
          UNSPEC_PCMPESTR))
-   (clobber (match_scratch:V16QI 5 "=Yz,Yz,X,X"))
-   (clobber (match_scratch:SI    6 "= X, X,c,c"))]
+   (clobber (match_scratch:V16QI 0 "=Yz,Yz,X,X"))
+   (clobber (match_scratch:SI    1 "= X, X,c,c"))]
   "TARGET_SSE4_2"
   "@
-   pcmpestrm\t{%4, %2, %0|%0, %2, %4}
-   pcmpestrm\t{%4, %2, %0|%0, %2, %4}
-   pcmpestri\t{%4, %2, %0|%0, %2, %4}
-   pcmpestri\t{%4, %2, %0|%0, %2, %4}"
+   pcmpestrm\t{%6, %4, %2|%2, %4, %6}
+   pcmpestrm\t{%6, %4, %2|%2, %4, %6}
+   pcmpestri\t{%6, %4, %2|%2, %4, %6}
+   pcmpestri\t{%6, %4, %2|%2, %4, %6}"
   [(set_attr "type" "sselog")
    (set_attr "prefix_data16" "1")
    (set_attr "prefix_extra" "1")
 (define_insn_and_split "sse4_2_pcmpistr"
   [(set (match_operand:SI 0 "register_operand" "=c,c")
        (unspec:SI
-         [(match_operand:V16QI 2 "register_operand" "x,x")
-          (match_operand:V16QI 3 "nonimmediate_operand" "x,m")
+         [(match_operand:V16QI 2 "reg_not_xmm0_operand" "x,x")
+          (match_operand:V16QI 3 "nonimm_not_xmm0_operand" "x,m")
           (match_operand:SI 4 "const_0_to_255_operand" "n,n")]
          UNSPEC_PCMPISTR))
    (set (match_operand:V16QI 1 "register_operand" "=Yz,Yz")
     emit_insn (gen_sse4_2_pcmpistrm (operands[1], operands[2],
                                     operands[3], operands[4]));
   if (flags && !(ecx || xmm0))
-    emit_insn (gen_sse4_2_pcmpistr_cconly (operands[2], operands[3],
+    emit_insn (gen_sse4_2_pcmpistr_cconly (NULL, NULL,
+                                          operands[2], operands[3],
                                           operands[4]));
   DONE;
 }
 (define_insn "sse4_2_pcmpistr_cconly"
   [(set (reg:CC FLAGS_REG)
        (unspec:CC
-         [(match_operand:V16QI 0 "register_operand" "x,x,x,x")
-          (match_operand:V16QI 1 "nonimmediate_operand" "x,m,x,m")
-          (match_operand:SI 2 "const_0_to_255_operand" "n,n,n,n")]
+         [(match_operand:V16QI 2 "register_operand" "x,x,x,x")
+          (match_operand:V16QI 3 "nonimmediate_operand" "x,m,x,m")
+          (match_operand:SI 4 "const_0_to_255_operand" "n,n,n,n")]
          UNSPEC_PCMPISTR))
-   (clobber (match_scratch:V16QI 3 "=Yz,Yz,X,X"))
-   (clobber (match_scratch:SI    4 "= X, X,c,c"))]
+   (clobber (match_scratch:V16QI 0 "=Yz,Yz,X,X"))
+   (clobber (match_scratch:SI    1 "= X, X,c,c"))]
   "TARGET_SSE4_2"
   "@
-   pcmpistrm\t{%2, %1, %0|%0, %1, %2}
-   pcmpistrm\t{%2, %1, %0|%0, %1, %2}
-   pcmpistri\t{%2, %1, %0|%0, %1, %2}
-   pcmpistri\t{%2, %1, %0|%0, %1, %2}"
+   pcmpistrm\t{%4, %3, %2|%2, %3, %4}
+   pcmpistrm\t{%4, %3, %2|%2, %3, %4}
+   pcmpistri\t{%4, %3, %2|%2, %3, %4}
+   pcmpistri\t{%4, %3, %2|%2, %3, %4}"
   [(set_attr "type" "sselog")
    (set_attr "prefix_data16" "1")
    (set_attr "prefix_extra" "1")
index faf00e1..c6ce8eb 100644 (file)
@@ -1,3 +1,10 @@
+2007-12-14  Uros Bizjak  <ubizjak@gmail.com>
+
+       * gcc.target/i386/sse-12.c (dg-options): Use -msse4
+       instead of -msse4.1.
+       * gcc.target/i386/sse-12.c (dg-options): Ditto.
+       * g++.dg/other/i386-2.C (dg-options): Ditto.
+
 2007-12-14  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/34438
index 0dc2799..e2131b0 100644 (file)
@@ -1,7 +1,7 @@
 /* Test that {,x,e,p,t,s,a,b}mmintrin.h, mm3dnow.h and mm_malloc.h are
    usable with -O -pedantic-errors.  */
 /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
-/* { dg-options "-O -pedantic-errors -march=k8 -m3dnow -msse4.1 -msse5" } */
+/* { dg-options "-O -pedantic-errors -march=k8 -m3dnow -msse4 -msse5" } */
 
 #include <bmmintrin.h>
 #include <smmintrin.h>
index d32b144..ef4dd6e 100644 (file)
@@ -1,7 +1,7 @@
 /* Test that {,x,e,p,t,s,a}mmintrin.h, mm3dnow.h and mm_malloc.h are
    usable with -O -std=c89 -pedantic-errors.  */
 /* { dg-do compile } */
-/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -m3dnow -msse4.1 -msse5" } */
+/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -m3dnow -msse4 -msse5" } */
 
 #include <bmmintrin.h>
 #include <smmintrin.h>
index e6dda69..05e9a9e 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -march=k8 -m3dnow -msse4.1 -msse5" } */
+/* { dg-options "-O2 -march=k8 -m3dnow -msse4 -msse5" } */
 
 /* Test that the intrinsics compile with optimization.  All of them are
    defined as inline functions in {,x,e,p,t,s,a,b}mmintrin.h and mm3dnow.h