From patchwork Fri Aug 26 20:56:07 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Uros Bizjak X-Patchwork-Id: 111840 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 02AF9B6F9C for ; Sat, 27 Aug 2011 06:56:26 +1000 (EST) Received: (qmail 5448 invoked by alias); 26 Aug 2011 20:56:25 -0000 Received: (qmail 5437 invoked by uid 22791); 26 Aug 2011 20:56:24 -0000 X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, TW_ZJ, T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-gw0-f47.google.com (HELO mail-gw0-f47.google.com) (74.125.83.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 26 Aug 2011 20:56:08 +0000 Received: by gwb11 with SMTP id 11so3304986gwb.20 for ; Fri, 26 Aug 2011 13:56:07 -0700 (PDT) MIME-Version: 1.0 Received: by 10.42.161.131 with SMTP id t3mr1338519icx.404.1314392167181; Fri, 26 Aug 2011 13:56:07 -0700 (PDT) Received: by 10.143.13.8 with HTTP; Fri, 26 Aug 2011 13:56:07 -0700 (PDT) Date: Fri, 26 Aug 2011 22:56:07 +0200 Message-ID: Subject: [PATCH, i386]: Rewrite ix86_build_const_vector From: Uros Bizjak To: gcc-patches@gcc.gnu.org Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Hello! No functional change. 2011-08-26 Uros Bizjak * config/i386/i386.c (ix86_build_const_vector): Rewrite using loop with RTVEC_ELT accessor. Tested on x86_64-pc-linux-gnu, committed to mainline. Uros. Index: config/i386/i386.c =================================================================== --- config/i386/i386.c (revision 178123) +++ config/i386/i386.c (working copy) @@ -16512,53 +16512,30 @@ ix86_expand_convert_uns_sisf_sse (rtx target, rtx rtx ix86_build_const_vector (enum machine_mode mode, bool vect, rtx value) { + int i, n_elt; rtvec v; + enum machine_mode scalar_mode; + switch (mode) { case V4SImode: - gcc_assert (vect); - v = gen_rtvec (4, value, value, value, value); - return gen_rtx_CONST_VECTOR (V4SImode, v); - case V2DImode: gcc_assert (vect); - v = gen_rtvec (2, value, value); - return gen_rtx_CONST_VECTOR (V2DImode, v); - case V8SFmode: - if (vect) - v = gen_rtvec (8, value, value, value, value, - value, value, value, value); - else - v = gen_rtvec (8, value, CONST0_RTX (SFmode), - CONST0_RTX (SFmode), CONST0_RTX (SFmode), - CONST0_RTX (SFmode), CONST0_RTX (SFmode), - CONST0_RTX (SFmode), CONST0_RTX (SFmode)); - return gen_rtx_CONST_VECTOR (V8SFmode, v); - case V4SFmode: - if (vect) - v = gen_rtvec (4, value, value, value, value); - else - v = gen_rtvec (4, value, CONST0_RTX (SFmode), - CONST0_RTX (SFmode), CONST0_RTX (SFmode)); - return gen_rtx_CONST_VECTOR (V4SFmode, v); - case V4DFmode: - if (vect) - v = gen_rtvec (4, value, value, value, value); - else - v = gen_rtvec (4, value, CONST0_RTX (DFmode), - CONST0_RTX (DFmode), CONST0_RTX (DFmode)); - return gen_rtx_CONST_VECTOR (V4DFmode, v); - case V2DFmode: - if (vect) - v = gen_rtvec (2, value, value); - else - v = gen_rtvec (2, value, CONST0_RTX (DFmode)); - return gen_rtx_CONST_VECTOR (V2DFmode, v); + n_elt = GET_MODE_NUNITS (mode); + v = rtvec_alloc (n_elt); + scalar_mode = GET_MODE_INNER (mode); + RTVEC_ELT (v, 0) = value; + + for (i = 1; i < n_elt; ++i) + RTVEC_ELT (v, i) = vect ? value : CONST0_RTX (scalar_mode); + + return gen_rtx_CONST_VECTOR (mode, v); + default: gcc_unreachable (); }