@@ -242,60 +242,12 @@ define <4 x i32> @knownbits_mask_sub_shuffle_lshr(<4 x i32> %a0) nounwind {
242
242
define <4 x i32 > @knownbits_mask_udiv_shuffle_lshr (<4 x i32 > %a0 , <4 x i32 > %a1 ) nounwind {
243
243
; X32-LABEL: knownbits_mask_udiv_shuffle_lshr:
244
244
; X32: # BB#0:
245
- ; X32-NEXT: pushl %esi
246
- ; X32-NEXT: vpand {{\.LCPI.*}}, %xmm0, %xmm0
247
- ; X32-NEXT: vpextrd $1, %xmm1, %ecx
248
- ; X32-NEXT: vpextrd $1, %xmm0, %eax
249
- ; X32-NEXT: xorl %edx, %edx
250
- ; X32-NEXT: divl %ecx
251
- ; X32-NEXT: movl %eax, %ecx
252
- ; X32-NEXT: vmovd %xmm1, %esi
253
- ; X32-NEXT: vmovd %xmm0, %eax
254
- ; X32-NEXT: xorl %edx, %edx
255
- ; X32-NEXT: divl %esi
256
- ; X32-NEXT: vmovd %eax, %xmm2
257
- ; X32-NEXT: vpinsrd $1, %ecx, %xmm2, %xmm2
258
- ; X32-NEXT: vpextrd $2, %xmm1, %ecx
259
- ; X32-NEXT: vpextrd $2, %xmm0, %eax
260
- ; X32-NEXT: xorl %edx, %edx
261
- ; X32-NEXT: divl %ecx
262
- ; X32-NEXT: vpinsrd $2, %eax, %xmm2, %xmm2
263
- ; X32-NEXT: vpextrd $3, %xmm1, %ecx
264
- ; X32-NEXT: vpextrd $3, %xmm0, %eax
265
- ; X32-NEXT: xorl %edx, %edx
266
- ; X32-NEXT: divl %ecx
267
- ; X32-NEXT: vpinsrd $3, %eax, %xmm2, %xmm0
268
- ; X32-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,3,3]
269
- ; X32-NEXT: vpsrld $22, %xmm0, %xmm0
270
- ; X32-NEXT: popl %esi
245
+ ; X32-NEXT: vxorps %xmm0, %xmm0, %xmm0
271
246
; X32-NEXT: retl
272
247
;
273
248
; X64-LABEL: knownbits_mask_udiv_shuffle_lshr:
274
249
; X64: # BB#0:
275
- ; X64-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm0
276
- ; X64-NEXT: vpextrd $1, %xmm1, %ecx
277
- ; X64-NEXT: vpextrd $1, %xmm0, %eax
278
- ; X64-NEXT: xorl %edx, %edx
279
- ; X64-NEXT: divl %ecx
280
- ; X64-NEXT: movl %eax, %ecx
281
- ; X64-NEXT: vmovd %xmm1, %esi
282
- ; X64-NEXT: vmovd %xmm0, %eax
283
- ; X64-NEXT: xorl %edx, %edx
284
- ; X64-NEXT: divl %esi
285
- ; X64-NEXT: vmovd %eax, %xmm2
286
- ; X64-NEXT: vpinsrd $1, %ecx, %xmm2, %xmm2
287
- ; X64-NEXT: vpextrd $2, %xmm1, %ecx
288
- ; X64-NEXT: vpextrd $2, %xmm0, %eax
289
- ; X64-NEXT: xorl %edx, %edx
290
- ; X64-NEXT: divl %ecx
291
- ; X64-NEXT: vpinsrd $2, %eax, %xmm2, %xmm2
292
- ; X64-NEXT: vpextrd $3, %xmm1, %ecx
293
- ; X64-NEXT: vpextrd $3, %xmm0, %eax
294
- ; X64-NEXT: xorl %edx, %edx
295
- ; X64-NEXT: divl %ecx
296
- ; X64-NEXT: vpinsrd $3, %eax, %xmm2, %xmm0
297
- ; X64-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,3,3]
298
- ; X64-NEXT: vpsrld $22, %xmm0, %xmm0
250
+ ; X64-NEXT: vxorps %xmm0, %xmm0, %xmm0
299
251
; X64-NEXT: retq
300
252
%1 = and <4 x i32 > %a0 , <i32 32767 , i32 -1 , i32 -1 , i32 32767 >
301
253
%2 = udiv <4 x i32 > %1 , %a1
0 commit comments