@@ -4904,8 +4904,7 @@ define i32 @src_simplify_2x_at_once_and(i32 %x, i32 %y) {
49044904
49054905define void @select_freeze_poison_parameter (ptr noundef %addr.src , ptr %addr.tgt , i1 %cond ) {
49064906; CHECK-LABEL: @select_freeze_poison_parameter(
4907- ; CHECK-NEXT: [[ADDR_SRC:%.*]] = select i1 [[COND:%.*]], ptr [[ADDR_SRC1:%.*]], ptr null
4908- ; CHECK-NEXT: store ptr [[ADDR_SRC]], ptr [[ADDR_TGT:%.*]], align 8
4907+ ; CHECK-NEXT: store ptr [[ADDR_SRC:%.*]], ptr [[ADDR_TGT:%.*]], align 8
49094908; CHECK-NEXT: ret void
49104909;
49114910 %freeze = freeze ptr poison
@@ -4918,8 +4917,7 @@ define void @select_freeze_poison_parameter(ptr noundef %addr.src, ptr %addr.tgt
49184917
49194918define void @select_freeze_poison_global (ptr %addr.tgt , i1 %cond ) {
49204919; CHECK-LABEL: @select_freeze_poison_global(
4921- ; CHECK-NEXT: [[SELECT_ADDR:%.*]] = select i1 [[COND:%.*]], ptr @glb, ptr null
4922- ; CHECK-NEXT: store ptr [[SELECT_ADDR]], ptr [[ADDR_TGT:%.*]], align 8
4920+ ; CHECK-NEXT: store ptr @glb, ptr [[ADDR_TGT:%.*]], align 8
49234921; CHECK-NEXT: ret void
49244922;
49254923 %freeze = freeze ptr poison
@@ -4930,12 +4928,40 @@ define void @select_freeze_poison_global(ptr %addr.tgt, i1 %cond) {
49304928
49314929define void @select_freeze_poison_constant (ptr %addr.tgt , i1 %cond ) {
49324930; CHECK-LABEL: @select_freeze_poison_constant(
4933- ; CHECK-NEXT: [[SELECT_ADDR:%.*]] = select i1 [[COND:%.*]], i32 72, i32 0
4934- ; CHECK-NEXT: store i32 [[SELECT_ADDR]], ptr [[ADDR_TGT:%.*]], align 4
4931+ ; CHECK-NEXT: store i32 72, ptr [[ADDR_TGT:%.*]], align 4
49354932; CHECK-NEXT: ret void
49364933;
49374934 %freeze = freeze i32 poison
49384935 %select.addr = select i1 %cond , i32 72 , i32 %freeze
49394936 store i32 %select.addr , ptr %addr.tgt
49404937 ret void
49414938}
4939+
4940+ define <2 x i8 > @select_freeze_poison_mask_vector (i1 %cond , <2 x i8 > noundef %y ) {
4941+ ; CHECK-LABEL: @select_freeze_poison_mask_vector(
4942+ ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[COND:%.*]], <2 x i8> [[Y:%.*]], <2 x i8> zeroinitializer
4943+ ; CHECK-NEXT: ret <2 x i8> [[SEL]]
4944+ ;
4945+ %freeze = freeze <2 x i8 > <i8 0 , i8 poison>
4946+ %sel = select i1 %cond , <2 x i8 > %y , <2 x i8 > %freeze
4947+ ret <2 x i8 > %sel
4948+ }
4949+
4950+ define <2 x i8 > @select_freeze_poison_splat_vector (i1 %cond , <2 x i8 > noundef %y ) {
4951+ ; CHECK-LABEL: @select_freeze_poison_splat_vector(
4952+ ; CHECK-NEXT: ret <2 x i8> [[Y:%.*]]
4953+ ;
4954+ %freeze = freeze <2 x i8 > <i8 poison, i8 poison>
4955+ %sel = select i1 %cond , <2 x i8 > %y , <2 x i8 > %freeze
4956+ ret <2 x i8 > %sel
4957+ }
4958+
4959+ define <2 x i8 > @select_freeze_constant_vector (i1 %cond , <2 x i8 > noundef %y ) {
4960+ ; CHECK-LABEL: @select_freeze_constant_vector(
4961+ ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[COND:%.*]], <2 x i8> [[Y:%.*]], <2 x i8> zeroinitializer
4962+ ; CHECK-NEXT: ret <2 x i8> [[SEL]]
4963+ ;
4964+ %freeze = freeze <2 x i8 > <i8 0 , i8 0 >
4965+ %sel = select i1 %cond , <2 x i8 > %y , <2 x i8 > %freeze
4966+ ret <2 x i8 > %sel
4967+ }
0 commit comments