Commit 783879e6 by Evandro Menezes Committed by James Greenhalgh

[PATCH] [AArch64] Distinct costs for sign and zero extension

gcc/

	* 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.

From-SVN: r229431
parent 4a334cba
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.
2015-10-27 Richard Sandiford <richard.sandiford@arm.com> 2015-10-27 Richard Sandiford <richard.sandiford@arm.com>
* fold-const.c (fold_minmax): Delete. * fold-const.c (fold_minmax): Delete.
...@@ -134,7 +134,8 @@ struct cpu_addrcost_table ...@@ -134,7 +134,8 @@ struct cpu_addrcost_table
const int pre_modify; const int pre_modify;
const int post_modify; const int post_modify;
const int register_offset; const int register_offset;
const int register_extend; const int register_sextend;
const int register_zextend;
const int imm_offset; const int imm_offset;
}; };
......
...@@ -194,7 +194,8 @@ static const struct cpu_addrcost_table generic_addrcost_table = ...@@ -194,7 +194,8 @@ static const struct cpu_addrcost_table generic_addrcost_table =
0, /* pre_modify */ 0, /* pre_modify */
0, /* post_modify */ 0, /* post_modify */
0, /* register_offset */ 0, /* register_offset */
0, /* register_extend */ 0, /* register_sextend */
0, /* register_zextend */
0 /* imm_offset */ 0 /* imm_offset */
}; };
...@@ -209,7 +210,8 @@ static const struct cpu_addrcost_table cortexa57_addrcost_table = ...@@ -209,7 +210,8 @@ static const struct cpu_addrcost_table cortexa57_addrcost_table =
0, /* pre_modify */ 0, /* pre_modify */
0, /* post_modify */ 0, /* post_modify */
0, /* register_offset */ 0, /* register_offset */
0, /* register_extend */ 0, /* register_sextend */
0, /* register_zextend */
0, /* imm_offset */ 0, /* imm_offset */
}; };
...@@ -224,7 +226,8 @@ static const struct cpu_addrcost_table xgene1_addrcost_table = ...@@ -224,7 +226,8 @@ static const struct cpu_addrcost_table xgene1_addrcost_table =
1, /* pre_modify */ 1, /* pre_modify */
0, /* post_modify */ 0, /* post_modify */
0, /* register_offset */ 0, /* register_offset */
1, /* register_extend */ 1, /* register_sextend */
1, /* register_zextend */
0, /* imm_offset */ 0, /* imm_offset */
}; };
...@@ -5530,9 +5533,12 @@ aarch64_address_cost (rtx x, ...@@ -5530,9 +5533,12 @@ aarch64_address_cost (rtx x,
cost += addr_cost->register_offset; cost += addr_cost->register_offset;
break; break;
case ADDRESS_REG_UXTW:
case ADDRESS_REG_SXTW: 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; break;
default: default:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment