@@ -62,7 +62,8 @@ define <4 x i32> @fptosi_2f64_to_4i32(<2 x double> %a) {
62
62
; SSE-NEXT: cvttsd2si %xmm0, %rax
63
63
; SSE-NEXT: movd %rax, %xmm0
64
64
; SSE-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
65
- ; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
65
+ ; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,1,0,2]
66
+ ; SSE-NEXT: psrldq {{.*#+}} xmm0 = xmm0[8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero
66
67
; SSE-NEXT: retq
67
68
;
68
69
; AVX-LABEL: fptosi_2f64_to_4i32:
@@ -74,6 +75,7 @@ define <4 x i32> @fptosi_2f64_to_4i32(<2 x double> %a) {
74
75
; AVX-NEXT: vmovq %rax, %xmm0
75
76
; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
76
77
; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
78
+ ; AVX-NEXT: vmovq {{.*#+}} xmm0 = xmm0[0],zero
77
79
; AVX-NEXT: retq
78
80
;
79
81
; AVX512F-LABEL: fptosi_2f64_to_4i32:
@@ -85,15 +87,17 @@ define <4 x i32> @fptosi_2f64_to_4i32(<2 x double> %a) {
85
87
; AVX512F-NEXT: vmovq %rax, %xmm0
86
88
; AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
87
89
; AVX512F-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
90
+ ; AVX512F-NEXT: vmovq {{.*#+}} xmm0 = xmm0[0],zero
88
91
; AVX512F-NEXT: retq
89
92
;
90
93
; AVX512DQ-LABEL: fptosi_2f64_to_4i32:
91
94
; AVX512DQ: # BB#0:
92
95
; AVX512DQ-NEXT: vcvttpd2qq %xmm0, %xmm0
93
96
; AVX512DQ-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
97
+ ; AVX512DQ-NEXT: vmovq {{.*#+}} xmm0 = xmm0[0],zero
94
98
; AVX512DQ-NEXT: retq
95
99
%cvt = fptosi <2 x double > %a to <2 x i32 >
96
- %ext = shufflevector <2 x i32 > %cvt , <2 x i32 > undef , <4 x i32 > <i32 0 , i32 1 , i32 undef , i32 undef >
100
+ %ext = shufflevector <2 x i32 > %cvt , <2 x i32 > zeroinitializer , <4 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 >
97
101
ret <4 x i32 > %ext
98
102
}
99
103
0 commit comments