@@ -4729,3 +4729,44 @@ define i32 @pr99436(ptr align 4 dereferenceable(4) %ptr) {
47294729 %ret = select i1 %cmp , i32 %val , i32 0
47304730 ret i32 %ret
47314731}
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