Commit 06a67bdd by Roger Sayle Committed by Roger Sayle

rs6000.c (struct processor_costs): Change semantics of fields to include the…

rs6000.c (struct processor_costs): Change semantics of fields to include the COST_N_INSNS scaling...


	* rs6000.c (struct processor_costs): Change semantics of fields to
	include the COST_N_INSNS scaling, and update all initializers.
	(rs6000_rtx_costs): Don't use COSTS_N_INSNS on rs6000_cost fields.
	Use COSTS_N_INSNS(1) for NOT, SIGN_EXTEND, ZERO_EXTEND and COMPARE.
	Use rs6000_cost->fp for both FLOAT_TRUNCATE and UNSPEC_FRSP.  When
	optimizing for size, use COSTS_N_INSNS(1) for CALL and IF_THEN_ELSE.

From-SVN: r84512
parent e08b5a75
2004-07-11 Roger Sayle <roger@eyesopen.com>
* rs6000.c (struct processor_costs): Change semantics of fields to
include the COST_N_INSNS scaling, and update all initializers.
(rs6000_rtx_costs): Don't use COSTS_N_INSNS on rs6000_cost fields.
Use COSTS_N_INSNS(1) for NOT, SIGN_EXTEND, ZERO_EXTEND and COMPARE.
Use rs6000_cost->fp for both FLOAT_TRUNCATE and UNSPEC_FRSP. When
optimizing for size, use COSTS_N_INSNS(1) for CALL and IF_THEN_ELSE.
2004-07-11 Joseph S. Myers <jsm@polyomino.org.uk> 2004-07-11 Joseph S. Myers <jsm@polyomino.org.uk>
* LANGUAGES: Remove obsolete information. * LANGUAGES: Remove obsolete information.
......
...@@ -305,286 +305,286 @@ const struct processor_costs *rs6000_cost; ...@@ -305,286 +305,286 @@ const struct processor_costs *rs6000_cost;
/* Instruction size costs on 32bit processors. */ /* Instruction size costs on 32bit processors. */
static const static const
struct processor_costs size32_cost = { struct processor_costs size32_cost = {
1, /* mulsi */ COSTS_N_INSNS (1), /* mulsi */
1, /* mulsi_const */ COSTS_N_INSNS (1), /* mulsi_const */
1, /* mulsi_const9 */ COSTS_N_INSNS (1), /* mulsi_const9 */
1, /* muldi */ COSTS_N_INSNS (1), /* muldi */
1, /* divsi */ COSTS_N_INSNS (1), /* divsi */
1, /* divdi */ COSTS_N_INSNS (1), /* divdi */
1, /* fp */ COSTS_N_INSNS (1), /* fp */
1, /* dmul */ COSTS_N_INSNS (1), /* dmul */
1, /* sdiv */ COSTS_N_INSNS (1), /* sdiv */
1, /* ddiv */ COSTS_N_INSNS (1), /* ddiv */
}; };
/* Instruction size costs on 64bit processors. */ /* Instruction size costs on 64bit processors. */
static const static const
struct processor_costs size64_cost = { struct processor_costs size64_cost = {
1, /* mulsi */ COSTS_N_INSNS (1), /* mulsi */
1, /* mulsi_const */ COSTS_N_INSNS (1), /* mulsi_const */
1, /* mulsi_const9 */ COSTS_N_INSNS (1), /* mulsi_const9 */
1, /* muldi */ COSTS_N_INSNS (1), /* muldi */
1, /* divsi */ COSTS_N_INSNS (1), /* divsi */
1, /* divdi */ COSTS_N_INSNS (1), /* divdi */
1, /* fp */ COSTS_N_INSNS (1), /* fp */
1, /* dmul */ COSTS_N_INSNS (1), /* dmul */
1, /* sdiv */ COSTS_N_INSNS (1), /* sdiv */
1, /* ddiv */ COSTS_N_INSNS (1), /* ddiv */
}; };
/* Instruction costs on RIOS1 processors. */ /* Instruction costs on RIOS1 processors. */
static const static const
struct processor_costs rios1_cost = { struct processor_costs rios1_cost = {
5, /* mulsi */ COSTS_N_INSNS (5), /* mulsi */
4, /* mulsi_const */ COSTS_N_INSNS (4), /* mulsi_const */
3, /* mulsi_const9 */ COSTS_N_INSNS (3), /* mulsi_const9 */
5, /* muldi */ COSTS_N_INSNS (5), /* muldi */
19, /* divsi */ COSTS_N_INSNS (19), /* divsi */
19, /* divdi */ COSTS_N_INSNS (19), /* divdi */
2, /* fp */ COSTS_N_INSNS (2), /* fp */
2, /* dmul */ COSTS_N_INSNS (2), /* dmul */
19, /* sdiv */ COSTS_N_INSNS (19), /* sdiv */
19, /* ddiv */ COSTS_N_INSNS (19), /* ddiv */
}; };
/* Instruction costs on RIOS2 processors. */ /* Instruction costs on RIOS2 processors. */
static const static const
struct processor_costs rios2_cost = { struct processor_costs rios2_cost = {
2, /* mulsi */ COSTS_N_INSNS (2), /* mulsi */
2, /* mulsi_const */ COSTS_N_INSNS (2), /* mulsi_const */
2, /* mulsi_const9 */ COSTS_N_INSNS (2), /* mulsi_const9 */
2, /* muldi */ COSTS_N_INSNS (2), /* muldi */
13, /* divsi */ COSTS_N_INSNS (13), /* divsi */
13, /* divdi */ COSTS_N_INSNS (13), /* divdi */
2, /* fp */ COSTS_N_INSNS (2), /* fp */
2, /* dmul */ COSTS_N_INSNS (2), /* dmul */
17, /* sdiv */ COSTS_N_INSNS (17), /* sdiv */
17, /* ddiv */ COSTS_N_INSNS (17), /* ddiv */
}; };
/* Instruction costs on RS64A processors. */ /* Instruction costs on RS64A processors. */
static const static const
struct processor_costs rs64a_cost = { struct processor_costs rs64a_cost = {
20, /* mulsi */ COSTS_N_INSNS (20), /* mulsi */
12, /* mulsi_const */ COSTS_N_INSNS (12), /* mulsi_const */
8, /* mulsi_const9 */ COSTS_N_INSNS (8), /* mulsi_const9 */
34, /* muldi */ COSTS_N_INSNS (34), /* muldi */
65, /* divsi */ COSTS_N_INSNS (65), /* divsi */
67, /* divdi */ COSTS_N_INSNS (67), /* divdi */
4, /* fp */ COSTS_N_INSNS (4), /* fp */
4, /* dmul */ COSTS_N_INSNS (4), /* dmul */
31, /* sdiv */ COSTS_N_INSNS (31), /* sdiv */
31, /* ddiv */ COSTS_N_INSNS (31), /* ddiv */
}; };
/* Instruction costs on MPCCORE processors. */ /* Instruction costs on MPCCORE processors. */
static const static const
struct processor_costs mpccore_cost = { struct processor_costs mpccore_cost = {
2, /* mulsi */ COSTS_N_INSNS (2), /* mulsi */
2, /* mulsi_const */ COSTS_N_INSNS (2), /* mulsi_const */
2, /* mulsi_const9 */ COSTS_N_INSNS (2), /* mulsi_const9 */
2, /* muldi */ COSTS_N_INSNS (2), /* muldi */
6, /* divsi */ COSTS_N_INSNS (6), /* divsi */
6, /* divdi */ COSTS_N_INSNS (6), /* divdi */
4, /* fp */ COSTS_N_INSNS (4), /* fp */
5, /* dmul */ COSTS_N_INSNS (5), /* dmul */
10, /* sdiv */ COSTS_N_INSNS (10), /* sdiv */
17, /* ddiv */ COSTS_N_INSNS (17), /* ddiv */
}; };
/* Instruction costs on PPC403 processors. */ /* Instruction costs on PPC403 processors. */
static const static const
struct processor_costs ppc403_cost = { struct processor_costs ppc403_cost = {
4, /* mulsi */ COSTS_N_INSNS (4), /* mulsi */
4, /* mulsi_const */ COSTS_N_INSNS (4), /* mulsi_const */
4, /* mulsi_const9 */ COSTS_N_INSNS (4), /* mulsi_const9 */
4, /* muldi */ COSTS_N_INSNS (4), /* muldi */
33, /* divsi */ COSTS_N_INSNS (33), /* divsi */
33, /* divdi */ COSTS_N_INSNS (33), /* divdi */
11, /* fp */ COSTS_N_INSNS (11), /* fp */
11, /* dmul */ COSTS_N_INSNS (11), /* dmul */
11, /* sdiv */ COSTS_N_INSNS (11), /* sdiv */
11, /* ddiv */ COSTS_N_INSNS (11), /* ddiv */
}; };
/* Instruction costs on PPC405 processors. */ /* Instruction costs on PPC405 processors. */
static const static const
struct processor_costs ppc405_cost = { struct processor_costs ppc405_cost = {
5, /* mulsi */ COSTS_N_INSNS (5), /* mulsi */
4, /* mulsi_const */ COSTS_N_INSNS (4), /* mulsi_const */
3, /* mulsi_const9 */ COSTS_N_INSNS (3), /* mulsi_const9 */
5, /* muldi */ COSTS_N_INSNS (5), /* muldi */
35, /* divsi */ COSTS_N_INSNS (35), /* divsi */
35, /* divdi */ COSTS_N_INSNS (35), /* divdi */
11, /* fp */ COSTS_N_INSNS (11), /* fp */
11, /* dmul */ COSTS_N_INSNS (11), /* dmul */
11, /* sdiv */ COSTS_N_INSNS (11), /* sdiv */
11, /* ddiv */ COSTS_N_INSNS (11), /* ddiv */
}; };
/* Instruction costs on PPC440 processors. */ /* Instruction costs on PPC440 processors. */
static const static const
struct processor_costs ppc440_cost = { struct processor_costs ppc440_cost = {
3, /* mulsi */ COSTS_N_INSNS (3), /* mulsi */
2, /* mulsi_const */ COSTS_N_INSNS (2), /* mulsi_const */
2, /* mulsi_const9 */ COSTS_N_INSNS (2), /* mulsi_const9 */
3, /* muldi */ COSTS_N_INSNS (3), /* muldi */
34, /* divsi */ COSTS_N_INSNS (34), /* divsi */
34, /* divdi */ COSTS_N_INSNS (34), /* divdi */
5, /* fp */ COSTS_N_INSNS (5), /* fp */
5, /* dmul */ COSTS_N_INSNS (5), /* dmul */
19, /* sdiv */ COSTS_N_INSNS (19), /* sdiv */
33, /* ddiv */ COSTS_N_INSNS (33), /* ddiv */
}; };
/* Instruction costs on PPC601 processors. */ /* Instruction costs on PPC601 processors. */
static const static const
struct processor_costs ppc601_cost = { struct processor_costs ppc601_cost = {
5, /* mulsi */ COSTS_N_INSNS (5), /* mulsi */
5, /* mulsi_const */ COSTS_N_INSNS (5), /* mulsi_const */
5, /* mulsi_const9 */ COSTS_N_INSNS (5), /* mulsi_const9 */
5, /* muldi */ COSTS_N_INSNS (5), /* muldi */
36, /* divsi */ COSTS_N_INSNS (36), /* divsi */
36, /* divdi */ COSTS_N_INSNS (36), /* divdi */
4, /* fp */ COSTS_N_INSNS (4), /* fp */
5, /* dmul */ COSTS_N_INSNS (5), /* dmul */
17, /* sdiv */ COSTS_N_INSNS (17), /* sdiv */
31, /* ddiv */ COSTS_N_INSNS (31), /* ddiv */
}; };
/* Instruction costs on PPC603 processors. */ /* Instruction costs on PPC603 processors. */
static const static const
struct processor_costs ppc603_cost = { struct processor_costs ppc603_cost = {
5, /* mulsi */ COSTS_N_INSNS (5), /* mulsi */
3, /* mulsi_const */ COSTS_N_INSNS (3), /* mulsi_const */
2, /* mulsi_const9 */ COSTS_N_INSNS (2), /* mulsi_const9 */
5, /* muldi */ COSTS_N_INSNS (5), /* muldi */
37, /* divsi */ COSTS_N_INSNS (37), /* divsi */
37, /* divdi */ COSTS_N_INSNS (37), /* divdi */
3, /* fp */ COSTS_N_INSNS (3), /* fp */
4, /* dmul */ COSTS_N_INSNS (4), /* dmul */
18, /* sdiv */ COSTS_N_INSNS (18), /* sdiv */
33, /* ddiv */ COSTS_N_INSNS (33), /* ddiv */
}; };
/* Instruction costs on PPC604 processors. */ /* Instruction costs on PPC604 processors. */
static const static const
struct processor_costs ppc604_cost = { struct processor_costs ppc604_cost = {
4, /* mulsi */ COSTS_N_INSNS (4), /* mulsi */
4, /* mulsi_const */ COSTS_N_INSNS (4), /* mulsi_const */
4, /* mulsi_const9 */ COSTS_N_INSNS (4), /* mulsi_const9 */
4, /* muldi */ COSTS_N_INSNS (4), /* muldi */
20, /* divsi */ COSTS_N_INSNS (20), /* divsi */
20, /* divdi */ COSTS_N_INSNS (20), /* divdi */
3, /* fp */ COSTS_N_INSNS (3), /* fp */
3, /* dmul */ COSTS_N_INSNS (3), /* dmul */
18, /* sdiv */ COSTS_N_INSNS (18), /* sdiv */
32, /* ddiv */ COSTS_N_INSNS (32), /* ddiv */
}; };
/* Instruction costs on PPC604e processors. */ /* Instruction costs on PPC604e processors. */
static const static const
struct processor_costs ppc604e_cost = { struct processor_costs ppc604e_cost = {
2, /* mulsi */ COSTS_N_INSNS (2), /* mulsi */
2, /* mulsi_const */ COSTS_N_INSNS (2), /* mulsi_const */
2, /* mulsi_const9 */ COSTS_N_INSNS (2), /* mulsi_const9 */
2, /* muldi */ COSTS_N_INSNS (2), /* muldi */
20, /* divsi */ COSTS_N_INSNS (20), /* divsi */
20, /* divdi */ COSTS_N_INSNS (20), /* divdi */
3, /* fp */ COSTS_N_INSNS (3), /* fp */
3, /* dmul */ COSTS_N_INSNS (3), /* dmul */
18, /* sdiv */ COSTS_N_INSNS (18), /* sdiv */
32, /* ddiv */ COSTS_N_INSNS (32), /* ddiv */
}; };
/* Instruction costs on PPC620 processors. */ /* Instruction costs on PPC620 processors. */
static const static const
struct processor_costs ppc620_cost = { struct processor_costs ppc620_cost = {
5, /* mulsi */ COSTS_N_INSNS (5), /* mulsi */
4, /* mulsi_const */ COSTS_N_INSNS (4), /* mulsi_const */
3, /* mulsi_const9 */ COSTS_N_INSNS (3), /* mulsi_const9 */
7, /* muldi */ COSTS_N_INSNS (7), /* muldi */
21, /* divsi */ COSTS_N_INSNS (21), /* divsi */
37, /* divdi */ COSTS_N_INSNS (37), /* divdi */
3, /* fp */ COSTS_N_INSNS (3), /* fp */
3, /* dmul */ COSTS_N_INSNS (3), /* dmul */
18, /* sdiv */ COSTS_N_INSNS (18), /* sdiv */
32, /* ddiv */ COSTS_N_INSNS (32), /* ddiv */
}; };
/* Instruction costs on PPC630 processors. */ /* Instruction costs on PPC630 processors. */
static const static const
struct processor_costs ppc630_cost = { struct processor_costs ppc630_cost = {
5, /* mulsi */ COSTS_N_INSNS (5), /* mulsi */
4, /* mulsi_const */ COSTS_N_INSNS (4), /* mulsi_const */
3, /* mulsi_const9 */ COSTS_N_INSNS (3), /* mulsi_const9 */
7, /* muldi */ COSTS_N_INSNS (7), /* muldi */
21, /* divsi */ COSTS_N_INSNS (21), /* divsi */
37, /* divdi */ COSTS_N_INSNS (37), /* divdi */
3, /* fp */ COSTS_N_INSNS (3), /* fp */
3, /* dmul */ COSTS_N_INSNS (3), /* dmul */
17, /* sdiv */ COSTS_N_INSNS (17), /* sdiv */
21, /* ddiv */ COSTS_N_INSNS (21), /* ddiv */
}; };
/* Instruction costs on PPC750 and PPC7400 processors. */ /* Instruction costs on PPC750 and PPC7400 processors. */
static const static const
struct processor_costs ppc750_cost = { struct processor_costs ppc750_cost = {
5, /* mulsi */ COSTS_N_INSNS (5), /* mulsi */
3, /* mulsi_const */ COSTS_N_INSNS (3), /* mulsi_const */
2, /* mulsi_const9 */ COSTS_N_INSNS (2), /* mulsi_const9 */
5, /* muldi */ COSTS_N_INSNS (5), /* muldi */
17, /* divsi */ COSTS_N_INSNS (17), /* divsi */
17, /* divdi */ COSTS_N_INSNS (17), /* divdi */
3, /* fp */ COSTS_N_INSNS (3), /* fp */
3, /* dmul */ COSTS_N_INSNS (3), /* dmul */
17, /* sdiv */ COSTS_N_INSNS (17), /* sdiv */
31, /* ddiv */ COSTS_N_INSNS (31), /* ddiv */
}; };
/* Instruction costs on PPC7450 processors. */ /* Instruction costs on PPC7450 processors. */
static const static const
struct processor_costs ppc7450_cost = { struct processor_costs ppc7450_cost = {
4, /* mulsi */ COSTS_N_INSNS (4), /* mulsi */
3, /* mulsi_const */ COSTS_N_INSNS (3), /* mulsi_const */
3, /* mulsi_const9 */ COSTS_N_INSNS (3), /* mulsi_const9 */
4, /* muldi */ COSTS_N_INSNS (4), /* muldi */
23, /* divsi */ COSTS_N_INSNS (23), /* divsi */
23, /* divdi */ COSTS_N_INSNS (23), /* divdi */
5, /* fp */ COSTS_N_INSNS (5), /* fp */
5, /* dmul */ COSTS_N_INSNS (5), /* dmul */
21, /* sdiv */ COSTS_N_INSNS (21), /* sdiv */
35, /* ddiv */ COSTS_N_INSNS (35), /* ddiv */
}; };
/* Instruction costs on PPC8540 processors. */ /* Instruction costs on PPC8540 processors. */
static const static const
struct processor_costs ppc8540_cost = { struct processor_costs ppc8540_cost = {
4, /* mulsi */ COSTS_N_INSNS (4), /* mulsi */
4, /* mulsi_const */ COSTS_N_INSNS (4), /* mulsi_const */
4, /* mulsi_const9 */ COSTS_N_INSNS (4), /* mulsi_const9 */
4, /* muldi */ COSTS_N_INSNS (4), /* muldi */
19, /* divsi */ COSTS_N_INSNS (19), /* divsi */
19, /* divdi */ COSTS_N_INSNS (19), /* divdi */
4, /* fp */ COSTS_N_INSNS (4), /* fp */
4, /* dmul */ COSTS_N_INSNS (4), /* dmul */
29, /* sdiv */ COSTS_N_INSNS (29), /* sdiv */
29, /* ddiv */ COSTS_N_INSNS (29), /* ddiv */
}; };
/* Instruction costs on POWER4 and POWER5 processors. */ /* Instruction costs on POWER4 and POWER5 processors. */
static const static const
struct processor_costs power4_cost = { struct processor_costs power4_cost = {
3, /* mulsi */ COSTS_N_INSNS (3), /* mulsi */
2, /* mulsi_const */ COSTS_N_INSNS (2), /* mulsi_const */
2, /* mulsi_const9 */ COSTS_N_INSNS (2), /* mulsi_const9 */
4, /* muldi */ COSTS_N_INSNS (4), /* muldi */
18, /* divsi */ COSTS_N_INSNS (18), /* divsi */
34, /* divdi */ COSTS_N_INSNS (34), /* divdi */
3, /* fp */ COSTS_N_INSNS (3), /* fp */
3, /* dmul */ COSTS_N_INSNS (3), /* dmul */
17, /* sdiv */ COSTS_N_INSNS (17), /* sdiv */
17, /* ddiv */ COSTS_N_INSNS (17), /* ddiv */
}; };
...@@ -16531,10 +16531,10 @@ rs6000_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED, ...@@ -16531,10 +16531,10 @@ rs6000_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED,
case PLUS: case PLUS:
if (mode == DFmode) if (mode == DFmode)
*total = GET_CODE (XEXP (x, 0)) == MULT *total = GET_CODE (XEXP (x, 0)) == MULT
? COSTS_N_INSNS (rs6000_cost->dmul) ? rs6000_cost->dmul
: COSTS_N_INSNS (rs6000_cost->fp); : rs6000_cost->fp;
else if (mode == SFmode) else if (mode == SFmode)
*total = COSTS_N_INSNS (rs6000_cost->fp); *total = rs6000_cost->fp;
else else
*total = ((GET_CODE (XEXP (x, 1)) == CONST_INT *total = ((GET_CODE (XEXP (x, 1)) == CONST_INT
&& ((unsigned HOST_WIDE_INT) (INTVAL (XEXP (x, 1)) && ((unsigned HOST_WIDE_INT) (INTVAL (XEXP (x, 1))
...@@ -16547,10 +16547,10 @@ rs6000_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED, ...@@ -16547,10 +16547,10 @@ rs6000_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED,
case MINUS: case MINUS:
if (mode == DFmode) if (mode == DFmode)
*total = GET_CODE (XEXP (x, 0)) == MULT *total = GET_CODE (XEXP (x, 0)) == MULT
? COSTS_N_INSNS (rs6000_cost->dmul) ? rs6000_cost->dmul
: COSTS_N_INSNS (rs6000_cost->fp); : rs6000_cost->fp;
else if (mode == SFmode) else if (mode == SFmode)
*total = COSTS_N_INSNS (rs6000_cost->fp); *total = rs6000_cost->fp;
else else
*total = COSTS_N_INSNS (1); *total = COSTS_N_INSNS (1);
return true; return true;
...@@ -16570,26 +16570,26 @@ rs6000_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED, ...@@ -16570,26 +16570,26 @@ rs6000_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED,
{ {
if (INTVAL (XEXP (x, 1)) >= -256 if (INTVAL (XEXP (x, 1)) >= -256
&& INTVAL (XEXP (x, 1)) <= 255) && INTVAL (XEXP (x, 1)) <= 255)
*total = COSTS_N_INSNS (rs6000_cost->mulsi_const9); *total = rs6000_cost->mulsi_const9;
else else
*total = COSTS_N_INSNS (rs6000_cost->mulsi_const); *total = rs6000_cost->mulsi_const;
} }
else if (mode == DFmode) else if (mode == DFmode)
*total = COSTS_N_INSNS (rs6000_cost->dmul); *total = rs6000_cost->dmul;
else if (mode == SFmode) else if (mode == SFmode)
*total = COSTS_N_INSNS (rs6000_cost->fp); *total = rs6000_cost->fp;
else if (mode == DImode) else if (mode == DImode)
*total = COSTS_N_INSNS (rs6000_cost->muldi); *total = rs6000_cost->muldi;
else else
*total = COSTS_N_INSNS (rs6000_cost->mulsi); *total = rs6000_cost->mulsi;
return true; return true;
case DIV: case DIV:
case MOD: case MOD:
if (FLOAT_MODE_P (mode)) if (FLOAT_MODE_P (mode))
{ {
*total = mode == DFmode ? COSTS_N_INSNS (rs6000_cost->ddiv) *total = mode == DFmode ? rs6000_cost->ddiv
: COSTS_N_INSNS (rs6000_cost->sdiv); : rs6000_cost->sdiv;
return true; return true;
} }
if (GET_CODE (XEXP (x, 1)) == CONST_INT if (GET_CODE (XEXP (x, 1)) == CONST_INT
...@@ -16603,9 +16603,9 @@ rs6000_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED, ...@@ -16603,9 +16603,9 @@ rs6000_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED,
case UDIV: case UDIV:
case UMOD: case UMOD:
if (GET_MODE (XEXP (x, 1)) == DImode) if (GET_MODE (XEXP (x, 1)) == DImode)
*total = COSTS_N_INSNS (rs6000_cost->divdi); *total = rs6000_cost->divdi;
else else
*total = COSTS_N_INSNS (rs6000_cost->divsi); *total = rs6000_cost->divsi;
return true; return true;
case FFS: case FFS:
...@@ -16615,7 +16615,7 @@ rs6000_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED, ...@@ -16615,7 +16615,7 @@ rs6000_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED,
case NEG: case NEG:
case ABS: case ABS:
if (FLOAT_MODE_P (mode)) if (FLOAT_MODE_P (mode))
*total = COSTS_N_INSNS (rs6000_cost->fp); *total = rs6000_cost->fp;
else else
*total = COSTS_N_INSNS (1); *total = COSTS_N_INSNS (1);
return true; return true;
...@@ -16625,9 +16625,43 @@ rs6000_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED, ...@@ -16625,9 +16625,43 @@ rs6000_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED,
*total = COSTS_N_INSNS (1) + 1; *total = COSTS_N_INSNS (1) + 1;
return true; return true;
case NOT:
case SIGN_EXTEND:
case ZERO_EXTEND:
case COMPARE:
*total = COSTS_N_INSNS (1);
break;
case FLOAT_TRUNCATE:
*total = rs6000_cost->fp;
return true;
case UNSPEC:
switch (XINT (x, 1))
{
case UNSPEC_FRSP:
*total = rs6000_cost->fp;
return true;
default:
break;
}
break;
case CALL:
case IF_THEN_ELSE:
if (optimize_size)
{
*total = COSTS_N_INSNS (1);
return true;
}
break;
default: default:
return false; break;
} }
return false;
} }
/* A C expression returning the cost of moving data from a register of class /* A C expression returning the cost of moving data from a register of class
......
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