diff --git a/test/Transforms/InstCombine/zext-bool-add-sub.ll b/test/Transforms/InstCombine/zext-bool-add-sub.ll index bf6bdad0392..f73c7c31c29 100644 --- a/test/Transforms/InstCombine/zext-bool-add-sub.ll +++ b/test/Transforms/InstCombine/zext-bool-add-sub.ll @@ -61,3 +61,35 @@ define i32 @PR30273_three_bools(i1 %x, i1 %y, i1 %z) { ret i32 %sel2 } +define i32 @zext_add_scalar(i1 %x) { +; CHECK-LABEL: @zext_add_scalar( +; CHECK-NEXT: [[ADD:%.*]] = select i1 %x, i32 43, i32 42 +; CHECK-NEXT: ret i32 [[ADD]] +; + %zext = zext i1 %x to i32 + %add = add i32 %zext, 42 + ret i32 %add +} + +define <2 x i32> @zext_add_vec_splat(<2 x i1> %x) { +; CHECK-LABEL: @zext_add_vec_splat( +; CHECK-NEXT: [[ZEXT:%.*]] = zext <2 x i1> %x to <2 x i32> +; CHECK-NEXT: [[ADD:%.*]] = or <2 x i32> [[ZEXT]], +; CHECK-NEXT: ret <2 x i32> [[ADD]] +; + %zext = zext <2 x i1> %x to <2 x i32> + %add = add <2 x i32> %zext, + ret <2 x i32> %add +} + +define <2 x i32> @zext_add_vec(<2 x i1> %x) { +; CHECK-LABEL: @zext_add_vec( +; CHECK-NEXT: [[ZEXT:%.*]] = zext <2 x i1> %x to <2 x i32> +; CHECK-NEXT: [[ADD:%.*]] = add nuw nsw <2 x i32> [[ZEXT]], +; CHECK-NEXT: ret <2 x i32> [[ADD]] +; + %zext = zext <2 x i1> %x to <2 x i32> + %add = add <2 x i32> %zext, + ret <2 x i32> %add +} +