Changeset 14942
- Timestamp:
- Aug 16, 2011, 10:33:30 PM (13 years ago)
- Location:
- trunk/source/compiler/PPC
- Files:
-
- 3 edited
-
PPC32/ppc32-vinsns.lisp (modified) (1 diff)
-
PPC64/ppc64-vinsns.lisp (modified) (1 diff)
-
ppc2.lisp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/compiler/PPC/PPC32/ppc32-vinsns.lisp
r14775 r14942 4042 4042 (fneg dest src)) 4043 4043 4044 (define-ppc32-vinsn fixnum-ref-c-double-float (((dest :double-float)) 4045 ((base :imm) 4046 (idx :u16const))) 4047 (lfd dest (:apply ash idx 3) base)) 4048 4049 (define-ppc32-vinsn fixnum-ref-double-float (((dest :double-float)) 4050 ((base :imm) 4051 (idx :imm)) 4052 ((temp :imm))) 4053 (add temp idx idx) 4054 (lfdx dest base temp)) 4055 4056 4057 (define-ppc32-vinsn fixnum-set-c-double-float (() 4058 ((base :imm) 4059 (idx :u16const) 4060 (val :double-float))) 4061 (stfd val (:apply ash idx 3) base)) 4062 4063 (define-ppc32-vinsn fixnum-set-c-double-float (() 4064 ((base :imm) 4065 (idx :imm) 4066 (val :double-float)) 4067 ((temp :imm))) 4068 (add temp idx idx) 4069 (stfdx val base temp)) 4070 4044 4071 ;;; In case ppc32::*ppc-opcodes* was changed since this file was compiled. 4045 4072 (queue-fixup -
trunk/source/compiler/PPC/PPC64/ppc64-vinsns.lisp
r14775 r14942 4033 4033 (define-ppc64-vinsn single-float-negate (((dest :single-float)) 4034 4034 ((src :single-float))) 4035 (fneg dest src)) 4035 (fneg dest src)) 4036 (define-ppc64-vinsn fixnum-ref-c-double-float (((dest :double-float)) 4037 ((base :imm) 4038 (idx :u16const))) 4039 (lfd dest (:apply ash idx 3) base)) 4040 4041 (define-ppc64-vinsn fixnum-ref-double-float (((dest :double-float)) 4042 ((base :imm) 4043 (idx :imm))) 4044 (lfdx dest base idx)) 4045 4046 4047 (define-ppc64-vinsn fixnum-set-c-double-float (() 4048 ((base :imm) 4049 (idx :u16const) 4050 (val :double-float))) 4051 (stfd val (:apply ash idx 3) base)) 4052 4053 (define-ppc64-vinsn fixnum-set-c-double-float (() 4054 ((base :imm) 4055 (idx :imm) 4056 (val :double-float))) 4057 (stfdx val base idx)) 4036 4058 4037 4059 ;;; In case ppc64::*ppc-opcodes* was changed since this file was compiled. -
trunk/source/compiler/PPC/ppc2.lisp
r14775 r14942 9243 9243 nil)) 9244 9244 9245 (defppc2 ppc2-fixnum-ref-double-float %fixnum-ref-double-float (seg vreg xfer base index) 9246 (if (null vreg) 9247 (progn 9248 (ppc2-form base seg nil nil) 9249 (ppc2-form index seg nil xfer)) 9250 (let* ((fix (acode-fixnum-form-p index))) 9251 (unless (typep fix '(unsigned-byte 12)) 9252 (setq fix nil)) 9253 (if (and (= (hard-regspec-class vreg) hard-reg-class-fpr) 9254 (= (get-regspec-mode vreg) hard-reg-class-fpr-mode-double) ) 9255 (cond (fix 9256 (! fixnum-ref-c-double-float vreg (ppc2-one-untargeted-reg-form seg base ppc::arg_z) fix)) 9257 (t 9258 (multiple-value-bind (rbase rindex) (ppc2-two-untargeted-reg-forms seg base ppc::arg_y index ppc::arg_z) 9259 (! fixnum-ref-double-float vreg rbase rindex)))) 9260 (with-fp-target () (target :double-float) 9261 (cond (fix 9262 (! fixnum-ref-c-double-float target (ppc2-one-untargeted-reg-form seg base ppc::arg_z) fix)) 9263 (t 9264 (multiple-value-bind (rbase rindex) (ppc2-two-untargeted-reg-forms seg base ppc::arg_y index ppc::arg_z) 9265 (! fixnum-ref-double-float target rbase rindex)))) 9266 (<- target))) 9267 (^)))) 9268 9269 (defppc2 ppc2-fixnum-set-double-float %fixnum-set-double-float (seg vreg xfer base index val) 9270 (let* ((fix (acode-fixnum-form-p index))) 9271 (unless (typep fix '(unsigned-byte 12)) 9272 (setq fix nil)) 9273 (cond ((or (null vreg) 9274 (and (= (hard-regspec-class vreg) hard-reg-class-fpr) 9275 (= (get-regspec-mode vreg) hard-reg-class-fpr-mode-double))) 9276 (let* ((fhint (or vreg ($ ppc::fp1 :class :fpr :mode :double-float)))) 9277 (if fix 9278 (multiple-value-bind (rbase rval) 9279 (ppc2-two-untargeted-reg-forms seg base ($ ppc::arg_z) val fhint) 9280 (! fixnum-set-c-double-float rbase fix rval) 9281 (<- rval)) 9282 (multiple-value-bind (rbase rindex rval) 9283 (ppc2-three-untargeted-reg-forms seg base ($ ppc::arg_y) index ($ ppc::arg_z) val fhint) 9284 (! fixnum-set-double-float rbase rindex rval) 9285 (<- rval))))) 9286 (t 9287 (if fix 9288 (multiple-value-bind (rbase rboxed) 9289 (ppc2-two-untargeted-reg-forms seg base ($ ppc::arg_y) val ($ ppc::arg_z)) 9290 (with-fp-target () (rval :double-float) 9291 (ppc2-copy-register seg rval rboxed) 9292 (! fixnum-set-c-double-float rbase fix rval)) 9293 (<- rboxed)) 9294 (multiple-value-bind (rbase rindex rboxed) 9295 (ppc2-three-untargeted-reg-forms seg base ($ ppc::arg_x) index ($ ppc::arg_y) val ($ ppc::arg_z)) 9296 (with-fp-target () (rval :double-float) 9297 (ppc2-copy-register seg rval rboxed) 9298 (! fixnum-set-double-float rbase rindex rval)) 9299 (<- rboxed))))) 9300 (^)))
Note:
See TracChangeset
for help on using the changeset viewer.
