Changeset View
Changeset View
Standalone View
Standalone View
llvm/trunk/test/CodeGen/X86/vec_fptrunc.ll
Show First 20 Lines • Show All 93 Lines • ▼ Show 20 Lines | |||||
; X32-SSE-NEXT: retl | ; X32-SSE-NEXT: retl | ||||
; | ; | ||||
; X32-AVX-LABEL: fptrunc_frommem8: | ; X32-AVX-LABEL: fptrunc_frommem8: | ||||
; X32-AVX: # %bb.0: # %entry | ; X32-AVX: # %bb.0: # %entry | ||||
; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax | ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax | ||||
; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %ecx | ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %ecx | ||||
; X32-AVX-NEXT: vcvtpd2psy (%ecx), %xmm0 | ; X32-AVX-NEXT: vcvtpd2psy (%ecx), %xmm0 | ||||
; X32-AVX-NEXT: vcvtpd2psy 32(%ecx), %xmm1 | ; X32-AVX-NEXT: vcvtpd2psy 32(%ecx), %xmm1 | ||||
; X32-AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 | ; X32-AVX-NEXT: vmovupd %xmm1, 16(%eax) | ||||
; X32-AVX-NEXT: vmovups %ymm0, (%eax) | ; X32-AVX-NEXT: vmovupd %xmm0, (%eax) | ||||
; X32-AVX-NEXT: vzeroupper | |||||
; X32-AVX-NEXT: retl | ; X32-AVX-NEXT: retl | ||||
; | ; | ||||
; X64-SSE-LABEL: fptrunc_frommem8: | ; X64-SSE-LABEL: fptrunc_frommem8: | ||||
; X64-SSE: # %bb.0: # %entry | ; X64-SSE: # %bb.0: # %entry | ||||
; X64-SSE-NEXT: cvtpd2ps 16(%rdi), %xmm0 | ; X64-SSE-NEXT: cvtpd2ps 16(%rdi), %xmm0 | ||||
; X64-SSE-NEXT: cvtpd2ps (%rdi), %xmm1 | ; X64-SSE-NEXT: cvtpd2ps (%rdi), %xmm1 | ||||
; X64-SSE-NEXT: unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm0[0] | ; X64-SSE-NEXT: unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm0[0] | ||||
; X64-SSE-NEXT: cvtpd2ps 48(%rdi), %xmm0 | ; X64-SSE-NEXT: cvtpd2ps 48(%rdi), %xmm0 | ||||
; X64-SSE-NEXT: cvtpd2ps 32(%rdi), %xmm2 | ; X64-SSE-NEXT: cvtpd2ps 32(%rdi), %xmm2 | ||||
; X64-SSE-NEXT: unpcklpd {{.*#+}} xmm2 = xmm2[0],xmm0[0] | ; X64-SSE-NEXT: unpcklpd {{.*#+}} xmm2 = xmm2[0],xmm0[0] | ||||
; X64-SSE-NEXT: movupd %xmm2, 16(%rsi) | ; X64-SSE-NEXT: movupd %xmm2, 16(%rsi) | ||||
; X64-SSE-NEXT: movupd %xmm1, (%rsi) | ; X64-SSE-NEXT: movupd %xmm1, (%rsi) | ||||
; X64-SSE-NEXT: retq | ; X64-SSE-NEXT: retq | ||||
; | ; | ||||
; X64-AVX-LABEL: fptrunc_frommem8: | ; X64-AVX-LABEL: fptrunc_frommem8: | ||||
; X64-AVX: # %bb.0: # %entry | ; X64-AVX: # %bb.0: # %entry | ||||
; X64-AVX-NEXT: vcvtpd2psy (%rdi), %xmm0 | ; X64-AVX-NEXT: vcvtpd2psy (%rdi), %xmm0 | ||||
; X64-AVX-NEXT: vcvtpd2psy 32(%rdi), %xmm1 | ; X64-AVX-NEXT: vcvtpd2psy 32(%rdi), %xmm1 | ||||
; X64-AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 | ; X64-AVX-NEXT: vmovupd %xmm1, 16(%rsi) | ||||
; X64-AVX-NEXT: vmovups %ymm0, (%rsi) | ; X64-AVX-NEXT: vmovupd %xmm0, (%rsi) | ||||
; X64-AVX-NEXT: vzeroupper | |||||
; X64-AVX-NEXT: retq | ; X64-AVX-NEXT: retq | ||||
entry: | entry: | ||||
%0 = load <8 x double>, <8 x double>* %in | %0 = load <8 x double>, <8 x double>* %in | ||||
%1 = fptrunc <8 x double> %0 to <8 x float> | %1 = fptrunc <8 x double> %0 to <8 x float> | ||||
store <8 x float> %1, <8 x float>* %out, align 1 | store <8 x float> %1, <8 x float>* %out, align 1 | ||||
ret void | ret void | ||||
} | } | ||||
▲ Show 20 Lines • Show All 86 Lines • Show Last 20 Lines |