Skip to content

Commit 69daa2f

Browse files
committed
[InstCombine] add tests for binop with flags and select op; NFC
1 parent 9e8a0ea commit 69daa2f

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

llvm/test/Transforms/InstCombine/select-2.ll

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,69 @@ define float @t3(float %x, float %y) {
4242
%t3 = fadd fast float %t2, 1.0
4343
ret float %t3
4444
}
45+
46+
define i8 @ashr_exact_poison_constant_fold(i1 %b, i8 %x) {
47+
; CHECK-LABEL: @ashr_exact_poison_constant_fold(
48+
; CHECK-NEXT: [[X_OP:%.*]] = ashr i8 [[X:%.*]], 3
49+
; CHECK-NEXT: [[R:%.*]] = select i1 [[B:%.*]], i8 [[X_OP]], i8 5
50+
; CHECK-NEXT: ret i8 [[R]]
51+
;
52+
%s = select i1 %b, i8 %x, i8 42
53+
%r = ashr exact i8 %s, 3
54+
ret i8 %r
55+
}
56+
57+
define i8 @ashr_exact(i1 %b, i8 %x) {
58+
; CHECK-LABEL: @ashr_exact(
59+
; CHECK-NEXT: [[X_OP:%.*]] = ashr i8 [[X:%.*]], 3
60+
; CHECK-NEXT: [[R:%.*]] = select i1 [[B:%.*]], i8 [[X_OP]], i8 2
61+
; CHECK-NEXT: ret i8 [[R]]
62+
;
63+
%s = select i1 %b, i8 %x, i8 16
64+
%r = ashr exact i8 %s, 3
65+
ret i8 %r
66+
}
67+
68+
define i8 @shl_nsw_nuw_poison_constant_fold(i1 %b, i8 %x) {
69+
; CHECK-LABEL: @shl_nsw_nuw_poison_constant_fold(
70+
; CHECK-NEXT: [[X_OP:%.*]] = shl i8 16, [[X:%.*]]
71+
; CHECK-NEXT: [[R:%.*]] = select i1 [[B:%.*]], i8 -128, i8 [[X_OP]]
72+
; CHECK-NEXT: ret i8 [[R]]
73+
;
74+
%s = select i1 %b, i8 3, i8 %x
75+
%r = shl nsw nuw i8 16, %s
76+
ret i8 %r
77+
}
78+
79+
define i8 @shl_nsw_nuw(i1 %b, i8 %x) {
80+
; CHECK-LABEL: @shl_nsw_nuw(
81+
; CHECK-NEXT: [[X_OP:%.*]] = shl i8 7, [[X:%.*]]
82+
; CHECK-NEXT: [[R:%.*]] = select i1 [[B:%.*]], i8 56, i8 [[X_OP]]
83+
; CHECK-NEXT: ret i8 [[R]]
84+
;
85+
%s = select i1 %b, i8 3, i8 %x
86+
%r = shl nsw nuw i8 7, %s
87+
ret i8 %r
88+
}
89+
90+
define i8 @add_nsw_poison_constant_fold(i1 %b, i8 %x) {
91+
; CHECK-LABEL: @add_nsw_poison_constant_fold(
92+
; CHECK-NEXT: [[X_OP:%.*]] = add i8 [[X:%.*]], 64
93+
; CHECK-NEXT: [[R:%.*]] = select i1 [[B:%.*]], i8 [[X_OP]], i8 -127
94+
; CHECK-NEXT: ret i8 [[R]]
95+
;
96+
%s = select i1 %b, i8 %x, i8 65
97+
%r = add nsw i8 %s, 64
98+
ret i8 %r
99+
}
100+
101+
define i8 @add_nsw(i1 %b, i8 %x) {
102+
; CHECK-LABEL: @add_nsw(
103+
; CHECK-NEXT: [[X_OP:%.*]] = add i8 [[X:%.*]], 64
104+
; CHECK-NEXT: [[R:%.*]] = select i1 [[B:%.*]], i8 [[X_OP]], i8 71
105+
; CHECK-NEXT: ret i8 [[R]]
106+
;
107+
%s = select i1 %b, i8 %x, i8 7
108+
%r = add nsw i8 %s, 64
109+
ret i8 %r
110+
}

0 commit comments

Comments
 (0)