Skip to content

Commit 8479207

Browse files
committed
[X86][AVX] Add v2i32 fp to int conversion tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@279520 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent f3f6eb5 commit 8479207

File tree

1 file changed

+80
-5
lines changed

1 file changed

+80
-5
lines changed

test/CodeGen/X86/vec_fp_to_int.ll

Lines changed: 80 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ define <2 x i64> @fptosi_2f64_to_2i64(<2 x double> %a) {
5353
ret <2 x i64> %cvt
5454
}
5555

56-
define <4 x i32> @fptosi_2f64_to_2i32(<2 x double> %a) {
57-
; SSE-LABEL: fptosi_2f64_to_2i32:
56+
define <4 x i32> @fptosi_2f64_to_4i32(<2 x double> %a) {
57+
; SSE-LABEL: fptosi_2f64_to_4i32:
5858
; SSE: # BB#0:
5959
; SSE-NEXT: cvttsd2si %xmm0, %rax
6060
; SSE-NEXT: movd %rax, %xmm1
@@ -65,7 +65,7 @@ define <4 x i32> @fptosi_2f64_to_2i32(<2 x double> %a) {
6565
; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
6666
; SSE-NEXT: retq
6767
;
68-
; AVX-LABEL: fptosi_2f64_to_2i32:
68+
; AVX-LABEL: fptosi_2f64_to_4i32:
6969
; AVX: # BB#0:
7070
; AVX-NEXT: vcvttsd2si %xmm0, %rax
7171
; AVX-NEXT: vmovq %rax, %xmm1
@@ -76,7 +76,7 @@ define <4 x i32> @fptosi_2f64_to_2i32(<2 x double> %a) {
7676
; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
7777
; AVX-NEXT: retq
7878
;
79-
; AVX512F-LABEL: fptosi_2f64_to_2i32:
79+
; AVX512F-LABEL: fptosi_2f64_to_4i32:
8080
; AVX512F: # BB#0:
8181
; AVX512F-NEXT: vcvttsd2si %xmm0, %rax
8282
; AVX512F-NEXT: vmovq %rax, %xmm1
@@ -87,7 +87,7 @@ define <4 x i32> @fptosi_2f64_to_2i32(<2 x double> %a) {
8787
; AVX512F-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
8888
; AVX512F-NEXT: retq
8989
;
90-
; AVX512DQ-LABEL: fptosi_2f64_to_2i32:
90+
; AVX512DQ-LABEL: fptosi_2f64_to_4i32:
9191
; AVX512DQ: # BB#0:
9292
; AVX512DQ-NEXT: vcvttpd2qq %xmm0, %xmm0
9393
; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
@@ -97,6 +97,46 @@ define <4 x i32> @fptosi_2f64_to_2i32(<2 x double> %a) {
9797
ret <4 x i32> %ext
9898
}
9999

100+
define <2 x i32> @fptosi_2f64_to_2i32(<2 x double> %a) {
101+
; SSE-LABEL: fptosi_2f64_to_2i32:
102+
; SSE: # BB#0:
103+
; SSE-NEXT: cvttsd2si %xmm0, %rax
104+
; SSE-NEXT: movd %rax, %xmm1
105+
; SSE-NEXT: movhlps {{.*#+}} xmm0 = xmm0[1,1]
106+
; SSE-NEXT: cvttsd2si %xmm0, %rax
107+
; SSE-NEXT: movd %rax, %xmm0
108+
; SSE-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
109+
; SSE-NEXT: movdqa %xmm1, %xmm0
110+
; SSE-NEXT: retq
111+
;
112+
; AVX-LABEL: fptosi_2f64_to_2i32:
113+
; AVX: # BB#0:
114+
; AVX-NEXT: vcvttsd2si %xmm0, %rax
115+
; AVX-NEXT: vmovq %rax, %xmm1
116+
; AVX-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0]
117+
; AVX-NEXT: vcvttsd2si %xmm0, %rax
118+
; AVX-NEXT: vmovq %rax, %xmm0
119+
; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
120+
; AVX-NEXT: retq
121+
;
122+
; AVX512F-LABEL: fptosi_2f64_to_2i32:
123+
; AVX512F: # BB#0:
124+
; AVX512F-NEXT: vcvttsd2si %xmm0, %rax
125+
; AVX512F-NEXT: vmovq %rax, %xmm1
126+
; AVX512F-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0]
127+
; AVX512F-NEXT: vcvttsd2si %xmm0, %rax
128+
; AVX512F-NEXT: vmovq %rax, %xmm0
129+
; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
130+
; AVX512F-NEXT: retq
131+
;
132+
; AVX512DQ-LABEL: fptosi_2f64_to_2i32:
133+
; AVX512DQ: # BB#0:
134+
; AVX512DQ-NEXT: vcvttpd2qq %xmm0, %xmm0
135+
; AVX512DQ-NEXT: retq
136+
%cvt = fptosi <2 x double> %a to <2 x i32>
137+
ret <2 x i32> %cvt
138+
}
139+
100140
define <4 x i32> @fptosi_4f64_to_2i32(<2 x double> %a) {
101141
; SSE-LABEL: fptosi_4f64_to_2i32:
102142
; SSE: # BB#0:
@@ -666,6 +706,41 @@ define <4 x i32> @fptoui_4f64_to_4i32(<4 x double> %a) {
666706
; Float to Signed Integer
667707
;
668708

709+
define <2 x i32> @fptosi_2f32_to_2i32(<2 x float> %a) {
710+
; SSE-LABEL: fptosi_2f32_to_2i32:
711+
; SSE: # BB#0:
712+
; SSE-NEXT: cvttss2si %xmm0, %rax
713+
; SSE-NEXT: movd %rax, %xmm1
714+
; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,1,2,3]
715+
; SSE-NEXT: cvttss2si %xmm0, %rax
716+
; SSE-NEXT: movd %rax, %xmm0
717+
; SSE-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
718+
; SSE-NEXT: movdqa %xmm1, %xmm0
719+
; SSE-NEXT: retq
720+
;
721+
; AVX-LABEL: fptosi_2f32_to_2i32:
722+
; AVX: # BB#0:
723+
; AVX-NEXT: vcvttss2si %xmm0, %rax
724+
; AVX-NEXT: vmovq %rax, %xmm1
725+
; AVX-NEXT: vmovshdup {{.*#+}} xmm0 = xmm0[1,1,3,3]
726+
; AVX-NEXT: vcvttss2si %xmm0, %rax
727+
; AVX-NEXT: vmovq %rax, %xmm0
728+
; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
729+
; AVX-NEXT: retq
730+
;
731+
; AVX512-LABEL: fptosi_2f32_to_2i32:
732+
; AVX512: # BB#0:
733+
; AVX512-NEXT: vcvttss2si %xmm0, %rax
734+
; AVX512-NEXT: vmovq %rax, %xmm1
735+
; AVX512-NEXT: vmovshdup {{.*#+}} xmm0 = xmm0[1,1,3,3]
736+
; AVX512-NEXT: vcvttss2si %xmm0, %rax
737+
; AVX512-NEXT: vmovq %rax, %xmm0
738+
; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
739+
; AVX512-NEXT: retq
740+
%cvt = fptosi <2 x float> %a to <2 x i32>
741+
ret <2 x i32> %cvt
742+
}
743+
669744
define <4 x i32> @fptosi_4f32_to_4i32(<4 x float> %a) {
670745
; SSE-LABEL: fptosi_4f32_to_4i32:
671746
; SSE: # BB#0:

0 commit comments

Comments
 (0)