1# Check 64bit BMI instructions
2
3	.allow_index_reg
4	.text
5_start:
6
7# Test for op r16, r/m16
8	tzcnt %ax,%bx
9	tzcnt (%rcx),%bx
10	tzcnt (%rcx),%r15w
11
12# Test for op r32, r32, r/m32
13	andn %eax,%ebx,%esi
14	andn (%rcx),%ebx,%esi
15	andn %r9d,%r15d,%r10d
16	andn (%rcx),%r15d,%r10d
17
18# Test for op r32, r/m32, r32
19	bextr %eax,%ebx,%esi
20	bextr %ebx,(%rcx),%esi
21	bextr %r9d,%r15d,%r10d
22	bextr %r9d,(%rcx),%r10d
23
24# Test for op r32, r/m32
25	tzcnt %eax,%ebx
26	tzcnt (%rcx),%ebx
27	tzcnt (%rcx),%r15d
28	blsi %eax,%ebx
29	blsi (%rcx),%ebx
30	blsi (%rcx),%r15d
31	blsmsk %eax,%ebx
32	blsmsk (%rcx),%ebx
33	blsmsk (%rcx),%r15d
34	blsr %eax,%ebx
35	blsr (%rcx),%ebx
36	blsr (%rcx),%r15d
37
38# Test for op r64, r64, r/m64
39	andn %rax,%rbx,%rsi
40	andn (%rcx),%rbx,%rsi
41	andn %r9,%r15,%r10
42	andn (%rcx),%r15,%r10
43
44# Test for op r64, r/m64, r64
45	bextr %rax,%rbx,%rsi
46	bextr %rax,(%rcx),%rsi
47	bextr %r9,%r15,%r10
48	bextr %r9,(%rcx),%r10
49
50# Test for op r64, r/m64
51	tzcnt %rax,%rbx
52	tzcnt (%rcx),%rbx
53	tzcnt %r9,%r15
54	tzcnt (%rcx),%r15
55	blsi %rax,%rbx
56	blsi (%rcx),%rbx
57	blsi %r9,%r15
58	blsi (%rcx),%r15
59	blsmsk %rax,%rbx
60	blsmsk (%rcx),%rbx
61	blsmsk %r9,%r15
62	blsmsk (%rcx),%r15
63	blsr %rax,%rbx
64	blsr (%rcx),%rbx
65	blsr %r9,%r15
66	blsr (%rcx),%r15
67
68	.intel_syntax noprefix
69
70# Test for op r16, r/m16
71	tzcnt bx,ax
72	tzcnt bx,WORD PTR [rcx]
73	tzcnt r10w,WORD PTR [rcx]
74	tzcnt bx,[rcx]
75
76# Test for op r32, r32, r/m32
77	andn esi,ebx,eax
78	andn esi,ebx,DWORD PTR [rcx]
79	andn r15d,r10d,r9d
80	andn r15d,r10d,DWORD PTR [rcx]
81	andn esi,ebx,[rcx]
82
83# Test for op r32, r/m32, r32
84	bextr esi,ebx,eax
85	bextr esi,DWORD PTR [rcx],ebx
86	bextr r15d,r10d,r9d
87	bextr r15d,DWORD PTR [rcx],r9d
88	bextr esi,[rcx],ebx
89
90# Test for op r32, r/m32
91	tzcnt ebx,eax
92	tzcnt ebx,DWORD PTR [rcx]
93	tzcnt r10d,DWORD PTR [rcx]
94	tzcnt ebx,[rcx]
95	blsi ebx,eax
96	blsi ebx,DWORD PTR [rcx]
97	blsi r10d,DWORD PTR [rcx]
98	blsi ebx,[rcx]
99	blsmsk ebx,eax
100	blsmsk ebx,DWORD PTR [rcx]
101	blsmsk r10d,DWORD PTR [rcx]
102	blsmsk ebx,[rcx]
103	blsr ebx,eax
104	blsr ebx,DWORD PTR [rcx]
105	blsr r10d,DWORD PTR [rcx]
106	blsr ebx,[rcx]
107
108# Test for op r64, r64, r/m64
109	andn rsi,rbx,rax
110	andn rsi,rbx,QWORD PTR [rcx]
111	andn r10,r15,r9
112	andn r10,r15,QWORD PTR [rcx]
113	andn rsi,rbx,[rcx]
114
115# Test for op r64, r/m64, r64
116	bextr rsi,rbx,rax
117	bextr rsi,QWORD PTR [rcx],rax
118	bextr r10,r15,r9
119	bextr r10,QWORD PTR [rcx],r9
120	bextr rsi,[rcx],rax
121
122# Test for op r64, r/m64
123	tzcnt rbx,rax
124	tzcnt rbx,QWORD PTR [rcx]
125	tzcnt r15,r9
126	tzcnt r15,QWORD PTR [rcx]
127	tzcnt rbx,[rcx]
128	blsi rbx,rax
129	blsi rbx,QWORD PTR [rcx]
130	blsi r15,r9
131	blsi r15,QWORD PTR [rcx]
132	blsi rbx,[rcx]
133	blsmsk rbx,rax
134	blsmsk rbx,QWORD PTR [rcx]
135	blsmsk r15,r9
136	blsmsk r15,QWORD PTR [rcx]
137	blsmsk rbx,[rcx]
138	blsr rbx,rax
139	blsr rbx,QWORD PTR [rcx]
140	blsr r15,r9
141	blsr r15,QWORD PTR [rcx]
142	blsr rbx,[rcx]
143