aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2007-12-14 16:33:34 +0100
committerUros Bizjak <uros@gcc.gnu.org>2007-12-14 16:33:34 +0100
commit627eb745771b85751cbc9dd4ab842871cf22007f (patch)
tree1cbb659d14030239590fd3f5210ba313304db51e /gcc
parent720522379c33e1054acc70d63382ae4bb65ae119 (diff)
downloadgcc-627eb745771b85751cbc9dd4ab842871cf22007f.zip
gcc-627eb745771b85751cbc9dd4ab842871cf22007f.tar.gz
gcc-627eb745771b85751cbc9dd4ab842871cf22007f.tar.bz2
sse.md (sse4_2_pcmpestr): Use reg_not_xmm0_operand constraint for operand2.
* 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 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. From-SVN: r130934
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog13
-rw-r--r--gcc/config/i386/sse.md54
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/g++.dg/other/i386-2.C2
-rw-r--r--gcc/testsuite/gcc.target/i386/sse-12.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/sse-13.c2
6 files changed, 51 insertions, 29 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8a742f9..b006b49 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 9cf5555..12fb4a2 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -7309,9 +7309,9 @@
(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))
@@ -7350,7 +7350,8 @@
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;
@@ -7414,20 +7415,20 @@
(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")
@@ -7437,8 +7438,8 @@
(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")
@@ -7470,7 +7471,8 @@
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;
}
@@ -7525,18 +7527,18 @@
(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")
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index faf00e1..c6ce8eb 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
diff --git a/gcc/testsuite/g++.dg/other/i386-2.C b/gcc/testsuite/g++.dg/other/i386-2.C
index 0dc2799..e2131b0 100644
--- a/gcc/testsuite/g++.dg/other/i386-2.C
+++ b/gcc/testsuite/g++.dg/other/i386-2.C
@@ -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>
diff --git a/gcc/testsuite/gcc.target/i386/sse-12.c b/gcc/testsuite/gcc.target/i386/sse-12.c
index d32b144..ef4dd6e 100644
--- a/gcc/testsuite/gcc.target/i386/sse-12.c
+++ b/gcc/testsuite/gcc.target/i386/sse-12.c
@@ -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>
diff --git a/gcc/testsuite/gcc.target/i386/sse-13.c b/gcc/testsuite/gcc.target/i386/sse-13.c
index e6dda69..05e9a9e 100644
--- a/gcc/testsuite/gcc.target/i386/sse-13.c
+++ b/gcc/testsuite/gcc.target/i386/sse-13.c
@@ -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