x86: optimize AND/OR with twice the same register
[deliverable/binutils-gdb.git] / gas / testsuite / gas / i386 / optimize-2.s
1 # Check instructions with optimized encoding
2
3 .allow_index_reg
4 .text
5 _start:
6 testl $0x7f, %eax
7 testw $0x7f, %ax
8 testb $0x7f, %al
9 test $0x7f, %ebx
10 test $0x7f, %bx
11 test $0x7f, %bl
12 test $0x7f, %edi
13 test $0x7f, %di
14
15 and %cl, %cl
16 and %dx, %dx
17 and %ebx, %ebx
18
19 or %ah, %ah
20 or %bp, %bp
21 or %esi, %esi
22
23 vandnpd %zmm1, %zmm1, %zmm5
24
25 vmovdqa32 %xmm1, %xmm2
26 vmovdqa64 %xmm1, %xmm2
27 vmovdqu8 %xmm1, %xmm2
28 vmovdqu16 %xmm1, %xmm2
29 vmovdqu32 %xmm1, %xmm2
30 vmovdqu64 %xmm1, %xmm2
31
32 vmovdqa32 127(%eax), %xmm2
33 vmovdqa64 127(%eax), %xmm2
34 vmovdqu8 127(%eax), %xmm2
35 vmovdqu16 127(%eax), %xmm2
36 vmovdqu32 127(%eax), %xmm2
37 vmovdqu64 127(%eax), %xmm2
38
39 vmovdqa32 %xmm1, 128(%eax)
40 vmovdqa64 %xmm1, 128(%eax)
41 vmovdqu8 %xmm1, 128(%eax)
42 vmovdqu16 %xmm1, 128(%eax)
43 vmovdqu32 %xmm1, 128(%eax)
44 vmovdqu64 %xmm1, 128(%eax)
45
46 vmovdqa32 %ymm1, %ymm2
47 vmovdqa64 %ymm1, %ymm2
48 vmovdqu8 %ymm1, %ymm2
49 vmovdqu16 %ymm1, %ymm2
50 vmovdqu32 %ymm1, %ymm2
51 vmovdqu64 %ymm1, %ymm2
52
53 vmovdqa32 127(%eax), %ymm2
54 vmovdqa64 127(%eax), %ymm2
55 vmovdqu8 127(%eax), %ymm2
56 vmovdqu16 127(%eax), %ymm2
57 vmovdqu32 127(%eax), %ymm2
58 vmovdqu64 127(%eax), %ymm2
59
60 vmovdqa32 %ymm1, 128(%eax)
61 vmovdqa64 %ymm1, 128(%eax)
62 vmovdqu8 %ymm1, 128(%eax)
63 vmovdqu16 %ymm1, 128(%eax)
64 vmovdqu32 %ymm1, 128(%eax)
65 vmovdqu64 %ymm1, 128(%eax)
66
67 vmovdqa32 %zmm1, %zmm2
68 vmovdqa64 %zmm1, %zmm2
69 vmovdqu8 %zmm1, %zmm2
70 vmovdqu16 %zmm1, %zmm2
71 vmovdqu32 %zmm1, %zmm2
72 vmovdqu64 %zmm1, %zmm2
73
74 {evex} vmovdqa32 %ymm1, %ymm2
75 {evex} vmovdqa64 %ymm1, %ymm2
76 {evex} vmovdqu8 %xmm1, %xmm2
77 {evex} vmovdqu16 %xmm1, %xmm2
78 {evex} vmovdqu32 %xmm1, %xmm2
79 {evex} vmovdqu64 %xmm1, %xmm2
80
81 vmovdqa32 %ymm1, %ymm2{%k1}
82 vmovdqa64 %ymm1, %ymm2{%k1}
83 vmovdqu8 %xmm1, %xmm2{%k1}
84 vmovdqu16 %xmm1, %xmm2{%k1}
85 vmovdqu32 %xmm1, %xmm2{%k1}
86 vmovdqu64 %xmm1, %xmm2{%k1}
87
88 vmovdqa32 (%eax), %ymm2{%k1}
89 vmovdqa64 (%eax), %ymm2{%k1}
90 vmovdqu8 (%eax), %xmm2{%k1}
91 vmovdqu16 (%eax), %xmm2{%k1}
92 vmovdqu32 (%eax), %xmm2{%k1}
93 vmovdqu64 (%eax), %xmm2{%k1}
94
95 vmovdqa32 %ymm1, (%eax){%k1}
96 vmovdqa64 %ymm1, (%eax){%k1}
97 vmovdqu8 %xmm1, (%eax){%k1}
98 vmovdqu16 %xmm1, (%eax){%k1}
99 vmovdqu32 %xmm1, (%eax){%k1}
100 vmovdqu64 %xmm1, (%eax){%k1}
101
102 vmovdqa32 %xmm1, %xmm2{%k1}{z}
103 vmovdqa64 %xmm1, %xmm2{%k1}{z}
104 vmovdqu8 %xmm1, %xmm2{%k1}{z}
105 vmovdqu16 %xmm1, %xmm2{%k1}{z}
106 vmovdqu32 %xmm1, %xmm2{%k1}{z}
107 vmovdqu64 %xmm1, %xmm2{%k1}{z}
108
109 vpandd %xmm2, %xmm3, %xmm4
110 vpandq %xmm2, %xmm3, %xmm4
111 vpandnd %xmm2, %xmm3, %xmm4
112 vpandnq %xmm2, %xmm3, %xmm4
113 vpord %xmm2, %xmm3, %xmm4
114 vporq %xmm2, %xmm3, %xmm4
115 vpxord %xmm2, %xmm3, %xmm4
116 vpxorq %xmm2, %xmm3, %xmm4
117
118 vpandd %ymm2, %ymm3, %ymm4
119 vpandq %ymm2, %ymm3, %ymm4
120 vpandnd %ymm2, %ymm3, %ymm4
121 vpandnq %ymm2, %ymm3, %ymm4
122 vpord %ymm2, %ymm3, %ymm4
123 vporq %ymm2, %ymm3, %ymm4
124 vpxord %ymm2, %ymm3, %ymm4
125 vpxorq %ymm2, %ymm3, %ymm4
126
127 vpandd 112(%eax), %xmm2, %xmm3
128 vpandq 112(%eax), %xmm2, %xmm3
129 vpandnd 112(%eax), %xmm2, %xmm3
130 vpandnq 112(%eax), %xmm2, %xmm3
131 vpord 112(%eax), %xmm2, %xmm3
132 vporq 112(%eax), %xmm2, %xmm3
133 vpxord 112(%eax), %xmm2, %xmm3
134 vpxorq 112(%eax), %xmm2, %xmm3
135
136 vpandd 128(%eax), %xmm2, %xmm3
137 vpandq 128(%eax), %xmm2, %xmm3
138 vpandnd 128(%eax), %xmm2, %xmm3
139 vpandnq 128(%eax), %xmm2, %xmm3
140 vpord 128(%eax), %xmm2, %xmm3
141 vporq 128(%eax), %xmm2, %xmm3
142 vpxord 128(%eax), %xmm2, %xmm3
143 vpxorq 128(%eax), %xmm2, %xmm3
144
145 vpandd 96(%eax), %ymm2, %ymm3
146 vpandq 96(%eax), %ymm2, %ymm3
147 vpandnd 96(%eax), %ymm2, %ymm3
148 vpandnq 96(%eax), %ymm2, %ymm3
149 vpord 96(%eax), %ymm2, %ymm3
150 vporq 96(%eax), %ymm2, %ymm3
151 vpxord 96(%eax), %ymm2, %ymm3
152 vpxorq 96(%eax), %ymm2, %ymm3
153
154 vpandd 128(%eax), %ymm2, %ymm3
155 vpandq 128(%eax), %ymm2, %ymm3
156 vpandnd 128(%eax), %ymm2, %ymm3
157 vpandnq 128(%eax), %ymm2, %ymm3
158 vpord 128(%eax), %ymm2, %ymm3
159 vporq 128(%eax), %ymm2, %ymm3
160 vpxord 128(%eax), %ymm2, %ymm3
161 vpxorq 128(%eax), %ymm2, %ymm3
162
163 vpandd %xmm2, %xmm3, %xmm4{%k5}
164 vpandq %ymm2, %ymm3, %ymm4{%k5}
165 vpandnd %ymm2, %ymm3, %ymm4{%k5}
166 vpandnq %xmm2, %xmm3, %xmm4{%k5}
167 vpord %xmm2, %xmm3, %xmm4{%k5}
168 vporq %ymm2, %ymm3, %ymm4{%k5}
169 vpxord %ymm2, %ymm3, %ymm4{%k5}
170 vpxorq %xmm2, %xmm3, %xmm4{%k5}
171
172 vpandd (%eax){1to8}, %ymm2, %ymm3
173 vpandq (%eax){1to2}, %xmm2, %xmm3
174 vpandnd (%eax){1to4}, %xmm2, %xmm3
175 vpandnq (%eax){1to4}, %ymm2, %ymm3
176 vpord (%eax){1to8}, %ymm2, %ymm3
177 vporq (%eax){1to2}, %xmm2, %xmm3
178 vpxord (%eax){1to4}, %xmm2, %xmm3
179 vpxorq (%eax){1to4}, %ymm2, %ymm3
This page took 0.036303 seconds and 5 git commands to generate.