From 03541b0d44b3a91357612de33229e31999e94f84 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 24 Aug 2015 15:24:44 +0000 Subject: [PATCH] Update MOVE_RATIO cost for IA MCU This patch updates MOVE_RATIO cost for IA MCU from 6 to 9 so that we can unroll the loop completely for DOM with -mtune=iamcu. gcc/ PR target/67329 * config/i386/i386.c (iamcu_cost): Set MOVE_RATIO cost to 9. gcc/testsuite/ PR target/67329 * gcc.target/i386/pr67329.c: New test. From-SVN: r227132 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/i386.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/i386/pr67329.c | 20 ++++++++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr67329.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 33c91dca023..1bac36655a9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2015-08-24 H.J. Lu + + PR target/67329 + * config/i386/i386.c (iamcu_cost): Set MOVE_RATIO cost to 9. + 2015-08-24 Renlin Li * config/arm/arm-protos.h (arm_valid_symbolic_address_p): Declare. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 05fa5e10ebf..070605fb4fc 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -436,7 +436,7 @@ struct processor_costs iamcu_cost = { COSTS_N_INSNS (3), /* cost of movsx */ COSTS_N_INSNS (2), /* cost of movzx */ 8, /* "large" insn */ - 6, /* MOVE_RATIO */ + 9, /* MOVE_RATIO */ 6, /* cost for loading QImode using movzbl */ {2, 4, 2}, /* cost of loading integer registers in QImode, HImode and SImode. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 77c8c23db7f..9161ce4b3b7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-08-24 H.J. Lu + + PR target/67329 + * gcc.target/i386/pr67329.c: New test. + 2015-08-24 Nathan Sidwell * gcc/testsuite/gcc.dg/pr49551.c: Needs -fdata-sections. diff --git a/gcc/testsuite/gcc.target/i386/pr67329.c b/gcc/testsuite/gcc.target/i386/pr67329.c new file mode 100644 index 00000000000..a29dd5b4f8d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr67329.c @@ -0,0 +1,20 @@ +/* { dg-do compile { target ia32 } } */ +/* { dg-options "-O3 -fno-tree-fre -fno-tree-pre -fdump-tree-optimized -mtune=iamcu" } */ + +int +foo () +{ + const int a[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; + int i, sum; + + sum = 0; + for (i = 0; i < sizeof (a) / sizeof (*a); i++) + sum += a[i]; + + return sum; +} + +/* After late unrolling the above loop completely DOM should be + able to optimize this to return 28. */ + +/* { dg-final { scan-tree-dump "return 28;" "optimized" } } */ -- 2.30.2