aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog9
-rw-r--r--gas/config/tc-i386.c2
-rw-r--r--gas/testsuite/gas/i386/disp-imm-16.l10
-rw-r--r--gas/testsuite/gas/i386/disp-imm-16.s17
-rw-r--r--gas/testsuite/gas/i386/disp-imm-64.l22
-rw-r--r--gas/testsuite/gas/i386/disp-imm-64.s28
-rw-r--r--gas/testsuite/gas/i386/i386.exp2
7 files changed, 89 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index d766fd1..8a3684a 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,14 @@
2021-06-15 Jan Beulich <jbeulich@suse.com>
+ * config/tc-i386.c (offset_in_range): Adjust conditional.
+ * testsuite/gas/i386/disp-imm-16.s,
+ testsuite/gas/i386/disp-imm-16.l,
+ testsuite/gas/i386/disp-imm-64.s,
+ testsuite/gas/i386/disp-imm-64.l: New.
+ * testsuite/gas/i386/i386.exp: Run new tests.
+
+2021-06-15 Jan Beulich <jbeulich@suse.com>
+
* config/tc-i386.c (i386_att_operand): Re-introduce (now
properly named) parens_not_balanced.
* testsuite/gas/i386/sib.s: Add more cases.
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 8585380..c9bcccf 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -2563,7 +2563,7 @@ offset_in_range (offsetT val, int size)
default: abort ();
}
- if ((val & ~mask) != 0 && (val & ~mask) != ~mask)
+ if ((val & ~mask) != 0 && (-val & ~mask) != 0)
{
char buf1[40], buf2[40];
diff --git a/gas/testsuite/gas/i386/disp-imm-16.l b/gas/testsuite/gas/i386/disp-imm-16.l
new file mode 100644
index 0000000..f1b5f1f
--- /dev/null
+++ b/gas/testsuite/gas/i386/disp-imm-16.l
@@ -0,0 +1,10 @@
+.*: Assembler messages:
+.*:7: Warning: .* shortened to .*
+.*:8: Warning: .* shortened to .*
+.*:9: Warning: .* shortened to .*
+.*:11: Warning: .* shortened to .*
+.*:12: Warning: .* shortened to .*
+.*:13: Warning: .* shortened to .*
+.*:15: Warning: .* shortened to .*
+.*:16: Warning: .* shortened to .*
+.*:17: Warning: .* shortened to .*
diff --git a/gas/testsuite/gas/i386/disp-imm-16.s b/gas/testsuite/gas/i386/disp-imm-16.s
new file mode 100644
index 0000000..d33b97c
--- /dev/null
+++ b/gas/testsuite/gas/i386/disp-imm-16.s
@@ -0,0 +1,17 @@
+ .text
+ .code16
+ mov -0xffff(%bx), %eax
+ vmovaps -0xffc0(%bx), %zmm0
+ add $-0xffff, %cx
+
+ mov -0xffff-1(%bx), %eax
+ vmovaps -0xffc0-0x40(%bx), %zmm0
+ add $-0xffff-1, %cx
+
+ mov -0xffff-2(%bx), %eax
+ vmovaps -0xffc0-0x80(%bx), %zmm0
+ add $-0xffff-2, %cx
+
+ mov -0x1ffff(%bx), %eax
+ vmovaps -0x1ffc0(%bx), %zmm0
+ add $-0x1ffff, %cx
diff --git a/gas/testsuite/gas/i386/disp-imm-64.l b/gas/testsuite/gas/i386/disp-imm-64.l
new file mode 100644
index 0000000..8eb56e5
--- /dev/null
+++ b/gas/testsuite/gas/i386/disp-imm-64.l
@@ -0,0 +1,22 @@
+.*: Assembler messages:
+.*:2: Error: .*
+.*:4: Error: .*
+.*:6: Error: .*
+.*:9: Error: .*
+.*:10: Warning: .* shortened to .*
+.*:11: Error: .*
+.*:12: Warning: .* shortened to .*
+.*:13: Error: .*
+.*:14: Warning: .* shortened to .*
+.*:16: Error: .*
+.*:17: Warning: .* shortened to .*
+.*:18: Error: .*
+.*:19: Warning: .* shortened to .*
+.*:20: Error: .*
+.*:21: Warning: .* shortened to .*
+.*:23: Error: .*
+.*:24: Warning: .* shortened to .*
+.*:25: Error: .*
+.*:26: Warning: .* shortened to .*
+.*:27: Error: .*
+.*:28: Warning: .* shortened to .*
diff --git a/gas/testsuite/gas/i386/disp-imm-64.s b/gas/testsuite/gas/i386/disp-imm-64.s
new file mode 100644
index 0000000..a5a37a6
--- /dev/null
+++ b/gas/testsuite/gas/i386/disp-imm-64.s
@@ -0,0 +1,28 @@
+ .text
+ mov -0xffffffff(%rax), %eax
+ mov -0xffffffff(%eax), %eax
+ vmovaps -0xffffffc0(%rax), %zmm0
+ vmovaps -0xffffffc0(%eax), %zmm0
+ add $-0xffffffff, %rcx
+ add $-0xffffffff, %ecx
+
+ mov -0xffffffff-1(%rax), %eax
+ mov -0xffffffff-1(%eax), %eax
+ vmovaps -0xffffffc0-0x40(%rax), %zmm0
+ vmovaps -0xffffffc0-0x40(%eax), %zmm0
+ add $-0xffffffff-1, %rcx
+ add $-0xffffffff-1, %ecx
+
+ mov -0xffffffff-2(%rax), %eax
+ mov -0xffffffff-2(%eax), %eax
+ vmovaps -0xffffffc0-0x80(%rax), %zmm0
+ vmovaps -0xffffffc0-0x80(%eax), %zmm0
+ add $-0xffffffff-2, %rcx
+ add $-0xffffffff-2, %ecx
+
+ mov -0x1ffffffff(%rax), %eax
+ mov -0x1ffffffff(%eax), %eax
+ vmovaps -0x1ffffffc0(%rax), %zmm0
+ vmovaps -0x1ffffffc0(%eax), %zmm0
+ add $-0x1ffffffff, %rcx
+ add $-0x1ffffffff, %ecx
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index cf21511..4112a1d 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -87,6 +87,7 @@ if [gas_32_check] then {
run_dump_test "disp"
run_dump_test "disp-intel"
run_dump_test "disp32"
+ run_list_test "disp-imm-16"
run_dump_test "vmx"
run_dump_test "vmfunc"
run_dump_test "smx"
@@ -861,6 +862,7 @@ if [gas_64_check] then {
run_dump_test "x86-64-sib-intel"
run_dump_test "x86-64-disp"
run_dump_test "x86-64-disp-intel"
+ run_list_test "disp-imm-64"
run_dump_test "intel-movs64"
run_dump_test "intel-cmps64"
run_dump_test "x86-64-disp32"