~ubuntu-branches/ubuntu/quantal/gclcvs/quantal

« back to all changes in this revision

Viewing changes to cmpnew/gcl_cmpopt.lsp

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2004-06-24 15:13:46 UTC
  • Revision ID: james.westby@ubuntu.com-20040624151346-xh0xaaktyyp7aorc
Tags: 2.7.0-26
C_GC_OFFSET is 2 on m68k-linux

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
(in-package 'compiler)
 
2
 
 
3
;; The optimizers have been redone to allow more flags
 
4
;; The old style optimizations  correspond to the first 2
 
5
;; flags.  
 
6
;; ( arglist result-type flags {string | function})
 
7
 
 
8
;; meaning of the flags slot.
 
9
;       '((allocates-new-storage ans); might invoke gbc
 
10
;        (side-effect-p set)        ; no effect on arguments
 
11
;        (constantp)                ; always returns same result,
 
12
;                                   ;double eval ok.
 
13
;        (result-type-from-args rfa); if passed args of matching
 
14
;                                       ;type result is of result type
 
15
;         (is)))                     ;; extends the `integer stack'.
 
16
;    (cond ((member flag v :test 'eq)
 
17
;
 
18
;;;   valid properties are 'inline-always 'inline-safe 'inline-unsafe
 
19
 
 
20
;; Note:   The order of the properties is important, since the first
 
21
;; one whose arg types and result type can be matched will be chosen.
 
22
 
 
23
 
 
24
(or (fboundp 'flags) (load "../cmpnew/cmpeval.lsp"))
 
25
 
 
26
 
 
27
;;BOOLE3
 
28
 (push '((fixnum fixnum fixnum) fixnum #.(flags rfa)INLINE-BOOLE3)
 
29
   (get 'boole3 'inline-always))
 
30
 
 
31
;;FP-OKP
 
32
 (push '((t) boolean #.(flags set)
 
33
  "@0;(type_of(#0)==t_stream? ((#0)->sm.sm_fp)!=0: 0 )")
 
34
   (get 'fp-okp 'inline-unsafe))
 
35
(push '((stream) boolean #.(flags set)"((#0)->sm.sm_fp)!=0")
 
36
   (get 'fp-okp 'inline-unsafe))
 
37
 
 
38
;;LDB1
 
39
 (push '((fixnum fixnum fixnum) fixnum #.(flags)
 
40
  "((((~(-1 << (#0))) << (#1)) & (#2)) >> (#1))")
 
41
   (get 'si::ldb1 'inline-always))
 
42
 
 
43
;;LONG-FLOAT-P
 
44
 (push '((t) boolean #.(flags)"type_of(#0)==t_longfloat")
 
45
   (get 'long-float-p 'inline-always))
 
46
 
 
47
;;SFEOF
 
48
 (push '((object) boolean #.(flags set)"(feof((#0)->sm.sm_fp))")
 
49
   (get 'sfeof 'inline-unsafe))
 
50
 
 
51
 
 
52
;;SGETC1
 
53
 (push '((object) fixnum #.(flags set rfa) "getc((#0)->sm.sm_fp)")
 
54
   (get 'sgetc1 'inline-unsafe))
 
55
 
 
56
;;SPUTC
 
57
 (push '((fixnum object) fixnum #.(flags set rfa)"(putc(#0,(#1)->sm.sm_fp))")
 
58
   (get 'sputc 'inline-unsafe))
 
59
(push '((character object) fixnum #.(flags set rfa)"(putc(#0,(#1)->sm.sm_fp))")
 
60
   (get 'sputc 'inline-unsafe))
 
61
 
 
62
;;READ-BYTE1
 
63
 (push '((t t) t #.(flags ans set)"read_byte1(#0,#1)")
 
64
   (get 'read-byte1 'inline-unsafe))
 
65
 
 
66
;;READ-CHAR1
 
67
 (push '((t t) t #.(flags ans set)"read_char1(#0,#1)")
 
68
   (get 'read-char1 'inline-unsafe))
 
69
 
 
70
;;SHIFT<<
 
71
 (push '((fixnum fixnum) fixnum #.(flags)"((#0) << (#1))")
 
72
   (get 'shift<< 'inline-always))
 
73
 
 
74
;;SHIFT>>
 
75
 (push '((fixnum fixnum) fixnum #.(flags set rfa)"((#0) >> (- (#1)))")
 
76
   (get 'shift>> 'inline-always))
 
77
 
 
78
;;SHORT-FLOAT-P
 
79
 (push '((t) boolean #.(flags)"type_of(#0)==t_shortfloat")
 
80
   (get 'short-float-p 'inline-always))
 
81
 
 
82
;;SIDE-EFFECTS
 
83
 (push '(nil t #.(flags ans set)"Ct")
 
84
   (get 'side-effects 'inline-always))
 
85
 
 
86
;;STACK-CONS
 
87
 (push '((fixnum t t) t #.(flags)
 
88
  "(STcons#0.t=t_cons,STcons#0.m=0,STcons#0.c_car=(#1),
 
89
              STcons#0.c_cdr=(#2),(object)&STcons#0)")
 
90
   (get 'stack-cons 'inline-always))
 
91
 
 
92
;;SUBLIS1
 
93
 (push '((t t t) t #.(flags ans set)SUBLIS1-INLINE)
 
94
   (get 'sublis1 'inline-always))
 
95
 
 
96
;;SYMBOL-LENGTH
 
97
 (push '((t) fixnum #.(flags rfa)
 
98
  "@0;(type_of(#0)==t_symbol ? (#0)->s.st_fillp :not_a_variable((#0)))")
 
99
   (get 'symbol-length 'inline-always))
 
100
 
 
101
;;VECTOR-TYPE
 
102
 (push '((t fixnum) boolean #.(flags)
 
103
  "@0;(type_of(#0) == t_vector && (#0)->v.v_elttype == (#1))")
 
104
   (get 'vector-type 'inline-always))
 
105
 
 
106
;;SYSTEM:ASET
 
107
 (push '((t t t) t #.(flags set)"aset1(#0,fixint(#1),#2)")
 
108
   (get 'system:aset 'inline-always))
 
109
(push '((t fixnum t) t #.(flags set)"aset1(#0,#1,#2)")
 
110
   (get 'system:aset 'inline-always))
 
111
(push '((t t t) t #.(flags set)"aset1(#0,fix(#1),#2)")
 
112
   (get 'system:aset 'inline-unsafe))
 
113
(push '(((array t) fixnum t) t #.(flags set)"(#0)->v.v_self[#1]= (#2)")
 
114
   (get 'system:aset 'inline-unsafe))
 
115
(push '(((array string-char) fixnum character) character #.(flags rfa set)"(#0)->ust.ust_self[#1]= (#2)")
 
116
   (get 'system:aset 'inline-unsafe))
 
117
(push '(((array fixnum) fixnum fixnum) fixnum #.(flags set rfa)"(#0)->fixa.fixa_self[#1]= (#2)")
 
118
   (get 'system:aset 'inline-unsafe))
 
119
(push '(((array signed-short) fixnum fixnum) fixnum #.(flags rfa set)"((short *)(#0)->ust.ust_self)[#1]=(#2)")
 
120
   (get 'system:aset 'inline-unsafe))
 
121
(push '(((array signed-char) fixnum fixnum) fixnum #.(flags rfa set)"((#0)->ust.ust_self)[#1]=(#2)")
 
122
   (get 'system:aset 'inline-unsafe))
 
123
(push '(((array unsigned-short) fixnum fixnum) fixnum #.(flags rfa set)
 
124
  "((unsigned short *)(#0)->ust.ust_self)[#1]=(#2)")
 
125
   (get 'system:aset 'inline-unsafe))
 
126
(push '(((array unsigned-char) fixnum fixnum) fixnum #.(flags rfa set)"((#0)->ust.ust_self)[#1]=(#2)")
 
127
   (get 'system:aset 'inline-unsafe))
 
128
(push '(((array short-float) fixnum short-float) short-float #.(flags rfa set)"(#0)->sfa.sfa_self[#1]= (#2)")
 
129
   (get 'system:aset 'inline-unsafe))
 
130
(push '(((array long-float) fixnum long-float) long-float #.(flags rfa set)"(#0)->lfa.lfa_self[#1]= (#2)")
 
131
   (get 'system:aset 'inline-unsafe))
 
132
(push '((t t t t) t #.(flags set)
 
133
  "@0;aset(#0,fix(#1)*(#0)->a.a_dims[1]+fix(#2),#3)")
 
134
   (get 'system:aset 'inline-unsafe))
 
135
(push '(((array t) fixnum fixnum t) t #.(flags set)
 
136
  "@0;(#0)->a.a_self[(#1)*(#0)->a.a_dims[1]+#2]= (#3)")
 
137
   (get 'system:aset 'inline-unsafe))
 
138
(push '(((array string-char) fixnum fixnum character) character
 
139
        #.(flags rfa set)
 
140
  "@0;(#0)->ust.ust_self[(#1)*(#0)->a.a_dims[1]+#2]= (#3)")
 
141
   (get 'system:aset 'inline-unsafe))
 
142
(push '(((array fixnum) fixnum fixnum fixnum) fixnum #.(flags set rfa)
 
143
  "@0;(#0)->fixa.fixa_self[(#1)*(#0)->a.a_dims[1]+#2]= (#3)")
 
144
   (get 'system:aset 'inline-unsafe))
 
145
(push '(((array short-float) fixnum fixnum short-float) short-float #.(flags rfa set)
 
146
  "@0;(#0)->sfa.sfa_self[(#1)*(#0)->a.a_dims[1]+#2]= (#3)")
 
147
   (get 'system:aset 'inline-unsafe))
 
148
(push '(((array long-float) fixnum fixnum long-float) long-float #.(flags rfa set)
 
149
  "@0;(#0)->lfa.lfa_self[(#1)*(#0)->a.a_dims[1]+#2]= (#3)")
 
150
   (get 'system:aset 'inline-unsafe))
 
151
 
 
152
;;SYSTEM:CHAR-SET
 
153
 (push '((t t t) t #.(flags set)"elt_set(#0,fixint(#1),#2)")
 
154
   (get 'system:char-set 'inline-always))
 
155
(push '((t fixnum t) t #.(flags set)"elt_set(#0,#1,#2)")
 
156
   (get 'system:char-set 'inline-always))
 
157
(push '((t t t) t #.(flags set)
 
158
  "@2;((#0)->ust.ust_self[fix(#1)]=char_code(#2),(#2))")
 
159
   (get 'system:char-set 'inline-unsafe))
 
160
(push '((t fixnum character) character #.(flags rfa set)"(#0)->ust.ust_self[#1]= (#2)")
 
161
   (get 'system:char-set 'inline-unsafe))
 
162
 
 
163
;;SYSTEM:ELT-SET
 
164
 (push '((t t t) t #.(flags set)"elt_set(#0,fixint(#1),#2)")
 
165
   (get 'system:elt-set 'inline-always))
 
166
(push '((t fixnum t) t #.(flags set)"elt_set(#0,#1,#2)")
 
167
   (get 'system:elt-set 'inline-always))
 
168
(push '((t t t) t #.(flags set)"elt_set(#0,fix(#1),#2)")
 
169
   (get 'system:elt-set 'inline-unsafe))
 
170
 
 
171
;;SYSTEM:FILL-POINTER-SET
 
172
 (push '((t fixnum) fixnum #.(flags rfa set)"((#0)->st.st_fillp)=(#1)")
 
173
   (get 'system:fill-pointer-set 'inline-unsafe))
 
174
 
 
175
;;SYSTEM:FIXNUMP
 
176
 (push '((t) boolean #.(flags)"type_of(#0)==t_fixnum")
 
177
   (get 'system:fixnump 'inline-always))
 
178
(push '((fixnum) boolean #.(flags)"1")
 
179
   (get 'system:fixnump 'inline-always))
 
180
 
 
181
;;SYSTEM:MV-REF
 
182
 (push '((fixnum) t #.(flags ans set)"(MVloc[(#0)])")
 
183
   (get 'system:mv-ref 'inline-always))
 
184
 
 
185
;;SYSTEM:PUTPROP
 
186
 (push '((t t t) t #.(flags set)"putprop(#0,#1,#2)")
 
187
   (get 'system:putprop 'inline-always))
 
188
 
 
189
;;SYSTEM:SCHAR-SET
 
190
 (push '((t t t) t #.(flags set)"elt_set(#0,fixint(#1),#2)")
 
191
   (get 'system:schar-set 'inline-always))
 
192
(push '((t fixnum t) t #.(flags set)"elt_set(#0,#1,#2)")
 
193
   (get 'system:schar-set 'inline-always))
 
194
(push '((t t t) t #.(flags set)
 
195
  "@2;((#0)->ust.ust_self[fix(#1)]=char_code(#2),(#2))")
 
196
   (get 'system:schar-set 'inline-unsafe))
 
197
(push '((t fixnum character) character #.(flags set rfa)"(#0)->ust.ust_self[#1]= (#2)")
 
198
   (get 'system:schar-set 'inline-unsafe))
 
199
 
 
200
;;SYSTEM:SET-MV
 
201
 (push '((fixnum t) t #.(flags ans set)"(MVloc[(#0)]=(#1))")
 
202
   (get 'system:set-mv 'inline-always))
 
203
 
 
204
;;SYSTEM:SPUTPROP
 
205
 (push '((t t t) t #.(flags set)"sputprop(#0,#1,#2)")
 
206
   (get 'system:sputprop 'inline-always))
 
207
 
 
208
;;SYSTEM:STRUCTURE-DEF
 
209
 (push '((t) t #.(flags)"(#0)->str.str_def")
 
210
   (get 'system:structure-def 'inline-unsafe))
 
211
 
 
212
;;SYSTEM:STRUCTURE-REF
 
213
 (push '((t t fixnum) t #.(flags ans)"structure_ref(#0,#1,#2)")
 
214
   (get 'system:structure-ref 'inline-always))
 
215
 
 
216
;;SYSTEM:STRUCTURE-SET
 
217
 (push '((t t fixnum t) t #.(flags set)"structure_set(#0,#1,#2,#3)")
 
218
   (get 'system:structure-set 'inline-always))
 
219
 
 
220
;;SYSTEM:STRUCTUREP
 
221
 (push '((t) boolean #.(flags)"type_of(#0)==t_structure")
 
222
   (get 'system:structurep 'inline-always))
 
223
 
 
224
;;SYSTEM:SVSET
 
225
 (push '((t t t) t #.(flags set)"aset1(#0,fixint(#1),#2)")
 
226
   (get 'system:svset 'inline-always))
 
227
(push '((t fixnum t) t #.(flags set)"aset1(#0,#1,#2)")
 
228
   (get 'system:svset 'inline-always))
 
229
(push '((t t t) t #.(flags set)"((#0)->v.v_self[fix(#1)]=(#2))")
 
230
   (get 'system:svset 'inline-unsafe))
 
231
(push '((t fixnum t) t #.(flags set)"(#0)->v.v_self[#1]= (#2)")
 
232
   (get 'system:svset 'inline-unsafe))
 
233
 
 
234
;;*
 
235
(push '((t t) t #.(flags ans)"number_times(#0,#1)")
 
236
   (get '* 'inline-always))
 
237
(push '((fixnum-float fixnum-float) short-float #.(flags)"(double)(#0)*(double)(#1)")
 
238
   (get '* 'inline-always))
 
239
(push '((fixnum-float fixnum-float) long-float #.(flags)"(double)(#0)*(double)(#1)")
 
240
   (get '* 'inline-always))
 
241
(push '((long-float long-float) long-float #.(flags rfa)"(double)(#0)*(double)(#1)")
 
242
   (get '* 'inline-always))
 
243
(push '((short-float short-float) short-float #.(flags rfa)"(#0)*(#1)")
 
244
   (get '* 'inline-always))
 
245
 
 
246
 
 
247
(push '((fixnum fixnum) fixnum #.(flags)"(#0)*(#1)")
 
248
   (get '* 'inline-always))
 
249
 
 
250
 
 
251
;;+
 
252
(push '((t t) t #.(flags ans)"number_plus(#0,#1)")
 
253
   (get '+ 'inline-always))
 
254
(push '((fixnum-float fixnum-float) short-float #.(flags)"(double)(#0)+(double)(#1)")
 
255
   (get '+ 'inline-always))
 
256
(push '((fixnum-float fixnum-float) long-float #.(flags)"(double)(#0)+(double)(#1)")
 
257
   (get '+ 'inline-always))
 
258
(push '((long-float long-float) long-float #.(flags rfa)"(double)(#0)+(double)(#1)")
 
259
   (get '+ 'inline-always))
 
260
(push '((short-float short-float) short-float #.(flags rfa)"(#0)+(#1)")
 
261
   (get '+ 'inline-always))
 
262
 
 
263
 
 
264
(push '((fixnum fixnum) fixnum #.(flags)"(#0)+(#1)")
 
265
   (get '+ 'inline-always))
 
266
 
 
267
 
 
268
;;-
 
269
 (push '((t) t #.(flags ans)"number_negate(#0)")
 
270
   (get '- 'inline-always))
 
271
(push '((t t) t #.(flags ans)"number_minus(#0,#1)")
 
272
   (get '- 'inline-always))
 
273
(push '((fixnum-float fixnum-float) short-float #.(flags)"(double)(#0)-(double)(#1)")
 
274
   (get '- 'inline-always))
 
275
(push '((fixnum-float) short-float #.(flags)"-(double)(#0)")
 
276
   (get '- 'inline-always))
 
277
(push '((fixnum-float) long-float #.(flags)"-(double)(#0)")
 
278
   (get '- 'inline-always))
 
279
(push '((fixnum-float fixnum-float) long-float #.(flags)"(double)(#0)-(double)(#1)")
 
280
   (get '- 'inline-always))
 
281
(push '((long-float long-float) long-float #.(flags rfa)"(double)(#0)-(double)(#1)")
 
282
   (get '- 'inline-always))
 
283
(push '((short-float short-float) short-float #.(flags rfa)"(#0)-(#1)")
 
284
   (get '- 'inline-always))
 
285
 
 
286
 
 
287
(push '((fixnum fixnum) fixnum #.(flags)"(#0)-(#1)")
 
288
   (get '- 'inline-always))
 
289
(push '((fixnum) fixnum #.(flags)"-(#0)")
 
290
   (get '- 'inline-always))
 
291
 
 
292
 
 
293
;;/
 
294
(push '((fixnum fixnum) fixnum #.(flags)"(#0)/(#1)")
 
295
   (get '/ 'inline-always))
 
296
 (push '((fixnum-float fixnum-float) short-float #.(flags)"(double)(#0)/(double)(#1)")
 
297
   (get '/ 'inline-always))
 
298
(push '((fixnum-float fixnum-float) long-float #.(flags)"(double)(#0)/(double)(#1)")
 
299
   (get '/ 'inline-always))
 
300
(push '((long-float long-float) long-float #.(flags rfa)"(double)(#0)/(double)(#1)")
 
301
   (get '/ 'inline-always))
 
302
(push '((short-float short-float) short-float #.(flags rfa)"(#0)/(#1)")
 
303
   (get '/ 'inline-always))
 
304
 
 
305
;;/=
 
306
 (push '((t t) boolean #.(flags)"number_compare(#0,#1)!=0")
 
307
   (get '/= 'inline-always))
 
308
(push '((fixnum-float fixnum-float) boolean #.(flags)"(#0)!=(#1)")
 
309
   (get '/= 'inline-always))
 
310
 
 
311
;;1+
 
312
 (push '((t) t #.(flags ans)"one_plus(#0)")
 
313
   (get '1+ 'inline-always))
 
314
(push '((fixnum-float) short-float #.(flags)"(double)(#0)+1")
 
315
   (get '1+ 'inline-always))
 
316
(push '((fixnum-float) long-float #.(flags)"(double)(#0)+1")
 
317
   (get '1+ 'inline-always))
 
318
(push '((fixnum) fixnum #.(flags)"(#0)+1")
 
319
   (get '1+ 'inline-always))
 
320
 
 
321
 
 
322
;;1-
 
323
 (push '((t) t #.(flags ans)"one_minus(#0)")
 
324
   (get '1- 'inline-always))
 
325
(push '((fixnum) fixnum #.(flags)"(#0)-1")
 
326
   (get '1- 'inline-always))
 
327
(push '((fixnum-float) short-float #.(flags)"(double)(#0)-1")
 
328
   (get '1- 'inline-always))
 
329
(push '((fixnum-float) long-float #.(flags)"(double)(#0)-1")
 
330
   (get '1- 'inline-always))
 
331
 
 
332
;;<
 
333
 (push '((t t) boolean #.(flags)"number_compare(#0,#1)<0")
 
334
   (get '< 'inline-always))
 
335
(push '((fixnum-float fixnum-float) boolean #.(flags)"(#0)<(#1)")
 
336
   (get '< 'inline-always))
 
337
 
 
338
;;compiler::objlt
 
339
 (push '((t t) boolean #.(flags)"((object)(#0))<((object)(#1))")
 
340
   (get 'si::objlt 'inline-always))
 
341
 
 
342
;;<=
 
343
 (push '((t t) boolean #.(flags)"number_compare(#0,#1)<=0")
 
344
   (get '<= 'inline-always))
 
345
 
 
346
(push '((fixnum-float fixnum-float) boolean #.(flags)"(#0)<=(#1)")
 
347
   (get '<= 'inline-always))
 
348
 
 
349
;;=
 
350
 (push '((t t) boolean #.(flags)"number_compare(#0,#1)==0")
 
351
   (get '= 'inline-always))
 
352
 
 
353
(push '((fixnum-float fixnum-float) boolean #.(flags)"(#0)==(#1)")
 
354
   (get '= 'inline-always))
 
355
 
 
356
;;>
 
357
 (push '((t t) boolean #.(flags)"number_compare(#0,#1)>0")
 
358
   (get '> 'inline-always))
 
359
 
 
360
(push '((fixnum-float fixnum-float) boolean #.(flags)"(#0)>(#1)")
 
361
   (get '> 'inline-always))
 
362
 
 
363
;;>=
 
364
 (push '((t t) boolean #.(flags)"number_compare(#0,#1)>=0")
 
365
   (get '>= 'inline-always))
 
366
(push '((fixnum-float fixnum-float) boolean #.(flags)"(#0)>=(#1)")
 
367
   (get '>= 'inline-always))
 
368
 
 
369
;;APPEND
 
370
 (push '((t t) t #.(flags ans)"append(#0,#1)")
 
371
   (get 'append 'inline-always))
 
372
 
 
373
;;AREF
 
374
 (push '((t t) t #.(flags ans)"aref1(#0,fixint(#1))")
 
375
   (get 'aref 'inline-always))
 
376
(push '((t fixnum) t #.(flags ans)"aref1(#0,#1)")
 
377
   (get 'aref 'inline-always))
 
378
(push '((t t) t #.(flags ans)"aref1(#0,fix(#1))")
 
379
   (get 'aref 'inline-unsafe))
 
380
(push '(((array t) fixnum) t #.(flags)"(#0)->v.v_self[#1]")
 
381
   (get 'aref 'inline-unsafe))
 
382
(push '(((array string-char) fixnum) character #.(flags rfa)"(#0)->ust.ust_self[#1]")
 
383
   (get 'aref 'inline-unsafe))
 
384
(push '(((array fixnum) fixnum) fixnum #.(flags rfa)"(#0)->fixa.fixa_self[#1]")
 
385
   (get 'aref 'inline-unsafe))
 
386
(push '(((array unsigned-char) fixnum) fixnum #.(flags rfa)"(#0)->ust.ust_self[#1]")
 
387
   (get 'aref 'inline-unsafe))
 
388
(push '(((array signed-char) fixnum) fixnum #.(flags rfa)"SIGNED_CHAR((#0)->ust.ust_self[#1])")
 
389
   (get 'aref 'inline-unsafe))
 
390
(push '(((array unsigned-short) fixnum) fixnum #.(flags rfa)
 
391
  "((unsigned short *)(#0)->ust.ust_self)[#1]")
 
392
   (get 'aref 'inline-unsafe))
 
393
(push '(((array signed-short) fixnum) fixnum #.(flags rfa)"((short *)(#0)->ust.ust_self)[#1]")
 
394
   (get 'aref 'inline-unsafe))
 
395
(push '(((array short-float) fixnum) short-float #.(flags rfa)"(#0)->sfa.sfa_self[#1]")
 
396
   (get 'aref 'inline-unsafe))
 
397
(push '(((array long-float) fixnum) long-float #.(flags rfa)"(#0)->lfa.lfa_self[#1]")
 
398
   (get 'aref 'inline-unsafe))
 
399
(push '((t t t) t #.(flags ans)
 
400
  "@0;aref(#0,fix(#1)*(#0)->a.a_dims[1]+fix(#2))")
 
401
   (get 'aref 'inline-unsafe))
 
402
(push '(((array t) fixnum fixnum) t #.(flags )
 
403
  "@0;(#0)->a.a_self[(#1)*(#0)->a.a_dims[1]+#2]")
 
404
   (get 'aref 'inline-unsafe))
 
405
(push '(((array string-char) fixnum fixnum) character #.(flags rfa)
 
406
  "@0;(#0)->ust.ust_self[(#1)*(#0)->a.a_dims[1]+#2]")
 
407
   (get 'aref 'inline-unsafe))
 
408
(push '(((array fixnum) fixnum fixnum) fixnum #.(flags rfa)
 
409
  "@0;(#0)->fixa.fixa_self[(#1)*(#0)->a.a_dims[1]+#2]")
 
410
   (get 'aref 'inline-unsafe))
 
411
(push '(((array short-float) fixnum fixnum) short-float #.(flags rfa)
 
412
  "@0;(#0)->sfa.sfa_self[(#1)*(#0)->a.a_dims[1]+#2]")
 
413
   (get 'aref 'inline-unsafe))
 
414
(push '(((array long-float) fixnum fixnum) long-float #.(flags rfa)
 
415
  "@0;(#0)->lfa.lfa_self[(#1)*(#0)->a.a_dims[1]+#2]")
 
416
   (get 'aref 'inline-unsafe))
 
417
 
 
418
;;ARRAY-TOTAL-SIZE
 
419
 (push '((t) fixnum #.(flags rfa)"((#0)->st.st_dim)")
 
420
   (get 'array-total-size 'inline-unsafe))
 
421
 
 
422
;;ARRAYP
 
423
 (push '((t) boolean #.(flags)
 
424
  "@0;type_of(#0)==t_array||
 
425
type_of(#0)==t_vector||
 
426
type_of(#0)==t_string||
 
427
type_of(#0)==t_bitvector")
 
428
   (get 'arrayp 'inline-always))
 
429
 
 
430
;;ATOM
 
431
 (push '((t) boolean #.(flags)"type_of(#0)!=t_cons")
 
432
   (get 'atom 'inline-always))
 
433
 
 
434
;;BIT-VECTOR-P
 
435
 (push '((t) boolean #.(flags)"(type_of(#0)==t_bitvector)")
 
436
   (get 'bit-vector-p 'inline-always))
 
437
 
 
438
;;BOUNDP
 
439
 (push '((t) boolean #.(flags)"(#0)->s.s_dbind!=OBJNULL")
 
440
   (get 'boundp 'inline-unsafe))
 
441
 
 
442
;;CAAAAR
 
443
 (push '((t) t #.(flags)"caaaar(#0)")
 
444
   (get 'caaaar 'inline-safe))
 
445
(push '((t) t #.(flags)"CMPcaaaar(#0)")
 
446
   (get 'caaaar 'inline-unsafe))
 
447
 
 
448
;;CAAADR
 
449
 (push '((t) t #.(flags)"caaadr(#0)")
 
450
   (get 'caaadr 'inline-safe))
 
451
(push '((t) t #.(flags)"CMPcaaadr(#0)")
 
452
   (get 'caaadr 'inline-unsafe))
 
453
 
 
454
;;CAAAR
 
455
 (push '((t) t #.(flags)"caaar(#0)")
 
456
   (get 'caaar 'inline-safe))
 
457
(push '((t) t #.(flags)"CMPcaaar(#0)")
 
458
   (get 'caaar 'inline-unsafe))
 
459
 
 
460
;;CAADAR
 
461
 (push '((t) t #.(flags)"caadar(#0)")
 
462
   (get 'caadar 'inline-safe))
 
463
(push '((t) t #.(flags)"CMPcaadar(#0)")
 
464
   (get 'caadar 'inline-unsafe))
 
465
 
 
466
;;CAADDR
 
467
 (push '((t) t #.(flags)"caaddr(#0)")
 
468
   (get 'caaddr 'inline-safe))
 
469
(push '((t) t #.(flags)"CMPcaaddr(#0)")
 
470
   (get 'caaddr 'inline-unsafe))
 
471
 
 
472
;;CAADR
 
473
 (push '((t) t #.(flags)"caadr(#0)")
 
474
   (get 'caadr 'inline-safe))
 
475
(push '((t) t #.(flags)"CMPcaadr(#0)")
 
476
   (get 'caadr 'inline-unsafe))
 
477
 
 
478
;;CAAR
 
479
 (push '((t) t #.(flags)"caar(#0)")
 
480
   (get 'caar 'inline-safe))
 
481
(push '((t) t #.(flags)"CMPcaar(#0)")
 
482
   (get 'caar 'inline-unsafe))
 
483
 
 
484
;;CADAAR
 
485
 (push '((t) t #.(flags)"cadaar(#0)")
 
486
   (get 'cadaar 'inline-safe))
 
487
(push '((t) t #.(flags)"CMPcadaar(#0)")
 
488
   (get 'cadaar 'inline-unsafe))
 
489
 
 
490
;;CADADR
 
491
 (push '((t) t #.(flags)"cadadr(#0)")
 
492
   (get 'cadadr 'inline-safe))
 
493
(push '((t) t #.(flags)"CMPcadadr(#0)")
 
494
   (get 'cadadr 'inline-unsafe))
 
495
 
 
496
;;CADAR
 
497
 (push '((t) t #.(flags)"cadar(#0)")
 
498
   (get 'cadar 'inline-safe))
 
499
(push '((t) t #.(flags)"CMPcadar(#0)")
 
500
   (get 'cadar 'inline-unsafe))
 
501
 
 
502
;;CADDAR
 
503
 (push '((t) t #.(flags)"caddar(#0)")
 
504
   (get 'caddar 'inline-safe))
 
505
(push '((t) t #.(flags)"CMPcaddar(#0)")
 
506
   (get 'caddar 'inline-unsafe))
 
507
 
 
508
;;CADDDR
 
509
 (push '((t) t #.(flags)"cadddr(#0)")
 
510
   (get 'cadddr 'inline-safe))
 
511
(push '((t) t #.(flags)"CMPcadddr(#0)")
 
512
   (get 'cadddr 'inline-unsafe))
 
513
 
 
514
;;CADDR
 
515
 (push '((t) t #.(flags)"caddr(#0)")
 
516
   (get 'caddr 'inline-safe))
 
517
(push '((t) t #.(flags)"CMPcaddr(#0)")
 
518
   (get 'caddr 'inline-unsafe))
 
519
 
 
520
;;CADR
 
521
 (push '((t) t #.(flags)"cadr(#0)")
 
522
   (get 'cadr 'inline-safe))
 
523
(push '((t) t #.(flags)"CMPcadr(#0)")
 
524
   (get 'cadr 'inline-unsafe))
 
525
 
 
526
;;CAR
 
527
 (push '((t) t #.(flags)"car(#0)")
 
528
   (get 'car 'inline-safe))
 
529
(push '((t) t #.(flags)"CMPcar(#0)")
 
530
   (get 'car 'inline-unsafe))
 
531
 
 
532
;;CDAAAR
 
533
 (push '((t) t #.(flags)"cdaaar(#0)")
 
534
   (get 'cdaaar 'inline-safe))
 
535
(push '((t) t #.(flags)"CMPcdaaar(#0)")
 
536
   (get 'cdaaar 'inline-unsafe))
 
537
 
 
538
;;CDAADR
 
539
 (push '((t) t #.(flags)"cdaadr(#0)")
 
540
   (get 'cdaadr 'inline-safe))
 
541
(push '((t) t #.(flags)"CMPcdaadr(#0)")
 
542
   (get 'cdaadr 'inline-unsafe))
 
543
 
 
544
;;CDAAR
 
545
 (push '((t) t #.(flags)"cdaar(#0)")
 
546
   (get 'cdaar 'inline-safe))
 
547
(push '((t) t #.(flags)"CMPcdaar(#0)")
 
548
   (get 'cdaar 'inline-unsafe))
 
549
 
 
550
;;CDADAR
 
551
 (push '((t) t #.(flags)"cdadar(#0)")
 
552
   (get 'cdadar 'inline-safe))
 
553
(push '((t) t #.(flags)"CMPcdadar(#0)")
 
554
   (get 'cdadar 'inline-unsafe))
 
555
 
 
556
;;CDADDR
 
557
 (push '((t) t #.(flags)"cdaddr(#0)")
 
558
   (get 'cdaddr 'inline-safe))
 
559
(push '((t) t #.(flags)"CMPcdaddr(#0)")
 
560
   (get 'cdaddr 'inline-unsafe))
 
561
 
 
562
;;CDADR
 
563
 (push '((t) t #.(flags)"cdadr(#0)")
 
564
   (get 'cdadr 'inline-safe))
 
565
(push '((t) t #.(flags)"CMPcdadr(#0)")
 
566
   (get 'cdadr 'inline-unsafe))
 
567
 
 
568
;;CDAR
 
569
 (push '((t) t #.(flags)"cdar(#0)")
 
570
   (get 'cdar 'inline-safe))
 
571
(push '((t) t #.(flags)"CMPcdar(#0)")
 
572
   (get 'cdar 'inline-unsafe))
 
573
 
 
574
;;CDDAAR
 
575
 (push '((t) t #.(flags)"cddaar(#0)")
 
576
   (get 'cddaar 'inline-safe))
 
577
(push '((t) t #.(flags)"CMPcddaar(#0)")
 
578
   (get 'cddaar 'inline-unsafe))
 
579
 
 
580
;;CDDADR
 
581
 (push '((t) t #.(flags)"cddadr(#0)")
 
582
   (get 'cddadr 'inline-safe))
 
583
(push '((t) t #.(flags)"CMPcddadr(#0)")
 
584
   (get 'cddadr 'inline-unsafe))
 
585
 
 
586
;;CDDAR
 
587
 (push '((t) t #.(flags)"cddar(#0)")
 
588
   (get 'cddar 'inline-safe))
 
589
(push '((t) t #.(flags)"CMPcddar(#0)")
 
590
   (get 'cddar 'inline-unsafe))
 
591
 
 
592
;;CDDDAR
 
593
 (push '((t) t #.(flags)"cdddar(#0)")
 
594
   (get 'cdddar 'inline-safe))
 
595
(push '((t) t #.(flags)"CMPcdddar(#0)")
 
596
   (get 'cdddar 'inline-unsafe))
 
597
 
 
598
;;CDDDDR
 
599
 (push '((t) t #.(flags)"cddddr(#0)")
 
600
   (get 'cddddr 'inline-safe))
 
601
(push '((t) t #.(flags)"CMPcddddr(#0)")
 
602
   (get 'cddddr 'inline-unsafe))
 
603
 
 
604
;;CDDDR
 
605
 (push '((t) t #.(flags)"cdddr(#0)")
 
606
   (get 'cdddr 'inline-safe))
 
607
(push '((t) t #.(flags)"CMPcdddr(#0)")
 
608
   (get 'cdddr 'inline-unsafe))
 
609
 
 
610
;;CDDR
 
611
 (push '((t) t #.(flags)"cddr(#0)")
 
612
   (get 'cddr 'inline-safe))
 
613
(push '((t) t #.(flags)"CMPcddr(#0)")
 
614
   (get 'cddr 'inline-unsafe))
 
615
 
 
616
;;CDR
 
617
 (push '((t) t #.(flags)"cdr(#0)")
 
618
   (get 'cdr 'inline-safe))
 
619
(push '((t) t #.(flags)"CMPcdr(#0)")
 
620
   (get 'cdr 'inline-unsafe))
 
621
 
 
622
;;CHAR
 
623
 (push '((t t) t #.(flags ans)"elt(#0,fixint(#1))")
 
624
   (get 'char 'inline-always))
 
625
(push '((t fixnum) t #.(flags ans)"elt(#0,#1)")
 
626
   (get 'char 'inline-always))
 
627
(push '((t t) t #.(flags)"code_char((#0)->ust.ust_self[fix(#1)])")
 
628
   (get 'char 'inline-unsafe))
 
629
(push '((t fixnum) character #.(flags rfa)"(#0)->ust.ust_self[#1]")
 
630
   (get 'char 'inline-unsafe))
 
631
 
 
632
;;CHAR-CODE
 
633
 (push '((character) fixnum #.(flags rfa)"(#0)")
 
634
   (get 'char-code 'inline-always))
 
635
 
 
636
;;CHAR/=
 
637
 (push '((character character) boolean #.(flags)"(#0)!=(#1)")
 
638
   (get 'char/= 'inline-always))
 
639
(push '((t t) boolean #.(flags)"!eql(#0,#1)")
 
640
   (get 'char/= 'inline-unsafe))
 
641
(push '((t t) boolean #.(flags)"char_code(#0)!=char_code(#1)")
 
642
   (get 'char/= 'inline-unsafe))
 
643
 
 
644
;;CHAR<
 
645
 (push '((character character) boolean #.(flags)"(#0)<(#1)")
 
646
   (get 'char< 'inline-always))
 
647
 
 
648
;;CHAR<=
 
649
 (push '((character character) boolean #.(flags)"(#0)<=(#1)")
 
650
   (get 'char<= 'inline-always))
 
651
 
 
652
;;CHAR=
 
653
 (push '((t t) boolean #.(flags)"eql(#0,#1)")
 
654
   (get 'char= 'inline-unsafe))
 
655
(push '((t t) boolean #.(flags)"char_code(#0)==char_code(#1)")
 
656
   (get 'char= 'inline-unsafe))
 
657
(push '((character character) boolean #.(flags)"(#0)==(#1)")
 
658
   (get 'char= 'inline-unsafe))
 
659
 
 
660
;;CHAR>
 
661
 (push '((character character) boolean #.(flags)"(#0)>(#1)")
 
662
   (get 'char> 'inline-always))
 
663
 
 
664
;;CHAR>=
 
665
 (push '((character character) boolean #.(flags)"(#0)>=(#1)")
 
666
   (get 'char>= 'inline-always))
 
667
 
 
668
;;CHARACTERP
 
669
 (push '((t) boolean #.(flags)"type_of(#0)==t_character")
 
670
   (get 'characterp 'inline-always))
 
671
 
 
672
;;CODE-CHAR
 
673
 (push '((fixnum) character #.(flags)"(#0)")
 
674
   (get 'code-char 'inline-always))
 
675
 
 
676
;;CONS
 
677
 (push '((t t) t #.(flags ans)"make_cons(#0,#1)")
 
678
   (get 'cons 'inline-always))
 
679
(push '((t t) :dynamic-extent #.(flags ans)"ON_STACK_CONS(#0,#1)")
 
680
   (get 'cons 'inline-always))
 
681
 
 
682
;;CONSP
 
683
 (push '((t) boolean #.(flags)"type_of(#0)==t_cons")
 
684
   (get 'consp 'inline-always))
 
685
 
 
686
;;COS
 
687
 (push '((long-float) long-float #.(flags rfa)"cos(#0)")
 
688
   (get 'cos 'inline-always))
 
689
 
 
690
;;DIGIT-CHAR-P
 
691
 (push '((character) boolean #.(flags)"@0; ((#0) <= '9' && (#0) >= '0')")
 
692
   (get 'digit-char-p 'inline-always))
 
693
 
 
694
;;ELT
 
695
 (push '((t t) t #.(flags ans)"elt(#0,fixint(#1))")
 
696
   (get 'elt 'inline-always))
 
697
(push '((t fixnum) t #.(flags ans)"elt(#0,#1)")
 
698
   (get 'elt 'inline-always))
 
699
(push '((t t) t #.(flags ans)"elt(#0,fix(#1))")
 
700
   (get 'elt 'inline-unsafe))
 
701
 
 
702
;;ENDP
 
703
;;Must use endp_prop here as generic lisp code containing (endp 
 
704
;;can be compiled to take function output as its argument, which
 
705
;;cannot be redirected via a macro, e.g. endp(cdr(V20)).  CM
 
706
 (push '((t) boolean #.(flags)"endp_prop(#0)")
 
707
   (get 'endp 'inline-safe))
 
708
(push '((t) boolean #.(flags)"(#0)==Cnil")
 
709
   (get 'endp 'inline-unsafe))
 
710
 
 
711
;;EQ
 
712
 (push '((t t) boolean #.(flags)"(#0)==(#1)")
 
713
   (get 'eq 'inline-always))
 
714
(push '((fixnum fixnum) boolean #.(flags)"0")
 
715
   (get 'eq 'inline-always))
 
716
 
 
717
;;EQL
 
718
 (push '((t t) boolean #.(flags)"eql(#0,#1)")
 
719
   (get 'eql 'inline-always))
 
720
(push '((fixnum fixnum) boolean #.(flags)"(#0)==(#1)")
 
721
   (get 'eql 'inline-always))
 
722
(push '((character character) boolean #.(flags)"(#0)==(#1)")
 
723
   (get 'eql 'inline-always))
 
724
 
 
725
 
 
726
;;EQUAL
 
727
 (push '((t t) boolean #.(flags)"equal(#0,#1)")
 
728
   (get 'equal 'inline-always))
 
729
(push '((fixnum fixnum) boolean #.(flags)"(#0)==(#1)")
 
730
   (get 'equal 'inline-always))
 
731
 
 
732
;;EQUALP
 
733
 (push '((t t) boolean #.(flags)"equalp(#0,#1)")
 
734
   (get 'equalp 'inline-always))
 
735
(push '((fixnum fixnum) boolean #.(flags)"(#0)==(#1)")
 
736
   (get 'equalp 'inline-always))
 
737
 
 
738
;;EXPT
 
739
 (push '((t t) t #.(flags ans)"number_expt(#0,#1)")
 
740
   (get 'expt 'inline-always))
 
741
 
 
742
(push '((fixnum fixnum) fixnum #.(flags)(LAMBDA (LOC1 LOC2)
 
743
                                          (IF
 
744
                                           (AND (CONSP LOC1)
 
745
                                            (EQ (CAR LOC1) 'FIXNUM-LOC)
 
746
                                            (CONSP (CADR LOC1))
 
747
                                            (EQ (CAADR LOC1)
 
748
                                             'FIXNUM-VALUE)
 
749
                                            (EQUAL (CADDR (CADR LOC1))
 
750
                                             2))
 
751
                                           (WT "(1<<(" LOC2 "))")
 
752
                                           (WT "fixnum_expt(" LOC1 #\,
 
753
                                            LOC2 #\)))))
 
754
   (get 'expt 'inline-always))
 
755
 
 
756
 
 
757
;;FILL-POINTER
 
758
 (push '((t) fixnum #.(flags rfa)"((#0)->st.st_fillp)")
 
759
   (get 'fill-pointer 'inline-unsafe))
 
760
 
 
761
;;FIRST
 
762
 (push '((t) t #.(flags)"car(#0)")
 
763
   (get 'first 'inline-safe))
 
764
(push '((t) t #.(flags)"CMPcar(#0)")
 
765
   (get 'first 'inline-unsafe))
 
766
 
 
767
;;FLOAT
 
768
 (push '((fixnum-float) long-float #.(flags)"((longfloat)(#0))")
 
769
   (get 'float 'inline-always))
 
770
(push '((fixnum-float) short-float #.(flags)"((shortfloat)(#0))")
 
771
   (get 'float 'inline-always))
 
772
 
 
773
;;FLOATP
 
774
 (push '((t) boolean #.(flags)
 
775
  "@0;type_of(#0)==t_shortfloat||type_of(#0)==t_longfloat")
 
776
   (get 'floatp 'inline-always))
 
777
 
 
778
;;FLOOR
 
779
; (push '((fixnum fixnum) fixnum #.(flags rfa)
 
780
;  "@01;(#0>=0&&(#1)>0?(#0)/(#1):ifloor(#0,#1))")
 
781
;   (get 'floor 'inline-always))
 
782
 (push '((fixnum fixnum) fixnum #.(flags rfa)
 
783
  "@01;({fixnum _t=(#0)/(#1);((#1)<0  && (#0)<=0) || ((#1)>0 && (#0)>=0) || ((#1)*_t == (#0)) ? _t : _t - 1;})")
 
784
   (get 'floor 'inline-always))
 
785
 
 
786
;;FOURTH
 
787
 (push '((t) t #.(flags)"cadddr(#0)")
 
788
   (get 'fourth 'inline-safe))
 
789
(push '((t) t #.(flags)"CMPcadddr(#0)")
 
790
   (get 'fourth 'inline-unsafe))
 
791
 
 
792
;;GET
 
793
 (push '((t t t) t #.(flags)"get(#0,#1,#2)")
 
794
   (get 'get 'inline-always))
 
795
(push '((t t) t #.(flags)"get(#0,#1,Cnil)")
 
796
   (get 'get 'inline-always))
 
797
 
 
798
;;INTEGERP
 
799
 (push '((t) boolean #.(flags)
 
800
  "@0;type_of(#0)==t_fixnum||type_of(#0)==t_bignum")
 
801
   (get 'integerp 'inline-always))
 
802
(push '((fixnum) boolean #.(flags)
 
803
  "1")
 
804
   (get 'integerp 'inline-always))
 
805
 
 
806
 
 
807
;;KEYWORDP
 
808
 (push '((t) boolean #.(flags)
 
809
  "@0;(type_of(#0)==t_symbol&&(#0)->s.s_hpack==keyword_package)")
 
810
   (get 'keywordp 'inline-always))
 
811
 
 
812
;;ADDRESS
 
813
 (push '((t) fixnum #.(flags rfa)"((fixnum)(#0))")
 
814
   (get 'si::address 'inline-always))
 
815
 
 
816
;;NANI
 
817
 (push '((fixnum) t #.(flags rfa)"((object)(#0))")
 
818
   (get 'si::nani 'inline-always))
 
819
 
 
820
 
 
821
;;LENGTH
 
822
 (push '((t) fixnum #.(flags rfa)"length(#0)")
 
823
   (get 'length 'inline-always))
 
824
(push '(((array t)) fixnum #.(flags rfa)"(#0)->v.v_fillp")
 
825
   (get 'length 'inline-unsafe))
 
826
(push '(((array fixnum)) fixnum #.(flags rfa)"(#0)->v.v_fillp")
 
827
   (get 'length 'inline-unsafe))
 
828
(push '((string) fixnum #.(flags rfa)"(#0)->v.v_fillp")
 
829
   (get 'length 'inline-unsafe))
 
830
 
 
831
;;LIST
 
832
 (push '(nil t #.(flags)"Cnil")
 
833
   (get 'list 'inline-always))
 
834
(push '((t) t #.(flags ans)"make_cons(#0,Cnil)")
 
835
   (get 'list 'inline-always))
 
836
(push '((t t) t #.(flags ans)LIST-INLINE)
 
837
   (get 'list 'inline-always))
 
838
(push '((t t t) t #.(flags ans)LIST-INLINE)
 
839
   (get 'list 'inline-always))
 
840
(push '((t t t t) t #.(flags ans)LIST-INLINE)
 
841
   (get 'list 'inline-always))
 
842
(push '((t t t t t) t #.(flags ans)LIST-INLINE)
 
843
   (get 'list 'inline-always))
 
844
(push '((t t t t t t) t #.(flags ans)LIST-INLINE)
 
845
   (get 'list 'inline-always))
 
846
(push '((t t t t t t t) t #.(flags ans)LIST-INLINE)
 
847
   (get 'list 'inline-always))
 
848
(push '((t t t t t t t t) t #.(flags ans)LIST-INLINE)
 
849
   (get 'list 'inline-always))
 
850
(push '((t t t t t t t t t) t #.(flags ans)LIST-INLINE)
 
851
   (get 'list 'inline-always))
 
852
(push '((t t t t t t t t t t) t #.(flags ans)LIST-INLINE)
 
853
   (get 'list 'inline-always))
 
854
 
 
855
;;LIST*
 
856
 (push '((t) t #.(flags)"(#0)")
 
857
   (get 'list* 'inline-always))
 
858
(push '((t t) t #.(flags ans)"make_cons(#0,#1)")
 
859
   (get 'list* 'inline-always))
 
860
(push '((t t t) t #.(flags ans)LIST*-INLINE)
 
861
   (get 'list* 'inline-always))
 
862
(push '((t t t t) t #.(flags ans)LIST*-INLINE)
 
863
   (get 'list* 'inline-always))
 
864
(push '((t t t t t) t #.(flags ans)LIST*-INLINE)
 
865
   (get 'list* 'inline-always))
 
866
(push '((t t t t t t) t #.(flags ans)LIST*-INLINE)
 
867
   (get 'list* 'inline-always))
 
868
(push '((t t t t t t t) t #.(flags ans)LIST*-INLINE)
 
869
   (get 'list* 'inline-always))
 
870
(push '((t t t t t t t t) t #.(flags ans)LIST*-INLINE)
 
871
   (get 'list* 'inline-always))
 
872
(push '((t t t t t t t t t) t #.(flags ans)LIST*-INLINE)
 
873
   (get 'list* 'inline-always))
 
874
(push '((t t t t t t t t t t) t #.(flags ans)LIST*-INLINE)
 
875
   (get 'list* 'inline-always))
 
876
 
 
877
;;LISTP
 
878
 (push '((t) boolean #.(flags)"@0;type_of(#0)==t_cons||(#0)==Cnil")
 
879
   (get 'listp 'inline-always))
 
880
 
 
881
;;LOGAND
 
882
 (push '((fixnum fixnum) fixnum #.(flags rfa)"((#0) & (#1))")
 
883
   (get 'logand 'inline-always))
 
884
 
 
885
;;LOGIOR
 
886
 (push '((fixnum fixnum) fixnum #.(flags rfa)"((#0) | (#1))")
 
887
   (get 'logior 'inline-always))
 
888
 
 
889
;;LOGXOR
 
890
 (push '((fixnum fixnum) fixnum #.(flags rfa)"((#0) ^ (#1))")
 
891
   (get 'logxor 'inline-always))
 
892
 
 
893
;;LOGNOT
 
894
 (push '((fixnum) fixnum #.(flags rfa)"(~(#0))")
 
895
   (get 'lognot 'inline-always))
 
896
 
 
897
;;MAKE-LIST
 
898
 (push '((fixnum) :dynamic-extent #.(flags ans)
 
899
  "@0;(ALLOCA_CONS(#0),ON_STACK_MAKE_LIST(#0))")
 
900
   (get 'make-list 'inline-always))
 
901
 
 
902
;;MAX
 
903
 (push '((t t) t #.(flags)"@01;(number_compare(#0,#1)>=0?(#0):#1)")
 
904
   (get 'max 'inline-always))
 
905
(push '((fixnum fixnum) fixnum #.(flags rfa)"@01;((#0)>=(#1)?(#0):#1)")
 
906
   (get 'max 'inline-always))
 
907
 
 
908
;;MIN
 
909
 (push '((t t) t #.(flags)"@01;(number_compare(#0,#1)<=0?(#0):#1)")
 
910
   (get 'min 'inline-always))
 
911
(push '((fixnum fixnum) fixnum #.(flags rfa)"@01;((#0)<=(#1)?(#0):#1)")
 
912
   (get 'min 'inline-always))
 
913
 
 
914
;;MINUSP
 
915
 (push '((t) boolean #.(flags)"number_compare(small_fixnum(0),#0)>0")
 
916
   (get 'minusp 'inline-always))
 
917
(push '((fixnum-float) boolean #.(flags)"(#0)<0")
 
918
   (get 'minusp 'inline-always))
 
919
 
 
920
;;MOD
 
921
; (push '((fixnum fixnum) fixnum #.(flags rfa)"@01;(#0>=0&&(#1)>0?(#0)%(#1):imod(#0,#1))")
 
922
;   (get 'mod 'inline-always))
 
923
 (push '((fixnum fixnum) fixnum #.(flags rfa)"@01;({fixnum _t=(#0)%(#1);((#1)<0 && _t<=0) || ((#1)>0 && _t>=0) ? _t : _t + (#1);})")
 
924
   (get 'mod 'inline-always))
 
925
 
 
926
;;NCONC
 
927
 (push '((t t) t #.(flags set)"nconc(#0,#1)")
 
928
   (get 'nconc 'inline-always))
 
929
 
 
930
;;NOT
 
931
 (push '((t) boolean #.(flags)"(#0)==Cnil")
 
932
   (get 'not 'inline-always))
 
933
 
 
934
;;NREVERSE
 
935
 (push '((t) t #.(flags ans set)"nreverse(#0)")
 
936
   (get 'nreverse 'inline-always))
 
937
 
 
938
;;NTH
 
939
 (push '((t t) t #.(flags)"nth(fixint(#0),#1)")
 
940
   (get 'nth 'inline-always))
 
941
(push '((fixnum t) t #.(flags)"nth(#0,#1)")
 
942
   (get 'nth 'inline-always))
 
943
(push '((t t) t #.(flags)"nth(fix(#0),#1)")
 
944
   (get 'nth 'inline-unsafe))
 
945
 
 
946
;;NTHCDR
 
947
 (push '((t t) t #.(flags)"nthcdr(fixint(#0),#1)")
 
948
   (get 'nthcdr 'inline-always))
 
949
(push '((fixnum t) t #.(flags)"nthcdr(#0,#1)")
 
950
   (get 'nthcdr 'inline-always))
 
951
(push '((t t) t #.(flags)"nthcdr(fix(#0),#1)")
 
952
   (get 'nthcdr 'inline-unsafe))
 
953
 
 
954
;;NULL
 
955
 (push '((t) boolean #.(flags)"(#0)==Cnil")
 
956
   (get 'null 'inline-always))
 
957
 
 
958
;;NUMBERP
 
959
 (push '((t) boolean #.(flags)
 
960
  "@0;type_of(#0)==t_fixnum||
 
961
type_of(#0)==t_bignum||
 
962
type_of(#0)==t_ratio||
 
963
type_of(#0)==t_shortfloat||
 
964
type_of(#0)==t_longfloat||
 
965
type_of(#0)==t_complex")
 
966
   (get 'numberp 'inline-always))
 
967
 
 
968
;;PLUSP
 
969
 (push '((t) boolean #.(flags)"number_compare(small_fixnum(0),#0)<0")
 
970
   (get 'plusp 'inline-always))
 
971
(push '((fixnum-float) boolean #.(flags)"(#0)>0")
 
972
   (get 'plusp 'inline-always))
 
973
 
 
974
;;PRIN1
 
975
 (push '((t t) t #.(flags set)"prin1(#0,#1)")
 
976
   (get 'prin1 'inline-always))
 
977
(push '((t) t #.(flags set)"prin1(#0,Cnil)")
 
978
   (get 'prin1 'inline-always))
 
979
 
 
980
;;PRINC
 
981
 (push '((t t) t #.(flags set)"princ(#0,#1)")
 
982
   (get 'princ 'inline-always))
 
983
(push '((t) t #.(flags set)"princ(#0,Cnil)")
 
984
   (get 'princ 'inline-always))
 
985
 
 
986
;;PRINT
 
987
 (push '((t t) t #.(flags set)"print(#0,#1)")
 
988
   (get 'print 'inline-always))
 
989
(push '((t) t #.(flags set)"print(#0,Cnil)")
 
990
   (get 'print 'inline-always))
 
991
 
 
992
;;PROBE-FILE
 
993
 (push '((t) boolean #.(flags)"(file_exists(#0))")
 
994
   (get 'probe-file 'inline-always))
 
995
 
 
996
;;RATIOP
 
997
(push '((t) boolean #.(flags) "type_of(#0)==t_ratio")
 
998
      (get 'ratiop 'inline-always))
 
999
 
 
1000
;;REM
 
1001
 
 
1002
 
 
1003
#+
 
1004
TRUNCATE_USE_C
 
1005
(push '((fixnum fixnum) fixnum #.(flags rfa)"(#0)%(#1)")
 
1006
   (get 'rem 'inline-always))
 
1007
 
 
1008
 
 
1009
 
 
1010
 
 
1011
;;REMPROP
 
1012
 (push '((t t) t #.(flags set)"remprop(#0,#1)")
 
1013
   (get 'remprop 'inline-always))
 
1014
 
 
1015
;;REST
 
1016
 (push '((t) t #.(flags)"cdr(#0)")
 
1017
   (get 'rest 'inline-safe))
 
1018
(push '((t) t #.(flags)"CMPcdr(#0)")
 
1019
   (get 'rest 'inline-unsafe))
 
1020
 
 
1021
;;REVERSE
 
1022
 (push '((t) t #.(flags ans)"reverse(#0)")
 
1023
   (get 'reverse 'inline-always))
 
1024
 
 
1025
;;SCHAR
 
1026
 (push '((t t) t #.(flags ans)"elt(#0,fixint(#1))")
 
1027
   (get 'schar 'inline-always))
 
1028
(push '((t fixnum) t #.(flags ans)"elt(#0,#1)")
 
1029
   (get 'schar 'inline-always))
 
1030
(push '((t t) t #.(flags rfa)"code_char((#0)->ust.ust_self[fix(#1)])")
 
1031
   (get 'schar 'inline-unsafe))
 
1032
(push '((t fixnum) character #.(flags rfa)"(#0)->ust.ust_self[#1]")
 
1033
   (get 'schar 'inline-unsafe))
 
1034
 
 
1035
;;SECOND
 
1036
 (push '((t) t #.(flags)"cadr(#0)")
 
1037
   (get 'second 'inline-safe))
 
1038
(push '((t) t #.(flags)"CMPcadr(#0)")
 
1039
   (get 'second 'inline-unsafe))
 
1040
 
 
1041
;;SIN
 
1042
 (push '((long-float) long-float #.(flags rfa)"sin(#0)")
 
1043
   (get 'sin 'inline-always))
 
1044
 
 
1045
;;STRING
 
1046
 (push '((t) t #.(flags ans)"coerce_to_string(#0)")
 
1047
   (get 'string 'inline-always))
 
1048
 
 
1049
;;STRINGP
 
1050
 (push '((t) boolean #.(flags)"type_of(#0)==t_string")
 
1051
   (get 'stringp 'inline-always))
 
1052
 
 
1053
;;SVREF
 
1054
 (push '((t t) t #.(flags ans)"aref1(#0,fixint(#1))")
 
1055
   (get 'svref 'inline-always))
 
1056
(push '((t fixnum) t #.(flags ans)"aref1(#0,#1)")
 
1057
   (get 'svref 'inline-always))
 
1058
(push '((t t) t #.(flags)"(#0)->v.v_self[fix(#1)]")
 
1059
   (get 'svref 'inline-unsafe))
 
1060
(push '((t fixnum) t #.(flags)"(#0)->v.v_self[#1]")
 
1061
   (get 'svref 'inline-unsafe))
 
1062
 
 
1063
;;SYMBOL-NAME
 
1064
 (push '((t) t #.(flags ans)"symbol_name(#0)")
 
1065
   (get 'symbol-name 'inline-always))
 
1066
 
 
1067
;;SYMBOL-PLIST
 
1068
(push (list '(t) t #.(flags) "((#0)->s.s_plist)")
 
1069
    (get 'symbol-plist 'inline-unsafe))
 
1070
 
 
1071
;;SYMBOLP
 
1072
 (push '((t) boolean #.(flags)"type_of(#0)==t_symbol")
 
1073
   (get 'symbolp 'inline-always))
 
1074
 
 
1075
;;TAN
 
1076
 (push '((long-float) long-float #.(flags rfa)"tan(#0)")
 
1077
   (get 'tan 'inline-always))
 
1078
 
 
1079
;;SQRT
 
1080
 (push '((long-float) long-float #.(flags rfa)"sqrt((double)#0)")
 
1081
   (get 'sqrt 'inline-always))
 
1082
 
 
1083
;;TERPRI
 
1084
 (push '((t) t #.(flags set)"terpri(#0)")
 
1085
   (get 'terpri 'inline-always))
 
1086
(push '(nil t #.(flags set)"terpri(Cnil)")
 
1087
   (get 'terpri 'inline-always))
 
1088
 
 
1089
;;THIRD
 
1090
 (push '((t) t #.(flags)"caddr(#0)")
 
1091
   (get 'third 'inline-safe))
 
1092
(push '((t) t #.(flags)"CMPcaddr(#0)")
 
1093
   (get 'third 'inline-unsafe))
 
1094
 
 
1095
;;TRUNCATE
 
1096
 
 
1097
#+
 
1098
TRUNCATE_USE_C
 
1099
(push '((fixnum fixnum) fixnum #.(flags rfa)"(#0)/(#1)")
 
1100
   (get 'truncate 'inline-always))
 
1101
(push '((fixnum-float) fixnum #.(flags)"(fixnum)(#0)")
 
1102
   (get 'truncate 'inline-always))
 
1103
 
 
1104
 
 
1105
 
 
1106
;;VECTORP
 
1107
 (push '((t) boolean #.(flags)
 
1108
  "@0;type_of(#0)==t_vector||
 
1109
type_of(#0)==t_string||
 
1110
type_of(#0)==t_bitvector")
 
1111
   (get 'vectorp 'inline-always))
 
1112
 
 
1113
;;WRITE-CHAR
 
1114
 (push '((t) t #.(flags set)
 
1115
  "@0;(writec_stream(char_code(#0),Vstandard_output->s.s_dbind),(#0))")
 
1116
   (get 'write-char 'inline-unsafe))
 
1117
 
 
1118
;;ZEROP
 
1119
 (push '((t) boolean #.(flags)"number_compare(small_fixnum(0),#0)==0")
 
1120
   (get 'zerop 'inline-always))
 
1121
 
 
1122
(push '((fixnum-float) boolean #.(flags)"(#0)==0")
 
1123
   (get 'zerop 'inline-always))
 
1124
 
 
1125
;;CMOD
 
1126
 (push '((t) t #.(flags) "cmod(#0)")
 
1127
   (get 'system:cmod 'inline-always))
 
1128
 
 
1129
;;CTIMES
 
1130
 (push '((t t) t #.(flags) "ctimes(#0,#1)")
 
1131
   (get 'system:ctimes 'inline-always))
 
1132
 
 
1133
;;CPLUS
 
1134
 (push '((t t) t #.(flags) "cplus(#0,#1)")
 
1135
   (get 'system:cplus 'inline-always))
 
1136
 
 
1137
;;CDIFFERENCE
 
1138
 (push '((t t) t #.(flags) "cdifference(#0,#1)")
 
1139
   (get 'system:cdifference 'inline-always))
 
1140