From: David Schleef Date: Mon, 2 Aug 2010 23:09:02 +0000 (-0700) Subject: Fix mulhul opcode and update generated code X-Git-Tag: orc-0.4.7~86 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=332d75250befeb43d97bea0958a47108ea703525;p=platform%2Fupstream%2Forc.git Fix mulhul opcode and update generated code --- diff --git a/orc/opcodes.h b/orc/opcodes.h index 2ea8fcf..f933299 100644 --- a/orc/opcodes.h +++ b/orc/opcodes.h @@ -79,7 +79,7 @@ BINARY_SL(minsl, "ORC_MIN(%s, %s)") BINARY_UL(minul, "ORC_MIN((orc_uint32)%s, (orc_uint32)%s)") BINARY_SL(mulll, "(%s * %s) & 0xffffffff") BINARY_SL(mulhsl, "((orc_int64)%s * (orc_int64)%s) >> 32") -BINARY_UL(mulhul, "((orc_uint64)%s * (orc_uint64)%s) >> 32") +BINARY_UL(mulhul, "((orc_uint64)(orc_uint32)%s * (orc_uint64)(orc_uint32)%s) >> 32") BINARY_SL(orl, "%s | %s") BINARY_SL(shll, "%s << %s") BINARY_SL(shrsl, "%s >> %s") diff --git a/orc/orcemulateopcodes.c b/orc/orcemulateopcodes.c index 0566dba..5b0a8ed 100644 --- a/orc/orcemulateopcodes.c +++ b/orc/orcemulateopcodes.c @@ -2798,7 +2798,7 @@ emulate_mulhul (OrcOpcodeExecutor *ex, int n) /* 1: loadl */ var33.i = var5.i; /* 2: mulhul */ - var34.i = ((orc_uint64)var32.i * (orc_uint64)var33.i) >> 32; + var34.i = ((orc_uint64)(orc_uint32)var32.i * (orc_uint64)(orc_uint32)var33.i) >> 32; /* 3: storel */ var0.i = var34.i; *ptr0 = var0; diff --git a/orc/orcfunctions.c b/orc/orcfunctions.c index cba5ae6..0d4db6b 100644 --- a/orc/orcfunctions.c +++ b/orc/orcfunctions.c @@ -195,14 +195,17 @@ orc_memset (void * d1, int p1, int n){ orc_int8 * ptr0; const int var24 = p1; orc_int8 var32; + orc_int8 var33; ptr0 = (orc_int8 *)d1; for (i = 0; i < n; i++) { - /* 0: copyb */ + /* 0: loadpb */ var32 = var24; - /* 1: storeb */ - var0 = var32; + /* 1: copyb */ + var33 = var32; + /* 2: storeb */ + var0 = var33; *ptr0 = var0; ptr0++; } @@ -219,14 +222,17 @@ _backup_orc_memset (OrcExecutor *ex) orc_int8 * ptr0; const int var24 = ex->params[24]; orc_int8 var32; + orc_int8 var33; ptr0 = (orc_int8 *)ex->arrays[0]; for (i = 0; i < n; i++) { - /* 0: copyb */ + /* 0: loadpb */ var32 = var24; - /* 1: storeb */ - var0 = var32; + /* 1: copyb */ + var33 = var32; + /* 2: storeb */ + var0 = var33; *ptr0 = var0; ptr0++; } diff --git a/orc/orcopcodes.c b/orc/orcopcodes.c index 2e7d30e..6152f6e 100644 --- a/orc/orcopcodes.c +++ b/orc/orcopcodes.c @@ -468,7 +468,7 @@ BINARY_SL(minsl, (a < b) ? a : b) BINARY_UL(minul, ((orc_uint32)a < (orc_uint32)b) ? a : b) BINARY_SL(mulll, (a * b) & 0xffffffff) BINARY_SL(mulhsl, ((orc_int64)a * (orc_int64)b) >> 32) -BINARY_UL(mulhul, ((orc_uint64)a * (orc_uint64)b) >> 32) +BINARY_UL(mulhul, ((orc_uint64)(orc_uint32)a * (orc_uint64)(orc_uint32)b) >> 32) BINARY_SL(orl, a | b) BINARY_SL(shll, a << b) BINARY_SL(shrsl, a >> b)