diff options
| author | Roland Paterson-Jones <[email protected]> | 2024-12-07 10:22:30 +0200 |
|---|---|---|
| committer | Quentin Carbonneaux <[email protected]> | 2025-03-21 16:02:12 +0100 |
| commit | 95541ccfb0a63a1737e9d6e5c4ed9dae4530b9e8 (patch) | |
| tree | 6c28211b4ba244104f3fec89463f0f21e78aa8e4 /Makefile | |
| parent | 348f2eac90ffc0f3f8fa35e8a211ef8048589cb8 (diff) | |
Simple Inner Loop Optimzationloopopt
Two simple loop optimizations.
1. Strength reduction of mul[tiplication] by loop induction
variable.
2. Hoisting of (address) base into phi where loop induction
variable is used only as a base (address) offset.
Limited to loops with a single body block, which happily
is always innermost loops. This restriction would not be
very hard to lift - it would require detecting the set of
loop blocks (and ensuring reducibility?)
Limited to loop induction variables with 0 initial value
and increment of 1 (for mul strength reduction). This
limitation is trivial to lift; however all of the
cproc/hare[c]/coremark opportunity is with 0/1 loops for
mul reduction, and 0 initial value for base-offset opt.
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -5,7 +5,8 @@ PREFIX = /usr/local BINDIR = $(PREFIX)/bin COMMOBJ = main.o util.o parse.o abi.o cfg.o mem.o ssa.o alias.o load.o \ - copy.o fold.o gvn.o gcm.o simpl.o live.o spill.o rega.o emit.o + copy.o fold.o gvn.o gcm.o loopopt.o simpl.o live.o spill.o rega.o \ + emit.o AMD64OBJ = amd64/targ.o amd64/sysv.o amd64/isel.o amd64/emit.o ARM64OBJ = arm64/targ.o arm64/abi.o arm64/isel.o arm64/emit.o RV64OBJ = rv64/targ.o rv64/abi.o rv64/isel.o rv64/emit.o |
