i386 flonums: Fix substitution of FLDZ,FUCOMP for FTST in 521ffb3.
authorMatt Birkholz <puck@birchwood-abbey.net>
Fri, 10 Oct 2014 23:39:22 +0000 (16:39 -0700)
committerMatt Birkholz <puck@birchwood-abbey.net>
Sat, 11 Oct 2014 20:27:21 +0000 (13:27 -0700)
The branch instructions needed to be swapped.

This caused compiled generic arithmetic to get e.g. (> x 0) wrong,
thus float->integers to overflow when LIAR/SVM compiled runtime/
arith.scm.

src/microcode/cmpauxmd/i386.m4

index ae640bfb9e12a339c354f55111a2aeb1f40379e1..bf538d6d3296fd758e5adff9f7e0dbfa8fd6c515 100644 (file)
@@ -1141,8 +1141,8 @@ asm_generic_$1_fail:
 IF387(`define_unary_operation(decrement,22,sub,fsubr)
 define_unary_operation(increment,26,add,fadd)
 
-define_unary_predicate(negative,2a,jl,jb)
-define_unary_predicate(positive,2c,jg,ja)
+define_unary_predicate(negative,2a,jl,ja)
+define_unary_predicate(positive,2c,jg,jb)
 define_unary_predicate(zero,2d,je,je)
 
 # define_binary_operation(name,index,fix*fix,flo*flo)