* m32c.cpu (f-dsp-8-s24): Mask high byte after shifting it.
authorDJ Delorie <dj@redhat.com>
Sat, 3 Jul 2010 04:09:56 +0000 (04:09 +0000)
committerDJ Delorie <dj@redhat.com>
Sat, 3 Jul 2010 04:09:56 +0000 (04:09 +0000)
* m32c-ibld.c: Regenerate.

cpu/ChangeLog
cpu/m32c.cpu
opcodes/ChangeLog
opcodes/m32c-ibld.c

index 975feea..667538a 100644 (file)
@@ -1,3 +1,7 @@
+2010-07-03  DJ Delorie  <dj@delorie.com>
+
+       * m32c.cpu (f-dsp-8-s24): Mask high byte after shifting it.
+
 2010-02-11  Doug Evans  <dje@sebabeach.org>
 
        * m32r.cpu (HASH-PREFIX): Delete.
index 28d6ea5..bcc3616 100644 (file)
 )
 (df  f-dsp-8-s24 "24 bit signed" (all-isas) 8 24 INT
      ((value pc) (or SI
-                    (or (srl value 16) (and value #xff00))
+                    (or (and (srl value 16) #xff) (and value #xff00))
                     (sll (ext INT (trunc QI (and value #xff))) 16)))
      ((value pc) (or SI
-                    (or (srl value 16) (and value #xff00))
+                    (or (and (srl value 16) #xff) (and value #xff00))
                     (sll (ext INT (trunc QI (and value #xff))) 16)))
  )
 
index 50489cd..527a93c 100644 (file)
@@ -1,3 +1,7 @@
+2010-07-03  DJ Delorie  <dj@delorie.com>
+
+       * m32c-ibld.c: Regenerate.
+
 2010-07-03  Alan Modra  <amodra@gmail.com>
 
        * ppc-opc.c (PWR2COM): Define.
index 66fc999..e83d8e0 100644 (file)
@@ -1077,7 +1077,7 @@ m32c_cgen_insert_operand (CGEN_CPU_DESC cd,
     case M32C_OPERAND_DSP_8_S24 :
       {
         long value = fields->f_dsp_8_s24;
-        value = ((((((USI) (value) >> (16))) | (((value) & (65280))))) | (((EXTQISI (TRUNCSIQI (((value) & (255))))) << (16))));
+        value = ((((((((USI) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((EXTQISI (TRUNCSIQI (((value) & (255))))) << (16))));
         errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 24, 32, total_length, buffer);
       }
       break;
@@ -2234,7 +2234,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC cd,
       {
         long value;
         length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 24, 32, total_length, pc, & value);
-        value = ((((((USI) (value) >> (16))) | (((value) & (65280))))) | (((EXTQISI (TRUNCSIQI (((value) & (255))))) << (16))));
+        value = ((((((((USI) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((EXTQISI (TRUNCSIQI (((value) & (255))))) << (16))));
         fields->f_dsp_8_s24 = value;
       }
       break;