|
11 | 11 |
|
12 | 12 | (in-package "SB!VM")
|
13 | 13 |
|
| 14 | +(define-move-fun (load-immediate 1) (vop x y) |
| 15 | + ((immediate) (any-reg descriptor-reg)) |
| 16 | + (let ((val (tn-value x))) |
| 17 | + (etypecase val |
| 18 | + (integer (load-immediate-word y (fixnumize val)))))) |
| 19 | + |
| 20 | +(define-move-fun (load-number 1) (vop x y) |
| 21 | + ((immediate) (signed-reg unsigned-reg)) |
| 22 | + (load-immediate-word y (tn-value x))) |
| 23 | + |
14 | 24 | (define-move-fun (load-stack 5) (vop x y)
|
15 | 25 | ((control-stack) (any-reg descriptor-reg))
|
16 | 26 | (load-stack-tn y x))
|
|
37 | 47 | (:args (x :scs (any-reg descriptor-reg)))
|
38 | 48 | (:results (y :scs (any-reg descriptor-reg control-stack)))
|
39 | 49 | (:generator 0))
|
| 50 | +(define-move-vop move :move |
| 51 | + (any-reg descriptor-reg) (any-reg descriptor-reg)) |
40 | 52 |
|
| 53 | +(define-vop (move-to-word/fixnum) |
| 54 | + (:args (x :scs (any-reg descriptor-reg))) |
| 55 | + (:results (y :scs (signed-reg unsigned-reg))) |
| 56 | + (:arg-types tagged-num) |
| 57 | + (:generator 1)) |
| 58 | +(define-move-vop move-to-word/fixnum :move |
| 59 | + (any-reg descriptor-reg) (signed-reg unsigned-reg)) |
41 | 60 | (define-vop (move-from-word/fixnum)
|
42 | 61 | (:args (x :scs (signed-reg unsigned-reg) :target y))
|
43 | 62 | (:results (y :scs (any-reg descriptor-reg)))
|
44 | 63 | (:result-types tagged-num)
|
45 |
| - (:generator 0)) |
| 64 | + (:generator 1)) |
| 65 | +(define-move-vop move-from-word/fixnum :move |
| 66 | + (signed-reg unsigned-reg) (any-reg descriptor-reg)) |
| 67 | + |
| 68 | +(define-vop (move-from-signed) |
| 69 | + (:args (x :scs (signed-reg unsigned-reg) :target y)) |
| 70 | + (:results (y :scs (any-reg descriptor-reg))) |
| 71 | + (:generator 18)) |
| 72 | +(define-move-vop move-from-signed :move |
| 73 | + (signed-reg) (descriptor-reg)) |
| 74 | +(define-vop (move-from-unsigned) |
| 75 | + (:args (x :scs (signed-reg unsigned-reg) :target y)) |
| 76 | + (:results (y :scs (any-reg descriptor-reg))) |
| 77 | + (:generator 20)) |
| 78 | +(define-move-vop move-from-unsigned :move |
| 79 | + (unsigned-reg) (descriptor-reg)) |
46 | 80 |
|
47 | 81 | (define-vop (word-move)
|
48 | 82 | (:args (x :scs (signed-reg unsigned-reg) :target y))
|
|
0 commit comments