aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2008-01-24 15:11:35 +0000
committerH.J. Lu <hjl.tools@gmail.com>2008-01-24 15:11:35 +0000
commit82c18208b8100ecd9790494d312c419a03f36eb7 (patch)
tree8081baca5e7b6d8e1eb7929f770471e3d6662b5e
parentdd6be23411f9494c8f4b4067e6047079cefc9630 (diff)
downloadfsf-binutils-gdb-82c18208b8100ecd9790494d312c419a03f36eb7.zip
fsf-binutils-gdb-82c18208b8100ecd9790494d312c419a03f36eb7.tar.gz
fsf-binutils-gdb-82c18208b8100ecd9790494d312c419a03f36eb7.tar.bz2
gas/testsuite/
2008-01-24 H.J. Lu <hongjiu.lu@intel.com> * gas/i386/x86-64-sib.s: Add tests for r12. * gas/i386/x86-64-sib-intel.d: Updated. * gas/i386/x86-64-sib.d: Likewise. opcodes/ 2008-01-24 H.J. Lu <hongjiu.lu@intel.com> * i386-dis.c (OP_E_extended): Handle r12 like rsp.
-rw-r--r--gas/testsuite/ChangeLog7
-rw-r--r--gas/testsuite/gas/i386/x86-64-sib-intel.d13
-rw-r--r--gas/testsuite/gas/i386/x86-64-sib.d13
-rw-r--r--gas/testsuite/gas/i386/x86-64-sib.s14
-rw-r--r--opcodes/ChangeLog4
-rw-r--r--opcodes/i386-dis.c14
6 files changed, 57 insertions, 8 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 01739e2..c13d97b 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2008-01-24 H.J. Lu <hongjiu.lu@intel.com>
+
+ * gas/i386/x86-64-sib.s: Add tests for r12.
+
+ * gas/i386/x86-64-sib-intel.d: Updated.
+ * gas/i386/x86-64-sib.d: Likewise.
+
2008-01-23 H.J. Lu <hongjiu.lu@intel.com>
* gas/i386/i386.exp : Run x86-64-arch-1 and x86-64-arch-10.
diff --git a/gas/testsuite/gas/i386/x86-64-sib-intel.d b/gas/testsuite/gas/i386/x86-64-sib-intel.d
index 1ae72ea..85180b5 100644
--- a/gas/testsuite/gas/i386/x86-64-sib-intel.d
+++ b/gas/testsuite/gas/i386/x86-64-sib-intel.d
@@ -28,9 +28,16 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 8b 04 e3 mov eax,DWORD PTR \[rbx\+riz\*8\]
[ ]*[a-f0-9]+: 8b 04 24 mov eax,DWORD PTR \[rsp\]
[ ]*[a-f0-9]+: 8b 04 24 mov eax,DWORD PTR \[rsp\]
+[ ]*[a-f0-9]+: 8b 04 24 mov eax,DWORD PTR \[rsp\]
[ ]*[a-f0-9]+: 8b 04 64 mov eax,DWORD PTR \[rsp\+riz\*2\]
[ ]*[a-f0-9]+: 8b 04 a4 mov eax,DWORD PTR \[rsp\+riz\*4\]
[ ]*[a-f0-9]+: 8b 04 e4 mov eax,DWORD PTR \[rsp\+riz\*8\]
+[ ]*[a-f0-9]+: 41 8b 04 24 mov eax,DWORD PTR \[r12\]
+[ ]*[a-f0-9]+: 41 8b 04 24 mov eax,DWORD PTR \[r12\]
+[ ]*[a-f0-9]+: 41 8b 04 24 mov eax,DWORD PTR \[r12\]
+[ ]*[a-f0-9]+: 41 8b 04 64 mov eax,DWORD PTR \[r12\+riz\*2\]
+[ ]*[a-f0-9]+: 41 8b 04 a4 mov eax,DWORD PTR \[r12\+riz\*4\]
+[ ]*[a-f0-9]+: 41 8b 04 e4 mov eax,DWORD PTR \[r12\+riz\*8\]
[ ]*[a-f0-9]+: 8b 04 25 e2 ff ff ff mov eax,DWORD PTR ds:0xffffffffffffffe2
[ ]*[a-f0-9]+: 8b 04 65 e2 ff ff ff mov eax,DWORD PTR \[riz\*2-0x1e\]
[ ]*[a-f0-9]+: 8b 04 a5 e2 ff ff ff mov eax,DWORD PTR \[riz\*4-0x1e\]
@@ -50,4 +57,10 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 8b 04 64 mov eax,DWORD PTR \[rsp\+riz\*2\]
[ ]*[a-f0-9]+: 8b 04 a4 mov eax,DWORD PTR \[rsp\+riz\*4\]
[ ]*[a-f0-9]+: 8b 04 e4 mov eax,DWORD PTR \[rsp\+riz\*8\]
+[ ]*[a-f0-9]+: 41 8b 04 24 mov eax,DWORD PTR \[r12\]
+[ ]*[a-f0-9]+: 41 8b 04 24 mov eax,DWORD PTR \[r12\]
+[ ]*[a-f0-9]+: 41 8b 04 24 mov eax,DWORD PTR \[r12\]
+[ ]*[a-f0-9]+: 41 8b 04 64 mov eax,DWORD PTR \[r12\+riz\*2\]
+[ ]*[a-f0-9]+: 41 8b 04 a4 mov eax,DWORD PTR \[r12\+riz\*4\]
+[ ]*[a-f0-9]+: 41 8b 04 e4 mov eax,DWORD PTR \[r12\+riz\*8\]
#pass
diff --git a/gas/testsuite/gas/i386/x86-64-sib.d b/gas/testsuite/gas/i386/x86-64-sib.d
index f6d7315..3926624 100644
--- a/gas/testsuite/gas/i386/x86-64-sib.d
+++ b/gas/testsuite/gas/i386/x86-64-sib.d
@@ -27,9 +27,16 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 8b 04 e3 mov \(%rbx,%riz,8\),%eax
[ ]*[a-f0-9]+: 8b 04 24 mov \(%rsp\),%eax
[ ]*[a-f0-9]+: 8b 04 24 mov \(%rsp\),%eax
+[ ]*[a-f0-9]+: 8b 04 24 mov \(%rsp\),%eax
[ ]*[a-f0-9]+: 8b 04 64 mov \(%rsp,%riz,2\),%eax
[ ]*[a-f0-9]+: 8b 04 a4 mov \(%rsp,%riz,4\),%eax
[ ]*[a-f0-9]+: 8b 04 e4 mov \(%rsp,%riz,8\),%eax
+[ ]*[a-f0-9]+: 41 8b 04 24 mov \(%r12\),%eax
+[ ]*[a-f0-9]+: 41 8b 04 24 mov \(%r12\),%eax
+[ ]*[a-f0-9]+: 41 8b 04 24 mov \(%r12\),%eax
+[ ]*[a-f0-9]+: 41 8b 04 64 mov \(%r12,%riz,2\),%eax
+[ ]*[a-f0-9]+: 41 8b 04 a4 mov \(%r12,%riz,4\),%eax
+[ ]*[a-f0-9]+: 41 8b 04 e4 mov \(%r12,%riz,8\),%eax
[ ]*[a-f0-9]+: 8b 04 25 e2 ff ff ff mov 0xffffffffffffffe2,%eax
[ ]*[a-f0-9]+: 8b 04 65 e2 ff ff ff mov -0x1e\(,%riz,2\),%eax
[ ]*[a-f0-9]+: 8b 04 a5 e2 ff ff ff mov -0x1e\(,%riz,4\),%eax
@@ -49,4 +56,10 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 8b 04 64 mov \(%rsp,%riz,2\),%eax
[ ]*[a-f0-9]+: 8b 04 a4 mov \(%rsp,%riz,4\),%eax
[ ]*[a-f0-9]+: 8b 04 e4 mov \(%rsp,%riz,8\),%eax
+[ ]*[a-f0-9]+: 41 8b 04 24 mov \(%r12\),%eax
+[ ]*[a-f0-9]+: 41 8b 04 24 mov \(%r12\),%eax
+[ ]*[a-f0-9]+: 41 8b 04 24 mov \(%r12\),%eax
+[ ]*[a-f0-9]+: 41 8b 04 64 mov \(%r12,%riz,2\),%eax
+[ ]*[a-f0-9]+: 41 8b 04 a4 mov \(%r12,%riz,4\),%eax
+[ ]*[a-f0-9]+: 41 8b 04 e4 mov \(%r12,%riz,8\),%eax
#pass
diff --git a/gas/testsuite/gas/i386/x86-64-sib.s b/gas/testsuite/gas/i386/x86-64-sib.s
index 38f4241..9562bb9 100644
--- a/gas/testsuite/gas/i386/x86-64-sib.s
+++ b/gas/testsuite/gas/i386/x86-64-sib.s
@@ -22,10 +22,17 @@ foo:
mov (%rbx,%riz,4),%eax
mov (%rbx,%riz,8),%eax
mov (%rsp),%eax
+ mov (%rsp,%riz),%eax
mov (%rsp,%riz,1),%eax
mov (%rsp,%riz,2),%eax
mov (%rsp,%riz,4),%eax
mov (%rsp,%riz,8),%eax
+ mov (%r12),%eax
+ mov (%r12,%riz),%eax
+ mov (%r12,%riz,1),%eax
+ mov (%r12,%riz,2),%eax
+ mov (%r12,%riz,4),%eax
+ mov (%r12,%riz,8),%eax
.intel_syntax noprefix
mov eax,DWORD PTR [riz*1-30]
mov eax,DWORD PTR [riz*2-30]
@@ -46,4 +53,9 @@ foo:
mov eax,DWORD PTR [rsp+riz*2]
mov eax,DWORD PTR [rsp+riz*4]
mov eax,DWORD PTR [rsp+riz*8]
- .p2align 4
+ mov eax,DWORD PTR [r12]
+ mov eax,DWORD PTR [r12+riz]
+ mov eax,DWORD PTR [r12+riz*1]
+ mov eax,DWORD PTR [r12+riz*2]
+ mov eax,DWORD PTR [r12+riz*4]
+ mov eax,DWORD PTR [r12+riz*8]
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 81b4003..92d72fe 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,7 @@
+2008-01-24 H.J. Lu <hongjiu.lu@intel.com>
+
+ * i386-dis.c (OP_E_extended): Handle r12 like rsp.
+
2008-01-23 H.J. Lu <hongjiu.lu@intel.com>
* i386-gen.c (cpu_flag_init): Add CpuLM to CPU_GENERIC64_FLAGS.
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index d237b62..4f14a32 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -6645,7 +6645,7 @@ OP_E_extended (int bytemode, int sizeflag, int has_drex)
int havebase;
int haveindex;
int needindex;
- int base;
+ int base, rbase;
int index = 0;
int scale = 0;
@@ -6667,7 +6667,7 @@ OP_E_extended (int bytemode, int sizeflag, int has_drex)
haveindex = index != 4;
codep++;
}
- base += add;
+ rbase = base + add;
/* If we have a DREX byte, skip it now
(it has already been handled) */
@@ -6680,7 +6680,7 @@ OP_E_extended (int bytemode, int sizeflag, int has_drex)
switch (modrm.mod)
{
case 0:
- if ((base & 7) == 5)
+ if (base == 5)
{
havebase = 0;
if (address_mode == mode_64bit && !havesib)
@@ -6710,7 +6710,7 @@ OP_E_extended (int bytemode, int sizeflag, int has_drex)
|| (havesib && (haveindex || scale != 0)));
if (!intel_syntax)
- if (modrm.mod != 0 || (base & 7) == 5)
+ if (modrm.mod != 0 || base == 5)
{
if (havedisp || riprel)
print_displacement (scratchbuf, disp);
@@ -6738,7 +6738,7 @@ OP_E_extended (int bytemode, int sizeflag, int has_drex)
*obufp = '\0';
if (havebase)
oappend (address_mode == mode_64bit && (sizeflag & AFLAG)
- ? names64[base] : names32[base]);
+ ? names64[rbase] : names32[rbase]);
if (havesib)
{
/* ESP/RSP won't allow index. If base isn't ESP/RSP,
@@ -6769,7 +6769,7 @@ OP_E_extended (int bytemode, int sizeflag, int has_drex)
}
}
if (intel_syntax
- && (disp || modrm.mod != 0 || (base & 7) == 5))
+ && (disp || modrm.mod != 0 || base == 5))
{
if (!havedisp || (bfd_signed_vma) disp >= 0)
{
@@ -6795,7 +6795,7 @@ OP_E_extended (int bytemode, int sizeflag, int has_drex)
}
else if (intel_syntax)
{
- if (modrm.mod != 0 || (base & 7) == 5)
+ if (modrm.mod != 0 || base == 5)
{
if (prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS
| PREFIX_ES | PREFIX_FS | PREFIX_GS))