diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2007-12-14 16:33:34 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2007-12-14 16:33:34 +0100 |
commit | 627eb745771b85751cbc9dd4ab842871cf22007f (patch) | |
tree | 1cbb659d14030239590fd3f5210ba313304db51e /gcc | |
parent | 720522379c33e1054acc70d63382ae4bb65ae119 (diff) | |
download | gcc-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/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/config/i386/sse.md | 54 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/other/i386-2.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/sse-12.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/sse-13.c | 2 |
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 |