forked from OSchip/llvm-project
parent
122b0de1c1
commit
9a36318c54
|
@ -245,17 +245,17 @@ define <4 x float> @test_x86_sse2_cvtpd2ps(<2 x double> %a0) {
|
|||
declare <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double>) nounwind readnone
|
||||
|
||||
define <4 x float> @test_x86_sse2_cvtpd2ps_zext(<2 x double> %a0) nounwind {
|
||||
; SSE-LABEL: test_x86_sse2_cvtpd2ps_zext:
|
||||
; SSE: ## BB#0:
|
||||
; SSE-NEXT: cvtpd2ps %xmm0, %xmm0
|
||||
; SSE-NEXT: retl
|
||||
;
|
||||
; KNL-LABEL: test_x86_sse2_cvtpd2ps_zext:
|
||||
; KNL: ## BB#0:
|
||||
; KNL-NEXT: vcvtpd2ps %xmm0, %xmm0
|
||||
; KNL-NEXT: retl
|
||||
%cvt = call <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double> %a0)
|
||||
%res = shufflevector <4 x float> %cvt, <4 x float> zeroinitializer, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
|
||||
; SSE-LABEL: test_x86_sse2_cvtpd2ps_zext:
|
||||
; SSE: ## BB#0:
|
||||
; SSE-NEXT: cvtpd2ps %xmm0, %xmm0
|
||||
; SSE-NEXT: retl
|
||||
;
|
||||
; KNL-LABEL: test_x86_sse2_cvtpd2ps_zext:
|
||||
; KNL: ## BB#0:
|
||||
; KNL-NEXT: vcvtpd2ps %xmm0, %xmm0
|
||||
; KNL-NEXT: retl
|
||||
%cvt = call <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double> %a0)
|
||||
%res = shufflevector <4 x float> %cvt, <4 x float> zeroinitializer, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
|
||||
ret <4 x float> %res
|
||||
}
|
||||
|
||||
|
|
|
@ -135,54 +135,54 @@ entry:
|
|||
|
||||
define <4 x float> @fptrunc_frommem2_zext(<2 x double> * %ld) {
|
||||
; X32-SSE-LABEL: fptrunc_frommem2_zext:
|
||||
; X32-SSE: # BB#0:
|
||||
; X32-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||
; X32-SSE-NEXT: cvtpd2ps (%eax), %xmm0
|
||||
; X32-SSE-NEXT: retl
|
||||
;
|
||||
; X32-AVX-LABEL: fptrunc_frommem2_zext:
|
||||
; X32-AVX: # BB#0:
|
||||
; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||
; X32-AVX-NEXT: vcvtpd2psx (%eax), %xmm0
|
||||
; X32-AVX-NEXT: retl
|
||||
;
|
||||
; X64-SSE-LABEL: fptrunc_frommem2_zext:
|
||||
; X64-SSE: # BB#0:
|
||||
; X64-SSE-NEXT: cvtpd2ps (%rdi), %xmm0
|
||||
; X64-SSE-NEXT: retq
|
||||
;
|
||||
; X64-AVX-LABEL: fptrunc_frommem2_zext:
|
||||
; X64-AVX: # BB#0:
|
||||
; X64-AVX-NEXT: vcvtpd2psx (%rdi), %xmm0
|
||||
; X64-AVX-NEXT: retq
|
||||
%arg = load <2 x double>, <2 x double> * %ld, align 16
|
||||
%cvt = fptrunc <2 x double> %arg to <2 x float>
|
||||
; X32-SSE: # BB#0:
|
||||
; X32-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||
; X32-SSE-NEXT: cvtpd2ps (%eax), %xmm0
|
||||
; X32-SSE-NEXT: retl
|
||||
;
|
||||
; X32-AVX-LABEL: fptrunc_frommem2_zext:
|
||||
; X32-AVX: # BB#0:
|
||||
; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
|
||||
; X32-AVX-NEXT: vcvtpd2psx (%eax), %xmm0
|
||||
; X32-AVX-NEXT: retl
|
||||
;
|
||||
; X64-SSE-LABEL: fptrunc_frommem2_zext:
|
||||
; X64-SSE: # BB#0:
|
||||
; X64-SSE-NEXT: cvtpd2ps (%rdi), %xmm0
|
||||
; X64-SSE-NEXT: retq
|
||||
;
|
||||
; X64-AVX-LABEL: fptrunc_frommem2_zext:
|
||||
; X64-AVX: # BB#0:
|
||||
; X64-AVX-NEXT: vcvtpd2psx (%rdi), %xmm0
|
||||
; X64-AVX-NEXT: retq
|
||||
%arg = load <2 x double>, <2 x double> * %ld, align 16
|
||||
%cvt = fptrunc <2 x double> %arg to <2 x float>
|
||||
%ret = shufflevector <2 x float> %cvt, <2 x float> zeroinitializer, <4 x i32> <i32 0, i32 1, i32 2, i32 2>
|
||||
ret <4 x float> %ret
|
||||
}
|
||||
|
||||
define <4 x float> @fptrunc_fromreg2_zext(<2 x double> %arg) {
|
||||
; X32-SSE-LABEL: fptrunc_fromreg2_zext:
|
||||
; X32-SSE: # BB#0:
|
||||
; X32-SSE-NEXT: cvtpd2ps %xmm0, %xmm0
|
||||
; X32-SSE-NEXT: retl
|
||||
;
|
||||
; X32-AVX-LABEL: fptrunc_fromreg2_zext:
|
||||
; X32-AVX: # BB#0:
|
||||
; X32-AVX-NEXT: vcvtpd2ps %xmm0, %xmm0
|
||||
; X32-AVX-NEXT: retl
|
||||
;
|
||||
; X64-SSE-LABEL: fptrunc_fromreg2_zext:
|
||||
; X64-SSE: # BB#0:
|
||||
; X64-SSE-NEXT: cvtpd2ps %xmm0, %xmm0
|
||||
; X64-SSE-NEXT: retq
|
||||
;
|
||||
; X64-AVX-LABEL: fptrunc_fromreg2_zext:
|
||||
; X64-AVX: # BB#0:
|
||||
; X64-AVX-NEXT: vcvtpd2ps %xmm0, %xmm0
|
||||
; X64-AVX-NEXT: retq
|
||||
%cvt = fptrunc <2 x double> %arg to <2 x float>
|
||||
%ret = shufflevector <2 x float> %cvt, <2 x float> zeroinitializer, <4 x i32> <i32 0, i32 1, i32 2, i32 2>
|
||||
; X32-SSE-LABEL: fptrunc_fromreg2_zext:
|
||||
; X32-SSE: # BB#0:
|
||||
; X32-SSE-NEXT: cvtpd2ps %xmm0, %xmm0
|
||||
; X32-SSE-NEXT: retl
|
||||
;
|
||||
; X32-AVX-LABEL: fptrunc_fromreg2_zext:
|
||||
; X32-AVX: # BB#0:
|
||||
; X32-AVX-NEXT: vcvtpd2ps %xmm0, %xmm0
|
||||
; X32-AVX-NEXT: retl
|
||||
;
|
||||
; X64-SSE-LABEL: fptrunc_fromreg2_zext:
|
||||
; X64-SSE: # BB#0:
|
||||
; X64-SSE-NEXT: cvtpd2ps %xmm0, %xmm0
|
||||
; X64-SSE-NEXT: retq
|
||||
;
|
||||
; X64-AVX-LABEL: fptrunc_fromreg2_zext:
|
||||
; X64-AVX: # BB#0:
|
||||
; X64-AVX-NEXT: vcvtpd2ps %xmm0, %xmm0
|
||||
; X64-AVX-NEXT: retq
|
||||
%cvt = fptrunc <2 x double> %arg to <2 x float>
|
||||
%ret = shufflevector <2 x float> %cvt, <2 x float> zeroinitializer, <4 x i32> <i32 0, i32 1, i32 2, i32 2>
|
||||
ret <4 x float> %ret
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue