fixed zero shifts (64 bit case)
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Thu, 22 May 2008 14:39:25 +0000 (14:39 +0000)
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Thu, 22 May 2008 14:39:25 +0000 (14:39 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4527 c046a42c-6fe2-441c-8c8c-71466251a162

tcg/tcg.c

index c5b6594..1ccde19 100644 (file)
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -622,9 +622,10 @@ void tcg_gen_call(TCGContext *s, TCGv func, unsigned int flags,
 void tcg_gen_shifti_i64(TCGv ret, TCGv arg1, 
                         int c, int right, int arith)
 {
-    if (c == 0)
-        return;
-    if (c >= 32) {
+    if (c == 0) {
+        tcg_gen_mov_i32(ret, arg1);
+        tcg_gen_mov_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1));
+    } else if (c >= 32) {
         c -= 32;
         if (right) {
             if (arith) {