@@ -2042,10 +2042,10 @@ define void @foo7(double* noalias nocapture %out, double** noalias nocapture rea
2042
2042
; AVX1-NEXT: [[TMP49:%.*]] = xor <4 x i1> [[TMP41]], <i1 true, i1 true, i1 true, i1 true>
2043
2043
; AVX1-NEXT: [[TMP50:%.*]] = xor <4 x i1> [[TMP42]], <i1 true, i1 true, i1 true, i1 true>
2044
2044
; 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
2049
2049
; AVX1-NEXT: [[TMP56:%.*]] = getelementptr inbounds double, double* [[TMP44]], i32 0
2050
2050
; AVX1-NEXT: [[TMP57:%.*]] = bitcast double* [[TMP56]] to <4 x double>*
2051
2051
; 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
2166
2166
; AVX2-NEXT: [[TMP49:%.*]] = xor <4 x i1> [[TMP41]], <i1 true, i1 true, i1 true, i1 true>
2167
2167
; AVX2-NEXT: [[TMP50:%.*]] = xor <4 x i1> [[TMP42]], <i1 true, i1 true, i1 true, i1 true>
2168
2168
; 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
2173
2173
; AVX2-NEXT: [[TMP56:%.*]] = getelementptr inbounds double, double* [[TMP44]], i32 0
2174
2174
; AVX2-NEXT: [[TMP57:%.*]] = bitcast double* [[TMP56]] to <4 x double>*
2175
2175
; 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
2290
2290
; AVX512-NEXT: [[TMP49:%.*]] = xor <8 x i1> [[TMP41]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
2291
2291
; AVX512-NEXT: [[TMP50:%.*]] = xor <8 x i1> [[TMP42]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
2292
2292
; 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
2297
2297
; AVX512-NEXT: [[TMP56:%.*]] = getelementptr inbounds double, double* [[TMP44]], i32 0
2298
2298
; AVX512-NEXT: [[TMP57:%.*]] = bitcast double* [[TMP56]] to <8 x double>*
2299
2299
; 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
2459
2459
; AVX1-NEXT: [[TMP49:%.*]] = xor <4 x i1> [[TMP41]], <i1 true, i1 true, i1 true, i1 true>
2460
2460
; AVX1-NEXT: [[TMP50:%.*]] = xor <4 x i1> [[TMP42]], <i1 true, i1 true, i1 true, i1 true>
2461
2461
; 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
2466
2466
; AVX1-NEXT: [[TMP56:%.*]] = getelementptr inbounds double, double* [[TMP44]], i32 0
2467
2467
; AVX1-NEXT: [[TMP57:%.*]] = bitcast double* [[TMP56]] to <4 x double>*
2468
2468
; 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
2583
2583
; AVX2-NEXT: [[TMP49:%.*]] = xor <4 x i1> [[TMP41]], <i1 true, i1 true, i1 true, i1 true>
2584
2584
; AVX2-NEXT: [[TMP50:%.*]] = xor <4 x i1> [[TMP42]], <i1 true, i1 true, i1 true, i1 true>
2585
2585
; 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
2590
2590
; AVX2-NEXT: [[TMP56:%.*]] = getelementptr inbounds double, double* [[TMP44]], i32 0
2591
2591
; AVX2-NEXT: [[TMP57:%.*]] = bitcast double* [[TMP56]] to <4 x double>*
2592
2592
; 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
2707
2707
; AVX512-NEXT: [[TMP49:%.*]] = xor <8 x i1> [[TMP41]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
2708
2708
; AVX512-NEXT: [[TMP50:%.*]] = xor <8 x i1> [[TMP42]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
2709
2709
; 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
2714
2714
; AVX512-NEXT: [[TMP56:%.*]] = getelementptr inbounds double, double* [[TMP44]], i32 0
2715
2715
; AVX512-NEXT: [[TMP57:%.*]] = bitcast double* [[TMP56]] to <8 x double>*
2716
2716
; 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