From: Uros Bizjak Date: Fri, 14 Dec 2007 15:33:34 +0000 (+0100) Subject: sse.md (sse4_2_pcmpestr): Use reg_not_xmm0_operand constraint for operand2. X-Git-Tag: releases/gcc-4.3.0~982 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=627eb745771b85751cbc9dd4ab842871cf22007f;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8a742f9253be..b006b495cc32 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2007-12-14 Uros Bizjak + + * 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 PR middle-end/34462 diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 9cf55554861d..12fb4a230c9c 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 faf00e1c51ad..c6ce8eb2f71f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2007-12-14 Uros Bizjak + + * 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 PR fortran/34438 diff --git a/gcc/testsuite/g++.dg/other/i386-2.C b/gcc/testsuite/g++.dg/other/i386-2.C index 0dc279998125..e2131b023aae 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 #include diff --git a/gcc/testsuite/gcc.target/i386/sse-12.c b/gcc/testsuite/gcc.target/i386/sse-12.c index d32b14469ba7..ef4dd6e84e02 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 #include diff --git a/gcc/testsuite/gcc.target/i386/sse-13.c b/gcc/testsuite/gcc.target/i386/sse-13.c index e6dda6904827..05e9a9eea24f 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