x86: don't show suffixes for to-scalar-int conversion insns
authorJan Beulich <jbeulich@novell.com>
Wed, 28 Mar 2018 12:22:00 +0000 (14:22 +0200)
committerJan Beulich <jbeulich@suse.com>
Wed, 28 Mar 2018 12:22:00 +0000 (14:22 +0200)
In the course of folding their patterns (possible now that the pointless
and partly even bogus VecESize are no longer in the way) I've noticed
that vcvt*2usi, other than their vcvt*2si counterparts, don't allow for
any suffixes. As that is supposedly intentional, make the disassembler
consistently omit suffixes for all to-scalar-int conversion insns.

gas/ChangeLog
gas/testsuite/gas/i386/ilp32/x86-64-simd-suffix.d
gas/testsuite/gas/i386/x86-64-simd-suffix.d
opcodes/ChangeLog
opcodes/i386-dis.c

index 0df61edaf4a48cc397f68c92a03941e2f7fc7613..d1d49f88b6dd9498a5a6fada20e1b0a77fb4ea9f 100644 (file)
@@ -1,3 +1,9 @@
+2018-03-28  Jan Beulich  <jbeulich@suse.com>
+
+       * testsuite/gas/i386/ilp32/x86-64-simd-suffix.d,
+       testsuite/gas/i386/x86-64-simd-suffix.d: Drop q suffix from
+       cvt*2si.
+
 2018-03-28  Nick Clifton  <nickc@redhat.com>
 
        PR 22988
index 73514ef3fe8b124acff2a5e28b124686d07ece5f..84f7681fef28333b6bd542515a80d9a312fea936 100644 (file)
@@ -61,15 +61,15 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    0f 2a 00                cvtpi2ps \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    0f 2d 00                cvtps2pi \(%rax\),%mm0
 [      ]*[a-f0-9]+:    f2 0f 2d 00             cvtsd2si \(%rax\),%eax
-[      ]*[a-f0-9]+:    f2 48 0f 2d 00          cvtsd2siq \(%rax\),%rax
+[      ]*[a-f0-9]+:    f2 48 0f 2d 00          cvtsd2si \(%rax\),%rax
 [      ]*[a-f0-9]+:    f2 0f 2c 00             cvttsd2si \(%rax\),%eax
-[      ]*[a-f0-9]+:    f2 48 0f 2c 00          cvttsd2siq \(%rax\),%rax
+[      ]*[a-f0-9]+:    f2 48 0f 2c 00          cvttsd2si \(%rax\),%rax
 [      ]*[a-f0-9]+:    f2 0f 5a 00             cvtsd2ss \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    f3 0f 5a 00             cvtss2sd \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    f3 0f 2d 00             cvtss2si \(%rax\),%eax
-[      ]*[a-f0-9]+:    f3 48 0f 2d 00          cvtss2siq \(%rax\),%rax
+[      ]*[a-f0-9]+:    f3 48 0f 2d 00          cvtss2si \(%rax\),%rax
 [      ]*[a-f0-9]+:    f3 0f 2c 00             cvttss2si \(%rax\),%eax
-[      ]*[a-f0-9]+:    f3 48 0f 2c 00          cvttss2siq \(%rax\),%rax
+[      ]*[a-f0-9]+:    f3 48 0f 2c 00          cvttss2si \(%rax\),%rax
 [      ]*[a-f0-9]+:    f2 0f 5e 00             divsd  \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    f3 0f 5e 00             divss  \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    f2 0f 5f 00             maxsd  \(%rax\),%xmm0
@@ -180,15 +180,15 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    0f 2a 00                cvtpi2ps \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    0f 2d 00                cvtps2pi \(%rax\),%mm0
 [      ]*[a-f0-9]+:    f2 0f 2d 00             cvtsd2si \(%rax\),%eax
-[      ]*[a-f0-9]+:    f2 48 0f 2d 00          cvtsd2siq \(%rax\),%rax
+[      ]*[a-f0-9]+:    f2 48 0f 2d 00          cvtsd2si \(%rax\),%rax
 [      ]*[a-f0-9]+:    f2 0f 2c 00             cvttsd2si \(%rax\),%eax
-[      ]*[a-f0-9]+:    f2 48 0f 2c 00          cvttsd2siq \(%rax\),%rax
+[      ]*[a-f0-9]+:    f2 48 0f 2c 00          cvttsd2si \(%rax\),%rax
 [      ]*[a-f0-9]+:    f2 0f 5a 00             cvtsd2ss \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    f3 0f 5a 00             cvtss2sd \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    f3 0f 2d 00             cvtss2si \(%rax\),%eax
-[      ]*[a-f0-9]+:    f3 48 0f 2d 00          cvtss2siq \(%rax\),%rax
+[      ]*[a-f0-9]+:    f3 48 0f 2d 00          cvtss2si \(%rax\),%rax
 [      ]*[a-f0-9]+:    f3 0f 2c 00             cvttss2si \(%rax\),%eax
-[      ]*[a-f0-9]+:    f3 48 0f 2c 00          cvttss2siq \(%rax\),%rax
+[      ]*[a-f0-9]+:    f3 48 0f 2c 00          cvttss2si \(%rax\),%rax
 [      ]*[a-f0-9]+:    f2 0f 5e 00             divsd  \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    f3 0f 5e 00             divss  \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    f2 0f 5f 00             maxsd  \(%rax\),%xmm0
index e4431e0e25a60b87ebe3e0ff14cedb6367beb83c..8c05c07f14828b4c2cb01dc5ebc95e8e018276b9 100644 (file)
@@ -61,15 +61,15 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    0f 2a 00                cvtpi2ps \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    0f 2d 00                cvtps2pi \(%rax\),%mm0
 [      ]*[a-f0-9]+:    f2 0f 2d 00             cvtsd2si \(%rax\),%eax
-[      ]*[a-f0-9]+:    f2 48 0f 2d 00          cvtsd2siq \(%rax\),%rax
+[      ]*[a-f0-9]+:    f2 48 0f 2d 00          cvtsd2si \(%rax\),%rax
 [      ]*[a-f0-9]+:    f2 0f 2c 00             cvttsd2si \(%rax\),%eax
-[      ]*[a-f0-9]+:    f2 48 0f 2c 00          cvttsd2siq \(%rax\),%rax
+[      ]*[a-f0-9]+:    f2 48 0f 2c 00          cvttsd2si \(%rax\),%rax
 [      ]*[a-f0-9]+:    f2 0f 5a 00             cvtsd2ss \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    f3 0f 5a 00             cvtss2sd \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    f3 0f 2d 00             cvtss2si \(%rax\),%eax
-[      ]*[a-f0-9]+:    f3 48 0f 2d 00          cvtss2siq \(%rax\),%rax
+[      ]*[a-f0-9]+:    f3 48 0f 2d 00          cvtss2si \(%rax\),%rax
 [      ]*[a-f0-9]+:    f3 0f 2c 00             cvttss2si \(%rax\),%eax
-[      ]*[a-f0-9]+:    f3 48 0f 2c 00          cvttss2siq \(%rax\),%rax
+[      ]*[a-f0-9]+:    f3 48 0f 2c 00          cvttss2si \(%rax\),%rax
 [      ]*[a-f0-9]+:    f2 0f 5e 00             divsd  \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    f3 0f 5e 00             divss  \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    f2 0f 5f 00             maxsd  \(%rax\),%xmm0
@@ -180,15 +180,15 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    0f 2a 00                cvtpi2ps \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    0f 2d 00                cvtps2pi \(%rax\),%mm0
 [      ]*[a-f0-9]+:    f2 0f 2d 00             cvtsd2si \(%rax\),%eax
-[      ]*[a-f0-9]+:    f2 48 0f 2d 00          cvtsd2siq \(%rax\),%rax
+[      ]*[a-f0-9]+:    f2 48 0f 2d 00          cvtsd2si \(%rax\),%rax
 [      ]*[a-f0-9]+:    f2 0f 2c 00             cvttsd2si \(%rax\),%eax
-[      ]*[a-f0-9]+:    f2 48 0f 2c 00          cvttsd2siq \(%rax\),%rax
+[      ]*[a-f0-9]+:    f2 48 0f 2c 00          cvttsd2si \(%rax\),%rax
 [      ]*[a-f0-9]+:    f2 0f 5a 00             cvtsd2ss \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    f3 0f 5a 00             cvtss2sd \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    f3 0f 2d 00             cvtss2si \(%rax\),%eax
-[      ]*[a-f0-9]+:    f3 48 0f 2d 00          cvtss2siq \(%rax\),%rax
+[      ]*[a-f0-9]+:    f3 48 0f 2d 00          cvtss2si \(%rax\),%rax
 [      ]*[a-f0-9]+:    f3 0f 2c 00             cvttss2si \(%rax\),%eax
-[      ]*[a-f0-9]+:    f3 48 0f 2c 00          cvttss2siq \(%rax\),%rax
+[      ]*[a-f0-9]+:    f3 48 0f 2c 00          cvttss2si \(%rax\),%rax
 [      ]*[a-f0-9]+:    f2 0f 5e 00             divsd  \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    f3 0f 5e 00             divss  \(%rax\),%xmm0
 [      ]*[a-f0-9]+:    f2 0f 5f 00             maxsd  \(%rax\),%xmm0
index 584aeb8b9fc75c45ed7471a3e1912b78d322aeed..b1564565f6039820997ed2c5eba5ba4168114155 100644 (file)
@@ -1,3 +1,9 @@
+2018-03-28  Jan Beulich  <jbeulich@suse.com>
+
+       * i386-dis.c (prefix_table): Drop Y for cvt*2si.
+       (vex_len_table): Drop Y for vcvt*2si.
+       (putop): Replace plain 'Y' handling by abort().
+
 2018-03-28  Nick Clifton  <nickc@redhat.com>
 
        PR 22988
index d8a6db3ee8857e270881c69265391dfcc74348f6..e5791c9a5f5192229c44b01ee506f2546da8cbc1 100644 (file)
@@ -2536,8 +2536,7 @@ struct dis386 {
          prefix and behave as 'S' otherwise
    'W' => print 'b', 'w' or 'l' ('d' in Intel mode)
    'X' => print 's', 'd' depending on data16 prefix (for XMM)
-   'Y' => 'q' if instruction has an REX 64bit overwrite prefix and
-         suffix_always is true.
+   'Y' unused.
    'Z' => print 'q' in 64bit mode and behave as 'L' otherwise
    '!' => change condition from true to false or from false to true.
    '%' => add 1 upper case letter to the macro.
@@ -3925,17 +3924,17 @@ static const struct dis386 prefix_table[][4] = {
   /* PREFIX_0F2C */
   {
     { "cvttps2pi", { MXC, EXq }, PREFIX_OPCODE },
-    { "cvttss2siY", { Gv, EXd }, PREFIX_OPCODE },
+    { "cvttss2si", { Gv, EXd }, PREFIX_OPCODE },
     { "cvttpd2pi", { MXC, EXx }, PREFIX_OPCODE },
-    { "cvttsd2siY", { Gv, EXq }, PREFIX_OPCODE },
+    { "cvttsd2si", { Gv, EXq }, PREFIX_OPCODE },
   },
 
   /* PREFIX_0F2D */
   {
     { "cvtps2pi", { MXC, EXq }, PREFIX_OPCODE },
-    { "cvtss2siY", { Gv, EXd }, PREFIX_OPCODE },
+    { "cvtss2si", { Gv, EXd }, PREFIX_OPCODE },
     { "cvtpd2pi", { MXC, EXx }, PREFIX_OPCODE },
-    { "cvtsd2siY", { Gv, EXq }, PREFIX_OPCODE },
+    { "cvtsd2si", { Gv, EXq }, PREFIX_OPCODE },
   },
 
   /* PREFIX_0F2E */
@@ -9547,26 +9546,26 @@ static const struct dis386 vex_len_table[][2] = {
 
   /* VEX_LEN_0F2C_P_1 */
   {
-    { "vcvttss2siY",   { Gv, EXdScalar }, 0 },
-    { "vcvttss2siY",   { Gv, EXdScalar }, 0 },
+    { "vcvttss2si",    { Gv, EXdScalar }, 0 },
+    { "vcvttss2si",    { Gv, EXdScalar }, 0 },
   },
 
   /* VEX_LEN_0F2C_P_3 */
   {
-    { "vcvttsd2siY",   { Gv, EXqScalar }, 0 },
-    { "vcvttsd2siY",   { Gv, EXqScalar }, 0 },
+    { "vcvttsd2si",    { Gv, EXqScalar }, 0 },
+    { "vcvttsd2si",    { Gv, EXqScalar }, 0 },
   },
 
   /* VEX_LEN_0F2D_P_1 */
   {
-    { "vcvtss2siY",    { Gv, EXdScalar }, 0 },
-    { "vcvtss2siY",    { Gv, EXdScalar }, 0 },
+    { "vcvtss2si",     { Gv, EXdScalar }, 0 },
+    { "vcvtss2si",     { Gv, EXdScalar }, 0 },
   },
 
   /* VEX_LEN_0F2D_P_3 */
   {
-    { "vcvtsd2siY",    { Gv, EXqScalar }, 0 },
-    { "vcvtsd2siY",    { Gv, EXqScalar }, 0 },
+    { "vcvtsd2si",     { Gv, EXqScalar }, 0 },
+    { "vcvtsd2si",     { Gv, EXqScalar }, 0 },
   },
 
   /* VEX_LEN_0F2E_P_0 */
@@ -14414,16 +14413,7 @@ case_S:
          break;
        case 'Y':
          if (l == 0 && len == 1)
-           {
-             if (intel_syntax || !(sizeflag & SUFFIX_ALWAYS))
-               break;
-             if (rex & REX_W)
-               {
-                 USED_REX (REX_W);
-                 *obufp++ = 'q';
-               }
-             break;
-           }
+           abort ();
          else
            {
              if (l != 1 || len != 2 || last[0] != 'X')