@@ -76,12 +76,11 @@ define <2 x i32> @utest_f64i32(<2 x double> %x) {
7676; CHECK-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm0[0]
7777; CHECK-NEXT: movdqa {{.*#+}} xmm0 = [9223372039002259456,9223372039002259456]
7878; CHECK-NEXT: pxor %xmm2, %xmm0
79- ; CHECK-NEXT: pshufd {{.*#+}} xmm1 = xmm0[0,0,2,2]
80- ; CHECK-NEXT: movdqa {{.*#+}} xmm3 = [2147483647,2147483647,2147483647,2147483647]
81- ; CHECK-NEXT: pcmpgtd %xmm1, %xmm3
82- ; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
83- ; CHECK-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
84- ; CHECK-NEXT: pand %xmm3, %xmm0
79+ ; CHECK-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,3,3]
80+ ; CHECK-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
81+ ; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,2,2]
82+ ; CHECK-NEXT: pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
83+ ; CHECK-NEXT: pandn %xmm1, %xmm0
8584; CHECK-NEXT: pcmpeqd %xmm1, %xmm1
8685; CHECK-NEXT: pxor %xmm0, %xmm1
8786; CHECK-NEXT: pand %xmm2, %xmm0
@@ -731,12 +730,11 @@ define <2 x i16> @utest_f64i16(<2 x double> %x) {
731730; CHECK-NEXT: orpd %xmm1, %xmm0
732731; CHECK-NEXT: movapd {{.*#+}} xmm1 = [2147483648,2147483648,2147483648,2147483648]
733732; CHECK-NEXT: xorpd %xmm0, %xmm1
734- ; CHECK-NEXT: movdqa {{.*#+}} xmm2 = <2147549183,2147549183,u,u>
735- ; CHECK-NEXT: pcmpgtd %xmm1, %xmm2
736- ; CHECK-NEXT: andpd %xmm2, %xmm0
737- ; CHECK-NEXT: pcmpeqd %xmm1, %xmm1
738- ; CHECK-NEXT: pxor %xmm2, %xmm1
739- ; CHECK-NEXT: por %xmm0, %xmm1
733+ ; CHECK-NEXT: pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
734+ ; CHECK-NEXT: movdqa %xmm1, %xmm2
735+ ; CHECK-NEXT: pandn %xmm0, %xmm2
736+ ; CHECK-NEXT: psrld $16, %xmm1
737+ ; CHECK-NEXT: por %xmm2, %xmm1
740738; CHECK-NEXT: pshuflw {{.*#+}} xmm0 = xmm1[0,2,2,3,4,5,6,7]
741739; CHECK-NEXT: retq
742740entry:
@@ -801,12 +799,11 @@ define <4 x i16> @utest_f32i16(<4 x float> %x) {
801799; CHECK-NEXT: por %xmm1, %xmm0
802800; CHECK-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648,2147483648,2147483648]
803801; CHECK-NEXT: pxor %xmm0, %xmm1
804- ; CHECK-NEXT: movdqa {{.*#+}} xmm2 = [2147549183,2147549183,2147549183,2147549183]
805- ; CHECK-NEXT: pcmpgtd %xmm1, %xmm2
806- ; CHECK-NEXT: pand %xmm2, %xmm0
807- ; CHECK-NEXT: pcmpeqd %xmm1, %xmm1
808- ; CHECK-NEXT: pxor %xmm2, %xmm1
809- ; CHECK-NEXT: por %xmm0, %xmm1
802+ ; CHECK-NEXT: pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
803+ ; CHECK-NEXT: movdqa %xmm1, %xmm2
804+ ; CHECK-NEXT: pandn %xmm0, %xmm2
805+ ; CHECK-NEXT: psrld $16, %xmm1
806+ ; CHECK-NEXT: por %xmm2, %xmm1
810807; CHECK-NEXT: pshuflw {{.*#+}} xmm0 = xmm1[0,2,2,3,4,5,6,7]
811808; CHECK-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7]
812809; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
@@ -1653,12 +1650,11 @@ define <2 x i32> @utest_f64i32_mm(<2 x double> %x) {
16531650; CHECK-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm0[0]
16541651; CHECK-NEXT: movdqa {{.*#+}} xmm0 = [9223372039002259456,9223372039002259456]
16551652; CHECK-NEXT: pxor %xmm2, %xmm0
1656- ; CHECK-NEXT: pshufd {{.*#+}} xmm1 = xmm0[0,0,2,2]
1657- ; CHECK-NEXT: movdqa {{.*#+}} xmm3 = [2147483647,2147483647,2147483647,2147483647]
1658- ; CHECK-NEXT: pcmpgtd %xmm1, %xmm3
1659- ; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1660- ; CHECK-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1661- ; CHECK-NEXT: pand %xmm3, %xmm0
1653+ ; CHECK-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,3,3]
1654+ ; CHECK-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
1655+ ; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,2,2]
1656+ ; CHECK-NEXT: pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1657+ ; CHECK-NEXT: pandn %xmm1, %xmm0
16621658; CHECK-NEXT: pcmpeqd %xmm1, %xmm1
16631659; CHECK-NEXT: pxor %xmm0, %xmm1
16641660; CHECK-NEXT: pand %xmm2, %xmm0
@@ -2293,12 +2289,11 @@ define <2 x i16> @utest_f64i16_mm(<2 x double> %x) {
22932289; CHECK-NEXT: orpd %xmm1, %xmm0
22942290; CHECK-NEXT: movapd {{.*#+}} xmm1 = [2147483648,2147483648,2147483648,2147483648]
22952291; CHECK-NEXT: xorpd %xmm0, %xmm1
2296- ; CHECK-NEXT: movdqa {{.*#+}} xmm2 = <2147549183,2147549183,u,u>
2297- ; CHECK-NEXT: pcmpgtd %xmm1, %xmm2
2298- ; CHECK-NEXT: andpd %xmm2, %xmm0
2299- ; CHECK-NEXT: pcmpeqd %xmm1, %xmm1
2300- ; CHECK-NEXT: pxor %xmm2, %xmm1
2301- ; CHECK-NEXT: por %xmm0, %xmm1
2292+ ; CHECK-NEXT: pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
2293+ ; CHECK-NEXT: movdqa %xmm1, %xmm2
2294+ ; CHECK-NEXT: pandn %xmm0, %xmm2
2295+ ; CHECK-NEXT: psrld $16, %xmm1
2296+ ; CHECK-NEXT: por %xmm2, %xmm1
23022297; CHECK-NEXT: pshuflw {{.*#+}} xmm0 = xmm1[0,2,2,3,4,5,6,7]
23032298; CHECK-NEXT: retq
23042299entry:
@@ -2358,12 +2353,11 @@ define <4 x i16> @utest_f32i16_mm(<4 x float> %x) {
23582353; CHECK-NEXT: por %xmm1, %xmm0
23592354; CHECK-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648,2147483648,2147483648]
23602355; CHECK-NEXT: pxor %xmm0, %xmm1
2361- ; CHECK-NEXT: movdqa {{.*#+}} xmm2 = [2147549183,2147549183,2147549183,2147549183]
2362- ; CHECK-NEXT: pcmpgtd %xmm1, %xmm2
2363- ; CHECK-NEXT: pand %xmm2, %xmm0
2364- ; CHECK-NEXT: pcmpeqd %xmm1, %xmm1
2365- ; CHECK-NEXT: pxor %xmm2, %xmm1
2366- ; CHECK-NEXT: por %xmm0, %xmm1
2356+ ; CHECK-NEXT: pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
2357+ ; CHECK-NEXT: movdqa %xmm1, %xmm2
2358+ ; CHECK-NEXT: pandn %xmm0, %xmm2
2359+ ; CHECK-NEXT: psrld $16, %xmm1
2360+ ; CHECK-NEXT: por %xmm2, %xmm1
23672361; CHECK-NEXT: pshuflw {{.*#+}} xmm0 = xmm1[0,2,2,3,4,5,6,7]
23682362; CHECK-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7]
23692363; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
0 commit comments