X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fhppa%2Fvalues.lisp;h=44df9fe32c71b46cc1d3e2a2557aff627d633f50;hb=9c510b74eca61bbcc2014dc2b1d02049dff50508;hp=96af71ffa2983706f5f5b1ddc6415d942a805bf2;hpb=1e5296127f5b384a2171646747021ebeee73b801;p=sbcl.git diff --git a/src/compiler/hppa/values.lisp b/src/compiler/hppa/values.lisp index 96af71f..44df9fe 100644 --- a/src/compiler/hppa/values.lisp +++ b/src/compiler/hppa/values.lisp @@ -127,15 +127,22 @@ ;;; (define-vop (%more-arg-values) (:args (context :scs (descriptor-reg any-reg) :target src) + (skip :scs (any-reg zero immediate)) (num :scs (any-reg) :target count)) - (:arg-types * positive-fixnum) + (:arg-types * positive-fixnum positive-fixnum) (:temporary (:sc any-reg :from (:argument 0)) src) (:temporary (:sc any-reg :from (:argument 2)) dst end) (:temporary (:sc descriptor-reg :from (:argument 1)) temp) (:results (start :scs (any-reg)) (count :scs (any-reg))) (:generator 20 - (move context src) + (sc-case skip + (zero + (move context src)) + (immediate + (inst addi (* (tn-value skip) n-word-bytes) context src)) + (any-reg + (inst add skip context src))) (move num count) (inst comb := num zero-tn done) (move csp-tn start t)