@@ -1035,68 +1035,23 @@ define <8 x double> @concat_vpermilvar_v8f64_v4f64(<4 x double> %a0, <4 x double
10351035 ret <8 x double > %res
10361036}
10371037
1038- ; TODO - shift elements up by one
1038+ ; shift elements up by one
10391039define <16 x i32 > @combine_vexpandd_as_valignd (<16 x i32 > %x ) {
1040- ; X86-AVX512F-LABEL: combine_vexpandd_as_valignd:
1041- ; X86-AVX512F: # %bb.0:
1042- ; X86-AVX512F-NEXT: movw $-2, %ax
1043- ; X86-AVX512F-NEXT: kmovw %eax, %k1
1044- ; X86-AVX512F-NEXT: vpexpandd %zmm0, %zmm0 {%k1} {z}
1045- ; X86-AVX512F-NEXT: retl
1046- ;
1047- ; X86-AVX512BW-LABEL: combine_vexpandd_as_valignd:
1048- ; X86-AVX512BW: # %bb.0:
1049- ; X86-AVX512BW-NEXT: movw $-2, %ax
1050- ; X86-AVX512BW-NEXT: kmovd %eax, %k1
1051- ; X86-AVX512BW-NEXT: vpexpandd %zmm0, %zmm0 {%k1} {z}
1052- ; X86-AVX512BW-NEXT: retl
1053- ;
1054- ; X64-AVX512F-LABEL: combine_vexpandd_as_valignd:
1055- ; X64-AVX512F: # %bb.0:
1056- ; X64-AVX512F-NEXT: movw $-2, %ax
1057- ; X64-AVX512F-NEXT: kmovw %eax, %k1
1058- ; X64-AVX512F-NEXT: vpexpandd %zmm0, %zmm0 {%k1} {z}
1059- ; X64-AVX512F-NEXT: retq
1060- ;
1061- ; X64-AVX512BW-LABEL: combine_vexpandd_as_valignd:
1062- ; X64-AVX512BW: # %bb.0:
1063- ; X64-AVX512BW-NEXT: movw $-2, %ax
1064- ; X64-AVX512BW-NEXT: kmovd %eax, %k1
1065- ; X64-AVX512BW-NEXT: vpexpandd %zmm0, %zmm0 {%k1} {z}
1066- ; X64-AVX512BW-NEXT: retq
1040+ ; CHECK-LABEL: combine_vexpandd_as_valignd:
1041+ ; CHECK: # %bb.0:
1042+ ; CHECK-NEXT: vpxor %xmm1, %xmm1, %xmm1
1043+ ; CHECK-NEXT: valignd {{.*#+}} zmm0 = zmm1[15],zmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]
1044+ ; CHECK-NEXT: ret{{[l|q]}}
10671045 %res = call <16 x i32 > @llvm.x86.avx512.mask.expand.v16i32 (<16 x i32 > %x , <16 x i32 > zeroinitializer , <16 x i1 > <i1 false , i1 true , i1 true , i1 true , i1 true , i1 true , i1 true , i1 true , i1 true , i1 true , i1 true , i1 true , i1 true , i1 true , i1 true , i1 true >)
10681046 ret <16 x i32 > %res
10691047}
10701048
1071- ; TODO - zero upper half of vector
1049+ ; zero upper half of vector
10721050define <16 x i32 > @combine_vcompressd_as_vmov (<16 x i32 > %x ) {
1073- ; X86-AVX512F-LABEL: combine_vcompressd_as_vmov:
1074- ; X86-AVX512F: # %bb.0:
1075- ; X86-AVX512F-NEXT: movw $255, %ax
1076- ; X86-AVX512F-NEXT: kmovw %eax, %k1
1077- ; X86-AVX512F-NEXT: vpcompressd %zmm0, %zmm0 {%k1} {z}
1078- ; X86-AVX512F-NEXT: retl
1079- ;
1080- ; X86-AVX512BW-LABEL: combine_vcompressd_as_vmov:
1081- ; X86-AVX512BW: # %bb.0:
1082- ; X86-AVX512BW-NEXT: movw $255, %ax
1083- ; X86-AVX512BW-NEXT: kmovd %eax, %k1
1084- ; X86-AVX512BW-NEXT: vpcompressd %zmm0, %zmm0 {%k1} {z}
1085- ; X86-AVX512BW-NEXT: retl
1086- ;
1087- ; X64-AVX512F-LABEL: combine_vcompressd_as_vmov:
1088- ; X64-AVX512F: # %bb.0:
1089- ; X64-AVX512F-NEXT: movw $255, %ax
1090- ; X64-AVX512F-NEXT: kmovw %eax, %k1
1091- ; X64-AVX512F-NEXT: vpcompressd %zmm0, %zmm0 {%k1} {z}
1092- ; X64-AVX512F-NEXT: retq
1093- ;
1094- ; X64-AVX512BW-LABEL: combine_vcompressd_as_vmov:
1095- ; X64-AVX512BW: # %bb.0:
1096- ; X64-AVX512BW-NEXT: movw $255, %ax
1097- ; X64-AVX512BW-NEXT: kmovd %eax, %k1
1098- ; X64-AVX512BW-NEXT: vpcompressd %zmm0, %zmm0 {%k1} {z}
1099- ; X64-AVX512BW-NEXT: retq
1051+ ; CHECK-LABEL: combine_vcompressd_as_vmov:
1052+ ; CHECK: # %bb.0:
1053+ ; CHECK-NEXT: vmovaps %ymm0, %ymm0
1054+ ; CHECK-NEXT: ret{{[l|q]}}
11001055 %res = call <16 x i32 > @llvm.x86.avx512.mask.compress.v16i32 (<16 x i32 > %x , <16 x i32 > zeroinitializer , <16 x i1 > <i1 true , i1 true , i1 true , i1 true , i1 true , i1 true , i1 true , i1 true , i1 false , i1 false , i1 false , i1 false , i1 false , i1 false , i1 false , i1 false >)
11011056 ret <16 x i32 > %res
11021057}
0 commit comments