func f %alien-invoke
dst float-function-return ;
+! Internal format is always double-precision on PowerPC
+M: ppc %single>double-float 2drop ;
+
+M: ppc %double>single-float 2drop ;
+
+M: ppc %unbox-alien ( dst src -- )
+ alien-offset LWZ ;
+
M:: ppc %unbox-any-c-ptr ( dst src temp -- )
[
{ "is-byte-array" "end" "start" } [ define-label ] each
M:: ppc %compare-float-ordered ( dst src1 src2 cc temp -- )
src1 src2 cc negate-cc \ (%compare-float-ordered) (%compare-float) :> branch2 :> branch1
dst temp branch1 branch2 (%boolean) ;
+
M:: ppc %compare-float-unordered ( dst src1 src2 cc temp -- )
src1 src2 cc negate-cc \ (%compare-float-unordered) (%compare-float) :> branch2 :> branch1
dst temp branch1 branch2 (%boolean) ;
label cc %branch ;
M:: ppc %compare-imm-branch ( label src1 src2 cc -- )
- src1 src2 (%compare)
+ src1 src2 (%compare-imm)
label cc %branch ;
:: (%branch) ( label branch1 branch2 -- )
label branch1 branch2 (%branch) ;
M:: ppc %compare-float-unordered-branch ( label src1 src2 cc -- )
- cc src1 src2 \ (%compare-float-unordered) (%compare-float) :> branch2 :> branch1
+ src1 src2 cc \ (%compare-float-unordered) (%compare-float) :> branch2 :> branch1
label branch1 branch2 (%branch) ;
: load-from-frame ( dst n rep -- )