Added automatic support for register optimization.

This commit is contained in:
Zoltan Somogyi
1994-01-20 01:53:19 +00:00
parent 992389c22a
commit 208051de12
4 changed files with 48 additions and 48 deletions

View File

@@ -1,2 +1,2 @@
#!/bin/sh
sed '1,/^register usage counts/d' | sort +1n -r | Arrangeregs
sed '1,/^register usage counts/d' | sort +1nr +0.1n | Arrangeregs

View File

@@ -2,7 +2,7 @@
# -g -O2 -DSPEED
# Use these options for optimizing compiles with gcc
# -O2 -fomit-frame-pointer -DSPEED
-O2 -fomit-frame-pointer -DSPEED
# Use this with gcc if you want to look at the .s files
# -fverbose-asm
@@ -37,4 +37,4 @@
# uses which occur inside debugging routines, so to get an accurate
# count you need to disable all the debugging routines by compiling
# with -DSPEED and not using any -d* flags.
-DMEASURE_REGISTER_USAGE -DSPEED
# -DMEASURE_REGISTER_USAGE -DSPEED

View File

@@ -188,7 +188,7 @@ extern Word *nondstackmin;
use gcc's expression statements here */
#define create1(w1) ( \
hp += 1, \
hp = hp + 1, \
hp[-1] = (Word) (w1), \
debugcr1(hp[-1], hp), \
heap_overflow_check(), \
@@ -196,7 +196,7 @@ extern Word *nondstackmin;
)
#define create2(w1, w2) ( \
hp += 2, \
hp = hp + 2, \
hp[-2] = (Word) (w1), \
hp[-1] = (Word) (w2), \
debugcr2(hp[-2], hp[-1], hp), \
@@ -209,13 +209,13 @@ extern Word *nondstackmin;
#define detstackvar(n) sp[-n]
#define incr_sp(n) ( \
sp += (n), \
sp = sp + (n), \
detstack_overflow_check(), \
(void)0 \
)
#define decr_sp(n) ( \
sp -= (n), \
sp = sp - (n), \
detstack_underflow_check(), \
(void)0 \
)
@@ -224,13 +224,13 @@ extern Word *nondstackmin;
#define push(w) ( \
*sp = (Word) (w), \
debugpush(*sp, sp), \
sp += 1, \
sp = sp + 1, \
detstack_overflow_check(), \
(void)0 \
)
#define pop() ( \
sp -= 1, \
sp = sp - 1, \
debugpop(*sp, sp), \
detstack_underflow_check(), \
/* return */ *sp \
@@ -280,7 +280,7 @@ extern Word *nondstackmin;
\
prevfr = maxfr; \
succfr = curfr; \
maxfr += (CHOICE_POINT_SIZE + n); \
maxfr = maxfr + (CHOICE_POINT_SIZE + n);\
curfr = maxfr; \
curfr[PREDNM] = (Word) prednm; \
curfr[REDOIP] = (Word) redoip; \
@@ -296,7 +296,7 @@ extern Word *nondstackmin;
reg Word *prevfr; \
\
prevfr = maxfr; \
maxfr += 4; \
maxfr = maxfr + 4; \
maxfr[PREDNM] = (Word) prednm; \
maxfr[REDOIP] = (Word) doresethpfail; \
maxfr[PREVFR] = (Word) prevfr; \

View File

@@ -1,37 +1,37 @@
#define r1 count_usage(1, mr1)
#define r2 count_usage(2, mr7)
#define r3 count_usage(3, mr4)
#define r4 count_usage(4, mr2)
#define r5 count_usage(5, mr3)
#define r6 count_usage(6, mr33)
#define r7 count_usage(7, mr34)
#define r8 count_usage(8, mr35)
#define r9 count_usage(9, mr36)
#define r10 count_usage(10, mr10)
#define r11 count_usage(11, mr11)
#define r12 count_usage(12, mr12)
#define r13 count_usage(13, mr13)
#define r14 count_usage(14, mr14)
#define r15 count_usage(15, mr15)
#define r16 count_usage(16, mr16)
#define r17 count_usage(17, mr17)
#define r18 count_usage(18, mr18)
#define r19 count_usage(19, mr19)
#define r20 count_usage(20, mr20)
#define r21 count_usage(21, mr21)
#define r22 count_usage(22, mr22)
#define r23 count_usage(23, mr23)
#define r24 count_usage(24, mr24)
#define r25 count_usage(25, mr25)
#define r26 count_usage(26, mr26)
#define r27 count_usage(27, mr27)
#define r28 count_usage(28, mr28)
#define r29 count_usage(29, mr29)
#define r30 count_usage(30, mr30)
#define r31 count_usage(31, mr31)
#define r32 count_usage(32, mr32)
#define succip LVALUE_CAST(Code *, count_usage(SI_RN, mr6))
#define hp LVALUE_CAST(Word *, count_usage(HP_RN, mr5))
#define sp LVALUE_CAST(Word *, count_usage(SP_RN, mr0))
#define maxfr LVALUE_CAST(Word *, count_usage(MF_RN, mr9))
#define curfr LVALUE_CAST(Word *, count_usage(CF_RN, mr8))
#define r1 count_usage(1, mr0)
#define r2 count_usage(2, mr5)
#define r3 count_usage(3, mr6)
#define r4 count_usage(4, mr1)
#define r5 count_usage(5, mr9)
#define r6 count_usage(6, mr10)
#define r7 count_usage(7, mr11)
#define r8 count_usage(8, mr12)
#define r9 count_usage(9, mr13)
#define r10 count_usage(10, mr14)
#define r11 count_usage(11, mr15)
#define r12 count_usage(12, mr16)
#define r13 count_usage(13, mr17)
#define r14 count_usage(14, mr18)
#define r15 count_usage(15, mr19)
#define r16 count_usage(16, mr20)
#define r17 count_usage(17, mr21)
#define r18 count_usage(18, mr22)
#define r19 count_usage(19, mr23)
#define r20 count_usage(20, mr24)
#define r21 count_usage(21, mr25)
#define r22 count_usage(22, mr26)
#define r23 count_usage(23, mr27)
#define r24 count_usage(24, mr28)
#define r25 count_usage(25, mr29)
#define r26 count_usage(26, mr30)
#define r27 count_usage(27, mr31)
#define r28 count_usage(28, mr32)
#define r29 count_usage(29, mr33)
#define r30 count_usage(30, mr34)
#define r31 count_usage(31, mr35)
#define r32 count_usage(32, mr36)
#define succip LVALUE_CAST(Code *, count_usage(SI_RN, mr4))
#define hp LVALUE_CAST(Word *, count_usage(HP_RN, mr3))
#define sp LVALUE_CAST(Word *, count_usage(SP_RN, mr2))
#define maxfr LVALUE_CAST(Word *, count_usage(MF_RN, mr8))
#define curfr LVALUE_CAST(Word *, count_usage(CF_RN, mr7))