From b97d46a4df6bf00313225cd6f49628f49bb65c43 Mon Sep 17 00:00:00 2001 From: sof Date: Sat, 23 Jan 1999 17:48:23 +0000 Subject: [PATCH] [project @ 1999-01-23 17:48:23 by sof] integerToInt64Zh: didn't handle negative integers particularly well --- ghc/includes/PrimOps.h | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/ghc/includes/PrimOps.h b/ghc/includes/PrimOps.h index 58f2df0dd59f..e68a09d62963 100644 --- a/ghc/includes/PrimOps.h +++ b/ghc/includes/PrimOps.h @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: PrimOps.h,v 1.8 1999/01/21 10:31:42 simonm Exp $ + * $Id: PrimOps.h,v 1.9 1999/01/23 17:48:23 sof Exp $ * * Macros for primitive operations in STG-ish C code. * @@ -20,19 +20,19 @@ #define leCharZh(r,a,b) r=(I_)((a)<=(b)) /* Int comparisons: >#, >=# etc */ -#define ZgZh(r,a,b) r=(I_)((a) >(b)) -#define ZgZeZh(r,a,b) r=(I_)((a)>=(b)) -#define ZeZeZh(r,a,b) r=(I_)((a)==(b)) -#define ZdZeZh(r,a,b) r=(I_)((a)!=(b)) -#define ZlZh(r,a,b) r=(I_)((a) <(b)) -#define ZlZeZh(r,a,b) r=(I_)((a)<=(b)) - -#define gtWordZh(r,a,b) r=(I_)((a) >(b)) -#define geWordZh(r,a,b) r=(I_)((a)>=(b)) -#define eqWordZh(r,a,b) r=(I_)((a)==(b)) -#define neWordZh(r,a,b) r=(I_)((a)!=(b)) -#define ltWordZh(r,a,b) r=(I_)((a) <(b)) -#define leWordZh(r,a,b) r=(I_)((a)<=(b)) +#define ZgZh(r,a,b) r=(I_)((I_)(a) >(I_)(b)) +#define ZgZeZh(r,a,b) r=(I_)((I_)(a)>=(I_)(b)) +#define ZeZeZh(r,a,b) r=(I_)((I_)(a)==(I_)(b)) +#define ZdZeZh(r,a,b) r=(I_)((I_)(a)!=(I_)(b)) +#define ZlZh(r,a,b) r=(I_)((I_)(a) <(I_)(b)) +#define ZlZeZh(r,a,b) r=(I_)((I_)(a)<=(I_)(b)) + +#define gtWordZh(r,a,b) r=(I_)((W_)(a) >(W_)(b)) +#define geWordZh(r,a,b) r=(I_)((W_)(a)>=(W_)(b)) +#define eqWordZh(r,a,b) r=(I_)((W_)(a)==(W_)(b)) +#define neWordZh(r,a,b) r=(I_)((W_)(a)!=(W_)(b)) +#define ltWordZh(r,a,b) r=(I_)((W_)(a) <(W_)(b)) +#define leWordZh(r,a,b) r=(I_)((W_)(a)<=(W_)(b)) #define gtAddrZh(r,a,b) r=(I_)((a) >(b)) #define geAddrZh(r,a,b) r=(I_)((a)>=(b)) @@ -347,8 +347,11 @@ EF_(decodeDoubleZh_fast); res = (LI_)d[0]; \ } else { \ res = (LI_)d[0] + (LI_)d[1] * 0x100000000LL; \ + if ( sa < 0 ) { \ + res = (LI_)-res; \ + } \ } \ - (r) = res; \ + (r) = res; \ } /* Conversions */