@@ -966,9 +966,10 @@ define <2 x double> @test17(ptr %base, <2 x i32> %ind, <2 x i1> %mask, <2 x doub
966966; X86-SKX-LABEL: test17:
967967; X86-SKX: # %bb.0:
968968; X86-SKX-NEXT: vpsllq $63, %xmm1, %xmm1
969+ ; X86-SKX-NEXT: vpmovq2m %xmm1, %k0
969970; X86-SKX-NEXT: vpslld $3, %xmm0, %xmm0
970971; X86-SKX-NEXT: vpaddd {{[0-9]+}}(%esp){1to4}, %xmm0, %xmm0
971- ; X86-SKX-NEXT: vmovmskpd %xmm1 , %eax
972+ ; X86-SKX-NEXT: kmovw %k0 , %eax
972973; X86-SKX-NEXT: testb $1, %al
973974; X86-SKX-NEXT: jne .LBB16_1
974975; X86-SKX-NEXT: # %bb.2: # %else
@@ -1254,7 +1255,8 @@ define void @test20(<2 x float>%a1, <2 x ptr> %ptr, <2 x i1> %mask) {
12541255; X64-SKX-LABEL: test20:
12551256; X64-SKX: # %bb.0:
12561257; X64-SKX-NEXT: vpsllq $63, %xmm2, %xmm2
1257- ; X64-SKX-NEXT: vmovmskpd %xmm2, %eax
1258+ ; X64-SKX-NEXT: vpmovq2m %xmm2, %k0
1259+ ; X64-SKX-NEXT: kmovw %k0, %eax
12581260; X64-SKX-NEXT: testb $1, %al
12591261; X64-SKX-NEXT: jne .LBB19_1
12601262; X64-SKX-NEXT: # %bb.2: # %else
@@ -1275,7 +1277,8 @@ define void @test20(<2 x float>%a1, <2 x ptr> %ptr, <2 x i1> %mask) {
12751277; X86-SKX-LABEL: test20:
12761278; X86-SKX: # %bb.0:
12771279; X86-SKX-NEXT: vpsllq $63, %xmm2, %xmm2
1278- ; X86-SKX-NEXT: vmovmskpd %xmm2, %eax
1280+ ; X86-SKX-NEXT: vpmovq2m %xmm2, %k0
1281+ ; X86-SKX-NEXT: kmovw %k0, %eax
12791282; X86-SKX-NEXT: testb $1, %al
12801283; X86-SKX-NEXT: jne .LBB19_1
12811284; X86-SKX-NEXT: # %bb.2: # %else
@@ -1349,7 +1352,8 @@ define void @test21(<2 x i32>%a1, <2 x ptr> %ptr, <2 x i1>%mask) {
13491352; X64-SKX-LABEL: test21:
13501353; X64-SKX: # %bb.0:
13511354; X64-SKX-NEXT: vpsllq $63, %xmm2, %xmm2
1352- ; X64-SKX-NEXT: vmovmskpd %xmm2, %eax
1355+ ; X64-SKX-NEXT: vpmovq2m %xmm2, %k0
1356+ ; X64-SKX-NEXT: kmovw %k0, %eax
13531357; X64-SKX-NEXT: testb $1, %al
13541358; X64-SKX-NEXT: jne .LBB20_1
13551359; X64-SKX-NEXT: # %bb.2: # %else
@@ -1370,7 +1374,8 @@ define void @test21(<2 x i32>%a1, <2 x ptr> %ptr, <2 x i1>%mask) {
13701374; X86-SKX-LABEL: test21:
13711375; X86-SKX: # %bb.0:
13721376; X86-SKX-NEXT: vpsllq $63, %xmm2, %xmm2
1373- ; X86-SKX-NEXT: vmovmskpd %xmm2, %eax
1377+ ; X86-SKX-NEXT: vpmovq2m %xmm2, %k0
1378+ ; X86-SKX-NEXT: kmovw %k0, %eax
13741379; X86-SKX-NEXT: testb $1, %al
13751380; X86-SKX-NEXT: jne .LBB20_1
13761381; X86-SKX-NEXT: # %bb.2: # %else
@@ -1489,9 +1494,10 @@ define <2 x float> @test22(ptr %base, <2 x i32> %ind, <2 x i1> %mask, <2 x float
14891494; X86-SKX-LABEL: test22:
14901495; X86-SKX: # %bb.0:
14911496; X86-SKX-NEXT: vpsllq $63, %xmm1, %xmm1
1497+ ; X86-SKX-NEXT: vpmovq2m %xmm1, %k0
14921498; X86-SKX-NEXT: vpslld $2, %xmm0, %xmm0
14931499; X86-SKX-NEXT: vpaddd {{[0-9]+}}(%esp){1to4}, %xmm0, %xmm0
1494- ; X86-SKX-NEXT: vmovmskpd %xmm1 , %eax
1500+ ; X86-SKX-NEXT: kmovw %k0 , %eax
14951501; X86-SKX-NEXT: testb $1, %al
14961502; X86-SKX-NEXT: jne .LBB21_1
14971503; X86-SKX-NEXT: # %bb.2: # %else
@@ -1611,10 +1617,11 @@ define <2 x float> @test22a(ptr %base, <2 x i64> %ind, <2 x i1> %mask, <2 x floa
16111617; X86-SKX-LABEL: test22a:
16121618; X86-SKX: # %bb.0:
16131619; X86-SKX-NEXT: vpsllq $63, %xmm1, %xmm1
1620+ ; X86-SKX-NEXT: vpmovq2m %xmm1, %k0
16141621; X86-SKX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
16151622; X86-SKX-NEXT: vpslld $2, %xmm0, %xmm0
16161623; X86-SKX-NEXT: vpaddd {{[0-9]+}}(%esp){1to4}, %xmm0, %xmm0
1617- ; X86-SKX-NEXT: vmovmskpd %xmm1 , %eax
1624+ ; X86-SKX-NEXT: kmovw %k0 , %eax
16181625; X86-SKX-NEXT: testb $1, %al
16191626; X86-SKX-NEXT: jne .LBB22_1
16201627; X86-SKX-NEXT: # %bb.2: # %else
@@ -1734,9 +1741,10 @@ define <2 x i32> @test23(ptr %base, <2 x i32> %ind, <2 x i1> %mask, <2 x i32> %s
17341741; X86-SKX-LABEL: test23:
17351742; X86-SKX: # %bb.0:
17361743; X86-SKX-NEXT: vpsllq $63, %xmm1, %xmm1
1744+ ; X86-SKX-NEXT: vpmovq2m %xmm1, %k0
17371745; X86-SKX-NEXT: vpslld $2, %xmm0, %xmm0
17381746; X86-SKX-NEXT: vpaddd {{[0-9]+}}(%esp){1to4}, %xmm0, %xmm0
1739- ; X86-SKX-NEXT: vmovmskpd %xmm1 , %eax
1747+ ; X86-SKX-NEXT: kmovw %k0 , %eax
17401748; X86-SKX-NEXT: testb $1, %al
17411749; X86-SKX-NEXT: jne .LBB23_1
17421750; X86-SKX-NEXT: # %bb.2: # %else
@@ -1852,10 +1860,11 @@ define <2 x i32> @test23b(ptr %base, <2 x i64> %ind, <2 x i1> %mask, <2 x i32> %
18521860; X86-SKX-LABEL: test23b:
18531861; X86-SKX: # %bb.0:
18541862; X86-SKX-NEXT: vpsllq $63, %xmm1, %xmm1
1863+ ; X86-SKX-NEXT: vpmovq2m %xmm1, %k0
18551864; X86-SKX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
18561865; X86-SKX-NEXT: vpslld $2, %xmm0, %xmm0
18571866; X86-SKX-NEXT: vpaddd {{[0-9]+}}(%esp){1to4}, %xmm0, %xmm0
1858- ; X86-SKX-NEXT: vmovmskpd %xmm1 , %eax
1867+ ; X86-SKX-NEXT: kmovw %k0 , %eax
18591868; X86-SKX-NEXT: testb $1, %al
18601869; X86-SKX-NEXT: jne .LBB24_1
18611870; X86-SKX-NEXT: # %bb.2: # %else
@@ -2025,9 +2034,10 @@ define <2 x i64> @test25(ptr %base, <2 x i32> %ind, <2 x i1> %mask, <2 x i64> %s
20252034; X86-SKX-LABEL: test25:
20262035; X86-SKX: # %bb.0:
20272036; X86-SKX-NEXT: vpsllq $63, %xmm1, %xmm1
2037+ ; X86-SKX-NEXT: vpmovq2m %xmm1, %k0
20282038; X86-SKX-NEXT: vpslld $3, %xmm0, %xmm0
20292039; X86-SKX-NEXT: vpaddd {{[0-9]+}}(%esp){1to4}, %xmm0, %xmm0
2030- ; X86-SKX-NEXT: vmovmskpd %xmm1 , %eax
2040+ ; X86-SKX-NEXT: kmovw %k0 , %eax
20312041; X86-SKX-NEXT: testb $1, %al
20322042; X86-SKX-NEXT: jne .LBB26_1
20332043; X86-SKX-NEXT: # %bb.2: # %else
@@ -3752,9 +3762,10 @@ define void @test_scatter_2i32_index(<2 x double> %a1, ptr %base, <2 x i32> %ind
37523762; X86-SKX-LABEL: test_scatter_2i32_index:
37533763; X86-SKX: # %bb.0:
37543764; X86-SKX-NEXT: vpsllq $63, %xmm2, %xmm2
3765+ ; X86-SKX-NEXT: vpmovq2m %xmm2, %k0
37553766; X86-SKX-NEXT: vpslld $3, %xmm1, %xmm1
37563767; X86-SKX-NEXT: vpaddd {{[0-9]+}}(%esp){1to4}, %xmm1, %xmm1
3757- ; X86-SKX-NEXT: vmovmskpd %xmm2 , %eax
3768+ ; X86-SKX-NEXT: kmovw %k0 , %eax
37583769; X86-SKX-NEXT: testb $1, %al
37593770; X86-SKX-NEXT: jne .LBB52_1
37603771; X86-SKX-NEXT: # %bb.2: # %else
0 commit comments