@@ -4904,8 +4904,7 @@ define i32 @src_simplify_2x_at_once_and(i32 %x, i32 %y) {
4904
4904
4905
4905
define void @select_freeze_poison_parameter (ptr noundef %addr.src , ptr %addr.tgt , i1 %cond ) {
4906
4906
; 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
4909
4908
; CHECK-NEXT: ret void
4910
4909
;
4911
4910
%freeze = freeze ptr poison
@@ -4918,8 +4917,7 @@ define void @select_freeze_poison_parameter(ptr noundef %addr.src, ptr %addr.tgt
4918
4917
4919
4918
define void @select_freeze_poison_global (ptr %addr.tgt , i1 %cond ) {
4920
4919
; 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
4923
4921
; CHECK-NEXT: ret void
4924
4922
;
4925
4923
%freeze = freeze ptr poison
@@ -4930,12 +4928,40 @@ define void @select_freeze_poison_global(ptr %addr.tgt, i1 %cond) {
4930
4928
4931
4929
define void @select_freeze_poison_constant (ptr %addr.tgt , i1 %cond ) {
4932
4930
; 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
4935
4932
; CHECK-NEXT: ret void
4936
4933
;
4937
4934
%freeze = freeze i32 poison
4938
4935
%select.addr = select i1 %cond , i32 72 , i32 %freeze
4939
4936
store i32 %select.addr , ptr %addr.tgt
4940
4937
ret void
4941
4938
}
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