ubsan: or1k: left shift of negative value
authorAlan Modra <amodra@gmail.com>
Fri, 20 Dec 2019 04:07:44 +0000 (14:37 +1030)
committerAlan Modra <amodra@gmail.com>
Fri, 20 Dec 2019 07:27:58 +0000 (17:57 +1030)
cpu/
* or1korbis.cpu (f-disp26, f-disp21): Don't left shift negative values.
opcodes/
* or1k-ibld.c: Regenerate.

cpu/ChangeLog
cpu/or1korbis.cpu
opcodes/ChangeLog
opcodes/or1k-ibld.c

index 8755ee70a4d1e69515cb896307dd667db0247138..1729efd266c1cfde651203e77e4c199eb22b6273 100644 (file)
@@ -1,3 +1,7 @@
+2019-12-20  Alan Modra  <amodra@gmail.com>
+
+       * or1korbis.cpu (f-disp26, f-disp21): Don't left shift negative values.
+
 2019-12-17  Alan Modra  <amodra@gmail.com>
 
        * bpf.cpu (f-imm64): Avoid signed overflow.
 2019-12-17  Alan Modra  <amodra@gmail.com>
 
        * bpf.cpu (f-imm64): Avoid signed overflow.
index 3741d4c8f7d3f5a6a4639afd1d1b20d736002230..a8002a37185853f7ed8c9b36d248993467f7be8a 100644 (file)
@@ -76,7 +76,7 @@
     26
     INT
     ((value pc) (sra IAI (sub IAI value pc) (const 2)))
     26
     INT
     ((value pc) (sra IAI (sub IAI value pc) (const 2)))
-    ((value pc) (add IAI (sll IAI value (const 2)) pc))
+    ((value pc) (add IAI (mul IAI value (const 4)) pc))
     )
 
 ; PC relative, 21-bit, 13 shifted to right, aligned.
     )
 
 ; PC relative, 21-bit, 13 shifted to right, aligned.
@@ -91,7 +91,7 @@
     ((value pc)
      (sub IAI (sra IAI value (const 13)) (sra IAI pc (const 13))))
     ((value pc)
     ((value pc)
      (sub IAI (sra IAI value (const 13)) (sra IAI pc (const 13))))
     ((value pc)
-     (sll IAI (add IAI value (sra IAI pc (const 13))) (const 13)))
+     (mul IAI (add IAI value (sra IAI pc (const 13))) (const 8192)))
     )
 
 ; Immediates.
     )
 
 ; Immediates.
index e0d2fab410bfeed1860783db400db3d238e974d4..377f548e9cf5d0ab7ce4cfa534ddcf65b879af7a 100644 (file)
@@ -1,3 +1,7 @@
+2019-12-20  Alan Modra  <amodra@gmail.com>
+
+       * or1k-ibld.c: Regenerate.
+
 2019-12-20  Alan Modra  <amodra@gmail.com>
 
        * hppa-dis.c (extract_16, extract_21, print_insn_hppa): Use
 2019-12-20  Alan Modra  <amodra@gmail.com>
 
        * hppa-dis.c (extract_16, extract_21, print_insn_hppa): Use
index 6271f5c6d11ddcf00351abf15ccac8f2da4dbabc..57eeb522a62fd93ad7af43aabb432f0f81b0bac5 100644 (file)
@@ -783,7 +783,7 @@ or1k_cgen_extract_operand (CGEN_CPU_DESC cd,
       {
         long value;
         length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_ABS_ADDR), 0, 20, 21, 32, total_length, pc, & value);
       {
         long value;
         length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_ABS_ADDR), 0, 20, 21, 32, total_length, pc, & value);
-        value = ((((value) + (((DI) (pc) >> (13))))) << (13));
+        value = ((((value) + (((DI) (pc) >> (13))))) * (MAKEDI (0, 8192)));
         fields->f_disp21 = value;
       }
       break;
         fields->f_disp21 = value;
       }
       break;
@@ -791,7 +791,7 @@ or1k_cgen_extract_operand (CGEN_CPU_DESC cd,
       {
         long value;
         length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 25, 26, 32, total_length, pc, & value);
       {
         long value;
         length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 25, 26, 32, total_length, pc, & value);
-        value = ((((value) << (2))) + (pc));
+        value = ((((value) * (MAKEDI (0, 4)))) + (pc));
         fields->f_disp26 = value;
       }
       break;
         fields->f_disp26 = value;
       }
       break;
This page took 0.029045 seconds and 4 git commands to generate.