Subtraction overflow was wrong way round on PowerPC
parent
5299f104e9
commit
abc486c342
|
@ -194,7 +194,7 @@ M: ppc %not NOT ;
|
||||||
scratch-reg src2 src1 insn call
|
scratch-reg src2 src1 insn call
|
||||||
scratch-reg ds-reg 0 STW
|
scratch-reg ds-reg 0 STW
|
||||||
"no-overflow" get BNO
|
"no-overflow" get BNO
|
||||||
src2 src1 move>args
|
src1 src2 move>args
|
||||||
%prepare-alien-invoke
|
%prepare-alien-invoke
|
||||||
func f %alien-invoke
|
func f %alien-invoke
|
||||||
"no-overflow" resolve-label ; inline
|
"no-overflow" resolve-label ; inline
|
||||||
|
@ -208,7 +208,7 @@ M: ppc %not NOT ;
|
||||||
scratch-reg ds-reg 0 STW
|
scratch-reg ds-reg 0 STW
|
||||||
BLR
|
BLR
|
||||||
"overflow" resolve-label
|
"overflow" resolve-label
|
||||||
src2 src1 move>args
|
src1 src2 move>args
|
||||||
%prepare-alien-invoke
|
%prepare-alien-invoke
|
||||||
func f %alien-invoke-tail ;
|
func f %alien-invoke-tail ;
|
||||||
|
|
||||||
|
|
|
@ -18,12 +18,12 @@ add_overflow:
|
||||||
b MANGLE(overflow_fixnum_add)
|
b MANGLE(overflow_fixnum_add)
|
||||||
|
|
||||||
DEF(void,primitive_fixnum_subtract,(void)):
|
DEF(void,primitive_fixnum_subtract,(void)):
|
||||||
lwz r3,0(DS_REG)
|
lwz r3,-4(DS_REG)
|
||||||
lwz r4,-4(DS_REG)
|
lwz r4,0(DS_REG)
|
||||||
subi DS_REG,DS_REG,4
|
subi DS_REG,DS_REG,4
|
||||||
li r0,0
|
li r0,0
|
||||||
mtxer r0
|
mtxer r0
|
||||||
subfo. r5,r3,r4
|
subfo. r5,r4,r3
|
||||||
bso sub_overflow
|
bso sub_overflow
|
||||||
stw r5,0(DS_REG)
|
stw r5,0(DS_REG)
|
||||||
blr
|
blr
|
||||||
|
|
Loading…
Reference in New Issue