diff options
author | Yvan Roux <yvan.roux@linaro.org> | 2015-11-19 08:54:27 +0100 |
---|---|---|
committer | Yvan Roux <yvan.roux@linaro.org> | 2015-11-19 08:54:27 +0100 |
commit | 45b4048b9a75609c51f4ff3421d4535f13b54271 (patch) | |
tree | ab267ca696e7bfb98da6ca482163bef67f9bee0e /gcc/config/aarch64/aarch64.c | |
parent | f49a29ee90b5aeb1058528933e3a1bbdfd766547 (diff) |
gcc/
Backport from trunk r229431.
2015-10-27 Evandro Menezes <e.menezes@samsung.com>
* config/aarch64/aarch64-protos.h (cpu_addrcost_table): Split member
for register extension into sign and zero register extension.
* config/aarch64/aarch64.c (generic_addrcost_table): Infer values
for sign and zero register extension.
(cortexa57_addrcost_table): Likewise.
(xgene1_addrcost_table): Likewise.
Change-Id: I2b0e6c75cd14410d0ca19d8217dd11fa3a2015a9
Diffstat (limited to 'gcc/config/aarch64/aarch64.c')
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 4c53f2a3bb4..7ace288da4b 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -226,7 +226,8 @@ static const struct cpu_addrcost_table generic_addrcost_table = 0, /* pre_modify */ 0, /* post_modify */ 0, /* register_offset */ - 0, /* register_extend */ + 0, /* register_sextend */ + 0, /* register_zextend */ 0 /* imm_offset */ }; @@ -241,7 +242,8 @@ static const struct cpu_addrcost_table cortexa57_addrcost_table = 0, /* pre_modify */ 0, /* post_modify */ 0, /* register_offset */ - 0, /* register_extend */ + 0, /* register_sextend */ + 0, /* register_zextend */ 0, /* imm_offset */ }; @@ -256,7 +258,8 @@ static const struct cpu_addrcost_table xgene1_addrcost_table = 1, /* pre_modify */ 0, /* post_modify */ 0, /* register_offset */ - 1, /* register_extend */ + 1, /* register_sextend */ + 1, /* register_zextend */ 0, /* imm_offset */ }; @@ -5297,9 +5300,12 @@ aarch64_address_cost (rtx x, cost += addr_cost->register_offset; break; - case ADDRESS_REG_UXTW: case ADDRESS_REG_SXTW: - cost += addr_cost->register_extend; + cost += addr_cost->register_sextend; + break; + + case ADDRESS_REG_UXTW: + cost += addr_cost->register_zextend; break; default: |