File:
[gforth] /
gforth /
peeprules.vmg
Revision
1.16:
download - view:
text,
annotated -
select for diffs
Sun Jan 25 12:35:58 2004 UTC (20 years, 1 month ago) by
anton
Branches:
MAIN
CVS tags:
HEAD
minore bugfixes (Makefile.in)
enabled 3-state stack caching for gforth-fast and gforth-native
bugfixes (EXECUTE and PERFORM; spbREG use)
explicit register allocation to spb for gforth-native, but not gforth-fast
Due to the shortest-path algorithm this means that gforth-fast uses only
S0 and S1, not S2, so we could keep that.
However, we probably want to use more states etc. for other
architectures, so we may want to have a way to select different
cache.vmg and different peeprules.vmg files for different
archs, builds, and binaries.
1: \ Gforth superinstructions and stack caching replicas
2:
3: \ Copyright (C) 2003 Free Software Foundation, Inc.
4:
5: \ This file is part of Gforth.
6:
7: \ Gforth is free software; you can redistribute it and/or
8: \ modify it under the terms of the GNU General Public License
9: \ as published by the Free Software Foundation; either version 2
10: \ of the License, or (at your option) any later version.
11:
12: \ This program is distributed in the hope that it will be useful,
13: \ but WITHOUT ANY WARRANTY; without even the implied warranty of
14: \ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15: \ GNU General Public License for more details.
16:
17: \ You should have received a copy of the GNU General Public License
18: \ along with this program; if not, write to the Free Software
19: \ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
20:
21: \ taken from David Gregg's EuroForth 2001 paper; omitted some sequences
22: \ eliminated for gforth-native:
23: \ 1) sequences containing call
24: \ 2) sequences with immediate arguments not in the first position
25:
26: \ no new prim-nums for supers and state-replicas
27: \E ' noop is output-c-prim-num
28:
29: super1 = lit +
30: \ super2 = lit call
31: super3 = lit @
32: \ super4 = lit @ call
33: \ super5 = @ call
34: super6 = lit !
35: \ super7 = lit lit
36: \ super8 = dup lit
37: \ super9 = ! lit
38: \ super10 = lit ! lit
39: super11 = ! ;s
40: super12 = lit + @
41: \ super13 = 0= ?branch
42: \ super14 = dup call
43: super15 = useraddr @
44: super16 = + @
45: \ super17 = lit @ ?branch
46: super18 = lit ! ;s
47: super19 = lit @ and
48: \ super20 = = ?branch
49: \ super21 = lit lit !
50: \ super22 = @ ?branch
51: super23 = useraddr !
52: \ super24 = dup ?branch
53: super25 = @ ;s
54: super26 = lit @ +
55: super27 = dup @
56:
57: \F 0 [if]
58:
59: \ \E prim-states ;s \ 2950159
60: \E prim-states lit \ 2802835
61: \ \E prim-states call \ 2558373
62: \E prim-states @ \ 2244351
63: \E branch-states ?branch \ 1134432
64: \E prim-states lit@ \ 1051813
65: \E prim-states swap \ 737988
66: \E S0 S2 state-prim swap
67: \E S1 S2 state-prim swap
68: \ \E S2 S3 state-prim swap
69: \ \E S3 S2 state-prim swap
70: \E prim-states c@ \ 651406
71: \E prim-states = \ 590006
72: \E prim-states 0= \ 584487
73: \E prim-states dup \ 566855
74: \E S0 S1 state-prim dup
75: \E prim-states + \ 566003
76: \E prim-states i \ 502908
77: \E prim-states +! \ 448925
78: \ \E prim-states branch \ 409561
79: \ \E prim-states (loop) \ 379646
80: \ \E prim-states lp! \ 326743
81: \E prim-states and \ 309427
82: \E prim-states useraddr \ 303254
83: \E prim-states over \ 283556
84: \E S0 S1 state-prim over
85: \E S1 S2 state-prim over
86: \E S2 S1 state-prim over
87: \ \E S3 S2 state-prim over
88: \E prim-states negate \ 257417
89: \E prim-states cells \ 254644
90: \E prim-states rot \ 220273
91: \ \E S3 S1 state-prim rot
92: \ \E S2 S3 state-prim rot
93: \ \E S1 S3 state-prim rot
94: \ \E S0 S3 state-prim rot
95: \E prim-states ! \ 218672
96: \E prim-states 2dup \ 211315
97: \E S0 S1 state-prim 2dup
98: \E S0 S2 state-prim 2dup
99: \ \E S1 S3 state-prim 2dup
100: \E S2 S2 state-prim 2dup
101: \ \E S3 S1 state-prim 2dup
102: \ \E branch-states lit-perform \ 188331
103: \E prim-states <> \ 179502
104: \E prim-states c! \ 179332
105: \E prim-states lit+ \ 179156
106: \E prim-states drop \ 173995
107: \E S0 S0 state-prim drop
108: \E prim-states lshift \ 164671
109: \E prim-states /mod \ 164670
110: \E prim-states >r \ 145247
111: \E prim-states r> \ 133792
112: \ \E branch-states does-exec \ 120944
113: \E prim-states cell+ \ 116183
114: \E prim-states lp+!# \ 106697 \ --
115: \E prim-states - \ 106245
116: \E prim-states unloop \ 98938 \ --
117: \E prim-states lp+ \ 87190 \ --
118: \E prim-states >= \ 80994
119: \E prim-states tuck \ 78696
120: \E S2 S2 state-prim tuck
121: \E prim-states /string \ 78595
122: \E prim-states char+ \ 77542
123: \ \E prim-states ?dup \ 76850
124: \E prim-states @local0 \ 75322
125: \E prim-states min \ 75264
126: \ \E prim-states compare \ 65603
127: \E branch-states (u+do) \ 63823
128: \ \E prim-states (read-line) \ 63823
129: \E prim-states 2>r \ 62646
130: \E prim-states 2r> \ 62644
131: \E prim-states 2r@ \ 61338
132: \E prim-states 2@ \ 61067
133: \E prim-states nip \ 54961
134: \E S1 S1 state-prim nip
135: \E S0 S1 state-prim nip
136: \E prim-states within \ 51075
137: \E prim-states 1- \ 47441
138: \ \E branch-states execute \ 46674 \ !! if_spTOS problem
139: \E prim-states lp- \ 45385
140: \ \E branch-states perform \ 38756 \ !! if_spTOS problem
141: \E prim-states xor \ 35599
142: \E prim-states @local# \ 34586
143: \ \E prim-states pick \ 32015
144: \E prim-states u> \ 29373
145: \E prim-states -rot \ 26211
146: \ \E S3 S2 state-prim -rot
147: \ \E S1 S3 state-prim -rot
148: \E prim-states 2drop \ 25418
149: \E S0 S0 state-prim 2drop
150: \E S1 S0 state-prim 2drop
151: \ \E prim-states (tablelfind) \ 22243
152: \E prim-states or \ 21587
153: \E prim-states @local2 \ 20859
154: \E branch-states (+loop) \ 20006
155: \E prim-states 1+ \ 17944
156: \E prim-states rdrop \ 17902
157: \E branch-states (?do) \ 17348
158: \E prim-states max \ 16948
159: \E prim-states 2* \ 15606
160: \ \E prim-states filename-match \ 15003
161: \ \E prim-states (listlfind) \ 13074
162: \ \E prim-states sp@ \ 12741
163: \ \E prim-states fp@ \ 12384
164: \ \E prim-states um/mod \ 12288
165: \E prim-states 2! \ 11904
166: \ \E prim-states fill \ 10781
167: \ \E prim-states (parse-white) \ 10624
168: \E branch-states (do) \ 10516
169: \ \E prim-states (hashkey1) \ 10239
170: \E prim-states u< \ 9602
171: \ \E prim-states write-file \ 8973
172: \E prim-states count \ 8873
173: \ \E prim-states rp@ \ 8410
174: \E prim-states 0< \ 8380
175: \E prim-states < \ 7741
176: \E prim-states @local1 \ 7458
177: \ \E prim-states move \ 7050
178: \E prim-states u>= \ 6138
179: \E branch-states (+do) \ 5863
180: \ \E prim-states va-return-double \ 5517
181: \E prim-states um* \ 5342
182: \E prim-states toupper \ 3517
183: \ \E prim-states f@local1 \ 2907
184: \ \E prim-states rp! \ 2859
185: \ \E prim-states ?dup-?branch \ 2829
186: \E prim-states d+ \ 2671
187: \ \E prim-states ftuck \ 2636
188: \ \E prim-states read-file \ 2623
189: \ \E prim-states ms \ 2454
190: \ \E prim-states (s+loop) \ 2429
191: \ \E prim-states allocate \ 1869
192: \E prim-states * \ 1520
193: \E prim-states 0<> \ 925
194: \ \E prim-states noop \ 715
195: \E prim-states aligned \ 714
196: \E prim-states u<= \ 684
197: \E prim-states i' \ 684
198: \E prim-states > \ 411
199: \ \E prim-states (hashlfind) \ 397
200: \E prim-states 2swap \ 336
201: \ \E S0 S3 state-prim 2swap
202: \ \E S1 S3 state-prim 2swap
203: \E prim-states laddr# \ 335
204: \ \E prim-states faxpy \ 286
205: \ \E prim-states (next) \ 272
206: \ \E prim-states (-loop)-lp+!# \ 248
207: \E prim-states <= \ 199
208: \E prim-states invert \ 170
209: \E branch-states (-do) \ 169
210: \E prim-states 2over \ 165
211: \E S0 S2 state-prim 2over
212: \ \E S1 S3 state-prim 2over
213: \E prim-states under+ \ 154
214: \E prim-states dnegate \ 128
215: \E prim-states u<> \ 128
216: \E prim-states 0> \ 122
217: \ \E prim-states (loop)-lp+!# \ 118
218: \E prim-states j \ 117
219: \E prim-states float+ \ 78
220: \ \E prim-states (for) \ 68
221: \E prim-states 2rdrop \ 60 \ --
222: \ \E prim-states f! \ 14
223: \E prim-states >l \ 14
224: \ \E prim-states close-file \ 5
225: \ \E prim-states call-c \ 4
226: \ \E prim-states reposition-file \ 3
227: \E prim-states / \ 3
228: \ \E prim-states resize-file \ 2
229: \ \E prim-states free \ 2
230: \E prim-states 2/ \ 2
231: \ \E prim-states up! \ 1
232: \ \E prim-states stdin \ 1
233: \ \E prim-states key?-file \ 1
234: \ \E prim-states flush-icache \ 1
235: \ \E prim-states cmove \ 1
236: \ \E prim-states (system) \ 1
237:
238: \E ' noop is output-nextp0
239: \E ' noop is output-nextp1
240:
241: \E gen-transitions noop
242:
243: \F [ENDIF]
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>