14a5c0fd70e7a2001b682c8972dab6b0127313c8fDevang Patel// RUN: llvm-mc -triple x86_64-unknown-unknown -x86-asm-syntax=intel %s | FileCheck %s
24a5c0fd70e7a2001b682c8972dab6b0127313c8fDevang Patel
340bced0306e953c3d0fec19db4c4770b0e3c787eDevang Patel_test:
440bced0306e953c3d0fec19db4c4770b0e3c787eDevang Patel	xor	EAX, EAX
540bced0306e953c3d0fec19db4c4770b0e3c787eDevang Patel	ret
640bced0306e953c3d0fec19db4c4770b0e3c787eDevang Patel
740bced0306e953c3d0fec19db4c4770b0e3c787eDevang Patel_main:
84a5c0fd70e7a2001b682c8972dab6b0127313c8fDevang Patel// CHECK:	movl	$257, -4(%rsp)
94a5c0fd70e7a2001b682c8972dab6b0127313c8fDevang Patel	mov	DWORD PTR [RSP - 4], 257
109a3d293cf3f72b3c0ed5d4474fc5d4d12fd36be2Devang Patel// CHECK:	movl	$258, 4(%rsp)
119a3d293cf3f72b3c0ed5d4474fc5d4d12fd36be2Devang Patel	mov	DWORD PTR [RSP + 4], 258
124a5c0fd70e7a2001b682c8972dab6b0127313c8fDevang Patel// CHECK:	movq	$123, -16(%rsp)
134a5c0fd70e7a2001b682c8972dab6b0127313c8fDevang Patel	mov	QWORD PTR [RSP - 16], 123
144a5c0fd70e7a2001b682c8972dab6b0127313c8fDevang Patel// CHECK:	movb	$97, -17(%rsp)
154a5c0fd70e7a2001b682c8972dab6b0127313c8fDevang Patel	mov	BYTE PTR [RSP - 17], 97
164a5c0fd70e7a2001b682c8972dab6b0127313c8fDevang Patel// CHECK:	movl	-4(%rsp), %eax
174a5c0fd70e7a2001b682c8972dab6b0127313c8fDevang Patel	mov	EAX, DWORD PTR [RSP - 4]
18d37ad247cc04c2a436e537767ac1aec709901594Devang Patel// CHECK:	movq    (%rsp), %rax
19d37ad247cc04c2a436e537767ac1aec709901594Devang Patel	mov     RAX, QWORD PTR [RSP]
20d37ad247cc04c2a436e537767ac1aec709901594Devang Patel// CHECK:	movl	$-4, -4(%rsp)
21d37ad247cc04c2a436e537767ac1aec709901594Devang Patel	mov	DWORD PTR [RSP - 4], -4
22d37ad247cc04c2a436e537767ac1aec709901594Devang Patel// CHECK:	movq	0, %rcx
23d37ad247cc04c2a436e537767ac1aec709901594Devang Patel	mov	RCX, QWORD PTR [0]
24d37ad247cc04c2a436e537767ac1aec709901594Devang Patel// CHECK:	movl	-24(%rsp,%rax,4), %eax
25d37ad247cc04c2a436e537767ac1aec709901594Devang Patel	mov	EAX, DWORD PTR [RSP + 4*RAX - 24]
266220fea2a877e5cff559ed38e98c59a076ea9825Devang Patel// CHECK:	movb	%dil, (%rdx,%rcx)
276220fea2a877e5cff559ed38e98c59a076ea9825Devang Patel	mov	BYTE PTR [RDX + RCX], DIL
282f8af1d643cde711b292117e50b30452877432efDevang Patel// CHECK:	movzwl	2(%rcx), %edi
292f8af1d643cde711b292117e50b30452877432efDevang Patel	movzx	EDI, WORD PTR [RCX + 2]
3040bced0306e953c3d0fec19db4c4770b0e3c787eDevang Patel// CHECK:	callq	_test
3140bced0306e953c3d0fec19db4c4770b0e3c787eDevang Patel	call	_test
32b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel// CHECK:	andw	$12,	%ax
33b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel	and	ax, 12
34b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel// CHECK:	andw	$-12,	%ax
35b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel	and	ax, -12
36b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel// CHECK:	andw	$257,	%ax
37b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel	and	ax, 257
38b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel// CHECK:	andw	$-257,	%ax
39b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel	and	ax, -257
40b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel// CHECK:	andl	$12,	%eax
41b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel	and	eax, 12
42b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel// CHECK:	andl	$-12,	%eax
43b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel	and	eax, -12
44b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel// CHECK:	andl	$257,	%eax
45b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel	and	eax, 257
46b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel// CHECK:	andl	$-257,	%eax
47b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel	and	eax, -257
48b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel// CHECK:	andq	$12,	%rax
49b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel	and	rax, 12
50b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel// CHECK:	andq	$-12,	%rax
51b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel	and	rax, -12
52b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel// CHECK:	andq	$257,	%rax
53b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel	and	rax, 257
54b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel// CHECK:	andq	$-257,	%rax
55b8ba13f0096b560ee618512019ca86969a9fa772Devang Patel	and	rax, -257
561aea430b8834f7bed3a14eda5027eac2133d6496Devang Patel// CHECK:	fld	%st(0)
571aea430b8834f7bed3a14eda5027eac2133d6496Devang Patel	fld	ST(0)
587c64fe651ad4581ac66b6407116144442a8a7f03Devang Patel// CHECK:	movl	%fs:(%rdi), %eax
59dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov EAX, DWORD PTR FS:[RDI]
60dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: leal (,%rdi,4), %r8d
61dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    lea R8D, DWORD PTR [4*RDI]
62dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl _fnan(,%ecx,4), %ecx
63dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov ECX, DWORD PTR [4*ECX + _fnan]
64dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movq %fs:320, %rax
65dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov RAX, QWORD PTR FS:[320]
66dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: vpgatherdd %xmm8, (%r15,%xmm9,2), %xmm1
67dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    vpgatherdd XMM10, DWORD PTR [R15 + 2*XMM9], XMM8
68dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movsd	-8, %xmm5
69dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    movsd   XMM5, QWORD PTR [-8]
70dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, (%eax)
71dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax], ecx
72dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, (,%ebx,4)
73dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [4*ebx], ecx
74dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier // CHECK:   movl %ecx, (,%ebx,4)
75dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [ebx*4], ecx
76dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 1024
77dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [1024], ecx
78dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 4132
79dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [0x1024], ecx
80dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 32
81dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16 + 16], ecx
82dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 0
83dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16 - 16], ecx
84dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 32
85dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16][16], ecx
86dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, (%eax,%ebx,4)
87dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax + 4*ebx], ecx
88dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, (%eax,%ebx,4)
89dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax + ebx*4], ecx
90dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, (%eax,%ebx,4)
91dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [4*ebx + eax], ecx
92dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, (%eax,%ebx,4)
93dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [ebx*4 + eax], ecx
94dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, (%eax,%ebx,4)
95dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax][4*ebx], ecx
96dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, (%eax,%ebx,4)
97dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax][ebx*4], ecx
98dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, (%eax,%ebx,4)
99dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [4*ebx][eax], ecx
100dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, (%eax,%ebx,4)
101dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [ebx*4][eax], ecx
102dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 12(%eax)
103dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax + 12], ecx
104dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 12(%eax)
105dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [12 + eax], ecx
106dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 32(%eax)
107dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax + 16 + 16], ecx
108dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 32(%eax)
109dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16 + eax + 16], ecx
110dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 32(%eax)
111dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16 + 16 + eax], ecx
112dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 12(%eax)
113dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax][12], ecx
114dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 12(%eax)
115dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [12][eax], ecx
116dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 32(%eax)
117dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax][16 + 16], ecx
118dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 32(%eax)
119dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax + 16][16], ecx
120dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 32(%eax)
121dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax][16][16], ecx
122dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 32(%eax)
123dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16][eax + 16], ecx
124dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 32(%eax)
125dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16 + eax][16], ecx
126dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 32(%eax)
127dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16][16 + eax], ecx
128dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 32(%eax)
129dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16 + 16][eax], ecx
130dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 32(%eax)
131dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax][16][16], ecx
132dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 32(%eax)
133dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16][eax][16], ecx
134dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 32(%eax)
135dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16][16][eax], ecx
136dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(,%ebx,4)
137dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [4*ebx + 16], ecx
138dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(,%ebx,4)
139dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [ebx*4 + 16], ecx
140dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(,%ebx,4)
141dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [4*ebx][16], ecx
142dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(,%ebx,4)
143dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [ebx*4][16], ecx
144dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(,%ebx,4)
145dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16 + 4*ebx], ecx
146dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(,%ebx,4)
147dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16 + ebx*4], ecx
148dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(,%ebx,4)
149dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16][4*ebx], ecx
150dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(,%ebx,4)
151dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16][ebx*4], ecx
152dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
153dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax + 4*ebx + 16], ecx
154dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
155dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax + 16 + 4*ebx], ecx
156dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
157dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [4*ebx + eax + 16], ecx
158dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
159dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [4*ebx + 16 + eax], ecx
160dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
161dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16 + eax + 4*ebx], ecx
162dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
163dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16 + eax + 4*ebx], ecx
164dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
165dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax][4*ebx + 16], ecx
166dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
167dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax][16 + 4*ebx], ecx
168dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
169dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [4*ebx][eax + 16], ecx
170dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
171dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [4*ebx][16 + eax], ecx
172dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
173dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16][eax + 4*ebx], ecx
174dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
175dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16][eax + 4*ebx], ecx
176dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
177dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax + 4*ebx][16], ecx
178dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
179dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax + 16][4*ebx], ecx
180dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
181dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [4*ebx + eax][16], ecx
182dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
183dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [4*ebx + 16][eax], ecx
184dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
185dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16 + eax][4*ebx], ecx
186dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
187dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16 + eax][4*ebx], ecx
188dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
189dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax][4*ebx][16], ecx
190dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
191dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax][16][4*ebx], ecx
192dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
193dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [4*ebx][eax][16], ecx
194dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
195dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [4*ebx][16][eax], ecx
196dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
197dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16][eax][4*ebx], ecx
198dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
199dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16][eax][4*ebx], ecx
200dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
201dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax + ebx*4 + 16], ecx
202dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
203dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax + 16 + ebx*4], ecx
204dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
205dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [ebx*4 + eax + 16], ecx
206dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
207dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [ebx*4 + 16 + eax], ecx
208dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
209dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16 + eax + ebx*4], ecx
210dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
211dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16 + eax + ebx*4], ecx
212dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
213dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax][ebx*4 + 16], ecx
214dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
215dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax][16 + ebx*4], ecx
216dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
217dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [ebx*4][eax + 16], ecx
218dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
219dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [ebx*4][16 + eax], ecx
220dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
221dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16][eax + ebx*4], ecx
222dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
223dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16][eax + ebx*4], ecx
224dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
225dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax + ebx*4][16], ecx
226dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
227dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax + 16][ebx*4], ecx
228dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
229dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [ebx*4 + eax][16], ecx
230dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
231dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [ebx*4 + 16][eax], ecx
232dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
233dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16 + eax][ebx*4], ecx
234dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
235dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16 + eax][ebx*4], ecx
236dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
237dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax][ebx*4][16], ecx
238dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
239dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax][16][ebx*4], ecx
240dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
241dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [ebx*4][eax][16], ecx
242dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
243dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [ebx*4][16][eax], ecx
244dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
245dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16][eax][ebx*4], ecx
246dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, 16(%eax,%ebx,4)
247dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [16][eax][ebx*4], ecx
248dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier// CHECK: movl %ecx, -16(%eax,%ebx,4)
249dd2e8950222ab74157b1c083ffa77b0fbaf1d210Chad Rosier    mov [eax][ebx*4 - 16], ecx
250e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier
251e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier// CHECK: prefetchnta 12800(%esi)
252e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    prefetchnta [esi + (200*64)]
253e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier// CHECK: prefetchnta 32(%esi)
254e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    prefetchnta [esi + (64/2)]
255e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier// CHECK: prefetchnta 128(%esi)
256e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    prefetchnta [esi + (64/2*4)]
257e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier// CHECK: prefetchnta 8(%esi)
258e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    prefetchnta [esi + (64/(2*4))]
259e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier// CHECK: prefetchnta 48(%esi)
260e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    prefetchnta [esi + (64/(2*4)+40)]
261e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier
262e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier// CHECK: movl %ecx, -16(%eax,%ebx,4)
263e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    mov [eax][ebx*4 - 2*8], ecx
264e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier// CHECK: movl %ecx, -16(%eax,%ebx,4)
265e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    mov [eax][4*ebx - 2*8], ecx
266e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier// CHECK: movl %ecx, -16(%eax,%ebx,4)
267e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    mov [eax + 4*ebx - 2*8], ecx
268e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier// CHECK: movl %ecx, -16(%eax,%ebx,4)
269e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    mov [12 + eax + (4*ebx) - 2*14], ecx
270e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier// CHECK: movl %ecx, -16(%eax,%ebx,4)
271e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    mov [eax][ebx*4 - 2*2*2*2], ecx
272e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier// CHECK: movl %ecx, -16(%eax,%ebx,4)
273e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    mov [eax][ebx*4 - (2*8)], ecx
274e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier// CHECK: movl %ecx, -16(%eax,%ebx,4)
275e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    mov [eax][ebx*4 - 2 * 8 + 4 - 4], ecx
276e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier// CHECK: movl %ecx, -16(%eax,%ebx,4)
277e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    mov [eax + ebx*4 - 2 * 8 + 4 - 4], ecx
278e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier// CHECK: movl %ecx, -16(%eax,%ebx,4)
279e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    mov [eax + ebx*4 - 2 * ((8 + 4) - 4)], ecx
280e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier// CHECK: movl %ecx, -16(%eax,%ebx,4)
281e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    mov [-2 * ((8 + 4) - 4) + eax + ebx*4], ecx
282e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier// CHECK: movl %ecx, -16(%eax,%ebx,4)
283e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    mov [((-2) * ((8 + 4) - 4)) + eax + ebx*4], ecx
284e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier// CHECK: movl %ecx, -16(%eax,%ebx,4)
285e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    mov [eax + ((-2) * ((8 + 4) - 4)) + ebx*4], ecx
286d58f773b96fdb5539d9da2192b8cf2ff6112239fChad Rosier// CHECK: movl %ecx, 96(%eax,%ebx,4)
287d58f773b96fdb5539d9da2192b8cf2ff6112239fChad Rosier    mov [eax + ((-2) * ((8 + 4) * -4)) + ebx*4], ecx
288d58f773b96fdb5539d9da2192b8cf2ff6112239fChad Rosier// CHECK: movl %ecx, -8(%eax,%ebx,4)
289d58f773b96fdb5539d9da2192b8cf2ff6112239fChad Rosier    mov [eax][-8][ebx*4], ecx
290d58f773b96fdb5539d9da2192b8cf2ff6112239fChad Rosier// CHECK: movl %ecx, -2(%eax,%ebx,4)
291d58f773b96fdb5539d9da2192b8cf2ff6112239fChad Rosier    mov [eax][16/-8][ebx*4], ecx
292d58f773b96fdb5539d9da2192b8cf2ff6112239fChad Rosier// CHECK: movl %ecx, -2(%eax,%ebx,4)
293d58f773b96fdb5539d9da2192b8cf2ff6112239fChad Rosier    mov [eax][(16)/-8][ebx*4], ecx
2943f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier
2953f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier// CHECK: setb %al
2963f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier    setc al
2973f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier// CHECK: sete %al
2983f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier    setz al
2993f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier// CHECK: setbe %al
3003f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier    setna al
3013f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier// CHECK: setae %al
3023f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier    setnb al
3033f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier// CHECK: setae %al
3043f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier    setnc al
3053f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier// CHECK: setle %al
3063f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier    setng al
3073f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier// CHECK: setge %al
3083f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier    setnl al
3093f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier// CHECK: setne %al
3103f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier    setnz al
3113f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier// CHECK: setp %al
3123f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier    setpe al
3133f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier// CHECK: setnp %al
3143f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier    setpo al
3153f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier// CHECK: setb %al
3163f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier    setnae al
3173f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier// CHECK: seta %al
3183f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier    setnbe al
3193f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier// CHECK: setl %al
3203f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier    setnge al
3213f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier// CHECK: setg %al
3223f1f9c37986953250cbda7a7bfb7123571449be7Chad Rosier    setnle al
323f74d82d8e49ec54953c106a89e0a5951466d4e6bChad Rosier// CHECK: jne _foo
324f74d82d8e49ec54953c106a89e0a5951466d4e6bChad Rosier    jnz _foo
325a70d02ff2841d535875fe80bd3d3c25ba90613daChad Rosier// CHECK: outb %al, $4
326a70d02ff2841d535875fe80bd3d3c25ba90613daChad Rosier    out 4, al
327e112453fc39b97147ea3f23bf0b1973cd9f739b1Chad Rosier    ret
32819b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer
32919b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer// CHECK: cmovbl %ebx, %eax
33019b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer    cmovc eax, ebx
33119b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer// CHECK: cmovel %ebx, %eax
33219b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer    cmovz eax, ebx
33319b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer// CHECK: cmovbel %ebx, %eax
33419b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer    cmovna eax, ebx
33519b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer// CHECK: cmovael %ebx, %eax
33619b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer    cmovnb eax, ebx
33719b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer// CHECK: cmovael %ebx, %eax
33819b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer    cmovnc eax, ebx
33919b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer// CHECK: cmovlel %ebx, %eax
34019b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer    cmovng eax, ebx
34119b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer// CHECK: cmovgel %ebx, %eax
34219b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer    cmovnl eax, ebx
34319b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer// CHECK: cmovnel %ebx, %eax
34419b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer    cmovnz eax, ebx
34519b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer// CHECK: cmovpl %ebx, %eax
34619b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer    cmovpe eax, ebx
34719b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer// CHECK: cmovnpl %ebx, %eax
34819b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer    cmovpo eax, ebx
34919b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer// CHECK: cmovbl %ebx, %eax
35019b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer    cmovnae eax, ebx
35119b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer// CHECK: cmoval %ebx, %eax
35219b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer    cmovnbe eax, ebx
35319b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer// CHECK: cmovll %ebx, %eax
35419b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer    cmovnge eax, ebx
35519b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer// CHECK: cmovgl %ebx, %eax
35619b30d56b224ab3507f7a93743eac2b01c5861ddBenjamin Kramer    cmovnle eax, ebx
3576ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper
3586ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: shldw	%cl, %bx, %dx
3596ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: shldw	%cl, %bx, %dx
3606ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: shldw	$1, %bx, %dx
3616ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: shldw	%cl, %bx, (%rax)
3626ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: shldw	%cl, %bx, (%rax)
3636ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: shrdw	%cl, %bx, %dx
3646ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: shrdw	%cl, %bx, %dx
3656ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: shrdw	$1, %bx, %dx
3666ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: shrdw	%cl, %bx, (%rax)
3676ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: shrdw	%cl, %bx, (%rax)
3686ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper
3696ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppershld  DX, BX
3706ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppershld  DX, BX, CL
3716ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppershld  DX, BX, 1
3726ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppershld  [RAX], BX
3736ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppershld  [RAX], BX, CL
3746ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppershrd  DX, BX
3756ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppershrd  DX, BX, CL
3766ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppershrd  DX, BX, 1
3776ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppershrd  [RAX], BX
3786ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppershrd  [RAX], BX, CL
3796ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper
3806ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: btl $1, (%eax)
3816ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: btsl $1, (%eax)
3826ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: btrl $1, (%eax)
3836ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: btcl $1, (%eax)
3846ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    bt DWORD PTR [EAX], 1
3856ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    bt DWORD PTR [EAX], 1
3866ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    bts DWORD PTR [EAX], 1
3876ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    btr DWORD PTR [EAX], 1
3886ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    btc DWORD PTR [EAX], 1
3896ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper
3906ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper//CHECK: divb	%bl
3916ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper//CHECK: divw	%bx
3926ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper//CHECK: divl	%ecx
3936ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper//CHECK: divl	3735928559(%ebx,%ecx,8)
3946ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper//CHECK: divl	69
3956ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper//CHECK: divl	32493
3966ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper//CHECK: divl	3133065982
3976ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper//CHECK: divl	305419896
3986ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper//CHECK: idivb	%bl
3996ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper//CHECK: idivw	%bx
4006ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper//CHECK: idivl	%ecx
4016ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper//CHECK: idivl	3735928559(%ebx,%ecx,8)
4026ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper//CHECK: idivl	69
4036ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper//CHECK: idivl	32493
4046ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper//CHECK: idivl	3133065982
4056ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper//CHECK: idivl	305419896
4066ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    div AL, BL
4076ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    div AX, BX
4086ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    div EAX, ECX
4096ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    div EAX, [ECX*8+EBX+0xdeadbeef]
4106ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    div EAX, [0x45]
4116ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    div EAX, [0x7eed]
4126ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    div EAX, [0xbabecafe]
4136ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    div EAX, [0x12345678]
4146ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    idiv AL, BL
4156ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    idiv AX, BX
4166ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    idiv EAX, ECX
4176ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    idiv EAX, [ECX*8+EBX+0xdeadbeef]
4186ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    idiv EAX, [0x45]
4196ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    idiv EAX, [0x7eed]
4206ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    idiv EAX, [0xbabecafe]
4216ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    idiv EAX, [0x12345678]
4226ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper
4236ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper
4246ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: inb %dx, %al
4256ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: inw %dx, %ax
4266ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: inl %dx, %eax
4276ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: outb %al, %dx
4286ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: outw %ax, %dx
4296ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: outl %eax, %dx
4306ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    inb DX
4316ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    inw DX
4326ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    inl DX
4336ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    outb DX
4346ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    outw DX
4356ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper    outl DX
4366ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper
4376ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: xchgq %rcx, %rax
4386ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: xchgq %rcx, %rax
4396ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: xchgl %ecx, %eax
4406ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: xchgl %ecx, %eax
4416ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: xchgw %cx, %ax
4426ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: xchgw %cx, %ax
4436ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperxchg RAX, RCX
4446ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperxchg RCX, RAX
4456ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperxchg EAX, ECX
4466ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperxchg ECX, EAX
4476ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperxchg AX, CX
4486ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperxchg CX, AX
4496ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper
4506ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: xchgq %rax, (%ecx)
4516ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: xchgq %rax, (%ecx)
4526ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: xchgl %eax, (%ecx)
4536ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: xchgl %eax, (%ecx)
4546ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: xchgw %ax, (%ecx)
4556ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: xchgw %ax, (%ecx)
4566ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperxchg RAX, [ECX]
4576ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperxchg [ECX], RAX
4586ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperxchg EAX, [ECX]
4596ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperxchg [ECX], EAX
4606ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperxchg AX, [ECX]
4616ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperxchg [ECX], AX
4626ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper
4636ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: testq (%ecx), %rax
4646ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: testq (%ecx), %rax
4656ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: testl (%ecx), %eax
4666ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: testl (%ecx), %eax
4676ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: testw (%ecx), %ax
4686ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: testw (%ecx), %ax
4696ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: testb (%ecx), %al
4706ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: testb (%ecx), %al
4716ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppertest RAX, [ECX]
4726ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppertest [ECX], RAX
4736ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppertest EAX, [ECX]
4746ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppertest [ECX], EAX
4756ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppertest AX, [ECX]
4766ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppertest [ECX], AX
4776ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppertest AL, [ECX]
4786ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Toppertest [ECX], AL
4796ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper
4806ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fnstsw %ax
4816ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fnstsw %ax
4826ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fnstsw %ax
4836ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fnstsw %ax
4846ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfnstsw
4856ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfnstsw AX
4866ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfnstsw EAX
4876ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfnstsw AL
4886ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper
4896ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: faddp %st(1)
4906ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fmulp %st(1)
4916ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fsubrp %st(1)
4926ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fsubp %st(1)
4936ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fdivrp %st(1)
4946ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fdivp %st(1)
4956ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfaddp ST(1), ST(0)
4966ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfmulp ST(1), ST(0)
4976ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfsubp ST(1), ST(0)
4986ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfsubrp ST(1), ST(0)
4996ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfdivp ST(1), ST(0)
5006ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfdivrp ST(1), ST(0)
5016ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper
5026ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: faddp %st(1)
5036ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fmulp %st(1)
5046ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fsubrp %st(1)
5056ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fsubp %st(1)
5066ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fdivrp %st(1)
5076ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fdivp %st(1)
5086ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfaddp ST(0), ST(1)
5096ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfmulp ST(0), ST(1)
5106ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfsubp ST(0), ST(1)
5116ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfsubrp ST(0), ST(1)
5126ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfdivp ST(0), ST(1)
5136ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfdivrp ST(0), ST(1)
5146ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper
5156ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: faddp %st(1)
5166ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fmulp %st(1)
5176ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fsubrp %st(1)
5186ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fsubp %st(1)
5196ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fdivrp %st(1)
5206ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fdivp %st(1)
5216ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfaddp ST(1)
5226ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfmulp ST(1)
5236ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfsubp ST(1)
5246ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfsubrp ST(1)
5256ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfdivp ST(1)
5266ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfdivrp ST(1)
5276ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper
5286ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: faddp %st(1)
5296ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fmulp %st(1)
5306ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fsubrp %st(1)
5316ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fsubp %st(1)
5326ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fdivrp %st(1)
5336ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fdivp %st(1)
5346ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfaddp
5356ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfmulp
5366ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfsubp
5376ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfsubrp
5386ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfdivp
5396ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfdivrp
5406ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper
5416ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fadd %st(1)
5426ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fmul %st(1)
5436ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fsub %st(1)
5446ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fsubr %st(1)
5456ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fdiv %st(1)
5466ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fdivr %st(1)
5476ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfadd ST(0), ST(1)
5486ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfmul ST(0), ST(1)
5496ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfsub ST(0), ST(1)
5506ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfsubr ST(0), ST(1)
5516ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfdiv ST(0), ST(1)
5526ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfdivr ST(0), ST(1)
5536ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper
5546ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fadd %st(0), %st(1)
5556ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fmul %st(0), %st(1)
5566ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fsubr %st(0), %st(1)
5576ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fsub %st(0), %st(1)
5586ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fdivr %st(0), %st(1)
5596ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fdiv %st(0), %st(1)
5606ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfadd ST(1), ST(0)
5616ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfmul ST(1), ST(0)
5626ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfsub ST(1), ST(0)
5636ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfsubr ST(1), ST(0)
5646ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfdiv ST(1), ST(0)
5656ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfdivr ST(1), ST(0)
5666ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper
5676ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fadd %st(1)
5686ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fmul %st(1)
5696ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fsub %st(1)
5706ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fsubr %st(1)
5716ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fdiv %st(1)
5726ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topper// CHECK: fdivr %st(1)
5736ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfadd ST(1)
5746ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfmul ST(1)
5756ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfsub ST(1)
5766ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfsubr ST(1)
5776ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfdiv ST(1)
5786ee1464ba599f1afbed502fa1b3ac18c8577fd97Craig Topperfdivr ST(1)
579