@@ -57,6 +57,52 @@ define <4 x i1> @test_signed_v4i1_v4f32(<4 x float> %f) nounwind {
57
57
ret <4 x i1 > %x
58
58
}
59
59
60
+ define <4 x i1 > @test_freeze_signed_v4i1_v4f32 (<4 x float > %f ) nounwind {
61
+ ; CHECK-LABEL: test_freeze_signed_v4i1_v4f32:
62
+ ; CHECK: # %bb.0:
63
+ ; CHECK-NEXT: movaps %xmm0, %xmm1
64
+ ; CHECK-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,3],xmm0[3,3]
65
+ ; CHECK-NEXT: movss {{.*#+}} xmm2 = [-1.0E+0,0.0E+0,0.0E+0,0.0E+0]
66
+ ; CHECK-NEXT: xorl %eax, %eax
67
+ ; CHECK-NEXT: ucomiss %xmm1, %xmm1
68
+ ; CHECK-NEXT: maxss %xmm2, %xmm1
69
+ ; CHECK-NEXT: xorps %xmm3, %xmm3
70
+ ; CHECK-NEXT: minss %xmm3, %xmm1
71
+ ; CHECK-NEXT: cvttss2si %xmm1, %ecx
72
+ ; CHECK-NEXT: cmovpl %eax, %ecx
73
+ ; CHECK-NEXT: movd %ecx, %xmm1
74
+ ; CHECK-NEXT: movaps %xmm0, %xmm4
75
+ ; CHECK-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm0[1]
76
+ ; CHECK-NEXT: ucomiss %xmm4, %xmm4
77
+ ; CHECK-NEXT: maxss %xmm2, %xmm4
78
+ ; CHECK-NEXT: minss %xmm3, %xmm4
79
+ ; CHECK-NEXT: cvttss2si %xmm4, %ecx
80
+ ; CHECK-NEXT: cmovpl %eax, %ecx
81
+ ; CHECK-NEXT: movd %ecx, %xmm4
82
+ ; CHECK-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]
83
+ ; CHECK-NEXT: movaps %xmm0, %xmm1
84
+ ; CHECK-NEXT: maxss %xmm2, %xmm1
85
+ ; CHECK-NEXT: minss %xmm3, %xmm1
86
+ ; CHECK-NEXT: cvttss2si %xmm1, %ecx
87
+ ; CHECK-NEXT: ucomiss %xmm0, %xmm0
88
+ ; CHECK-NEXT: cmovpl %eax, %ecx
89
+ ; CHECK-NEXT: movd %ecx, %xmm1
90
+ ; CHECK-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,1,1,1]
91
+ ; CHECK-NEXT: ucomiss %xmm0, %xmm0
92
+ ; CHECK-NEXT: maxss %xmm2, %xmm0
93
+ ; CHECK-NEXT: minss %xmm3, %xmm0
94
+ ; CHECK-NEXT: cvttss2si %xmm0, %ecx
95
+ ; CHECK-NEXT: cmovpl %eax, %ecx
96
+ ; CHECK-NEXT: movd %ecx, %xmm0
97
+ ; CHECK-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
98
+ ; CHECK-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm4[0]
99
+ ; CHECK-NEXT: movdqa %xmm1, %xmm0
100
+ ; CHECK-NEXT: retq
101
+ %x = call <4 x i1 > @llvm.fptosi.sat.v4i1.v4f32 (<4 x float > %f )
102
+ %y = freeze <4 x i1 > %x
103
+ ret <4 x i1 > %y
104
+ }
105
+
60
106
define <4 x i8 > @test_signed_v4i8_v4f32 (<4 x float > %f ) nounwind {
61
107
; CHECK-LABEL: test_signed_v4i8_v4f32:
62
108
; CHECK: # %bb.0:
0 commit comments