@@ -4729,3 +4729,44 @@ define i32 @pr99436(ptr align 4 dereferenceable(4) %ptr) {
4729
4729
%ret = select i1 %cmp , i32 %val , i32 0
4730
4730
ret i32 %ret
4731
4731
}
4732
+
4733
+ define i8 @sel_trunc_simplify (i1 %c , i8 %x , i16 %y ) {
4734
+ ; CHECK-LABEL: @sel_trunc_simplify(
4735
+ ; CHECK-NEXT: [[X_EXT:%.*]] = zext i8 [[X:%.*]] to i16
4736
+ ; CHECK-NEXT: [[Y:%.*]] = select i1 [[C:%.*]], i16 [[X_EXT]], i16 [[Y1:%.*]]
4737
+ ; CHECK-NEXT: [[TMP1:%.*]] = trunc i16 [[Y]] to i8
4738
+ ; CHECK-NEXT: ret i8 [[TMP1]]
4739
+ ;
4740
+ %x.ext = zext i8 %x to i16
4741
+ %sel = select i1 %c , i16 %x.ext , i16 %y
4742
+ %trunc = trunc i16 %sel to i8
4743
+ ret i8 %trunc
4744
+ }
4745
+
4746
+ define i32 @sel_umin_simplify (i1 %c , i32 %x , i16 %y ) {
4747
+ ; CHECK-LABEL: @sel_umin_simplify(
4748
+ ; CHECK-NEXT: [[X:%.*]] = select i1 [[C:%.*]], i32 [[X1:%.*]], i32 0
4749
+ ; CHECK-NEXT: [[ARG2_EXT:%.*]] = zext i16 [[ARG2:%.*]] to i32
4750
+ ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.umin.i32(i32 [[X]], i32 [[ARG2_EXT]])
4751
+ ; CHECK-NEXT: ret i32 [[TMP1]]
4752
+ ;
4753
+ %sel = select i1 %c , i32 %x , i32 0
4754
+ %y.ext = zext i16 %y to i32
4755
+ %res = call i32 @llvm.umin.i32 (i32 %sel , i32 %y.ext )
4756
+ ret i32 %res
4757
+ }
4758
+
4759
+ define i32 @sel_extractvalue_simplify (i1 %c , { i32 , i32 } %agg1 , i32 %x , i32 %y ) {
4760
+ ; CHECK-LABEL: @sel_extractvalue_simplify(
4761
+ ; CHECK-NEXT: [[AGG2_0:%.*]] = insertvalue { i32, i32 } poison, i32 [[X:%.*]], 0
4762
+ ; CHECK-NEXT: [[AGG2_1:%.*]] = insertvalue { i32, i32 } [[AGG2_0]], i32 [[Y:%.*]], 1
4763
+ ; CHECK-NEXT: [[AGG1:%.*]] = select i1 [[C:%.*]], { i32, i32 } [[AGG2:%.*]], { i32, i32 } [[AGG2_1]]
4764
+ ; CHECK-NEXT: [[TMP1:%.*]] = extractvalue { i32, i32 } [[AGG1]], 1
4765
+ ; CHECK-NEXT: ret i32 [[TMP1]]
4766
+ ;
4767
+ %agg2.0 = insertvalue { i32 , i32 } poison, i32 %x , 0
4768
+ %agg2.1 = insertvalue { i32 , i32 } %agg2.0 , i32 %y , 1
4769
+ %sel = select i1 %c , { i32 , i32 } %agg1 , { i32 , i32 } %agg2.1
4770
+ %res = extractvalue { i32 , i32 } %sel , 1
4771
+ ret i32 %res
4772
+ }
0 commit comments