This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[DO NOT APPLY 11/10] x86: remaining ambiguous operand cases



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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]