From patchwork Fri Jan 15 17:14:46 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Pop X-Patchwork-Id: 568239 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]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 37204140BA4 for ; Sat, 16 Jan 2016 04:17:13 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=QeTiVNTA; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:in-reply-to:references; q=dns; s= default; b=nmOxPtStk7GugHR3nuTEIEqkggGF5yGNl5T4fSJvJNaZLJbt8Zh85 rW//3z56+8PPHUDIYRUFoKxu3+shDzheBXI2dWAShrr9hg8GV1E+uMbjuZsmyHBf OEDjqREXiajhdGCCGC3/FsmQ2xznjL3E5pmtPCZHdRUfB/RUIsj/wo= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:in-reply-to:references; s= default; bh=dV0Kt5a60YueMMyy71dxunqrgg0=; b=QeTiVNTAQhyJSwdbj8WZ u/IXC15i4XLuZG2m5A8+ShPVCyc3CDbK7uSw3IrU+iaUfhclFM2jGU2l99m97nQn Rvot6Q09QL8OW6tMeovGocyQIz7GSWeMlIsV3WYnEh7SRj2tqpmh8R8LTgXleIOm 1Vf9Jud5cLfiz4HjdeAg7GQ= Received: (qmail 44155 invoked by alias); 15 Jan 2016 17:15:14 -0000 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 Received: (qmail 43577 invoked by uid 89); 15 Jan 2016 17:15:12 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy=495, validity, dumpfile.h, 544 X-HELO: mail-ob0-f194.google.com Received: from mail-ob0-f194.google.com (HELO mail-ob0-f194.google.com) (209.85.214.194) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Fri, 15 Jan 2016 17:15:01 +0000 Received: by mail-ob0-f194.google.com with SMTP id tr5so35218663obc.2 for ; Fri, 15 Jan 2016 09:15:00 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=dMnykzTl9DcBnanoHYJBqE2jQgdH3nPo7tKDtmMpsAU=; b=HpgCZfHyUxhWKqFHQ5mqi84wyt/NHqm4+9cJ5l94VGysHc/8VzOKSbAaKfX+g1HzgB +7NKs+uDDRGBdRPvp4WCSvipEELcZBY7uk3fxIQEBbmM26e2cfErqCW752EScSFNT6Ou jUMrG0vlyHR1yXKzJBhXdQA40C0mVBpboPumuykTyqogF2ep1SaaVoNwLzaJcr9TPAtK kJtwGHjHXPmxBda4o7hU4B1Xuos1ACX6A6MwJbuVDA6hBUmC0VvdJ3LNdKXlu157EJUA 3gdAZg3eASeuV845/nNassAIFBEUQCun49+q+o6sHqfrrLDT6YbKoEpZu573ujaxB0vk T/Zg== X-Gm-Message-State: ALoCoQmOhcQbRnWiVXu8NokcsI+6kJ+ZFd9enNSIZEGlzkTdE815WpW2suTk2yIaU8LQxX619rfbw9pXTUrZG+keY7V7V9AyhQ== X-Received: by 10.60.231.230 with SMTP id tj6mr9138045oec.8.1452878098728; Fri, 15 Jan 2016 09:14:58 -0800 (PST) Received: from bo.sarc.sas (65-36-6-125.static.grandenetworks.net. [65.36.6.125]) by smtp.gmail.com with ESMTPSA id r63sm6618774oia.13.2016.01.15.09.14.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 15 Jan 2016 09:14:58 -0800 (PST) From: Sebastian Pop X-Google-Original-From: Sebastian Pop To: gcc-patches@gcc.gnu.org Cc: hiraditya@msn.com, sebpop@gmail.com, richard.guenther@gmail.com Subject: [PATCH 13/15] reinstantiate loop blocking Date: Fri, 15 Jan 2016 11:14:46 -0600 Message-Id: <1452878086-19297-13-git-send-email-sebpop@gmail.com> In-Reply-To: <1452878086-19297-1-git-send-email-sebpop@gmail.com> References: <1452878086-19297-1-git-send-email-sebpop@gmail.com> * graphite-optimize-isl.c (get_schedule_for_node_st): Add back. (optimize_isl): Call isl_schedule_map_schedule_node_bottom_up. * params.def (PARAM_LOOP_BLOCK_TILE_SIZE): Adjust to 32. gcc/testsuite * gcc.dg/graphite/block-1.c: * gcc.dg/graphite/block-5.c: * gcc.dg/graphite/block-6.c: * gcc.dg/graphite/block-pr47654.c: * gcc.dg/graphite/interchange-0.c: * gcc.dg/graphite/interchange-12.c: * gcc.dg/graphite/interchange-14.c: * gcc.dg/graphite/interchange-15.c: * gcc.dg/graphite/interchange-5.c: * gcc.dg/graphite/interchange-6.c: * gcc.dg/graphite/interchange-8.c: * gcc.dg/graphite/interchange-mvt.c: * gcc.dg/graphite/uns-block-1.c: * gcc.dg/graphite/uns-interchange-12.c: * gcc.dg/graphite/uns-interchange-14.c: * gcc.dg/graphite/uns-interchange-15.c: * gcc.dg/graphite/uns-interchange-mvt.c: * gfortran.dg/graphite/pr14741.f90: --- gcc/graphite-optimize-isl.c | 54 ++++++++++++++++++++++ gcc/params.def | 2 +- gcc/testsuite/gcc.dg/graphite/block-1.c | 2 +- gcc/testsuite/gcc.dg/graphite/block-5.c | 2 +- gcc/testsuite/gcc.dg/graphite/block-6.c | 3 +- gcc/testsuite/gcc.dg/graphite/block-pr47654.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-0.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-12.c | 3 +- gcc/testsuite/gcc.dg/graphite/interchange-14.c | 3 +- gcc/testsuite/gcc.dg/graphite/interchange-15.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-5.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-6.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-8.c | 3 +- gcc/testsuite/gcc.dg/graphite/interchange-mvt.c | 2 +- gcc/testsuite/gcc.dg/graphite/uns-block-1.c | 2 +- gcc/testsuite/gcc.dg/graphite/uns-interchange-12.c | 3 +- gcc/testsuite/gcc.dg/graphite/uns-interchange-14.c | 3 +- gcc/testsuite/gcc.dg/graphite/uns-interchange-15.c | 2 +- .../gcc.dg/graphite/uns-interchange-mvt.c | 2 +- gcc/testsuite/gfortran.dg/graphite/pr14741.f90 | 2 +- 20 files changed, 74 insertions(+), 24 deletions(-) diff --git a/gcc/graphite-optimize-isl.c b/gcc/graphite-optimize-isl.c index f385c77..28dc6d4 100644 --- a/gcc/graphite-optimize-isl.c +++ b/gcc/graphite-optimize-isl.c @@ -39,6 +39,56 @@ along with GCC; see the file COPYING3. If not see #include "dumpfile.h" #include "graphite.h" +/* get_schedule_for_node_st - Improve schedule for the schedule node. + Only Simple loop tiling is considered. */ + +static __isl_give isl_schedule_node * +get_schedule_for_node_st (__isl_take isl_schedule_node *node, void *user) +{ + if (user) + return node; + + if (isl_schedule_node_get_type (node) != isl_schedule_node_band + || isl_schedule_node_n_children (node) != 1) + return node; + + isl_space *space = isl_schedule_node_band_get_space (node); + unsigned dims = isl_space_dim (space, isl_dim_set); + isl_schedule_node *child = isl_schedule_node_get_child (node, 0); + isl_schedule_node_type type = isl_schedule_node_get_type (child); + isl_space_free (space); + isl_schedule_node_free (child); + + if (type != isl_schedule_node_leaf) + return node; + + if (dims <= 1 || !isl_schedule_node_band_get_permutable (node)) + { + if (dump_file && dump_flags) + fprintf (dump_file, "not tiled\n"); + return node; + } + + /* Tile loops. */ + space = isl_schedule_node_band_get_space (node); + isl_multi_val *sizes = isl_multi_val_zero (space); + long tile_size = PARAM_VALUE (PARAM_LOOP_BLOCK_TILE_SIZE); + isl_ctx *ctx = isl_schedule_node_get_ctx (node); + + for (unsigned i = 0; i < dims; i++) + { + sizes = isl_multi_val_set_val (sizes, i, + isl_val_int_from_si (ctx, tile_size)); + if (dump_file && dump_flags) + fprintf (dump_file, "tiled by %ld\n", tile_size); + } + + node = isl_schedule_node_band_tile (node, sizes); + node = isl_schedule_node_child (node, 0); + + return node; +} + static isl_union_set * scop_get_domains (scop_p scop) { @@ -83,6 +133,7 @@ optimize_isl (scop_p scop) sc = isl_schedule_constraints_set_validity (sc, isl_union_map_copy (validity)); sc = isl_schedule_constraints_set_coincidence (sc, validity); + isl_options_set_tile_scale_tile_loops (scop->isl_context, 32); isl_options_set_schedule_serialize_sccs (scop->isl_context, 0); isl_options_set_schedule_maximize_band_depth (scop->isl_context, 1); isl_options_set_schedule_max_constant_term (scop->isl_context, 20); @@ -95,6 +146,9 @@ optimize_isl (scop_p scop) isl_options_set_ast_build_atomic_upper_bound (scop->isl_context, 1); scop->transformed_schedule = isl_schedule_constraints_compute_schedule (sc); + scop->transformed_schedule = + isl_schedule_map_schedule_node_bottom_up (scop->transformed_schedule, + get_schedule_for_node_st, NULL); isl_options_set_on_error (scop->isl_context, ISL_ON_ERROR_ABORT); isl_ctx_reset_operations (scop->isl_context); diff --git a/gcc/params.def b/gcc/params.def index 9b82164..98081b9 100644 --- a/gcc/params.def +++ b/gcc/params.def @@ -833,7 +833,7 @@ DEFPARAM (PARAM_SWITCH_CONVERSION_BRANCH_RATIO, DEFPARAM (PARAM_LOOP_BLOCK_TILE_SIZE, "loop-block-tile-size", "size of tiles for loop blocking.", - 51, 0, 0) + 32, 0, 0) /* Maximal number of parameters that we allow in a SCoP. */ diff --git a/gcc/testsuite/gcc.dg/graphite/block-1.c b/gcc/testsuite/gcc.dg/graphite/block-1.c index 03a5f83..2758404 100644 --- a/gcc/testsuite/gcc.dg/graphite/block-1.c +++ b/gcc/testsuite/gcc.dg/graphite/block-1.c @@ -45,4 +45,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "1" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/block-5.c b/gcc/testsuite/gcc.dg/graphite/block-5.c index 95f08c7..24b92c1 100644 --- a/gcc/testsuite/gcc.dg/graphite/block-5.c +++ b/gcc/testsuite/gcc.dg/graphite/block-5.c @@ -55,4 +55,4 @@ main (void) } /* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ -/* { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "1" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "codegen error: reverting back to the original code" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/block-6.c b/gcc/testsuite/gcc.dg/graphite/block-6.c index 0418a34..e7f1e34 100644 --- a/gcc/testsuite/gcc.dg/graphite/block-6.c +++ b/gcc/testsuite/gcc.dg/graphite/block-6.c @@ -49,4 +49,5 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "1" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "codegen error: reverting back to the original code" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/block-pr47654.c b/gcc/testsuite/gcc.dg/graphite/block-pr47654.c index c4ffca3..2027a3f 100644 --- a/gcc/testsuite/gcc.dg/graphite/block-pr47654.c +++ b/gcc/testsuite/gcc.dg/graphite/block-pr47654.c @@ -21,4 +21,4 @@ main () return 0; } -/* { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "1" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-0.c b/gcc/testsuite/gcc.dg/graphite/interchange-0.c index 3f398ca..f655e84 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-0.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-0.c @@ -46,4 +46,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "2" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-12.c b/gcc/testsuite/gcc.dg/graphite/interchange-12.c index 0012d56..7cdbabe 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-12.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-12.c @@ -53,5 +53,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ -/* { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "1" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-14.c b/gcc/testsuite/gcc.dg/graphite/interchange-14.c index 917e679..617659c 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-14.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-14.c @@ -54,5 +54,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ -/* { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "1" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-15.c b/gcc/testsuite/gcc.dg/graphite/interchange-15.c index 8e147ad..4bd354a 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-15.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-15.c @@ -48,4 +48,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "2" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-5.c b/gcc/testsuite/gcc.dg/graphite/interchange-5.c index e578e17..4410a17 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-5.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-5.c @@ -46,4 +46,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "2" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-6.c b/gcc/testsuite/gcc.dg/graphite/interchange-6.c index 9760ed3..c4500cb 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-6.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-6.c @@ -47,4 +47,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "2" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-8.c b/gcc/testsuite/gcc.dg/graphite/interchange-8.c index c623a32..977bc60 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-8.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-8.c @@ -82,5 +82,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump-times "codegen error: reverting back to the original code" "1" "graphite" } } */ -/* { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "1" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-mvt.c b/gcc/testsuite/gcc.dg/graphite/interchange-mvt.c index ec6a983..b97602b 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-mvt.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-mvt.c @@ -58,4 +58,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "2" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/uns-block-1.c b/gcc/testsuite/gcc.dg/graphite/uns-block-1.c index 19f358d..5b61eea 100644 --- a/gcc/testsuite/gcc.dg/graphite/uns-block-1.c +++ b/gcc/testsuite/gcc.dg/graphite/uns-block-1.c @@ -45,4 +45,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "1" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/uns-interchange-12.c b/gcc/testsuite/gcc.dg/graphite/uns-interchange-12.c index 2b957f5..a53c98e 100644 --- a/gcc/testsuite/gcc.dg/graphite/uns-interchange-12.c +++ b/gcc/testsuite/gcc.dg/graphite/uns-interchange-12.c @@ -54,5 +54,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ -/* { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "1" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/uns-interchange-14.c b/gcc/testsuite/gcc.dg/graphite/uns-interchange-14.c index 960e7ae..1e180c6 100644 --- a/gcc/testsuite/gcc.dg/graphite/uns-interchange-14.c +++ b/gcc/testsuite/gcc.dg/graphite/uns-interchange-14.c @@ -55,5 +55,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ -/* { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "1" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/uns-interchange-15.c b/gcc/testsuite/gcc.dg/graphite/uns-interchange-15.c index 5c5597f..dcf4738 100644 --- a/gcc/testsuite/gcc.dg/graphite/uns-interchange-15.c +++ b/gcc/testsuite/gcc.dg/graphite/uns-interchange-15.c @@ -49,4 +49,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "2" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/uns-interchange-mvt.c b/gcc/testsuite/gcc.dg/graphite/uns-interchange-mvt.c index 153fc8e..8f9111a 100644 --- a/gcc/testsuite/gcc.dg/graphite/uns-interchange-mvt.c +++ b/gcc/testsuite/gcc.dg/graphite/uns-interchange-mvt.c @@ -59,4 +59,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "2" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gfortran.dg/graphite/pr14741.f90 b/gcc/testsuite/gfortran.dg/graphite/pr14741.f90 index 057e57e..50c2e79 100644 --- a/gcc/testsuite/gfortran.dg/graphite/pr14741.f90 +++ b/gcc/testsuite/gfortran.dg/graphite/pr14741.f90 @@ -24,4 +24,4 @@ SUBROUTINE mult(A,B,C,N) ENDDO END SUBROUTINE mult -! { dg-final { scan-tree-dump-times "isl optimized schedule is identical to the original schedule" "1" "graphite" } } +! { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } }