home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / lisp / gcl-1.000 / gcl-1 / gcl-1.0 / cmpnew / cmpopt.lsp < prev    next >
Encoding:
Text File  |  1992-03-25  |  34.5 KB  |  1,101 lines

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