-; CHECK: vcvttps2dq %ymm
-define <8 x i32> @fptosi00(<8 x float> %a) nounwind {
- %b = fptosi <8 x float> %a to <8 x i32>
- ret <8 x i32> %b
+define <8 x float> @sitofp02(<8 x i16> %a) {
+; CHECK-LABEL: sitofp02:
+; CHECK: # BB#0:
+; CHECK-NEXT: vpmovsxwd %xmm0, %xmm1
+; CHECK-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
+; CHECK-NEXT: vpmovsxwd %xmm0, %xmm0
+; CHECK-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
+; CHECK-NEXT: vcvtdq2ps %ymm0, %ymm0
+; CHECK-NEXT: retq
+ %b = sitofp <8 x i16> %a to <8 x float>
+ ret <8 x float> %b
+}
+
+define <4 x i32> @fptosi01(<4 x double> %a) {
+; CHECK-LABEL: fptosi01:
+; CHECK: # BB#0:
+; CHECK-NEXT: vcvttpd2dqy %ymm0, %xmm0
+; CHECK-NEXT: vzeroupper
+; CHECK-NEXT: retq
+ %b = fptosi <4 x double> %a to <4 x i32>
+ ret <4 x i32> %b