@@ -2042,10 +2042,10 @@ define void @foo7(double* noalias nocapture %out, double** noalias nocapture rea
20422042; AVX1-NEXT: [[TMP49:%.*]] = xor <4 x i1> [[TMP41]], <i1 true, i1 true, i1 true, i1 true>
20432043; AVX1-NEXT: [[TMP50:%.*]] = xor <4 x i1> [[TMP42]], <i1 true, i1 true, i1 true, i1 true>
20442044; AVX1-NEXT: [[TMP51:%.*]] = xor <4 x i1> [[TMP43]], <i1 true, i1 true, i1 true, i1 true>
2045- ; AVX1-NEXT: [[TMP52:%.*]] = and <4 x i1> [[TMP48 ]], [[TMP28]]
2046- ; AVX1-NEXT: [[TMP53:%.*]] = and <4 x i1> [[TMP49 ]], [[TMP29]]
2047- ; AVX1-NEXT: [[TMP54:%.*]] = and <4 x i1> [[TMP50 ]], [[TMP30]]
2048- ; AVX1-NEXT: [[TMP55:%.*]] = and <4 x i1> [[TMP51 ]], [[TMP31]]
2045+ ; AVX1-NEXT: [[TMP52:%.*]] = select <4 x i1> [[TMP28 ]], <4 x i1> [[TMP48]], <4 x i1> zeroinitializer
2046+ ; AVX1-NEXT: [[TMP53:%.*]] = select <4 x i1> [[TMP29 ]], <4 x i1> [[TMP49]], <4 x i1> zeroinitializer
2047+ ; AVX1-NEXT: [[TMP54:%.*]] = select <4 x i1> [[TMP30 ]], <4 x i1> [[TMP50]], <4 x i1> zeroinitializer
2048+ ; AVX1-NEXT: [[TMP55:%.*]] = select <4 x i1> [[TMP31 ]], <4 x i1> [[TMP51]], <4 x i1> zeroinitializer
20492049; AVX1-NEXT: [[TMP56:%.*]] = getelementptr inbounds double, double* [[TMP44]], i32 0
20502050; AVX1-NEXT: [[TMP57:%.*]] = bitcast double* [[TMP56]] to <4 x double>*
20512051; AVX1-NEXT: call void @llvm.masked.store.v4f64.p0v4f64(<4 x double> <double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01>, <4 x double>* [[TMP57]], i32 8, <4 x i1> [[TMP52]])
@@ -2166,10 +2166,10 @@ define void @foo7(double* noalias nocapture %out, double** noalias nocapture rea
21662166; AVX2-NEXT: [[TMP49:%.*]] = xor <4 x i1> [[TMP41]], <i1 true, i1 true, i1 true, i1 true>
21672167; AVX2-NEXT: [[TMP50:%.*]] = xor <4 x i1> [[TMP42]], <i1 true, i1 true, i1 true, i1 true>
21682168; AVX2-NEXT: [[TMP51:%.*]] = xor <4 x i1> [[TMP43]], <i1 true, i1 true, i1 true, i1 true>
2169- ; AVX2-NEXT: [[TMP52:%.*]] = and <4 x i1> [[TMP48 ]], [[TMP28]]
2170- ; AVX2-NEXT: [[TMP53:%.*]] = and <4 x i1> [[TMP49 ]], [[TMP29]]
2171- ; AVX2-NEXT: [[TMP54:%.*]] = and <4 x i1> [[TMP50 ]], [[TMP30]]
2172- ; AVX2-NEXT: [[TMP55:%.*]] = and <4 x i1> [[TMP51 ]], [[TMP31]]
2169+ ; AVX2-NEXT: [[TMP52:%.*]] = select <4 x i1> [[TMP28 ]], <4 x i1> [[TMP48]], <4 x i1> zeroinitializer
2170+ ; AVX2-NEXT: [[TMP53:%.*]] = select <4 x i1> [[TMP29 ]], <4 x i1> [[TMP49]], <4 x i1> zeroinitializer
2171+ ; AVX2-NEXT: [[TMP54:%.*]] = select <4 x i1> [[TMP30 ]], <4 x i1> [[TMP50]], <4 x i1> zeroinitializer
2172+ ; AVX2-NEXT: [[TMP55:%.*]] = select <4 x i1> [[TMP31 ]], <4 x i1> [[TMP51]], <4 x i1> zeroinitializer
21732173; AVX2-NEXT: [[TMP56:%.*]] = getelementptr inbounds double, double* [[TMP44]], i32 0
21742174; AVX2-NEXT: [[TMP57:%.*]] = bitcast double* [[TMP56]] to <4 x double>*
21752175; AVX2-NEXT: call void @llvm.masked.store.v4f64.p0v4f64(<4 x double> <double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01>, <4 x double>* [[TMP57]], i32 8, <4 x i1> [[TMP52]])
@@ -2290,10 +2290,10 @@ define void @foo7(double* noalias nocapture %out, double** noalias nocapture rea
22902290; AVX512-NEXT: [[TMP49:%.*]] = xor <8 x i1> [[TMP41]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
22912291; AVX512-NEXT: [[TMP50:%.*]] = xor <8 x i1> [[TMP42]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
22922292; AVX512-NEXT: [[TMP51:%.*]] = xor <8 x i1> [[TMP43]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
2293- ; AVX512-NEXT: [[TMP52:%.*]] = and <8 x i1> [[TMP48 ]], [[TMP28]]
2294- ; AVX512-NEXT: [[TMP53:%.*]] = and <8 x i1> [[TMP49 ]], [[TMP29]]
2295- ; AVX512-NEXT: [[TMP54:%.*]] = and <8 x i1> [[TMP50 ]], [[TMP30]]
2296- ; AVX512-NEXT: [[TMP55:%.*]] = and <8 x i1> [[TMP51 ]], [[TMP31]]
2293+ ; AVX512-NEXT: [[TMP52:%.*]] = select <8 x i1> [[TMP28 ]], <8 x i1> [[TMP48]], <8 x i1> zeroinitializer
2294+ ; AVX512-NEXT: [[TMP53:%.*]] = select <8 x i1> [[TMP29 ]], <8 x i1> [[TMP49]], <8 x i1> zeroinitializer
2295+ ; AVX512-NEXT: [[TMP54:%.*]] = select <8 x i1> [[TMP30 ]], <8 x i1> [[TMP50]], <8 x i1> zeroinitializer
2296+ ; AVX512-NEXT: [[TMP55:%.*]] = select <8 x i1> [[TMP31 ]], <8 x i1> [[TMP51]], <8 x i1> zeroinitializer
22972297; AVX512-NEXT: [[TMP56:%.*]] = getelementptr inbounds double, double* [[TMP44]], i32 0
22982298; AVX512-NEXT: [[TMP57:%.*]] = bitcast double* [[TMP56]] to <8 x double>*
22992299; AVX512-NEXT: call void @llvm.masked.store.v8f64.p0v8f64(<8 x double> <double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01>, <8 x double>* [[TMP57]], i32 8, <8 x i1> [[TMP52]])
@@ -2459,10 +2459,10 @@ define void @foo8(double* noalias nocapture %out, i32 ()** noalias nocapture rea
24592459; AVX1-NEXT: [[TMP49:%.*]] = xor <4 x i1> [[TMP41]], <i1 true, i1 true, i1 true, i1 true>
24602460; AVX1-NEXT: [[TMP50:%.*]] = xor <4 x i1> [[TMP42]], <i1 true, i1 true, i1 true, i1 true>
24612461; AVX1-NEXT: [[TMP51:%.*]] = xor <4 x i1> [[TMP43]], <i1 true, i1 true, i1 true, i1 true>
2462- ; AVX1-NEXT: [[TMP52:%.*]] = and <4 x i1> [[TMP48 ]], [[TMP28]]
2463- ; AVX1-NEXT: [[TMP53:%.*]] = and <4 x i1> [[TMP49 ]], [[TMP29]]
2464- ; AVX1-NEXT: [[TMP54:%.*]] = and <4 x i1> [[TMP50 ]], [[TMP30]]
2465- ; AVX1-NEXT: [[TMP55:%.*]] = and <4 x i1> [[TMP51 ]], [[TMP31]]
2462+ ; AVX1-NEXT: [[TMP52:%.*]] = select <4 x i1> [[TMP28 ]], <4 x i1> [[TMP48]], <4 x i1> zeroinitializer
2463+ ; AVX1-NEXT: [[TMP53:%.*]] = select <4 x i1> [[TMP29 ]], <4 x i1> [[TMP49]], <4 x i1> zeroinitializer
2464+ ; AVX1-NEXT: [[TMP54:%.*]] = select <4 x i1> [[TMP30 ]], <4 x i1> [[TMP50]], <4 x i1> zeroinitializer
2465+ ; AVX1-NEXT: [[TMP55:%.*]] = select <4 x i1> [[TMP31 ]], <4 x i1> [[TMP51]], <4 x i1> zeroinitializer
24662466; AVX1-NEXT: [[TMP56:%.*]] = getelementptr inbounds double, double* [[TMP44]], i32 0
24672467; AVX1-NEXT: [[TMP57:%.*]] = bitcast double* [[TMP56]] to <4 x double>*
24682468; AVX1-NEXT: call void @llvm.masked.store.v4f64.p0v4f64(<4 x double> <double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01>, <4 x double>* [[TMP57]], i32 8, <4 x i1> [[TMP52]])
@@ -2583,10 +2583,10 @@ define void @foo8(double* noalias nocapture %out, i32 ()** noalias nocapture rea
25832583; AVX2-NEXT: [[TMP49:%.*]] = xor <4 x i1> [[TMP41]], <i1 true, i1 true, i1 true, i1 true>
25842584; AVX2-NEXT: [[TMP50:%.*]] = xor <4 x i1> [[TMP42]], <i1 true, i1 true, i1 true, i1 true>
25852585; AVX2-NEXT: [[TMP51:%.*]] = xor <4 x i1> [[TMP43]], <i1 true, i1 true, i1 true, i1 true>
2586- ; AVX2-NEXT: [[TMP52:%.*]] = and <4 x i1> [[TMP48 ]], [[TMP28]]
2587- ; AVX2-NEXT: [[TMP53:%.*]] = and <4 x i1> [[TMP49 ]], [[TMP29]]
2588- ; AVX2-NEXT: [[TMP54:%.*]] = and <4 x i1> [[TMP50 ]], [[TMP30]]
2589- ; AVX2-NEXT: [[TMP55:%.*]] = and <4 x i1> [[TMP51 ]], [[TMP31]]
2586+ ; AVX2-NEXT: [[TMP52:%.*]] = select <4 x i1> [[TMP28 ]], <4 x i1> [[TMP48]], <4 x i1> zeroinitializer
2587+ ; AVX2-NEXT: [[TMP53:%.*]] = select <4 x i1> [[TMP29 ]], <4 x i1> [[TMP49]], <4 x i1> zeroinitializer
2588+ ; AVX2-NEXT: [[TMP54:%.*]] = select <4 x i1> [[TMP30 ]], <4 x i1> [[TMP50]], <4 x i1> zeroinitializer
2589+ ; AVX2-NEXT: [[TMP55:%.*]] = select <4 x i1> [[TMP31 ]], <4 x i1> [[TMP51]], <4 x i1> zeroinitializer
25902590; AVX2-NEXT: [[TMP56:%.*]] = getelementptr inbounds double, double* [[TMP44]], i32 0
25912591; AVX2-NEXT: [[TMP57:%.*]] = bitcast double* [[TMP56]] to <4 x double>*
25922592; AVX2-NEXT: call void @llvm.masked.store.v4f64.p0v4f64(<4 x double> <double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01>, <4 x double>* [[TMP57]], i32 8, <4 x i1> [[TMP52]])
@@ -2707,10 +2707,10 @@ define void @foo8(double* noalias nocapture %out, i32 ()** noalias nocapture rea
27072707; AVX512-NEXT: [[TMP49:%.*]] = xor <8 x i1> [[TMP41]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
27082708; AVX512-NEXT: [[TMP50:%.*]] = xor <8 x i1> [[TMP42]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
27092709; AVX512-NEXT: [[TMP51:%.*]] = xor <8 x i1> [[TMP43]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
2710- ; AVX512-NEXT: [[TMP52:%.*]] = and <8 x i1> [[TMP48 ]], [[TMP28]]
2711- ; AVX512-NEXT: [[TMP53:%.*]] = and <8 x i1> [[TMP49 ]], [[TMP29]]
2712- ; AVX512-NEXT: [[TMP54:%.*]] = and <8 x i1> [[TMP50 ]], [[TMP30]]
2713- ; AVX512-NEXT: [[TMP55:%.*]] = and <8 x i1> [[TMP51 ]], [[TMP31]]
2710+ ; AVX512-NEXT: [[TMP52:%.*]] = select <8 x i1> [[TMP28 ]], <8 x i1> [[TMP48]], <8 x i1> zeroinitializer
2711+ ; AVX512-NEXT: [[TMP53:%.*]] = select <8 x i1> [[TMP29 ]], <8 x i1> [[TMP49]], <8 x i1> zeroinitializer
2712+ ; AVX512-NEXT: [[TMP54:%.*]] = select <8 x i1> [[TMP30 ]], <8 x i1> [[TMP50]], <8 x i1> zeroinitializer
2713+ ; AVX512-NEXT: [[TMP55:%.*]] = select <8 x i1> [[TMP31 ]], <8 x i1> [[TMP51]], <8 x i1> zeroinitializer
27142714; AVX512-NEXT: [[TMP56:%.*]] = getelementptr inbounds double, double* [[TMP44]], i32 0
27152715; AVX512-NEXT: [[TMP57:%.*]] = bitcast double* [[TMP56]] to <8 x double>*
27162716; AVX512-NEXT: call void @llvm.masked.store.v8f64.p0v8f64(<8 x double> <double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01>, <8 x double>* [[TMP57]], i32 8, <8 x i1> [[TMP52]])
0 commit comments