From patchwork Tue Jul 27 00:53:28 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Pop X-Patchwork-Id: 59965 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 4CB6AB70AE for ; Tue, 27 Jul 2010 10:53:49 +1000 (EST) Received: (qmail 32708 invoked by alias); 27 Jul 2010 00:53:47 -0000 Received: (qmail 32698 invoked by uid 22791); 27 Jul 2010 00:53:45 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, TW_TM, 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; Tue, 27 Jul 2010 00:53:40 +0000 Received: by gwb15 with SMTP id 15so339196gwb.20 for ; Mon, 26 Jul 2010 17:53:38 -0700 (PDT) Received: by 10.150.238.5 with SMTP id l5mr9726718ybh.111.1280192018740; Mon, 26 Jul 2010 17:53:38 -0700 (PDT) Received: from napoca ([163.181.251.115]) by mx.google.com with ESMTPS id e7sm4278246ybe.4.2010.07.26.17.53.36 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 26 Jul 2010 17:53:38 -0700 (PDT) Received: by napoca (sSMTP sendmail emulation); Mon, 26 Jul 2010 19:53:35 -0500 From: Sebastian Pop To: gcc-patches@gcc.gnu.org Cc: gcc-graphite@googlegroups.com, Sebastian Pop Subject: [PATCH 1/2] Call scev_analyzable_p only on is_gimple_reg. Date: Mon, 26 Jul 2010 19:53:28 -0500 Message-Id: <1280192009-20472-2-git-send-email-sebpop@gmail.com> In-Reply-To: <1280192009-20472-1-git-send-email-sebpop@gmail.com> References: <1280192009-20472-1-git-send-email-sebpop@gmail.com> X-IsSubscribed: yes 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 2010-07-26 Sebastian Pop * graphite-sese-to-poly.c (rewrite_commutative_reductions_out_of_ssa_loop): Call scev_analyzable_p only on is_gimple_reg * gcc.dg/graphite/id-25.c: New. --- gcc/ChangeLog.graphite | 8 +++++++ gcc/graphite-sese-to-poly.c | 5 +++- gcc/testsuite/gcc.dg/graphite/id-25.c | 34 +++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/graphite/id-25.c diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index c2d4b24..2d0b2ab 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,3 +1,11 @@ +2010-07-26 Sebastian Pop + + * graphite-sese-to-poly.c + (rewrite_commutative_reductions_out_of_ssa_loop): Call + scev_analyzable_p only on is_gimple_reg + + * gcc.dg/graphite/id-25.c: New. + 2010-07-22 Sebastian Pop * graphite-sese-to-poly.c (propagate_expr_outside_region): New. diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c index 3cb22cb..3ca803e 100644 --- a/gcc/graphite-sese-to-poly.c +++ b/gcc/graphite-sese-to-poly.c @@ -2949,12 +2949,15 @@ rewrite_commutative_reductions_out_of_ssa_loop (loop_p loop, { gimple_stmt_iterator gsi; edge exit = single_exit (loop); + tree res; if (!exit) return; for (gsi = gsi_start_phis (exit->dest); !gsi_end_p (gsi); gsi_next (&gsi)) - if (!scev_analyzable_p (gimple_phi_result (gsi_stmt (gsi)), region)) + if ((res = gimple_phi_result (gsi_stmt (gsi))) + && is_gimple_reg (res) + && !scev_analyzable_p (res, region)) rewrite_commutative_reductions_out_of_ssa_close_phi (gsi_stmt (gsi), reductions); } diff --git a/gcc/testsuite/gcc.dg/graphite/id-25.c b/gcc/testsuite/gcc.dg/graphite/id-25.c new file mode 100644 index 0000000..b719972 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/id-25.c @@ -0,0 +1,34 @@ +typedef struct +{ + int mvd[2][(16/4)][(16/4)][2]; +} Macroblock; +typedef struct +{ + int part_size[8][2]; +} InputParameters; +typedef struct +{ + Macroblock *mb_data; + short****** pred_mv; + short****** all_mv; +} ImageParameters; +extern InputParameters *input; +extern ImageParameters *img; +int writeMotionVector8x8 (void) +{ + int i, j, k, l, m; + int step_h = input->part_size[7][0]; + int step_v = input->part_size[7][1]; + Macroblock* currMB = &img->mb_data[9]; + int refindex = 0; + short****** all_mv = img->all_mv; + short****** pred_mv = img->pred_mv; + + for (k=0; k<2; k++) + { + int curr_mvd = all_mv[2][8][0][8][7][8] - pred_mv[2][7][0][8][7][0]; + for (l=0; l < step_v; l++) + for (m=0; m < step_h; m++) + currMB->mvd[0][8][9][8] = curr_mvd; + } +}