Skip to content

Commit 2ca25ab

Browse files
committed
[InstCombine] Add extra tests for FoldOpIntoSelect (NFC)
1 parent c342d11 commit 2ca25ab

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

llvm/test/Transforms/InstCombine/select.ll

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)