X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fmips%2Fvalues.lisp;h=3281c5de5732ecd4ca66c311726a252d9b7be9eb;hb=3fe0010d2777b41e01ea9b4a0f894cfa40f7df1b;hp=ecee7d0d26183f4ebd9232948486f35671888bdd;hpb=f1acc17f83cdfa9454a53bd0ee9bd0e9b9482817;p=sbcl.git diff --git a/src/compiler/mips/values.lisp b/src/compiler/mips/values.lisp index ecee7d0..3281c5d 100644 --- a/src/compiler/mips/values.lisp +++ b/src/compiler/mips/values.lisp @@ -16,6 +16,26 @@ (:generator 1 (move csp-tn ptr))) +(define-vop (%%pop-dx) + (:args (ptr :scs (any-reg))) + (:ignore ptr) + (:generator 1 + (bug "VOP %%POP-DX is not implemented."))) + +(define-vop (%%nip-dx) + (:args (last-nipped-ptr :scs (any-reg) :target dest) + (last-preserved-ptr :scs (any-reg) :target src) + (moved-ptrs :scs (any-reg) :more t)) + (:results (r-moved-ptrs :scs (any-reg) :more t)) + (:temporary (:sc any-reg) src) + (:temporary (:sc any-reg) dest) + (:temporary (:sc non-descriptor-reg) temp) + (:ignore r-moved-ptrs + last-nipped-ptr last-preserved-ptr moved-ptrs + src dest temp) + (:generator 1 + (bug "VOP %%NIP-DX is not implemented."))) + (define-vop (%%nip-values) (:args (last-nipped-ptr :scs (any-reg) :target dest) (last-preserved-ptr :scs (any-reg) :target src) @@ -26,9 +46,9 @@ (:temporary (:sc non-descriptor-reg) temp) (:ignore r-moved-ptrs) (:generator 1 - (inst move src last-preserved-ptr) - (inst move dest last-nipped-ptr) - (inst move temp zero-tn) + (move src last-preserved-ptr) + (move dest last-nipped-ptr) + (move temp zero-tn) (inst sltu temp src csp-tn) (inst beq temp zero-tn DONE) (inst nop) ; not strictly necessary @@ -41,7 +61,7 @@ (inst bne temp zero-tn LOOP) (inst nop) DONE - (inst move csp-tn dest) + (move csp-tn dest) (inst sub src src dest) (loop for moved = moved-ptrs then (tn-ref-across moved) while moved @@ -143,8 +163,8 @@ (inst addu src context skip))) (move count num) (inst beq num zero-tn done) - (inst move start csp-tn) - (inst move dst csp-tn) + (move start csp-tn t) + (move dst csp-tn) (inst addu csp-tn count) LOOP (inst lw temp src)