5
5
define zeroext i16 @TEST_mm_test_epi8_mask (<2 x i64 > %__A , <2 x i64 > %__B ) local_unnamed_addr #0 {
6
6
; CHECK-LABEL: TEST_mm_test_epi8_mask:
7
7
; CHECK: # BB#0: # %entry
8
- ; CHECK-NEXT: vpand %xmm0, %xmm1, %xmm0
9
- ; CHECK-NEXT: vpxor %xmm1, %xmm1, %xmm1
10
- ; CHECK-NEXT: vpcmpneqb %xmm1, %xmm0, %k0
8
+ ; CHECK-NEXT: vptestmb %xmm0, %xmm1, %k0
11
9
; CHECK-NEXT: kmovd %k0, %eax
12
10
; CHECK-NEXT: # kill: %AX<def> %AX<kill> %EAX<kill>
13
11
; CHECK-NEXT: retq
@@ -23,10 +21,8 @@ entry:
23
21
define zeroext i16 @TEST_mm_mask_test_epi8_mask (i16 zeroext %__U , <2 x i64 > %__A , <2 x i64 > %__B ) local_unnamed_addr #0 {
24
22
; CHECK-LABEL: TEST_mm_mask_test_epi8_mask:
25
23
; CHECK: # BB#0: # %entry
26
- ; CHECK-NEXT: vpand %xmm0, %xmm1, %xmm0
27
- ; CHECK-NEXT: vpxor %xmm1, %xmm1, %xmm1
28
24
; CHECK-NEXT: kmovd %edi, %k1
29
- ; CHECK-NEXT: vpcmpneqb %xmm1 , %xmm0 , %k0 {%k1}
25
+ ; CHECK-NEXT: vptestmb %xmm0 , %xmm1 , %k0 {%k1}
30
26
; CHECK-NEXT: kmovd %k0, %eax
31
27
; CHECK-NEXT: # kill: %AX<def> %AX<kill> %EAX<kill>
32
28
; CHECK-NEXT: retq
44
40
define zeroext i8 @TEST_mm_test_epi16_mask (<2 x i64 > %__A , <2 x i64 > %__B ) local_unnamed_addr #0 {
45
41
; CHECK-LABEL: TEST_mm_test_epi16_mask:
46
42
; CHECK: # BB#0: # %entry
47
- ; CHECK-NEXT: vpand %xmm0, %xmm1, %xmm0
48
- ; CHECK-NEXT: vpxor %xmm1, %xmm1, %xmm1
49
- ; CHECK-NEXT: vpcmpneqw %xmm1, %xmm0, %k0
43
+ ; CHECK-NEXT: vptestmw %xmm0, %xmm1, %k0
50
44
; CHECK-NEXT: kmovd %k0, %eax
51
45
; CHECK-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
52
46
; CHECK-NEXT: retq
@@ -62,10 +56,8 @@ entry:
62
56
define zeroext i8 @TEST_mm_mask_test_epi16_mask (i8 zeroext %__U , <2 x i64 > %__A , <2 x i64 > %__B ) local_unnamed_addr #0 {
63
57
; CHECK-LABEL: TEST_mm_mask_test_epi16_mask:
64
58
; CHECK: # BB#0: # %entry
65
- ; CHECK-NEXT: vpand %xmm0, %xmm1, %xmm0
66
- ; CHECK-NEXT: vpxor %xmm1, %xmm1, %xmm1
67
59
; CHECK-NEXT: kmovd %edi, %k1
68
- ; CHECK-NEXT: vpcmpneqw %xmm1 , %xmm0 , %k0 {%k1}
60
+ ; CHECK-NEXT: vptestmw %xmm0 , %xmm1 , %k0 {%k1}
69
61
; CHECK-NEXT: kmovd %k0, %eax
70
62
; CHECK-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
71
63
; CHECK-NEXT: retq
83
75
define zeroext i16 @TEST_mm_testn_epi8_mask (<2 x i64 > %__A , <2 x i64 > %__B ) local_unnamed_addr #0 {
84
76
; CHECK-LABEL: TEST_mm_testn_epi8_mask:
85
77
; CHECK: # BB#0: # %entry
86
- ; CHECK-NEXT: vpand %xmm0, %xmm1, %xmm0
87
- ; CHECK-NEXT: vpxor %xmm1, %xmm1, %xmm1
88
- ; CHECK-NEXT: vpcmpeqb %xmm1, %xmm0, %k0
78
+ ; CHECK-NEXT: vptestnmb %xmm0, %xmm1, %k0
89
79
; CHECK-NEXT: kmovd %k0, %eax
90
80
; CHECK-NEXT: # kill: %AX<def> %AX<kill> %EAX<kill>
91
81
; CHECK-NEXT: retq
@@ -101,10 +91,8 @@ entry:
101
91
define zeroext i16 @TEST_mm_mask_testn_epi8_mask (i16 zeroext %__U , <2 x i64 > %__A , <2 x i64 > %__B ) local_unnamed_addr #0 {
102
92
; CHECK-LABEL: TEST_mm_mask_testn_epi8_mask:
103
93
; CHECK: # BB#0: # %entry
104
- ; CHECK-NEXT: vpand %xmm0, %xmm1, %xmm0
105
- ; CHECK-NEXT: vpxor %xmm1, %xmm1, %xmm1
106
94
; CHECK-NEXT: kmovd %edi, %k1
107
- ; CHECK-NEXT: vpcmpeqb %xmm1 , %xmm0 , %k0 {%k1}
95
+ ; CHECK-NEXT: vptestnmb %xmm0 , %xmm1 , %k0 {%k1}
108
96
; CHECK-NEXT: kmovd %k0, %eax
109
97
; CHECK-NEXT: # kill: %AX<def> %AX<kill> %EAX<kill>
110
98
; CHECK-NEXT: retq
@@ -122,9 +110,7 @@ entry:
122
110
define zeroext i8 @TEST_mm_testn_epi16_mask (<2 x i64 > %__A , <2 x i64 > %__B ) local_unnamed_addr #0 {
123
111
; CHECK-LABEL: TEST_mm_testn_epi16_mask:
124
112
; CHECK: # BB#0: # %entry
125
- ; CHECK-NEXT: vpand %xmm0, %xmm1, %xmm0
126
- ; CHECK-NEXT: vpxor %xmm1, %xmm1, %xmm1
127
- ; CHECK-NEXT: vpcmpeqw %xmm1, %xmm0, %k0
113
+ ; CHECK-NEXT: vptestnmw %xmm0, %xmm1, %k0
128
114
; CHECK-NEXT: kmovd %k0, %eax
129
115
; CHECK-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
130
116
; CHECK-NEXT: retq
@@ -140,10 +126,8 @@ entry:
140
126
define zeroext i8 @TEST_mm_mask_testn_epi16_mask (i8 zeroext %__U , <2 x i64 > %__A , <2 x i64 > %__B ) local_unnamed_addr #0 {
141
127
; CHECK-LABEL: TEST_mm_mask_testn_epi16_mask:
142
128
; CHECK: # BB#0: # %entry
143
- ; CHECK-NEXT: vpand %xmm0, %xmm1, %xmm0
144
- ; CHECK-NEXT: vpxor %xmm1, %xmm1, %xmm1
145
129
; CHECK-NEXT: kmovd %edi, %k1
146
- ; CHECK-NEXT: vpcmpeqw %xmm1 , %xmm0 , %k0 {%k1}
130
+ ; CHECK-NEXT: vptestnmw %xmm0 , %xmm1 , %k0 {%k1}
147
131
; CHECK-NEXT: kmovd %k0, %eax
148
132
; CHECK-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
149
133
; CHECK-NEXT: retq
@@ -161,9 +145,7 @@ entry:
161
145
define i32 @TEST_mm256_test_epi8_mask (<4 x i64 > %__A , <4 x i64 > %__B ) local_unnamed_addr #0 {
162
146
; CHECK-LABEL: TEST_mm256_test_epi8_mask:
163
147
; CHECK: # BB#0: # %entry
164
- ; CHECK-NEXT: vpand %ymm0, %ymm1, %ymm0
165
- ; CHECK-NEXT: vpxor %xmm1, %xmm1, %xmm1
166
- ; CHECK-NEXT: vpcmpneqb %ymm1, %ymm0, %k0
148
+ ; CHECK-NEXT: vptestmb %ymm0, %ymm1, %k0
167
149
; CHECK-NEXT: kmovd %k0, %eax
168
150
; CHECK-NEXT: vzeroupper
169
151
; CHECK-NEXT: retq
@@ -179,10 +161,8 @@ entry:
179
161
define i32 @TEST_mm256_mask_test_epi8_mask (i32 %__U , <4 x i64 > %__A , <4 x i64 > %__B ) local_unnamed_addr #0 {
180
162
; CHECK-LABEL: TEST_mm256_mask_test_epi8_mask:
181
163
; CHECK: # BB#0: # %entry
182
- ; CHECK-NEXT: vpand %ymm0, %ymm1, %ymm0
183
- ; CHECK-NEXT: vpxor %xmm1, %xmm1, %xmm1
184
164
; CHECK-NEXT: kmovd %edi, %k1
185
- ; CHECK-NEXT: vpcmpneqb %ymm1 , %ymm0 , %k0 {%k1}
165
+ ; CHECK-NEXT: vptestmb %ymm0 , %ymm1 , %k0 {%k1}
186
166
; CHECK-NEXT: kmovd %k0, %eax
187
167
; CHECK-NEXT: vzeroupper
188
168
; CHECK-NEXT: retq
@@ -200,9 +180,7 @@ entry:
200
180
define zeroext i16 @TEST_mm256_test_epi16_mask (<4 x i64 > %__A , <4 x i64 > %__B ) local_unnamed_addr #0 {
201
181
; CHECK-LABEL: TEST_mm256_test_epi16_mask:
202
182
; CHECK: # BB#0: # %entry
203
- ; CHECK-NEXT: vpand %ymm0, %ymm1, %ymm0
204
- ; CHECK-NEXT: vpxor %xmm1, %xmm1, %xmm1
205
- ; CHECK-NEXT: vpcmpneqw %ymm1, %ymm0, %k0
183
+ ; CHECK-NEXT: vptestmw %ymm0, %ymm1, %k0
206
184
; CHECK-NEXT: kmovd %k0, %eax
207
185
; CHECK-NEXT: # kill: %AX<def> %AX<kill> %EAX<kill>
208
186
; CHECK-NEXT: vzeroupper
@@ -219,10 +197,8 @@ entry:
219
197
define zeroext i16 @TEST_mm256_mask_test_epi16_mask (i16 zeroext %__U , <4 x i64 > %__A , <4 x i64 > %__B ) local_unnamed_addr #0 {
220
198
; CHECK-LABEL: TEST_mm256_mask_test_epi16_mask:
221
199
; CHECK: # BB#0: # %entry
222
- ; CHECK-NEXT: vpand %ymm0, %ymm1, %ymm0
223
- ; CHECK-NEXT: vpxor %xmm1, %xmm1, %xmm1
224
200
; CHECK-NEXT: kmovd %edi, %k1
225
- ; CHECK-NEXT: vpcmpneqw %ymm1 , %ymm0 , %k0 {%k1}
201
+ ; CHECK-NEXT: vptestmw %ymm0 , %ymm1 , %k0 {%k1}
226
202
; CHECK-NEXT: kmovd %k0, %eax
227
203
; CHECK-NEXT: # kill: %AX<def> %AX<kill> %EAX<kill>
228
204
; CHECK-NEXT: vzeroupper
@@ -241,9 +217,7 @@ entry:
241
217
define i32 @TEST_mm256_testn_epi8_mask (<4 x i64 > %__A , <4 x i64 > %__B ) local_unnamed_addr #0 {
242
218
; CHECK-LABEL: TEST_mm256_testn_epi8_mask:
243
219
; CHECK: # BB#0: # %entry
244
- ; CHECK-NEXT: vpand %ymm0, %ymm1, %ymm0
245
- ; CHECK-NEXT: vpxor %xmm1, %xmm1, %xmm1
246
- ; CHECK-NEXT: vpcmpeqb %ymm1, %ymm0, %k0
220
+ ; CHECK-NEXT: vptestnmb %ymm0, %ymm1, %k0
247
221
; CHECK-NEXT: kmovd %k0, %eax
248
222
; CHECK-NEXT: vzeroupper
249
223
; CHECK-NEXT: retq
@@ -259,10 +233,8 @@ entry:
259
233
define i32 @TEST_mm256_mask_testn_epi8_mask (i32 %__U , <4 x i64 > %__A , <4 x i64 > %__B ) local_unnamed_addr #0 {
260
234
; CHECK-LABEL: TEST_mm256_mask_testn_epi8_mask:
261
235
; CHECK: # BB#0: # %entry
262
- ; CHECK-NEXT: vpand %ymm0, %ymm1, %ymm0
263
- ; CHECK-NEXT: vpxor %xmm1, %xmm1, %xmm1
264
236
; CHECK-NEXT: kmovd %edi, %k1
265
- ; CHECK-NEXT: vpcmpeqb %ymm1 , %ymm0 , %k0 {%k1}
237
+ ; CHECK-NEXT: vptestnmb %ymm0 , %ymm1 , %k0 {%k1}
266
238
; CHECK-NEXT: kmovd %k0, %eax
267
239
; CHECK-NEXT: vzeroupper
268
240
; CHECK-NEXT: retq
@@ -280,9 +252,7 @@ entry:
280
252
define zeroext i16 @TEST_mm256_testn_epi16_mask (<4 x i64 > %__A , <4 x i64 > %__B ) local_unnamed_addr #0 {
281
253
; CHECK-LABEL: TEST_mm256_testn_epi16_mask:
282
254
; CHECK: # BB#0: # %entry
283
- ; CHECK-NEXT: vpand %ymm0, %ymm1, %ymm0
284
- ; CHECK-NEXT: vpxor %xmm1, %xmm1, %xmm1
285
- ; CHECK-NEXT: vpcmpeqw %ymm1, %ymm0, %k0
255
+ ; CHECK-NEXT: vptestnmw %ymm0, %ymm1, %k0
286
256
; CHECK-NEXT: kmovd %k0, %eax
287
257
; CHECK-NEXT: # kill: %AX<def> %AX<kill> %EAX<kill>
288
258
; CHECK-NEXT: vzeroupper
@@ -299,10 +269,8 @@ entry:
299
269
define zeroext i16 @TEST_mm256_mask_testn_epi16_mask (i16 zeroext %__U , <4 x i64 > %__A , <4 x i64 > %__B ) local_unnamed_addr #0 {
300
270
; CHECK-LABEL: TEST_mm256_mask_testn_epi16_mask:
301
271
; CHECK: # BB#0: # %entry
302
- ; CHECK-NEXT: vpand %ymm0, %ymm1, %ymm0
303
- ; CHECK-NEXT: vpxor %xmm1, %xmm1, %xmm1
304
272
; CHECK-NEXT: kmovd %edi, %k1
305
- ; CHECK-NEXT: vpcmpeqw %ymm1 , %ymm0 , %k0 {%k1}
273
+ ; CHECK-NEXT: vptestnmw %ymm0 , %ymm1 , %k0 {%k1}
306
274
; CHECK-NEXT: kmovd %k0, %eax
307
275
; CHECK-NEXT: # kill: %AX<def> %AX<kill> %EAX<kill>
308
276
; CHECK-NEXT: vzeroupper
0 commit comments