@@ -269,31 +269,17 @@ declare <1 x iXLen> @llvm.lrint.v1iXLen.v1f64(<1 x double>)
269269define <2 x iXLen> @lrint_v2f64 (<2 x double > %x ) {
270270; X86-SSE2-LABEL: lrint_v2f64:
271271; X86-SSE2: # %bb.0:
272- ; X86-SSE2-NEXT: cvtsd2si %xmm0, %eax
273- ; X86-SSE2-NEXT: movd %eax, %xmm1
274- ; X86-SSE2-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1,1]
275- ; X86-SSE2-NEXT: cvtsd2si %xmm0, %eax
276- ; X86-SSE2-NEXT: movd %eax, %xmm0
277- ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
278- ; X86-SSE2-NEXT: movdqa %xmm1, %xmm0
272+ ; X86-SSE2-NEXT: cvtpd2dq %xmm0, %xmm0
279273; X86-SSE2-NEXT: retl
280274;
281275; X86-AVX-LABEL: lrint_v2f64:
282276; X86-AVX: # %bb.0:
283- ; X86-AVX-NEXT: vshufpd {{.*#+}} xmm1 = xmm0[1,0]
284- ; X86-AVX-NEXT: vcvtsd2si %xmm1, %eax
285- ; X86-AVX-NEXT: vcvtsd2si %xmm0, %ecx
286- ; X86-AVX-NEXT: vmovd %ecx, %xmm0
287- ; X86-AVX-NEXT: vpinsrd $1, %eax, %xmm0, %xmm0
277+ ; X86-AVX-NEXT: vcvtpd2dq %xmm0, %xmm0
288278; X86-AVX-NEXT: retl
289279;
290280; X64-AVX-i32-LABEL: lrint_v2f64:
291281; X64-AVX-i32: # %bb.0:
292- ; X64-AVX-i32-NEXT: vshufpd {{.*#+}} xmm1 = xmm0[1,0]
293- ; X64-AVX-i32-NEXT: vcvtsd2si %xmm1, %eax
294- ; X64-AVX-i32-NEXT: vcvtsd2si %xmm0, %ecx
295- ; X64-AVX-i32-NEXT: vmovd %ecx, %xmm0
296- ; X64-AVX-i32-NEXT: vpinsrd $1, %eax, %xmm0, %xmm0
282+ ; X64-AVX-i32-NEXT: vcvtpd2dq %xmm0, %xmm0
297283; X64-AVX-i32-NEXT: retq
298284;
299285; X64-AVX1-i64-LABEL: lrint_v2f64:
@@ -328,20 +314,9 @@ declare <2 x iXLen> @llvm.lrint.v2iXLen.v2f64(<2 x double>)
328314define <4 x iXLen> @lrint_v4f64 (<4 x double > %x ) {
329315; X86-SSE2-LABEL: lrint_v4f64:
330316; X86-SSE2: # %bb.0:
331- ; X86-SSE2-NEXT: cvtsd2si %xmm1, %eax
332- ; X86-SSE2-NEXT: movd %eax, %xmm2
333- ; X86-SSE2-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1,1]
334- ; X86-SSE2-NEXT: cvtsd2si %xmm1, %eax
335- ; X86-SSE2-NEXT: movd %eax, %xmm1
336- ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
337- ; X86-SSE2-NEXT: cvtsd2si %xmm0, %eax
338- ; X86-SSE2-NEXT: movd %eax, %xmm1
339- ; X86-SSE2-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1,1]
340- ; X86-SSE2-NEXT: cvtsd2si %xmm0, %eax
341- ; X86-SSE2-NEXT: movd %eax, %xmm0
342- ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
343- ; X86-SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
344- ; X86-SSE2-NEXT: movdqa %xmm1, %xmm0
317+ ; X86-SSE2-NEXT: cvtpd2dq %xmm1, %xmm1
318+ ; X86-SSE2-NEXT: cvtpd2dq %xmm0, %xmm0
319+ ; X86-SSE2-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm1[0]
345320; X86-SSE2-NEXT: retl
346321;
347322; X86-AVX-LABEL: lrint_v4f64:
@@ -411,34 +386,12 @@ define <8 x iXLen> @lrint_v8f64(<8 x double> %x) {
411386; X86-SSE2-NEXT: .cfi_def_cfa_register %ebp
412387; X86-SSE2-NEXT: andl $-16, %esp
413388; X86-SSE2-NEXT: subl $16, %esp
414- ; X86-SSE2-NEXT: movapd %xmm0, %xmm3
415- ; X86-SSE2-NEXT: movapd 8(%ebp), %xmm4
416- ; X86-SSE2-NEXT: cvtsd2si %xmm1, %eax
417- ; X86-SSE2-NEXT: movd %eax, %xmm5
418- ; X86-SSE2-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1,1]
419- ; X86-SSE2-NEXT: cvtsd2si %xmm1, %eax
420- ; X86-SSE2-NEXT: movd %eax, %xmm0
421- ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1]
422- ; X86-SSE2-NEXT: cvtsd2si %xmm3, %eax
423- ; X86-SSE2-NEXT: movd %eax, %xmm0
424- ; X86-SSE2-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1,1]
425- ; X86-SSE2-NEXT: cvtsd2si %xmm3, %eax
426- ; X86-SSE2-NEXT: movd %eax, %xmm1
427- ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
428- ; X86-SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0]
429- ; X86-SSE2-NEXT: cvtsd2si %xmm4, %eax
430- ; X86-SSE2-NEXT: movd %eax, %xmm3
431- ; X86-SSE2-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1,1]
432- ; X86-SSE2-NEXT: cvtsd2si %xmm4, %eax
433- ; X86-SSE2-NEXT: movd %eax, %xmm1
434- ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]
435- ; X86-SSE2-NEXT: cvtsd2si %xmm2, %eax
436- ; X86-SSE2-NEXT: movd %eax, %xmm1
437- ; X86-SSE2-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
438- ; X86-SSE2-NEXT: cvtsd2si %xmm2, %eax
439- ; X86-SSE2-NEXT: movd %eax, %xmm2
440- ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
441- ; X86-SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm3[0]
389+ ; X86-SSE2-NEXT: cvtpd2dq %xmm1, %xmm1
390+ ; X86-SSE2-NEXT: cvtpd2dq %xmm0, %xmm0
391+ ; X86-SSE2-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm1[0]
392+ ; X86-SSE2-NEXT: cvtpd2dq %xmm2, %xmm1
393+ ; X86-SSE2-NEXT: cvtpd2dq 8(%ebp), %xmm2
394+ ; X86-SSE2-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0]
442395; X86-SSE2-NEXT: movl %ebp, %esp
443396; X86-SSE2-NEXT: popl %ebp
444397; X86-SSE2-NEXT: .cfi_def_cfa %esp, 4
0 commit comments