ack/util/ego/descr/em44.descr
George Koehler b1b737ed6c Optimize procedures that do both a / b and a % b.
Enable this in CS for PowerPC; disable it for all other machines.
PowerPC has no remainder instruction; the back end uses division to
compute remainder.  If CS finds both a / b and a % b, then CS now
rewrites a % b as a - b * (a / b) and computes a / b only once.  This
removes an extra division in the PowerPC code, so it saves both time
and space.

I have not considered whether to enable this optimization for other
machines.  It might be less useful in machines with a remainder
instruction.  Also, if a % b occurs before a / b, the EM code gets a
DUP.  PowerPC ncg handles this DUP well; other back ends might not.
2018-03-05 13:32:06 -05:00

87 lines
2.2 KiB
Plaintext

wordsize: 4
pointersize: 4
%%RA
general registers: 0
address registers: 0
floating point registers: 0
use general as pointer: no
register score parameters:
local variable:
(1 case)
general,general
(1 size)
default -> (-1,-1)
address of local variable:
(1 case)
general,general
(1 size)
default -> (-1,-1)
constant:
(1 sizes)
default -> (-1,-1)
double constant:
(1 size)
default -> (-1,-1)
address of global variable:
(1 size)
default -> (-1,-1)
address of procedure:
(1 size)
default -> (-1,-1)
opening cost parameters:
local variable:
(1 case)
general
(1 size)
default -> (-1,-1)
address of local variable:
(1 case)
general
(1 size)
default -> (-1,-1)
constant:
(1 size)
default -> (-1,-1)
double constant:
(1 size)
default -> (-1,-1)
address of global variable:
(1 size)
default -> (-1,-1)
address of procedure:
(1 size)
default -> (-1,-1)
register save costs:
(1 case)
0 -> (0,0)
%%UD
access costs of global variables:
(1 size)
default -> (4,2)
access costs of local variables:
(1 size)
default -> (4,2)
%%SR
overflow harmful?: yes
array bound harmful?: yes
reduce sli if shift count larger than: 0
%%CS
#include "em_mnem.h"
first time then space:
addressing modes: -1
-1
cheap operations: -1
-1
lexical tresholds: 1 1
indirection limit: 8
convert remainder to division?: no no
do not eliminate sli if index on shiftcounts: -1
-1
forbidden operators: -1 -1
%%SP
global stack pollution allowed?: no