... |
... |
@@ -209,18 +209,18 @@ |
209
|
209
|
,(reg-spec-temp res))))
|
210
|
210
|
results))))))
|
211
|
211
|
|
212
|
|
-;;; Define-assembly-routine -- Public
|
|
212
|
+;;; Define-Assembly-Routine -- Public
|
213
|
213
|
;;;
|
214
|
214
|
;;; Parse the code to produce an assembly routine and create a VOP
|
215
|
215
|
;;; that calls the assembly routine.
|
216
|
216
|
(defmacro define-assembly-routine (name&options vars &rest code)
|
217
|
|
- "Define-assembly-routine (name&options vars Code*)
|
|
217
|
+ "Define-Assembly-Routine (Name&Options Vars Code*)
|
218
|
218
|
Define a Lisp assembly routine, and a VOP to that calls the assembly
|
219
|
219
|
routine, if enabled. (A VOP is not created if the reader
|
220
|
220
|
conditional #+assembler precedes the definition of the assembly
|
221
|
221
|
routine.)
|
222
|
222
|
|
223
|
|
- Name&options
|
|
223
|
+ Name&Options
|
224
|
224
|
A list giving the name of the assembly routine and options
|
225
|
225
|
describing the assembly routine options and VOP options. The
|
226
|
226
|
format is (Name ({Key Value})*) where Name is the name of the
|
... |
... |
@@ -231,11 +231,11 @@ |
231
|
231
|
:Cost Cost
|
232
|
232
|
The cost of the VOP. This is used in the generated VOP.
|
233
|
233
|
|
234
|
|
- :Policy Policy
|
235
|
|
- The policy for the VOP
|
|
234
|
+ :Policy {:Small | :Fast | :Safe | :Fast-Safe}
|
|
235
|
+ The policy for the VOP.
|
236
|
236
|
|
237
|
237
|
:Translate Name
|
238
|
|
- The translation for the VOP
|
|
238
|
+ The translation for the VOP.
|
239
|
239
|
|
240
|
240
|
:Arg-Types arg-types
|
241
|
241
|
:Result-Types result-types
|
... |
... |
@@ -247,19 +247,19 @@ |
247
|
247
|
Vars is a list of the arguments and returned results and
|
248
|
248
|
temporaries used by the assembly routine.
|
249
|
249
|
|
250
|
|
- :Arg Arg-name (Sc*) Sc-Offset
|
|
250
|
+ :Arg Arg-Name (SC*) SC-Offset
|
251
|
251
|
Input argument for the assembly routine with the name
|
252
|
252
|
Arg-Name. The argument must be one of the Sc types. The register
|
253
|
|
- assigned to this argument is given by Sc-Offset which must be
|
|
253
|
+ assigned to this argument is given by SC-Offset which must be
|
254
|
254
|
the offset for the register holding this argument.
|
255
|
255
|
|
256
|
|
- :Res Res-Name Sc Sc-offset
|
|
256
|
+ :Res Res-Name SC SC-Offset
|
257
|
257
|
Result of the assembly routine with the name Res-Name. The
|
258
|
|
- result must be a register of the specified storage class Sc. The
|
|
258
|
+ result must be a register of the specified storage class SC. The
|
259
|
259
|
Sc-offset is the register used for the result.
|
260
|
260
|
|
261
|
|
- :Temp Temp-Name Sc Sc-offset
|
262
|
|
- Like :res, except this names a temporary register that the
|
|
261
|
+ :Temp Temp-Name SC SC-Offset
|
|
262
|
+ Like :Res, except this names a temporary register that the
|
263
|
263
|
assembly routine can use.
|
264
|
264
|
|
265
|
265
|
Code
|