Commit | Line | Data |
---|---|---|
f12dc422 L |
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] |