Power10 VSX scalar min-max-compare quad precision operations
[deliverable/binutils-gdb.git] / opcodes / d30v-dis.c
index 8d96c28e6d987b19f501ea96075660c8e5e5f1a9..ba43731122d80f24995261377e7ba7763d69817f 100644 (file)
@@ -1,5 +1,5 @@
 /* Disassemble D30V instructions.
-   Copyright (C) 1997-2019 Free Software Foundation, Inc.
+   Copyright (C) 1997-2020 Free Software Foundation, Inc.
 
    This file is part of the GNU opcodes library.
 
@@ -123,9 +123,9 @@ print_insn (struct disassemble_info *info,
            int is_long,
            int show_ext)
 {
-  int val, opnum, need_comma = 0;
+  unsigned int val, opnum;
   const struct d30v_operand *oper;
-  int i, match, need_paren = 0, found_control = 0;
+  int i, match, need_comma = 0, need_paren = 0, found_control = 0;
   unsigned int opind = 0;
 
   (*info->fprintf_func) (info->stream, "%s", insn->op->name);
@@ -271,14 +271,10 @@ print_insn (struct disassemble_info *info,
          /* IMM6S3 is unsigned.  */
          if (oper->flags & OPERAND_SIGNED || bits == 32)
            {
-             long max;
-             max = (1 << (bits - 1));
-             if (val & max)
+             unsigned int sign = 1u << (bits - 1);
+             if (val & sign)
                {
-                 if (bits == 32)
-                   val = -val;
-                 else
-                   val = -val & ((1 << bits) - 1);
+                 val = -val & (sign + sign - 1);
                  neg = 1;
                }
            }
@@ -303,13 +299,11 @@ print_insn (struct disassemble_info *info,
        {
          if (oper->flags & OPERAND_SIGNED)
            {
-             int max = (1 << (bits - 1));
+             unsigned int sign = 1u << (bits - 1);
 
-             if (val & max)
+             if (val & sign)
                {
-                 val = -val;
-                 if (bits < 32)
-                   val &= ((1 << bits) - 1);
+                 val = -val & (sign + sign - 1);
                  (*info->fprintf_func) (info->stream, "-");
                }
            }
This page took 0.023593 seconds and 4 git commands to generate.