Use ja/jb, not jg/jl, in floating-point predicates on x86-64.
authorTaylor R Campbell <campbell@mumble.net>
Fri, 13 Nov 2009 04:04:57 +0000 (23:04 -0500)
committerTaylor R Campbell <campbell@mumble.net>
Fri, 13 Nov 2009 04:04:57 +0000 (23:04 -0500)
src/microcode/cmpauxmd/x86-64.m4

index 7c4f8ac6c0daaca4738e69419d5f100cdd2c4e76..242c57eb6e333edac41869bcc8f3293af720bbc0 100644 (file)
@@ -718,7 +718,7 @@ asm_generic_$1_flo:
        OP(and,q)       TW(rmask,REG(rbx))
        movsd           TW(QOF(FLONUM_DATA_OFFSET,REG(rdx)),REG(xmm0))
        ucomisd         TW(QOF(FLONUM_DATA_OFFSET,REG(rbx)),REG(xmm0))
-       $3      asm_generic_return_sharp_t
+       $4      asm_generic_return_sharp_t
        jmp     asm_generic_return_sharp_f
 
 asm_generic_$1_fix:
@@ -835,11 +835,11 @@ define_binary_operation(subtract,28,sub,subsd)
 define_binary_operation_with_setup(multiply,29,imul,mulsd,
        `OP(and,q)      TW(rmask,REG(rax))')
 
-# define_binary_predicate(name,index,jcc)
+# define_binary_predicate(name,index,fixjcc,flojcc)
 # define_binary_predicate(  $1,   $2, $3)
-define_binary_predicate(equal,24,je)
-define_binary_predicate(greater,25,jg)
-define_binary_predicate(less,27,jl)
+define_binary_predicate(equal,24,je,je)
+define_binary_predicate(greater,25,jg,ja)
+define_binary_predicate(less,27,jl,jb)
 
 #define_jump_indirection(generic_decrement,22)
 #define_jump_indirection(generic_divide,23)