[DO NOT APPLY 11/10] x86: remaining ambiguous operand cases
Jan Beulich
jbeulich@suse.com
Tue Aug 6 14:33:00 GMT 2019
The further tests added below produce the following testsuite failures:
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:7: Warning: 0000000012345678 shortened to 0000000000005678
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:11: Warning: 0000000012345678 shortened to 0000000000005678
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:15: Warning: 0000000012345678 shortened to 0000000000005678
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:24: Warning: 0000000012345678 shortened to 0000000000005678
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:70: Warning: 0000000012345678 shortened to 0000000000005678
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:85: Warning: 0000000012345678 shortened to 0000000000005678
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:108: Warning: 0000000012345678 shortened to 0000000000005678
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:128: Warning: 0000000012345678 shortened to 0000000000005678
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:131: Warning: 0000000012345678 shortened to 0000000000005678
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:132: Error: operand size mismatch for `vcvtneps2bf16'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:133: Error: operand size mismatch for `vcvtpd2dq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:134: Error: operand size mismatch for `vcvtpd2dq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:135: Error: operand size mismatch for `vcvtpd2ps'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:136: Error: operand size mismatch for `vcvtpd2ps'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:137: Error: operand size mismatch for `vcvtpd2udq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:138: Error: operand size mismatch for `vcvtqq2ps'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:143: Error: operand size mismatch for `vcvttpd2dq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:144: Error: operand size mismatch for `vcvttpd2dq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:145: Error: operand size mismatch for `vcvttpd2udq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:146: Error: operand size mismatch for `vcvtuqq2ps'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg16.s:154: Warning: 0000000012345678 shortened to 0000000000005678
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg32.s:131: Error: operand size mismatch for `vcvtneps2bf16'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg32.s:132: Error: operand size mismatch for `vcvtpd2dq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg32.s:133: Error: operand size mismatch for `vcvtpd2dq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg32.s:134: Error: operand size mismatch for `vcvtpd2ps'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg32.s:135: Error: operand size mismatch for `vcvtpd2ps'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg32.s:136: Error: operand size mismatch for `vcvtpd2udq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg32.s:137: Error: operand size mismatch for `vcvtqq2ps'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg32.s:142: Error: operand size mismatch for `vcvttpd2dq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg32.s:143: Error: operand size mismatch for `vcvttpd2dq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg32.s:144: Error: operand size mismatch for `vcvttpd2udq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg32.s:145: Error: operand size mismatch for `vcvtuqq2ps'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg64.s:134: Error: operand size mismatch for `vcvtneps2bf16'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg64.s:135: Error: operand size mismatch for `vcvtpd2dq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg64.s:136: Error: operand size mismatch for `vcvtpd2dq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg64.s:137: Error: operand size mismatch for `vcvtpd2ps'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg64.s:138: Error: operand size mismatch for `vcvtpd2ps'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg64.s:139: Error: operand size mismatch for `vcvtpd2udq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg64.s:140: Error: operand size mismatch for `vcvtqq2ps'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg64.s:145: Error: operand size mismatch for `vcvttpd2dq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg64.s:146: Error: operand size mismatch for `vcvttpd2dq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg64.s:147: Error: operand size mismatch for `vcvttpd2udq'
/home/jbeulich/cpp/binutils/master-git/2019-06-24/gas/testsuite/gas/i386/noreg64.s:148: Error: operand size mismatch for `vcvtuqq2ps'
Questions:
1) Should 32-bit immediates in 16-bit mode result in 32-bit encoding to be emitted?
If so, what about symbol references - should we assume 16- or 32-bit addresses
in this case?
2) Should the XMM/YMM ambiguity be resolved (if so I'd suggest to default to XMM)?
Jan
--- a/gas/testsuite/gas/i386/noreg16.s
+++ b/gas/testsuite/gas/i386/noreg16.s
@@ -4,12 +4,15 @@ noreg:
adc $1, (%bx)
adc $0x89, (%bx)
adc $0x1234, (%bx)
+ adc $0x12345678, (%bx)
add $1, (%bx)
add $0x89, (%bx)
add $0x1234, (%bx)
+ add $0x12345678, (%bx)
and $1, (%bx)
and $0x89, (%bx)
and $0x1234, (%bx)
+ and $0x12345678, (%bx)
bt $1, (%bx)
btc $1, (%bx)
btr $1, (%bx)
@@ -18,6 +21,7 @@ noreg:
cmp $1, (%bx)
cmp $0x89, (%bx)
cmp $0x1234, (%bx)
+ cmp $0x12345678, (%bx)
cmps
cmps %es:(%edi), (%esi)
crc32 (%bx), %eax
@@ -63,6 +67,7 @@ noreg:
ltr (%bx)
mov $0x12, (%bx)
mov $0x1234, (%bx)
+ mov $0x12345678, (%bx)
mov %es, (%bx)
mov (%bx), %es
movs
@@ -77,6 +82,7 @@ noreg:
or $1, (%bx)
or $0x89, (%bx)
or $0x1234, (%bx)
+ or $0x12345678, (%bx)
outs
outs (%esi), %dx
pop (%bx)
@@ -99,6 +105,7 @@ noreg:
sbb $1, (%bx)
sbb $0x89, (%bx)
sbb $0x1234, (%bx)
+ sbb $0x12345678, (%bx)
scas
scas %es:(%edi)
sal $1, (%bx)
@@ -118,12 +125,25 @@ noreg:
sub $1, (%bx)
sub $0x89, (%bx)
sub $0x1234, (%bx)
+ sub $0x12345678, (%bx)
test $0x89, (%bx)
test $0x1234, (%bx)
+ test $0x12345678, (%bx)
+ vcvtneps2bf16 (%bx), %xmm0
+ vcvtpd2dq (%bx), %xmm0
+ vcvtpd2dq (%bx), %xmm0{%k1}
+ vcvtpd2ps (%bx), %xmm0
+ vcvtpd2ps (%bx), %xmm0{%k1}
+ vcvtpd2udq (%bx), %xmm0
+ vcvtqq2ps (%bx), %xmm0
vcvtsi2sd (%bx), %xmm0, %xmm0
{evex} vcvtsi2sd (%bx), %xmm0, %xmm0
vcvtsi2ss (%bx), %xmm0, %xmm0
{evex} vcvtsi2ss (%bx), %xmm0, %xmm0
+ vcvttpd2dq (%bx), %xmm0
+ vcvttpd2dq (%bx), %xmm0{%k1}
+ vcvttpd2udq (%bx), %xmm0
+ vcvtuqq2ps (%bx), %xmm0
vcvtusi2sd (%bx), %xmm0, %xmm0
vcvtusi2ss (%bx), %xmm0, %xmm0
vfpclasspd $0, (%bx), %k0
@@ -131,3 +151,4 @@ noreg:
xor $1, (%bx)
xor $0x89, (%bx)
xor $0x1234, (%bx)
+ xor $0x12345678, (%bx)
--- a/gas/testsuite/gas/i386/noreg32.s
+++ b/gas/testsuite/gas/i386/noreg32.s
@@ -128,10 +128,21 @@ noreg:
test $0x89, (%eax)
test $0x1234, (%eax)
test $0x12345678, (%eax)
+ vcvtneps2bf16 (%eax), %xmm0
+ vcvtpd2dq (%eax), %xmm0
+ vcvtpd2dq (%eax), %xmm0{%k1}
+ vcvtpd2ps (%eax), %xmm0
+ vcvtpd2ps (%eax), %xmm0{%k1}
+ vcvtpd2udq (%eax), %xmm0
+ vcvtqq2ps (%eax), %xmm0
vcvtsi2sd (%eax), %xmm0, %xmm0
{evex} vcvtsi2sd (%eax), %xmm0, %xmm0
vcvtsi2ss (%eax), %xmm0, %xmm0
{evex} vcvtsi2ss (%eax), %xmm0, %xmm0
+ vcvttpd2dq (%eax), %xmm0
+ vcvttpd2dq (%eax), %xmm0{%k1}
+ vcvttpd2udq (%eax), %xmm0
+ vcvtuqq2ps (%eax), %xmm0
vcvtusi2sd (%eax), %xmm0, %xmm0
vcvtusi2ss (%eax), %xmm0, %xmm0
vfpclasspd $0, (%eax), %k0
--- a/gas/testsuite/gas/i386/noreg64.s
+++ b/gas/testsuite/gas/i386/noreg64.s
@@ -131,10 +131,21 @@ noreg:
test $0x89, (%rax)
test $0x1234, (%rax)
test $0x12345678, (%rax)
+ vcvtneps2bf16 (%rax), %xmm0
+ vcvtpd2dq (%rax), %xmm0
+ vcvtpd2dq (%rax), %xmm0{%k1}
+ vcvtpd2ps (%rax), %xmm0
+ vcvtpd2ps (%rax), %xmm0{%k1}
+ vcvtpd2udq (%rax), %xmm0
+ vcvtqq2ps (%rax), %xmm0
vcvtsi2sd (%rax), %xmm0, %xmm0
vcvtsi2sd (%rax), %xmm0, %xmm31
vcvtsi2ss (%rax), %xmm0, %xmm0
vcvtsi2ss (%rax), %xmm0, %xmm31
+ vcvttpd2dq (%rax), %xmm0
+ vcvttpd2dq (%rax), %xmm0{%k1}
+ vcvttpd2udq (%rax), %xmm0
+ vcvtuqq2ps (%rax), %xmm0
vcvtusi2sd (%rax), %xmm0, %xmm0
vcvtusi2ss (%rax), %xmm0, %xmm0
vfpclasspd $0, (%rax), %k0
More information about the Binutils
mailing list