ret i32 %r
}
+define <2 x i32> @sext_to_sel_constant_vec(<2 x i1> %y) {
+; CHECK-LABEL: @sext_to_sel_constant_vec(
+; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[Y:%.*]], <2 x i32> <i32 42, i32 -7>, <2 x i32> zeroinitializer
+; CHECK-NEXT: ret <2 x i32> [[R]]
+;
+ %sext = sext <2 x i1> %y to <2 x i32>
+ %r = and <2 x i32> <i32 42, i32 -7>, %sext
+ ret <2 x i32> %r
+}
+
define <2 x i32> @sext_to_sel_swap(<2 x i32> %px, <2 x i1> %y) {
; CHECK-LABEL: @sext_to_sel_swap(
; CHECK-NEXT: [[X:%.*]] = mul <2 x i32> [[PX:%.*]], [[PX]]
ret i32 %r
}
+define <2 x i32> @sext_to_sel_constant_vec(<2 x i1> %y) {
+; CHECK-LABEL: @sext_to_sel_constant_vec(
+; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[Y:%.*]], <2 x i32> <i32 -1, i32 -1>, <2 x i32> <i32 42, i32 -7>
+; CHECK-NEXT: ret <2 x i32> [[R]]
+;
+ %sext = sext <2 x i1> %y to <2 x i32>
+ %r = or <2 x i32> <i32 42, i32 -7>, %sext
+ ret <2 x i32> %r
+}
+
define <2 x i32> @sext_to_sel_swap(<2 x i32> %px, <2 x i1> %y) {
; CHECK-LABEL: @sext_to_sel_swap(
; CHECK-NEXT: [[X:%.*]] = mul <2 x i32> [[PX:%.*]], [[PX]]