x86: replace adhoc (partly wrong) ambiguous operand checking for MOVSX/MOVZX
[deliverable/binutils-gdb.git] / gas / testsuite / gas / i386 / x86_64.s
index d65054eb768c50bffc507056bbdd7b765f6b08a3..da820439a9270cb1144daf282baab44cbf6ff4d3 100644 (file)
@@ -48,7 +48,7 @@ ADD R8D,[R8]
 ADD RAX,[R8]
 ADD EAX,[0x22222222+RIP]
 ADD EAX,[RBP+0x00]
-ADD EAX,[0x22222222]
+ADD EAX,FLAT:[0x22222222]
 ADD EAX,[R13+0]
 ADD EAX,[RAX+RAX*4]
 ADD EAX,[R8+RAX*4]
@@ -86,19 +86,27 @@ ADD DWORD PTR [RAX*8+0x22222222],0x33
 ADD DWORD PTR [RAX+0x22222222],0x33
 ADD DWORD PTR [RAX+0x22222222],0x33
 ADD DWORD PTR [R8+RBP*8],0x33
-ADD DWORD PTR [0x22222222],0x33                
+ADD DWORD PTR FLAT:[0x22222222],0x33           
 #new instructions
-MOVABS AL,[0x8877665544332211]
-MOVABS EAX,[0x8877665544332211]
-MOVABS [0x8877665544332211],AL
-MOVABS [0x8877665544332211],EAX
-MOVABS RAX,[0x8877665544332211]
-MOVABS [0x8877665544332211],RAX
+MOVABS AL,FLAT:[0x8877665544332211]
+MOVABS EAX,FLAT:[0x8877665544332211]
+MOVABS FLAT:[0x8877665544332211],AL
+MOVABS FLAT:[0x8877665544332211],EAX
+MOVABS RAX,FLAT:[0x8877665544332211]
+MOVABS FLAT:[0x8877665544332211],RAX
 cqo
 cdqe
 movsx rax, eax
 movsx rax, ax
 movsx rax, al
+retf
+retf 16
+retfw
+retfw 2
+retfd
+retfd 4
+retfq
+retfq 8
 bar:
 .att_syntax
 #testcase for symbol references.
@@ -127,14 +135,14 @@ mov symbol(%rip), %eax
 .intel_syntax noprefix
 
 #immediates - various sizes:
-mov al, flat symbol
-mov ax, flat symbol
-mov eax, flat symbol
-mov rax, flat symbol
+mov al, offset flat:symbol
+mov ax, offset flat:symbol
+mov eax, offset flat:symbol
+mov rax, offset flat:symbol
 
-#parts
-mov eax, high part symbol
-mov eax, low part symbol
+#parts aren't supported by the parser, yet (and not at all for symbol refs)
+#mov eax, high part symbol
+#mov eax, low part symbol
 
 #addressing modes
 
@@ -150,5 +158,152 @@ mov eax, [rax+symbol]
 #RIP relative
 mov eax, [rip+symbol]
 
-# Get a good alignment.
- .p2align      4,0
+foo:
+.att_syntax
+#absolute 64bit addressing
+mov 0x8877665544332211,%al
+mov 0x8877665544332211,%ax
+mov 0x8877665544332211,%eax
+mov 0x8877665544332211,%rax
+mov %al,0x8877665544332211
+mov %ax,0x8877665544332211
+mov %eax,0x8877665544332211
+mov %rax,0x8877665544332211
+movb 0x8877665544332211,%al
+movw 0x8877665544332211,%ax
+movl 0x8877665544332211,%eax
+movq 0x8877665544332211,%rax
+movb %al,0x8877665544332211
+movw %ax,0x8877665544332211
+movl %eax,0x8877665544332211
+movq %rax,0x8877665544332211
+
+#absolute signed 32bit addressing
+mov 0xffffffffff332211,%al
+mov 0xffffffffff332211,%ax
+mov 0xffffffffff332211,%eax
+mov 0xffffffffff332211,%rax
+mov %al,0xffffffffff332211
+mov %ax,0xffffffffff332211
+mov %eax,0xffffffffff332211
+mov %rax,0xffffffffff332211
+movb 0xffffffffff332211,%al
+movw 0xffffffffff332211,%ax
+movl 0xffffffffff332211,%eax
+movq 0xffffffffff332211,%rax
+movb %al,0xffffffffff332211
+movw %ax,0xffffffffff332211
+movl %eax,0xffffffffff332211
+movq %rax,0xffffffffff332211
+
+cmpxchg16b (%rax)
+
+.intel_syntax noprefix
+cmpxchg16b oword ptr [rax]
+
+.att_syntax
+       movsx   %al, %si
+       movsx   %al, %esi
+       movsx   %al, %rsi
+       movsx   %ax, %esi
+       movsx   %ax, %rsi
+       movsx   %eax, %rsi
+       movsx   (%rax), %dx
+       movsbl  (%rax), %edx
+       movsbq  (%rax), %rdx
+       movsbw  (%rax), %dx
+       movswl  (%rax), %edx
+       movswq  (%rax), %rdx
+
+       movzx   %al, %si
+       movzx   %al, %esi
+       movzx   %al, %rsi
+       movzx   %ax, %esi
+       movzx   %ax, %rsi
+       movzx   (%rax), %dx
+       movzb   (%rax), %edx
+       movzb   (%rax), %rdx
+       movzb   (%rax), %dx
+       movzbl  (%rax), %edx
+       movzbq  (%rax), %rdx
+       movzbw  (%rax), %dx
+       movzwl  (%rax), %edx
+       movzwq  (%rax), %rdx
+
+       .intel_syntax noprefix
+       movsx   si,al
+       movsx   esi,al
+       movsx   rsi,al
+       movsx   esi,ax
+       movsx   rsi,ax
+       movsx   rsi,eax
+       movsx   edx,BYTE PTR [rax]
+       movsx   rdx,BYTE PTR [rax]
+       movsx   dx,BYTE PTR [rax]
+       movsx   edx,WORD PTR [rax]
+       movsx   rdx,WORD PTR [rax]
+
+       movzx   si,al
+       movzx   esi,al
+       movzx   rsi,al
+       movzx   esi,ax
+       movzx   rsi,ax
+       movzx   edx,BYTE PTR [rax]
+       movzx   rdx,BYTE PTR [rax]
+       movzx   dx,BYTE PTR [rax]
+       movzx   edx,WORD PTR [rax]
+       movzx   rdx,WORD PTR [rax]
+
+       movq    xmm1,QWORD PTR [rsp]
+       movq    xmm1,[rsp]
+       movq    QWORD PTR [rsp],xmm1
+       movq    [rsp],xmm1
+
+.att_syntax
+       fnstsw
+       fnstsw  %ax
+       fstsw
+       fstsw   %ax
+
+       .intel_syntax noprefix
+       fnstsw
+       fnstsw  ax
+       fstsw
+       fstsw   ax
+
+.att_syntax
+movsx (%rax),%ax
+movsxb (%rax), %dx
+movsxb (%rax), %edx
+movsxb (%rax), %rdx
+movsxw (%rax), %edx
+movsxw (%rax), %rdx
+movsxl (%rax), %rdx
+movsxd (%rax),%rax
+movzx (%rax),%ax
+movzxb (%rax), %dx
+movzxb (%rax), %edx
+movzxb (%rax), %rdx
+movzxw (%rax), %edx
+movzxw (%rax), %rdx
+
+movnti %eax, (%rax)
+movntil %eax, (%rax)
+movnti %rax, (%rax)
+movntiq %rax, (%rax)
+
+.intel_syntax noprefix
+
+movsx ax, BYTE PTR [rax]
+movsx eax, BYTE PTR [rax]
+movsx eax, WORD PTR [rax]
+movsx rax, WORD PTR [rax]
+movsx rax, DWORD PTR [rax]
+movsxd rax, [rax]
+movzx ax, BYTE PTR [rax]
+movzx eax, BYTE PTR [rax]
+movzx eax, WORD PTR [rax]
+movzx rax, WORD PTR [rax]
+
+movnti dword ptr [rax], eax
+movnti qword ptr [rax], rax
This page took 0.027475 seconds and 4 git commands to generate.