gas/testsuite/
authorH.J. Lu <hjl.tools@gmail.com>
Sat, 11 Feb 2006 17:00:59 +0000 (17:00 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Sat, 11 Feb 2006 17:00:59 +0000 (17:00 +0000)
2006-02-11  H.J. Lu  <hongjiu.lu@intel.com>

* gas/i386/i386.exp: Add "x86-64-crx" and "x86-64-crx-suffix".

* gas/i386/x86-64-crx-suffix.d: New file.
* gas/i386/x86-64-crx.d: Likewise.
* gas/i386/x86-64-crx.s: Likewise.

opcodes/

2006-02-11  H.J. Lu  <hongjiu.lu@intel.com>

* i386-dis.c ('Z'): Add a new macro.
(dis386_twobyte): Use "movZ" for control register moves.

gas/testsuite/ChangeLog
gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/x86-64-crx-suffix.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-crx.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-crx.s [new file with mode: 0644]
opcodes/ChangeLog
opcodes/i386-dis.c

index a51a1f4c63f315dd91e13c08a46145a724504a4d..193a0184fbfc342eb04e147a6ddd59c5b1fee80b 100644 (file)
@@ -1,3 +1,11 @@
+2006-02-11  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * gas/i386/i386.exp: Add "x86-64-crx" and "x86-64-crx-suffix".
+
+       * gas/i386/x86-64-crx-suffix.d: New file.
+       * gas/i386/x86-64-crx.d: Likewise.
+       * gas/i386/x86-64-crx.s: Likewise.
+
 2006-02-07  Nathan Sidwell  <nathan@codesourcery.com>
 
        * testsuite/gas/m68k/all.exp: Add arch-cpu-1 test.
index 6638d4b61503c23626c926638a23ef9f57dab85b..91a5e9b079147d87ec5c60a2f975d31e02a8395a 100644 (file)
@@ -132,6 +132,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t
     run_dump_test "x86-64-vmx"
     run_dump_test "immed64"
     run_dump_test "x86-64-prescott"
+    run_dump_test "x86-64-crx"
+    run_dump_test "x86-64-crx-suffix"
 
     if { ![istarget "*-*-aix*"]
       && ![istarget "*-*-beos*"]
diff --git a/gas/testsuite/gas/i386/x86-64-crx-suffix.d b/gas/testsuite/gas/i386/x86-64-crx-suffix.d
new file mode 100644 (file)
index 0000000..1dc3584
--- /dev/null
@@ -0,0 +1,21 @@
+#objdump: -dwMsuffix
+#name: x86-64 control register related opcodes (with suffixes)
+#source: x86-64-crx.s
+
+.*: +file format elf64-x86-64
+
+Disassembly of section .text:
+
+0+ <_start>:
+[      ]*[0-9a-f]+:    44 0f 20 c0[    ]+movq[         ]+?%cr8,%rax
+[      ]*[0-9a-f]+:    44 0f 20 c7[    ]+movq[         ]+?%cr8,%rdi
+[      ]*[0-9a-f]+:    44 0f 22 c0[    ]+movq[         ]+?%rax,%cr8
+[      ]*[0-9a-f]+:    44 0f 22 c7[    ]+movq[         ]+?%rdi,%cr8
+[      ]*[0-9a-f]+:    44 0f 20 c0[    ]+movq[         ]+?%cr8,%rax
+[      ]*[0-9a-f]+:    44 0f 20 c7[    ]+movq[         ]+?%cr8,%rdi
+[      ]*[0-9a-f]+:    44 0f 22 c0[    ]+movq[         ]+?%rax,%cr8
+[      ]*[0-9a-f]+:    44 0f 22 c7[    ]+movq[         ]+?%rdi,%cr8
+[      ]*[0-9a-f]+:    44 0f 20 c0[    ]+movq[         ]+?%cr8,%rax
+[      ]*[0-9a-f]+:    44 0f 20 c7[    ]+movq[         ]+?%cr8,%rdi
+[      ]*[0-9a-f]+:    44 0f 22 c0[    ]+movq[         ]+?%rax,%cr8
+[      ]*[0-9a-f]+:    44 0f 22 c7[    ]+movq[         ]+?%rdi,%cr8
diff --git a/gas/testsuite/gas/i386/x86-64-crx.d b/gas/testsuite/gas/i386/x86-64-crx.d
new file mode 100644 (file)
index 0000000..8c1333f
--- /dev/null
@@ -0,0 +1,21 @@
+#objdump: -dw
+#name: x86-64 control register related opcodes
+#source: x86-64-crx.s
+
+.*: +file format elf64-x86-64
+
+Disassembly of section .text:
+
+0+ <_start>:
+[      ]*[0-9a-f]+:    44 0f 20 c0[    ]+movq?[        ]+?%cr8,%rax
+[      ]*[0-9a-f]+:    44 0f 20 c7[    ]+movq?[        ]+?%cr8,%rdi
+[      ]*[0-9a-f]+:    44 0f 22 c0[    ]+movq?[        ]+?%rax,%cr8
+[      ]*[0-9a-f]+:    44 0f 22 c7[    ]+movq?[        ]+?%rdi,%cr8
+[      ]*[0-9a-f]+:    44 0f 20 c0[    ]+movq?[        ]+?%cr8,%rax
+[      ]*[0-9a-f]+:    44 0f 20 c7[    ]+movq?[        ]+?%cr8,%rdi
+[      ]*[0-9a-f]+:    44 0f 22 c0[    ]+movq?[        ]+?%rax,%cr8
+[      ]*[0-9a-f]+:    44 0f 22 c7[    ]+movq?[        ]+?%rdi,%cr8
+[      ]*[0-9a-f]+:    44 0f 20 c0[    ]+movq?[        ]+?%cr8,%rax
+[      ]*[0-9a-f]+:    44 0f 20 c7[    ]+movq?[        ]+?%cr8,%rdi
+[      ]*[0-9a-f]+:    44 0f 22 c0[    ]+movq?[        ]+?%rax,%cr8
+[      ]*[0-9a-f]+:    44 0f 22 c7[    ]+movq?[        ]+?%rdi,%cr8
diff --git a/gas/testsuite/gas/i386/x86-64-crx.s b/gas/testsuite/gas/i386/x86-64-crx.s
new file mode 100644 (file)
index 0000000..bc288c3
--- /dev/null
@@ -0,0 +1,18 @@
+.text
+_start:
+       movq    %cr8, %rax
+       movq    %cr8, %rdi
+       movq    %rax, %cr8
+       movq    %rdi, %cr8
+
+.att_syntax noprefix
+       movq    cr8, rax
+       movq    cr8, rdi
+       movq    rax, cr8
+       movq    rdi, cr8
+
+.intel_syntax noprefix
+       mov     rax, cr8
+       mov     rdi, cr8
+       mov     cr8, rax
+       mov     cr8, rdi
index 9de01b6c023ff00657a0b425aa3494f806bbb8b7..629ab5e9bf77e7c2a03e3ef5bc8cdfc914e7f3dd 100644 (file)
@@ -1,3 +1,8 @@
+2006-02-11  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * i386-dis.c ('Z'): Add a new macro.
+       (dis386_twobyte): Use "movZ" for control register moves.
+
 2006-02-10  Nick Clifton  <nickc@redhat.com>
 
        * iq2000-asm.c: Regenerate.
index 973682bde21e0a5e240575b68daaa61003275c3b..65cb43ce651d927fad5e3ad19c72c9241a1b2040 100644 (file)
@@ -491,6 +491,7 @@ struct dis386 {
    'W' => print 'b' or 'w' ("w" or "de" in intel mode)
    'X' => print 's', 'd' depending on data16 prefix (for XMM)
    'Y' => 'q' if instruction has an REX 64bit overwrite prefix
+   'Z' => print 'q' in 64bit mode and behave as 'L' otherwise
 
    Many of the above letters print nothing in Intel mode.  See "putop"
    for the details.
@@ -830,9 +831,9 @@ static const struct dis386 dis386_twobyte[] = {
   { "(bad)",           XX, XX, XX },
   { "(bad)",           XX, XX, XX },
   /* 20 */
-  { "movL",            Rm, Cm, XX },
+  { "movZ",            Rm, Cm, XX },
   { "movL",            Rm, Dm, XX },
-  { "movL",            Cm, Rm, XX },
+  { "movZ",            Cm, Rm, XX },
   { "movL",            Dm, Rm, XX },
   { "movL",            Rd, Td, XX },
   { "(bad)",           XX, XX, XX },
@@ -2856,6 +2857,15 @@ putop (const char *template, int sizeflag)
            break;
          *obufp++ = 'l';
          break;
+       case 'Z':
+         if (intel_syntax)
+           break;
+         if (address_mode == mode_64bit && (sizeflag & SUFFIX_ALWAYS))
+           {
+             *obufp++ = 'q';
+             break;
+           }
+         /* Fall through.  */
        case 'L':
          if (intel_syntax)
            break;