Changeset 16006


Ignore:
Timestamp:
Jan 17, 2014, 9:52:53 AM (6 years ago)
Author:
gb
Message:

%make-complex-{single,double}-float for PPC.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/acode-rewrite/source/level-0/PPC/ppc-numbers.lisp

    r13530 r16006  
    493493    (clrlwi imm0 imm0 3)                ;don't want negative fixnums
    494494    (box-fixnum arg_z imm0)
    495     (blr)))   
     495    (blr)))
     496
     497
     498(defppclapfunction %make-complex-double-float ((r arg_y) (i arg_z))
     499  (get-double-float fp0 r)
     500  (get-double-float fp1 i)
     501  (li imm0 (logior (ash #+ppc32-target 5 #+ppc64-target 6 8) target::subtag-complex-double-float))
     502  (subi allocptr allocptr (- #+ppc32=target 24 #+ppc64-target 32 target::fulltag-misc))
     503  (twllt allocptr allocbase)
     504  (str imm0 target::misc-header-offset allocptr)
     505  (mr arg_z allocptr)
     506  (clrrri allocptr allocptr target::ntagbits)
     507  (stfd fp0 target::complex-double-float.realpart arg_z)
     508  (stfd fp1 target::complex-double-float.imagpart arg_z)
     509  (blr))
     510
     511(defppclapfunction %make-complex-single-float ((r arg_y) (i arg_z))
     512  (get-single-float fp0 r)
     513  (get-single-float fp1 i)
     514  (li imm0 (logior (ash #+ppc32-target 3 #+ppc64-target 2 8) target::subtag-complex-single-float))
     515  (subi allocptr allocptr (- 16 target::fulltag-misc))
     516  (twllt allocptr allocbase)
     517  (str imm0 target::misc-header-offset allocptr)
     518  (mr arg_z allocptr)
     519  (clrrri allocptr allocptr target::ntagbits)
     520  (stfs fp0 target::complex-single-float.realpart arg_z)
     521  (stfs fp1 target::complex-single-float.imagpart arg_z)
     522  (blr))
    496523
    497524; End of ppc-numbers.lisp
Note: See TracChangeset for help on using the changeset viewer.