From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30824 invoked by alias); 20 Jun 2011 17:03:50 -0000 Received: (qmail 30807 invoked by uid 22791); 20 Jun 2011 17:03:45 -0000 X-SWARE-Spam-Status: No, hits=3.7 required=5.0 tests=AWL,BAYES_50,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RFC_ABUSE_POST,TW_AV,TW_CL,TW_SR,TW_VC,TW_VP,TW_VX,TW_ZJ X-Spam-Check-By: sourceware.org Received: from mail-vw0-f47.google.com (HELO mail-vw0-f47.google.com) (209.85.212.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 20 Jun 2011 17:03:24 +0000 Received: by vws2 with SMTP id 2so2155839vws.20 for ; Mon, 20 Jun 2011 10:03:23 -0700 (PDT) MIME-Version: 1.0 Received: by 10.52.113.68 with SMTP id iw4mr3324859vdb.274.1308589403566; Mon, 20 Jun 2011 10:03:23 -0700 (PDT) Received: by 10.52.188.229 with HTTP; Mon, 20 Jun 2011 10:03:23 -0700 (PDT) In-Reply-To: <20110617130110.GR17079@tyan-ft48-01.lab.bos.redhat.com> References: <20110615095406.GI17079@tyan-ft48-01.lab.bos.redhat.com> <20110616233114.GQ17079@tyan-ft48-01.lab.bos.redhat.com> <20110617130110.GR17079@tyan-ft48-01.lab.bos.redhat.com> Date: Mon, 20 Jun 2011 17:15:00 -0000 Message-ID: Subject: Re: [PATCH] Fix ICEs with out of range immediates in SSE*/AVX*/XOP* intrinsics (PR target/49411) From: Kirill Yukhin To: Jakub Jelinek Cc: Uros Bizjak , Quentin Neill , Sebastian Pop , "Fang, Changpeng" , gcc-patches@gcc.gnu.org Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-06/txt/msg01512.txt.bz2 Folks, I think that implementation of the patch is not as good. It introduces working with specific instructions in ix86_expand_multi_arg_builtin(), however before it was really generic. It operated only on abstract insns, only number/type of arguments was matter. But now there=92re INSN_CODE switches, gotos =85 Thanks, Kirill On Fri, Jun 17, 2011 at 5:01 PM, Jakub Jelinek wrote: > On Fri, Jun 17, 2011 at 01:31:14AM +0200, Jakub Jelinek wrote: >> Not here, those are handled by =A0ix86_expand_args_builtin >> instead of ix86_expand_multi_arg_builtin. =A0Furthermore, only >> CODE_FOR_vcvtps2ph and CODE_FOR_vcvtps2ph256 have CONST_INT argument. >> And I believe ix86_expand_args_builtin handles it fine, what's wrong >> is the actual predicates those insns use. > > Ok, had a deeper look into this and it seems there are other issues, > some of them even without test coverage regressed since 4.6. > Some problems result in ICEs, other fail to assemble. =A0Had to revert > the blendbits removal patch, because that removal results in out of > range immediates not to be reported as predicate failures, but instead > as ICEs. > > So here is an updated patch that adds test coverage. =A0Regtested > on x86_64-linux {-m32,-m64}, ok for trunk (and backport for 4.6)? > > There are still a couple of things I'm unsure about (not tested > by the testcases, compile fine): > #include > __m128i i1, i2, i3, i4; > __m128 a1, a2, a3, a4; > __m128d d1, d2, d3, d4; > __m256i l1, l2, l3, l4; > __m256 b1, b2, b3, b4; > __m256d e1, e2, e3, e4; > __m64 m1, m2, m3, m4; > int k1, k2, k3, k4; > float f1, f2, f3, f4; > void > foo (void) > { > =A0/* 8 bit imm only? =A0This compiles fine, but one ends up with > =A0 =A0 number modulo 256 in the insn. =A0To make it error out > =A0 =A0 const_0_to_255_operand would need to be used. =A0*/ > =A0e1 =3D _mm256_shuffle_pd (e2, e3, 256); > =A0b1 =3D _mm256_shuffle_ps (b2, b3, 256); > =A0i1 =3D _mm_shuffle_epi32 (i2, 256); > =A0i1 =3D _mm_shufflehi_epi16 (i2, 256); > =A0i1 =3D _mm_shufflelo_epi16 (i2, 256); > =A0d1 =3D _mm_shuffle_pd (d2, d3, 256); > =A0m1 =3D _mm_shuffle_pi16 (m2, 256); > =A0a1 =3D _mm_shuffle_ps (a2, a3, 256); > =A0/* What about these? =A0Similarly to the above, they result > =A0 =A0 in imm modulo 16 resp. imm modulo 4. =A0*/ > =A0e1 =3D _mm256_permute_pd (e2, 16); > =A0d1 =3D _mm_permute_pd (d2, 4); > } > > 2011-06-17 =A0Jakub Jelinek =A0 > > =A0 =A0 =A0 =A0PR target/49411 > =A0 =A0 =A0 =A0* config/i386/i386.c (ix86_expand_multi_arg_builtins): If > =A0 =A0 =A0 =A0last_arg_constant and last argument doesn't match its pred= icate, > =A0 =A0 =A0 =A0for xop_vpermil23 error out and for xop_rotl3 > =A0 =A0 =A0 =A0if it is CONST_INT, mask it, otherwise expand using rotl3. > =A0 =A0 =A0 =A0(ix86_expand_sse_pcmpestr, ix86_expand_sse_pcmpistr): Fix > =A0 =A0 =A0 =A0spelling of error message. > =A0 =A0 =A0 =A0* config/i386/sse.md (sse4a_extrqi, sse4a_insertqi, > =A0 =A0 =A0 =A0vcvtps2ph, *vcvtps2ph, *vcvtps2ph_store, vcvtps2ph256): Use > =A0 =A0 =A0 =A0const_0_to_255_operand instead of const_int_operand. > > =A0 =A0 =A0 =A0Revert: > =A0 =A0 =A0 =A02011-05-09 =A0Uros Bizjak =A0 > > =A0 =A0 =A0 =A0* config/i386/sse.md (blendbits): Remove mode attribute. > =A0 =A0 =A0 =A0(_blend): Use const_= int_operand > =A0 =A0 =A0 =A0instead of const_0_to__operand for operand 3 pr= edicate. > =A0 =A0 =A0 =A0Check integer value of operand 3 in insn constraint. > > =A0 =A0 =A0 =A0* gcc.target/i386/testimm-1.c: New test. > =A0 =A0 =A0 =A0* gcc.target/i386/testimm-2.c: New test. > =A0 =A0 =A0 =A0* gcc.target/i386/testimm-3.c: New test. > =A0 =A0 =A0 =A0* gcc.target/i386/testimm-4.c: New test. > =A0 =A0 =A0 =A0* gcc.target/i386/testimm-5.c: New test. > =A0 =A0 =A0 =A0* gcc.target/i386/testimm-6.c: New test. > =A0 =A0 =A0 =A0* gcc.target/i386/testimm-7.c: New test. > =A0 =A0 =A0 =A0* gcc.target/i386/testimm-8.c: New test. > =A0 =A0 =A0 =A0* gcc.target/i386/xop-vpermil2px-2.c: New test. > =A0 =A0 =A0 =A0* gcc.target/i386/xop-rotate1-int.c: New test. > =A0 =A0 =A0 =A0* gcc.target/i386/xop-rotate2-int.c: New test. > > --- gcc/config/i386/i386.c.jj =A0 2011-06-17 11:02:11.000000000 +0200 > +++ gcc/config/i386/i386.c =A0 =A0 =A02011-06-17 13:35:26.000000000 +0200 > @@ -25566,16 +25566,61 @@ ix86_expand_multi_arg_builtin (enum insn > =A0 =A0 =A0 int adjust =3D (comparison_p) ? 1 : 0; > =A0 =A0 =A0 enum machine_mode mode =3D insn_data[icode].operand[i+adjust+= 1].mode; > > - =A0 =A0 =A0if (last_arg_constant && i =3D=3D nargs-1) > + =A0 =A0 =A0if (last_arg_constant && i =3D=3D nargs - 1) > =A0 =A0 =A0 =A0{ > - =A0 =A0 =A0 =A0 if (!CONST_INT_P (op)) > + =A0 =A0 =A0 =A0 if (!insn_data[icode].operand[i + 1].predicate (op, mod= e)) > =A0 =A0 =A0 =A0 =A0 =A0{ > - =A0 =A0 =A0 =A0 =A0 =A0 error ("last argument must be an immediate"); > - =A0 =A0 =A0 =A0 =A0 =A0 return gen_reg_rtx (tmode); > + =A0 =A0 =A0 =A0 =A0 =A0 enum insn_code new_icode =3D icode; > + =A0 =A0 =A0 =A0 =A0 =A0 switch (icode) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 case CODE_FOR_xop_vpermil2v2df3: > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 case CODE_FOR_xop_vpermil2v4sf3: > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 case CODE_FOR_xop_vpermil2v4df3: > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 case CODE_FOR_xop_vpermil2v8sf3: > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 error ("the last argument must be a 2-b= it immediate"); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 return gen_reg_rtx (tmode); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 case CODE_FOR_xop_rotlv2di3: > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 new_icode =3D CODE_FOR_rotlv2di3; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 goto xop_rotl; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 case CODE_FOR_xop_rotlv4si3: > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 new_icode =3D CODE_FOR_rotlv4si3; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 goto xop_rotl; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 case CODE_FOR_xop_rotlv8hi3: > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 new_icode =3D CODE_FOR_rotlv8hi3; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 goto xop_rotl; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 case CODE_FOR_xop_rotlv16qi3: > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 new_icode =3D CODE_FOR_rotlv16qi3; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 xop_rotl: > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (CONST_INT_P (op)) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 int mask =3D GET_MODE_BITSIZE (= GET_MODE_INNER (tmode)) - 1; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 op =3D GEN_INT (INTVAL (op) & m= ask); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 gcc_checking_assert > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (insn_data[icode].operand[i= + 1].predicate (op, mode)); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 } > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 else > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 gcc_checking_assert > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (nargs =3D=3D 2 > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0&& insn_data[new_icode].= operand[0].mode =3D=3D tmode > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0&& insn_data[new_icode].= operand[1].mode =3D=3D tmode > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0&& insn_data[new_icode].= operand[2].mode =3D=3D mode > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0&& insn_data[new_icode].= operand[0].predicate > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =3D=3D insn_data[ic= ode].operand[0].predicate > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0&& insn_data[new_icode].= operand[1].predicate > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =3D=3D insn_data[ic= ode].operand[1].predicate); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 icode =3D new_icode; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 goto non_constant; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 } > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 break; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 default: > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 gcc_unreachable (); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 } > =A0 =A0 =A0 =A0 =A0 =A0} > =A0 =A0 =A0 =A0} > =A0 =A0 =A0 else > =A0 =A0 =A0 =A0{ > + =A0 =A0 =A0 non_constant: > =A0 =A0 =A0 =A0 =A0if (VECTOR_MODE_P (mode)) > =A0 =A0 =A0 =A0 =A0 =A0op =3D safe_vector_operand (op, mode); > > @@ -25900,7 +25945,7 @@ ix86_expand_sse_pcmpestr (const struct b > > =A0 if (!insn_data[d->icode].operand[6].predicate (op4, modeimm)) > =A0 =A0 { > - =A0 =A0 =A0error ("the fifth argument must be a 8-bit immediate"); > + =A0 =A0 =A0error ("the fifth argument must be an 8-bit immediate"); > =A0 =A0 =A0 return const0_rtx; > =A0 =A0 } > > @@ -25995,7 +26040,7 @@ ix86_expand_sse_pcmpistr (const struct b > > =A0 if (!insn_data[d->icode].operand[4].predicate (op2, modeimm)) > =A0 =A0 { > - =A0 =A0 =A0error ("the third argument must be a 8-bit immediate"); > + =A0 =A0 =A0error ("the third argument must be an 8-bit immediate"); > =A0 =A0 =A0 return const0_rtx; > =A0 =A0 } > > --- gcc/config/i386/sse.md.jj =A0 2011-06-17 11:02:11.000000000 +0200 > +++ gcc/config/i386/sse.md =A0 =A0 =A02011-06-17 14:14:09.000000000 +0200 > @@ -188,6 +188,10 @@ (define_mode_iterator AVX256MODE2P [V8SI > > =A0(define_mode_iterator FMAMODE [SF DF V4SF V2DF V8SF V4DF]) > > +;; Mapping of immediate bits for blend instructions > +(define_mode_attr blendbits > + =A0[(V8SF "255") (V4SF "15") (V4DF "15") (V2DF "3")]) > + > =A0;; Patterns whose name begins with "sse{,2,3}_" are invoked by intrins= ics. > > =A0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > @@ -7707,8 +7711,8 @@ (define_insn "sse4a_vmmovnt" > =A0(define_insn "sse4a_extrqi" > =A0 [(set (match_operand:V2DI 0 "register_operand" "=3Dx") > =A0 =A0 =A0 =A0 (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0= ") > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(match_operand 2 "const_int_= operand" "") > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(match_operand 3 "const_int_= operand" "")] > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(match_operand 2 "const_0_to= _255_operand" "") > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(match_operand 3 "const_0_to= _255_operand" "")] > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0UNSPEC_EXTRQI))] > =A0 "TARGET_SSE4A" > =A0 "extrq\t{%3, %2, %0|%0, %2, %3}" > @@ -7732,8 +7736,8 @@ (define_insn "sse4a_insertqi" > =A0 [(set (match_operand:V2DI 0 "register_operand" "=3Dx") > =A0 =A0 =A0 =A0 (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0= ") > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(match_operand:V2DI 2 "registe= r_operand" "x") > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(match_operand 3 "const_int_= operand" "") > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(match_operand 4 "const_int_= operand" "")] > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(match_operand 3 "const_0_to= _255_operand" "") > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(match_operand 4 "const_0_to= _255_operand" "")] > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0UNSPEC_INSERTQI))] > =A0 "TARGET_SSE4A" > =A0 "insertq\t{%4, %3, %2, %0|%0, %2, %3, %4}" > @@ -7766,9 +7770,8 @@ (define_insn "_blend =A0 =A0 =A0 =A0(vec_merge:VF > =A0 =A0 =A0 =A0 =A0(match_operand:VF 2 "nonimmediate_operand" "xm,xm") > =A0 =A0 =A0 =A0 =A0(match_operand:VF 1 "register_operand" "0,x") > - =A0 =A0 =A0 =A0 (match_operand:SI 3 "const_int_operand" "")))] > - =A0"TARGET_SSE4_1 > - =A0 && IN_RANGE (INTVAL (operands[3]), 0, (1 << GET_MODE_NUNITS (= mode))-1)" > + =A0 =A0 =A0 =A0 (match_operand:SI 3 "const_0_to__operand" ""= )))] > + =A0"TARGET_SSE4_1" > =A0 "@ > =A0 =A0blend\t{%3, %2, %0|%0, %2, %3} > =A0 =A0vblend\t{%3, %2, %1, %0|%0, %1, %2, %3}" > @@ -10327,7 +10330,7 @@ (define_expand "vcvtps2ph" > =A0 [(set (match_operand:V8HI 0 "register_operand" "") > =A0 =A0 =A0 =A0(vec_concat:V8HI > =A0 =A0 =A0 =A0 =A0(unspec:V4HI [(match_operand:V4SF 1 "register_operand"= "") > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (match_operand:SI 2 "immedi= ate_operand" "")] > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (match_operand:SI 2 "const_= 0_to_255_operand" "")] > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 UNSPEC_VCVTPS2PH) > =A0 =A0 =A0 =A0 =A0(match_dup 3)))] > =A0 "TARGET_F16C" > @@ -10337,7 +10340,7 @@ (define_insn "*vcvtps2ph" > =A0 [(set (match_operand:V8HI 0 "register_operand" "=3Dx") > =A0 =A0 =A0 =A0(vec_concat:V8HI > =A0 =A0 =A0 =A0 =A0(unspec:V4HI [(match_operand:V4SF 1 "register_operand"= "x") > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (match_operand:SI 2 "immedi= ate_operand" "N")] > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (match_operand:SI 2 "const_= 0_to_255_operand" "N")] > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 UNSPEC_VCVTPS2PH) > =A0 =A0 =A0 =A0 =A0(match_operand:V4HI 3 "const0_operand" "")))] > =A0 "TARGET_F16C" > @@ -10349,7 +10352,7 @@ (define_insn "*vcvtps2ph" > =A0(define_insn "*vcvtps2ph_store" > =A0 [(set (match_operand:V4HI 0 "memory_operand" "=3Dm") > =A0 =A0 =A0 =A0(unspec:V4HI [(match_operand:V4SF 1 "register_operand" "x") > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (match_operand:SI 2 "immediate_= operand" "N")] > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (match_operand:SI 2 "const_0_to= _255_operand" "N")] > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 UNSPEC_VCVTPS2PH))] > =A0 "TARGET_F16C" > =A0 "vcvtps2ph\t{%2, %1, %0|%0, %1, %2}" > @@ -10360,7 +10363,7 @@ (define_insn "*vcvtps2ph_store" > =A0(define_insn "vcvtps2ph256" > =A0 [(set (match_operand:V8HI 0 "nonimmediate_operand" "=3Dxm") > =A0 =A0 =A0 =A0(unspec:V8HI [(match_operand:V8SF 1 "register_operand" "x") > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (match_operand:SI 2 "immediate_= operand" "N")] > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (match_operand:SI 2 "const_0_to= _255_operand" "N")] > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 UNSPEC_VCVTPS2PH))] > =A0 "TARGET_F16C" > =A0 "vcvtps2ph\t{%2, %1, %0|%0, %1, %2}" > --- gcc/testsuite/gcc.target/i386/testimm-1.c.jj =A0 =A0 =A0 =A02011-06-1= 7 13:37:44.000000000 +0200 > +++ gcc/testsuite/gcc.target/i386/testimm-1.c =A0 2011-06-17 14:01:34.000= 000000 +0200 > @@ -0,0 +1,94 @@ > +/* PR target/49411 */ > +/* { dg-do compile } */ > +/* { dg-options "-O0 -mf16c -maes -mpclmul" } */ > + > +#include > + > +__m128i i1, i2, i3, i4; > +__m128 a1, a2, a3, a4; > +__m128d d1, d2, d3, d4; > +__m256i l1, l2, l3, l4; > +__m256 b1, b2, b3, b4; > +__m256d e1, e2, e3, e4; > +__m64 m1, m2, m3, m4; > +int k1, k2, k3, k4; > +float f1, f2, f3, f4; > + > +void > +test8bit (void) > +{ > + =A0i1 =3D _mm_cmpistrm (i2, i3, 256); =A0 =A0 =A0 /* { dg-error "the th= ird argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistri (i2, i3, 256); =A0 =A0 =A0 /* { dg-error "the th= ird argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistra (i2, i3, 256); =A0 =A0 =A0 /* { dg-error "the th= ird argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistrc (i2, i3, 256); =A0 =A0 =A0 /* { dg-error "the th= ird argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistro (i2, i3, 256); =A0 =A0 =A0 /* { dg-error "the th= ird argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistrs (i2, i3, 256); =A0 =A0 =A0 /* { dg-error "the th= ird argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistrz (i2, i3, 256); =A0 =A0 =A0 /* { dg-error "the th= ird argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_cmpestrm (i2, k2, i3, k3, 256);/* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestri (i2, k2, i3, k3, 256);/* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestra (i2, k2, i3, k3, 256);/* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestrc (i2, k2, i3, k3, 256);/* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestro (i2, k2, i3, k3, 256);/* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestrs (i2, k2, i3, k3, 256);/* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestrz (i2, k2, i3, k3, 256);/* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0b1 =3D _mm256_blend_ps (b2, b3, 256); =A0 =A0/* { dg-error "the last= argument must be an 8-bit immediate" } */ > + =A0k1 =3D _cvtss_sh (f1, 256); =A0 =A0 =A0 =A0 =A0 =A0 =A0/* { dg-error= "the last argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm256_cvtps_ph (b2, 256); =A0 =A0 =A0 =A0/* { dg-error "the = last argument must be an 8-bit immediate" } */ > + =A0b1 =3D _mm256_dp_ps (b2, b3, 256); =A0 =A0 =A0 /* { dg-error "the la= st argument must be an 8-bit immediate" } */ > + =A0e1 =3D _mm256_permute2f128_pd (e2, e3, 256);/* { dg-error "the last = argument must be an 8-bit immediate" } */ > + =A0b1 =3D _mm256_permute2f128_ps (b2, b3, 256);/* { dg-error "the last = argument must be an 8-bit immediate" } */ > + =A0l1 =3D _mm256_permute2f128_si256 (l2, l3, 256);/* { dg-error "the la= st argument must be an 8-bit immediate" } */ > + =A0b1 =3D _mm256_permute_ps (b2, 256); =A0 =A0 =A0/* { dg-error "the la= st argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_aeskeygenassist_si128 (i2, 256);/* { dg-error "the last a= rgument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_blend_epi16 (i2, i3, 256); =A0 =A0/* { dg-error "the last= argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_clmulepi64_si128 (i2, i3, 256);/* { dg-error "the last ar= gument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_cvtps_ph (a1, 256); =A0 =A0 =A0 =A0 =A0 /* { dg-error "th= e last argument must be an 8-bit immediate" } */ > + =A0d1 =3D _mm_dp_pd (d2, d3, 256); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be an 8-bit immediate" } */ > + =A0a1 =3D _mm_dp_ps (a2, a3, 256); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be an 8-bit immediate" } */ > + =A0a1 =3D _mm_insert_ps (a2, a3, 256); =A0 =A0 =A0/* { dg-error "the la= st argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_mpsadbw_epu8 (i2, i3, 256); =A0 /* { dg-error "the last a= rgument must be an 8-bit immediate" } */ > + =A0a1 =3D _mm_permute_ps (a2, 256); =A0 =A0 =A0 =A0 /* { dg-error "the = last argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_slli_si128 (i2, 256); =A0 =A0 =A0 =A0 /* { dg-error "the = last argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_srli_si128 (i2, 256); =A0 =A0 =A0 =A0 /* { dg-error "the = last argument must be an 8-bit immediate" } */ > +} > + > +void > +test5bit (void) > +{ > + =A0d1 =3D _mm_cmp_sd (d2, d3, 32); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be a 5-bit immediate" } */ > + =A0a1 =3D _mm_cmp_ss (a2, a3, 32); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be a 5-bit immediate" } */ > + =A0d1 =3D _mm_cmp_pd (d2, d3, 32); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be a 5-bit immediate" } */ > + =A0a1 =3D _mm_cmp_ps (a2, a3, 32); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be a 5-bit immediate" } */ > + =A0e1 =3D _mm256_cmp_pd (e2, e3, 32); =A0 =A0 =A0 /* { dg-error "the la= st argument must be a 5-bit immediate" } */ > + =A0b1 =3D _mm256_cmp_ps (b2, b3, 32); =A0 =A0 =A0 /* { dg-error "the la= st argument must be a 5-bit immediate" } */ > +} > + > +void > +test4bit (void) > +{ > + =A0d1 =3D _mm_round_pd (d2, 16); =A0 =A0 =A0 =A0 =A0 =A0/* { dg-error "= the last argument must be a 4-bit immediate" } */ > + =A0d1 =3D _mm_round_sd (d2, d3, 16); =A0 =A0 =A0 =A0/* { dg-error "the = last argument must be a 4-bit immediate" } */ > + =A0a1 =3D _mm_round_ps (a2, 16); =A0 =A0 =A0 =A0 =A0 =A0/* { dg-error "= the last argument must be a 4-bit immediate" } */ > + =A0a1 =3D _mm_round_ss (a2, a2, 16); =A0 =A0 =A0 =A0/* { dg-error "the = last argument must be a 4-bit immediate" } */ > + =A0a1 =3D _mm_blend_ps (a2, a3, 16); =A0 =A0 =A0 =A0/* { dg-error "the = last argument must be a 4-bit immediate" } */ > + =A0e1 =3D _mm256_blend_pd (e2, e3, 16); =A0 =A0 /* { dg-error "the last= argument must be a 4-bit immediate" } */ > + =A0e1 =3D _mm256_round_pd (e2, 16); =A0 =A0 =A0 =A0 /* { dg-error "the = last argument must be a 4-bit immediate" } */ > + =A0b1 =3D _mm256_round_ps (b2, 16); =A0 =A0 =A0 =A0 /* { dg-error "the = last argument must be a 4-bit immediate" } */ > +} > + > +void > +test2bit (void) > +{ > + =A0d1 =3D _mm_blend_pd (d2, d3, 4); =A0 =A0 =A0 =A0 /* { dg-error "the = last argument must be a 2-bit immediate" } */ > +} > + > +void > +test1bit (void) > +{ > + =A0d1 =3D _mm256_extractf128_pd (e2, 2); =A0 =A0/* { dg-error "the last= argument must be a 1-bit immediate" } */ > + =A0a1 =3D _mm256_extractf128_ps (b2, 2); =A0 =A0/* { dg-error "the last= argument must be a 1-bit immediate" } */ > + =A0i1 =3D _mm256_extractf128_si256 (l2, 2); =A0/* { dg-error "the last = argument must be a 1-bit immediate" } */ > + =A0e1 =3D _mm256_insertf128_pd (e2, d1, 2); =A0/* { dg-error "the last = argument must be a 1-bit immediate" } */ > + =A0b1 =3D _mm256_insertf128_ps (b2, a1, 2); =A0/* { dg-error "the last = argument must be a 1-bit immediate" } */ > + =A0l1 =3D _mm256_insertf128_si256 (l2, i1, 2);/* { dg-error "the last a= rgument must be a 1-bit immediate" } */ > +} > --- gcc/testsuite/gcc.target/i386/testimm-2.c.jj =A0 =A0 =A0 =A02011-06-1= 7 13:37:52.000000000 +0200 > +++ gcc/testsuite/gcc.target/i386/testimm-2.c =A0 2011-06-17 14:01:38.000= 000000 +0200 > @@ -0,0 +1,94 @@ > +/* PR target/49411 */ > +/* { dg-do compile } */ > +/* { dg-options "-O0 -mf16c -maes -mpclmul" } */ > + > +#include > + > +__m128i i1, i2, i3, i4; > +__m128 a1, a2, a3, a4; > +__m128d d1, d2, d3, d4; > +__m256i l1, l2, l3, l4; > +__m256 b1, b2, b3, b4; > +__m256d e1, e2, e3, e4; > +__m64 m1, m2, m3, m4; > +int k1, k2, k3, k4; > +float f1, f2, f3, f4; > + > +void > +test8bit (void) > +{ > + =A0i1 =3D _mm_cmpistrm (i2, i3, -10); =A0 =A0 =A0 /* { dg-error "the th= ird argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistri (i2, i3, -10); =A0 =A0 =A0 /* { dg-error "the th= ird argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistra (i2, i3, -10); =A0 =A0 =A0 /* { dg-error "the th= ird argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistrc (i2, i3, -10); =A0 =A0 =A0 /* { dg-error "the th= ird argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistro (i2, i3, -10); =A0 =A0 =A0 /* { dg-error "the th= ird argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistrs (i2, i3, -10); =A0 =A0 =A0 /* { dg-error "the th= ird argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistrz (i2, i3, -10); =A0 =A0 =A0 /* { dg-error "the th= ird argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_cmpestrm (i2, k2, i3, k3, -10);/* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestri (i2, k2, i3, k3, -10);/* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestra (i2, k2, i3, k3, -10);/* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestrc (i2, k2, i3, k3, -10);/* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestro (i2, k2, i3, k3, -10);/* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestrs (i2, k2, i3, k3, -10);/* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestrz (i2, k2, i3, k3, -10);/* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0b1 =3D _mm256_blend_ps (b2, b3, -10); =A0 =A0/* { dg-error "the last= argument must be an 8-bit immediate" } */ > + =A0k1 =3D _cvtss_sh (f1, -10); =A0 =A0 =A0 =A0 =A0 =A0 =A0/* { dg-error= "the last argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm256_cvtps_ph (b2, -10); =A0 =A0 =A0 =A0/* { dg-error "the = last argument must be an 8-bit immediate" } */ > + =A0b1 =3D _mm256_dp_ps (b2, b3, -10); =A0 =A0 =A0 /* { dg-error "the la= st argument must be an 8-bit immediate" } */ > + =A0e1 =3D _mm256_permute2f128_pd (e2, e3, -10);/* { dg-error "the last = argument must be an 8-bit immediate" } */ > + =A0b1 =3D _mm256_permute2f128_ps (b2, b3, -10);/* { dg-error "the last = argument must be an 8-bit immediate" } */ > + =A0l1 =3D _mm256_permute2f128_si256 (l2, l3, -10);/* { dg-error "the la= st argument must be an 8-bit immediate" } */ > + =A0b1 =3D _mm256_permute_ps (b2, -10); =A0 =A0 =A0/* { dg-error "the la= st argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_aeskeygenassist_si128 (i2, -10);/* { dg-error "the last a= rgument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_blend_epi16 (i2, i3, -10); =A0 =A0/* { dg-error "the last= argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_clmulepi64_si128 (i2, i3, -10);/* { dg-error "the last ar= gument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_cvtps_ph (a1, -10); =A0 =A0 =A0 =A0 =A0 /* { dg-error "th= e last argument must be an 8-bit immediate" } */ > + =A0d1 =3D _mm_dp_pd (d2, d3, -10); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be an 8-bit immediate" } */ > + =A0a1 =3D _mm_dp_ps (a2, a3, -10); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be an 8-bit immediate" } */ > + =A0a1 =3D _mm_insert_ps (a2, a3, -10); =A0 =A0 =A0/* { dg-error "the la= st argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_mpsadbw_epu8 (i2, i3, -10); =A0 /* { dg-error "the last a= rgument must be an 8-bit immediate" } */ > + =A0a1 =3D _mm_permute_ps (a2, -10); =A0 =A0 =A0 =A0 /* { dg-error "the = last argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_slli_si128 (i2, -10); =A0 =A0 =A0 =A0 /* { dg-error "the = last argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_srli_si128 (i2, -10); =A0 =A0 =A0 =A0 /* { dg-error "the = last argument must be an 8-bit immediate" } */ > +} > + > +void > +test5bit (void) > +{ > + =A0d1 =3D _mm_cmp_sd (d2, d3, -7); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be a 5-bit immediate" } */ > + =A0a1 =3D _mm_cmp_ss (a2, a3, -7); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be a 5-bit immediate" } */ > + =A0d1 =3D _mm_cmp_pd (d2, d3, -7); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be a 5-bit immediate" } */ > + =A0a1 =3D _mm_cmp_ps (a2, a3, -7); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be a 5-bit immediate" } */ > + =A0e1 =3D _mm256_cmp_pd (e2, e3, -7); =A0 =A0 =A0 /* { dg-error "the la= st argument must be a 5-bit immediate" } */ > + =A0b1 =3D _mm256_cmp_ps (b2, b3, -7); =A0 =A0 =A0 /* { dg-error "the la= st argument must be a 5-bit immediate" } */ > +} > + > +void > +test4bit (void) > +{ > + =A0d1 =3D _mm_round_pd (d2, -7); =A0 =A0 =A0 =A0 =A0 =A0/* { dg-error "= the last argument must be a 4-bit immediate" } */ > + =A0d1 =3D _mm_round_sd (d2, d3, -7); =A0 =A0 =A0 =A0/* { dg-error "the = last argument must be a 4-bit immediate" } */ > + =A0a1 =3D _mm_round_ps (a2, -7); =A0 =A0 =A0 =A0 =A0 =A0/* { dg-error "= the last argument must be a 4-bit immediate" } */ > + =A0a1 =3D _mm_round_ss (a2, a2, -7); =A0 =A0 =A0 =A0/* { dg-error "the = last argument must be a 4-bit immediate" } */ > + =A0a1 =3D _mm_blend_ps (a2, a3, -7); =A0 =A0 =A0 =A0/* { dg-error "the = last argument must be a 4-bit immediate" } */ > + =A0e1 =3D _mm256_blend_pd (e2, e3, -7); =A0 =A0 /* { dg-error "the last= argument must be a 4-bit immediate" } */ > + =A0e1 =3D _mm256_round_pd (e2, -7); =A0 =A0 =A0 =A0 /* { dg-error "the = last argument must be a 4-bit immediate" } */ > + =A0b1 =3D _mm256_round_ps (b2, -7); =A0 =A0 =A0 =A0 /* { dg-error "the = last argument must be a 4-bit immediate" } */ > +} > + > +void > +test2bit (void) > +{ > + =A0d1 =3D _mm_blend_pd (d2, d3, -1); =A0 =A0 =A0 =A0/* { dg-error "the = last argument must be a 2-bit immediate" } */ > +} > + > +void > +test1bit (void) > +{ > + =A0d1 =3D _mm256_extractf128_pd (e2, -1); =A0 /* { dg-error "the last a= rgument must be a 1-bit immediate" } */ > + =A0a1 =3D _mm256_extractf128_ps (b2, -1); =A0 /* { dg-error "the last a= rgument must be a 1-bit immediate" } */ > + =A0i1 =3D _mm256_extractf128_si256 (l2, -1); /* { dg-error "the last ar= gument must be a 1-bit immediate" } */ > + =A0e1 =3D _mm256_insertf128_pd (e2, d1, -1); /* { dg-error "the last ar= gument must be a 1-bit immediate" } */ > + =A0b1 =3D _mm256_insertf128_ps (b2, a1, -1); /* { dg-error "the last ar= gument must be a 1-bit immediate" } */ > + =A0l1 =3D _mm256_insertf128_si256 (l2, i1, -1);/* { dg-error "the last = argument must be a 1-bit immediate" } */ > +} > --- gcc/testsuite/gcc.target/i386/testimm-3.c.jj =A0 =A0 =A0 =A02011-06-1= 7 13:57:41.000000000 +0200 > +++ gcc/testsuite/gcc.target/i386/testimm-3.c =A0 2011-06-17 14:01:42.000= 000000 +0200 > @@ -0,0 +1,94 @@ > +/* PR target/49411 */ > +/* { dg-do compile } */ > +/* { dg-options "-O0 -mf16c -maes -mpclmul" } */ > + > +#include > + > +__m128i i1, i2, i3, i4; > +__m128 a1, a2, a3, a4; > +__m128d d1, d2, d3, d4; > +__m256i l1, l2, l3, l4; > +__m256 b1, b2, b3, b4; > +__m256d e1, e2, e3, e4; > +__m64 m1, m2, m3, m4; > +int k1, k2, k3, k4; > +float f1, f2, f3, f4; > + > +void > +test8bit (void) > +{ > + =A0i1 =3D _mm_cmpistrm (i2, i3, k4); =A0 =A0 =A0 =A0/* { dg-error "the = third argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistri (i2, i3, k4); =A0 =A0 =A0 =A0/* { dg-error "the = third argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistra (i2, i3, k4); =A0 =A0 =A0 =A0/* { dg-error "the = third argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistrc (i2, i3, k4); =A0 =A0 =A0 =A0/* { dg-error "the = third argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistro (i2, i3, k4); =A0 =A0 =A0 =A0/* { dg-error "the = third argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistrs (i2, i3, k4); =A0 =A0 =A0 =A0/* { dg-error "the = third argument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpistrz (i2, i3, k4); =A0 =A0 =A0 =A0/* { dg-error "the = third argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_cmpestrm (i2, k2, i3, k3, k4); /* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestri (i2, k2, i3, k3, k4); /* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestra (i2, k2, i3, k3, k4); /* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestrc (i2, k2, i3, k3, k4); /* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestro (i2, k2, i3, k3, k4); /* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestrs (i2, k2, i3, k3, k4); /* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0k1 =3D _mm_cmpestrz (i2, k2, i3, k3, k4); /* { dg-error "the fifth a= rgument must be an 8-bit immediate" } */ > + =A0b1 =3D _mm256_blend_ps (b2, b3, k4); =A0 =A0 /* { dg-error "the last= argument must be an 8-bit immediate" } */ > + =A0k1 =3D _cvtss_sh (f1, k4); =A0 =A0 =A0 =A0 =A0 =A0 =A0 /* { dg-error= "the last argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm256_cvtps_ph (b2, k4); =A0 =A0 =A0 =A0 /* { dg-error "the = last argument must be an 8-bit immediate" } */ > + =A0b1 =3D _mm256_dp_ps (b2, b3, k4); =A0 =A0 =A0 =A0/* { dg-error "the = last argument must be an 8-bit immediate" } */ > + =A0e1 =3D _mm256_permute2f128_pd (e2, e3, k4);/* { dg-error "the last a= rgument must be an 8-bit immediate" } */ > + =A0b1 =3D _mm256_permute2f128_ps (b2, b3, k4);/* { dg-error "the last a= rgument must be an 8-bit immediate" } */ > + =A0l1 =3D _mm256_permute2f128_si256 (l2, l3, k4);/* { dg-error "the las= t argument must be an 8-bit immediate" } */ > + =A0b1 =3D _mm256_permute_ps (b2, k4); =A0 =A0 =A0 /* { dg-error "the la= st argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_aeskeygenassist_si128 (i2, k4);/* { dg-error "the last ar= gument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_blend_epi16 (i2, i3, k4); =A0 =A0 /* { dg-error "the last= argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_clmulepi64_si128 (i2, i3, k4); /* { dg-error "the last ar= gument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_cvtps_ph (a1, k4); =A0 =A0 =A0 =A0 =A0 =A0/* { dg-error "= the last argument must be an 8-bit immediate" } */ > + =A0d1 =3D _mm_dp_pd (d2, d3, k4); =A0 =A0 =A0 =A0 =A0 /* { dg-error "th= e last argument must be an 8-bit immediate" } */ > + =A0a1 =3D _mm_dp_ps (a2, a3, k4); =A0 =A0 =A0 =A0 =A0 /* { dg-error "th= e last argument must be an 8-bit immediate" } */ > + =A0a1 =3D _mm_insert_ps (a2, a3, k4); =A0 =A0 =A0 /* { dg-error "the la= st argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_mpsadbw_epu8 (i2, i3, k4); =A0 =A0/* { dg-error "the last= argument must be an 8-bit immediate" } */ > + =A0a1 =3D _mm_permute_ps (a2, k4); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_slli_si128 (i2, k4); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_srli_si128 (i2, k4); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be an 8-bit immediate" } */ > +} > + > +void > +test5bit (void) > +{ > + =A0d1 =3D _mm_cmp_sd (d2, d3, k4); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be a 5-bit immediate" } */ > + =A0a1 =3D _mm_cmp_ss (a2, a3, k4); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be a 5-bit immediate" } */ > + =A0d1 =3D _mm_cmp_pd (d2, d3, k4); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be a 5-bit immediate" } */ > + =A0a1 =3D _mm_cmp_ps (a2, a3, k4); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/= * { dg-error "the last argument must be a 5-bit immediate" } */ > + =A0e1 =3D _mm256_cmp_pd (e2, e3, k4); =A0 =A0 =A0 /* { dg-error "the la= st argument must be a 5-bit immediate" } */ > + =A0b1 =3D _mm256_cmp_ps (b2, b3, k4); =A0 =A0 =A0 /* { dg-error "the la= st argument must be a 5-bit immediate" } */ > +} > + > +void > +test4bit (void) > +{ > + =A0d1 =3D _mm_round_pd (d2, k4); =A0 =A0 =A0 =A0 =A0 =A0/* { dg-error "= the last argument must be a 4-bit immediate" } */ > + =A0d1 =3D _mm_round_sd (d2, d3, k4); =A0 =A0 =A0 =A0/* { dg-error "the = last argument must be a 4-bit immediate" } */ > + =A0a1 =3D _mm_round_ps (a2, k4); =A0 =A0 =A0 =A0 =A0 =A0/* { dg-error "= the last argument must be a 4-bit immediate" } */ > + =A0a1 =3D _mm_round_ss (a2, a2, k4); =A0 =A0 =A0 =A0/* { dg-error "the = last argument must be a 4-bit immediate" } */ > + =A0a1 =3D _mm_blend_ps (a2, a3, k4); =A0 =A0 =A0 =A0/* { dg-error "the = last argument must be a 4-bit immediate" } */ > + =A0e1 =3D _mm256_blend_pd (e2, e3, k4); =A0 =A0 /* { dg-error "the last= argument must be a 4-bit immediate" } */ > + =A0e1 =3D _mm256_round_pd (e2, k4); =A0 =A0 =A0 =A0 /* { dg-error "the = last argument must be a 4-bit immediate" } */ > + =A0b1 =3D _mm256_round_ps (b2, k4); =A0 =A0 =A0 =A0 /* { dg-error "the = last argument must be a 4-bit immediate" } */ > +} > + > +void > +test2bit (void) > +{ > + =A0d1 =3D _mm_blend_pd (d2, d3, k4); =A0 =A0 =A0 =A0/* { dg-error "the = last argument must be a 2-bit immediate" } */ > +} > + > +void > +test1bit (void) > +{ > + =A0d1 =3D _mm256_extractf128_pd (e2, k4); =A0 /* { dg-error "the last a= rgument must be a 1-bit immediate" } */ > + =A0a1 =3D _mm256_extractf128_ps (b2, k4); =A0 /* { dg-error "the last a= rgument must be a 1-bit immediate" } */ > + =A0i1 =3D _mm256_extractf128_si256 (l2, k4); /* { dg-error "the last ar= gument must be a 1-bit immediate" } */ > + =A0e1 =3D _mm256_insertf128_pd (e2, d1, k4); /* { dg-error "the last ar= gument must be a 1-bit immediate" } */ > + =A0b1 =3D _mm256_insertf128_ps (b2, a1, k4); /* { dg-error "the last ar= gument must be a 1-bit immediate" } */ > + =A0l1 =3D _mm256_insertf128_si256 (l2, i1, k4);/* { dg-error "the last = argument must be a 1-bit immediate" } */ > +} > --- gcc/testsuite/gcc.target/i386/testimm-4.c.jj =A0 =A0 =A0 =A02011-06-1= 7 13:57:49.000000000 +0200 > +++ gcc/testsuite/gcc.target/i386/testimm-4.c =A0 2011-06-17 14:19:23.000= 000000 +0200 > @@ -0,0 +1,97 @@ > +/* PR target/49411 */ > +/* { dg-do assemble } */ > +/* { dg-options "-O0 -mf16c -maes -mpclmul" } */ > +/* { dg-require-effective-target f16c } */ > +/* { dg-require-effective-target vaes } */ > +/* { dg-require-effective-target vpclmul } */ > + > +#include > + > +__m128i i1, i2, i3, i4; > +__m128 a1, a2, a3, a4; > +__m128d d1, d2, d3, d4; > +__m256i l1, l2, l3, l4; > +__m256 b1, b2, b3, b4; > +__m256d e1, e2, e3, e4; > +__m64 m1, m2, m3, m4; > +int k1, k2, k3, k4; > +float f1, f2, f3, f4; > + > +void > +test8bit (void) > +{ > + =A0i1 =3D _mm_cmpistrm (i2, i3, 255); > + =A0k1 =3D _mm_cmpistri (i2, i3, 255); > + =A0k1 =3D _mm_cmpistra (i2, i3, 255); > + =A0k1 =3D _mm_cmpistrc (i2, i3, 255); > + =A0k1 =3D _mm_cmpistro (i2, i3, 255); > + =A0k1 =3D _mm_cmpistrs (i2, i3, 255); > + =A0k1 =3D _mm_cmpistrz (i2, i3, 255); > + =A0i1 =3D _mm_cmpestrm (i2, k2, i3, k3, 255); > + =A0k1 =3D _mm_cmpestri (i2, k2, i3, k3, 255); > + =A0k1 =3D _mm_cmpestra (i2, k2, i3, k3, 255); > + =A0k1 =3D _mm_cmpestrc (i2, k2, i3, k3, 255); > + =A0k1 =3D _mm_cmpestro (i2, k2, i3, k3, 255); > + =A0k1 =3D _mm_cmpestrs (i2, k2, i3, k3, 255); > + =A0k1 =3D _mm_cmpestrz (i2, k2, i3, k3, 255); > + =A0b1 =3D _mm256_blend_ps (b2, b3, 255); > + =A0k1 =3D _cvtss_sh (f1, 255); > + =A0i1 =3D _mm256_cvtps_ph (b2, 255); > + =A0b1 =3D _mm256_dp_ps (b2, b3, 255); > + =A0e1 =3D _mm256_permute2f128_pd (e2, e3, 255); > + =A0b1 =3D _mm256_permute2f128_ps (b2, b3, 255); > + =A0l1 =3D _mm256_permute2f128_si256 (l2, l3, 255); > + =A0b1 =3D _mm256_permute_ps (b2, 255); > + =A0i1 =3D _mm_aeskeygenassist_si128 (i2, 255); > + =A0i1 =3D _mm_blend_epi16 (i2, i3, 255); > + =A0i1 =3D _mm_clmulepi64_si128 (i2, i3, 255); > + =A0i1 =3D _mm_cvtps_ph (a1, 255); > + =A0d1 =3D _mm_dp_pd (d2, d3, 255); > + =A0a1 =3D _mm_dp_ps (a2, a3, 255); > + =A0a1 =3D _mm_insert_ps (a2, a3, 255); > + =A0i1 =3D _mm_mpsadbw_epu8 (i2, i3, 255); > + =A0a1 =3D _mm_permute_ps (a2, 255); > + =A0i1 =3D _mm_slli_si128 (i2, 255); > + =A0i1 =3D _mm_srli_si128 (i2, 255); > +} > + > +void > +test5bit (void) > +{ > + =A0d1 =3D _mm_cmp_sd (d2, d3, 31); > + =A0a1 =3D _mm_cmp_ss (a2, a3, 31); > + =A0d1 =3D _mm_cmp_pd (d2, d3, 31); > + =A0a1 =3D _mm_cmp_ps (a2, a3, 31); > + =A0e1 =3D _mm256_cmp_pd (e2, e3, 31); > + =A0b1 =3D _mm256_cmp_ps (b2, b3, 31); > +} > + > +void > +test4bit (void) > +{ > + =A0d1 =3D _mm_round_pd (d2, 15); > + =A0d1 =3D _mm_round_sd (d2, d3, 15); > + =A0a1 =3D _mm_round_ps (a2, 15); > + =A0a1 =3D _mm_round_ss (a2, a2, 15); > + =A0a1 =3D _mm_blend_ps (a2, a3, 15); > + =A0e1 =3D _mm256_blend_pd (e2, e3, 15); > + =A0e1 =3D _mm256_round_pd (e2, 15); > + =A0b1 =3D _mm256_round_ps (b2, 15); > +} > + > +void > +test2bit (void) > +{ > + =A0d1 =3D _mm_blend_pd (d2, d3, 3); > +} > + > +void > +test1bit (void) > +{ > + =A0d1 =3D _mm256_extractf128_pd (e2, 1); > + =A0a1 =3D _mm256_extractf128_ps (b2, 1); > + =A0i1 =3D _mm256_extractf128_si256 (l2, 1); > + =A0e1 =3D _mm256_insertf128_pd (e2, d1, 1); > + =A0b1 =3D _mm256_insertf128_ps (b2, a1, 1); > + =A0l1 =3D _mm256_insertf128_si256 (l2, i1, 1); > +} > --- gcc/testsuite/gcc.target/i386/testimm-5.c.jj =A0 =A0 =A0 =A02011-06-1= 7 13:59:08.000000000 +0200 > +++ gcc/testsuite/gcc.target/i386/testimm-5.c =A0 2011-06-17 14:19:27.000= 000000 +0200 > @@ -0,0 +1,8 @@ > +/* PR target/49411 */ > +/* { dg-do assemble } */ > +/* { dg-options "-O2 -mf16c -maes -mpclmul" } */ > +/* { dg-require-effective-target f16c } */ > +/* { dg-require-effective-target vaes } */ > +/* { dg-require-effective-target vpclmul } */ > + > +#include "testimm-4.c" > --- gcc/testsuite/gcc.target/i386/testimm-6.c.jj =A0 =A0 =A0 =A02011-06-1= 7 14:00:40.000000000 +0200 > +++ gcc/testsuite/gcc.target/i386/testimm-6.c =A0 2011-06-17 14:17:18.000= 000000 +0200 > @@ -0,0 +1,41 @@ > +/* PR target/49411 */ > +/* { dg-do compile } */ > +/* { dg-options "-O0 -mxop" } */ > + > +#include > + > +__m128i i1, i2, i3, i4; > +__m128 a1, a2, a3, a4; > +__m128d d1, d2, d3, d4; > +__m256i l1, l2, l3, l4; > +__m256 b1, b2, b3, b4; > +__m256d e1, e2, e3, e4; > +__m64 m1, m2, m3, m4; > +int k1, k2, k3, k4; > +float f1, f2, f3, f4; > + > +void > +test2bit (void) > +{ > + =A0d1 =3D _mm_permute2_pd (d2, d3, i1, 17); =A0 =A0 =A0 /* { dg-error "= the last argument must be a 2-bit immediate" } */ > + =A0e1 =3D _mm256_permute2_pd (e2, e3, l1, 17); =A0 =A0/* { dg-error "th= e last argument must be a 2-bit immediate" } */ > + =A0a1 =3D _mm_permute2_ps (a2, a3, i1, 17); =A0 =A0 =A0 /* { dg-error "= the last argument must be a 2-bit immediate" } */ > + =A0b1 =3D _mm256_permute2_ps (b2, b3, l1, 17); =A0 =A0/* { dg-error "th= e last argument must be a 2-bit immediate" } */ > + =A0d1 =3D _mm_permute2_pd (d2, d3, i1, k4); =A0 =A0 =A0 /* { dg-error "= the last argument must be a 2-bit immediate" } */ > + =A0e1 =3D _mm256_permute2_pd (e2, e3, l1, k4); =A0 =A0/* { dg-error "th= e last argument must be a 2-bit immediate" } */ > + =A0a1 =3D _mm_permute2_ps (a2, a3, i1, k4); =A0 =A0 =A0 /* { dg-error "= the last argument must be a 2-bit immediate" } */ > + =A0b1 =3D _mm256_permute2_ps (b2, b3, l1, k4); =A0 =A0/* { dg-error "th= e last argument must be a 2-bit immediate" } */ > +} > + > +void > +test2args (void) > +{ > + =A0i1 =3D _mm_extracti_si64 (i2, 256, 0); =A0 =A0 =A0 =A0 /* { dg-error= "the next to last argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_extracti_si64 (i2, 0, 256); =A0 =A0 =A0 =A0 /* { dg-error= "the last argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_inserti_si64 (i2, i3, 256, 0); =A0 =A0 =A0/* { dg-error "= the next to last argument must be an 8-bit immediate" } */ > + =A0i2 =3D _mm_inserti_si64 (i2, i3, 0, 256); =A0 =A0 =A0/* { dg-error "= the last argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_extracti_si64 (i2, k4, 0); =A0 =A0 =A0 =A0 =A0/* { dg-err= or "the next to last argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_extracti_si64 (i2, 0, k4); =A0 =A0 =A0 =A0 =A0/* { dg-err= or "the last argument must be an 8-bit immediate" } */ > + =A0i1 =3D _mm_inserti_si64 (i2, i3, k4, 0); =A0 =A0 =A0 /* { dg-error "= the next to last argument must be an 8-bit immediate" } */ > + =A0i2 =3D _mm_inserti_si64 (i2, i3, 0, k4); =A0 =A0 =A0 /* { dg-error "= the last argument must be an 8-bit immediate" } */ > +} > --- gcc/testsuite/gcc.target/i386/testimm-7.c.jj =A0 =A0 =A0 =A02011-06-1= 7 14:17:04.000000000 +0200 > +++ gcc/testsuite/gcc.target/i386/testimm-7.c =A0 2011-06-17 14:20:02.000= 000000 +0200 > @@ -0,0 +1,46 @@ > +/* PR target/49411 */ > +/* { dg-do assemble } */ > +/* { dg-options "-O0 -mxop" } */ > +/* { dg-require-effective-target xop } */ > + > +#include > + > +__m128i i1, i2, i3, i4; > +__m128 a1, a2, a3, a4; > +__m128d d1, d2, d3, d4; > +__m256i l1, l2, l3, l4; > +__m256 b1, b2, b3, b4; > +__m256d e1, e2, e3, e4; > +__m64 m1, m2, m3, m4; > +int k1, k2, k3, k4; > +float f1, f2, f3, f4; > + > +void > +test2bit (void) > +{ > + =A0d1 =3D _mm_permute2_pd (d2, d3, i1, 3); > + =A0e1 =3D _mm256_permute2_pd (e2, e3, l1, 3); > + =A0a1 =3D _mm_permute2_ps (a2, a3, i1, 3); > + =A0b1 =3D _mm256_permute2_ps (b2, b3, l1, 3); > + =A0d1 =3D _mm_permute2_pd (d2, d3, i1, 0); > + =A0e1 =3D _mm256_permute2_pd (e2, e3, l1, 0); > + =A0a1 =3D _mm_permute2_ps (a2, a3, i1, 0); > + =A0b1 =3D _mm256_permute2_ps (b2, b3, l1, 0); > +} > + > +void > +test2args (void) > +{ > + =A0i1 =3D _mm_extracti_si64 (i2, 255, 0); > + =A0i1 =3D _mm_extracti_si64 (i2, 0, 255); > + =A0i1 =3D _mm_inserti_si64 (i2, i3, 255, 0); > + =A0i2 =3D _mm_inserti_si64 (i2, i3, 0, 255); > + =A0i1 =3D _mm_extracti_si64 (i2, 255, 255); > + =A0i1 =3D _mm_extracti_si64 (i2, 255, 255); > + =A0i1 =3D _mm_inserti_si64 (i2, i3, 255, 255); > + =A0i2 =3D _mm_inserti_si64 (i2, i3, 255, 255); > + =A0i1 =3D _mm_extracti_si64 (i2, 0, 0); > + =A0i1 =3D _mm_extracti_si64 (i2, 0, 0); > + =A0i1 =3D _mm_inserti_si64 (i2, i3, 0, 0); > + =A0i2 =3D _mm_inserti_si64 (i2, i3, 0, 0); > +} > --- gcc/testsuite/gcc.target/i386/testimm-8.c.jj =A0 =A0 =A0 =A02011-06-1= 7 14:20:07.000000000 +0200 > +++ gcc/testsuite/gcc.target/i386/testimm-8.c =A0 2011-06-17 14:20:12.000= 000000 +0200 > @@ -0,0 +1,6 @@ > +/* PR target/49411 */ > +/* { dg-do assemble } */ > +/* { dg-options "-O2 -mxop" } */ > +/* { dg-require-effective-target xop } */ > + > +#include "testimm-7.c" > --- gcc/testsuite/gcc.target/i386/xop-rotate1-int.c.jj =A02011-06-17 11:0= 8:15.000000000 +0200 > +++ gcc/testsuite/gcc.target/i386/xop-rotate1-int.c =A0 =A0 2011-06-17 11= :08:15.000000000 +0200 > @@ -0,0 +1,63 @@ > +/* PR target/49411 */ > +/* { dg-do run } */ > +/* { dg-require-effective-target xop } */ > +/* { dg-options "-O2 -mxop" } */ > + > +#include "xop-check.h" > + > +#include > + > +extern void abort (void); > + > +union > +{ > + =A0__m128i v; > + =A0unsigned char c[16]; > + =A0unsigned short s[8]; > + =A0unsigned int i[4]; > + =A0unsigned long long l[2]; > +} a, b, c, d; > + > +#define TEST1(F, N, S, SS) \ > +do { =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0= =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 \ > + =A0for (i =3D 0; i < sizeof (a.F) / sizeof (a.F[0]); i++) \ > + =A0 =A0a.F[i] =3D i * 17; =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 \ > + =A0s =3D _mm_set1_epi##SS (N); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0\ > + =A0b.v =3D _mm_roti_epi##S (a.v, N); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0\ > + =A0c.v =3D _mm_rot_epi##S (a.v, s); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0= =A0 =A0 \ > + =A0for (i =3D 0; i < sizeof (a.F) / sizeof (a.F[0]); i++) \ > + =A0 =A0{ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\ > + =A0 =A0 =A0int mask =3D __CHAR_BIT__ * sizeof (a.F[i]) - 1; =A0 \ > + =A0 =A0 =A0d.F[i] =3D a.F[i] << (N & mask); =A0 =A0 =A0 =A0 =A0 =A0 =A0= =A0 =A0 \ > + =A0 =A0 =A0if (N & mask) =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0\ > + =A0 =A0 =A0 d.F[i] |=3D a.F[i] >> (mask + 1 - (N & mask)); =A0 =A0\ > + =A0 =A0 =A0if (b.F[i] !=3D c.F[i] || b.F[i] !=3D d.F[i]) =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0\ > + =A0 =A0 =A0 abort (); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 \ > + =A0 =A0} =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\ > +} while (0) > +#define TEST(N) \ > + =A0TEST1 (c, N, 8, 8); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0\ > + =A0TEST1 (s, N, 16, 16); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\ > + =A0TEST1 (i, N, 32, 32); =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\ > + =A0TEST1 (l, N, 64, 64x) > + > +volatile int n; > + > +static void > +xop_test (void) > +{ > + =A0unsigned int i; > + =A0__m128i s; > + > +#ifndef NON_CONST > + =A0TEST (5); > + =A0TEST (-5); > + =A0TEST (0); > + =A0TEST (31); > +#else > + =A0n =3D 5; TEST (n); > + =A0n =3D -5; TEST (n); > + =A0n =3D 0; TEST (n); > + =A0n =3D 31; TEST (n); > +#endif > +} > --- gcc/testsuite/gcc.target/i386/xop-rotate2-int.c.jj =A02011-06-17 11:0= 8:15.000000000 +0200 > +++ gcc/testsuite/gcc.target/i386/xop-rotate2-int.c =A0 =A0 2011-06-17 11= :08:15.000000000 +0200 > @@ -0,0 +1,7 @@ > +/* PR target/49411 */ > +/* { dg-do run } */ > +/* { dg-require-effective-target xop } */ > +/* { dg-options "-O2 -mxop" } */ > + > +#define NON_CONST 1 > +#include "xop-rotate1-int.c" > > =A0 =A0 =A0 =A0Jakub >