Skip to content

Commit 056ad41

Browse files
committed
Initial tests precommit
1 parent 7fc524f commit 056ad41

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

llvm/test/Transforms/InstCombine/select.ll

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1456,6 +1456,64 @@ define <2 x i32> @select_icmp_slt0_xor_vec(<2 x i32> %x) {
14561456
ret <2 x i32> %x.xor
14571457
}
14581458

1459+
define i8 @select_icmp_eq_mul_and(i8 noundef %a, i8 %b) {
1460+
; CHECK-LABEL: @select_icmp_eq_mul_and(
1461+
; CHECK-NEXT: [[TMP1:%.*]] = and i8 [[A:%.*]], 1
1462+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[TMP1]], 0
1463+
; CHECK-NEXT: [[DIV7:%.*]] = and i8 [[A]], -2
1464+
; CHECK-NEXT: [[MUL:%.*]] = mul i8 [[DIV7]], [[DIV7]]
1465+
; CHECK-NEXT: [[RETVAL_0:%.*]] = select i1 [[CMP]], i8 [[MUL]], i8 [[B:%.*]]
1466+
; CHECK-NEXT: ret i8 [[RETVAL_0]]
1467+
;
1468+
%1 = and i8 %a, 1
1469+
%cmp = icmp eq i8 %1, 0
1470+
%div7 = and i8 %a, -2
1471+
%mul = mul i8 %div7, %div7
1472+
%retval.0 = select i1 %cmp, i8 %mul, i8 %b
1473+
ret i8 %retval.0
1474+
}
1475+
1476+
define i8 @select_icmp_eq_and(i8 noundef %a, i8 %b) {
1477+
; CHECK-LABEL: @select_icmp_eq_and(
1478+
; CHECK-NEXT: [[TMP1:%.*]] = and i8 [[A:%.*]], 1
1479+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[TMP1]], 0
1480+
; CHECK-NEXT: [[DIV7:%.*]] = and i8 [[A]], -2
1481+
; CHECK-NEXT: [[RETVAL_0:%.*]] = select i1 [[CMP]], i8 [[DIV7]], i8 [[B:%.*]]
1482+
; CHECK-NEXT: ret i8 [[RETVAL_0]]
1483+
;
1484+
%1 = and i8 %a, 1
1485+
%cmp = icmp eq i8 %1, 0
1486+
%div7 = and i8 %a, -2
1487+
%retval.0 = select i1 %cmp, i8 %div7, i8 %b
1488+
ret i8 %retval.0
1489+
}
1490+
1491+
;negative test
1492+
define i8 @select_and(i8 noundef %a, i8 %b, i1 %cmp) {
1493+
; CHECK-LABEL: @select_and(
1494+
; CHECK-NEXT: [[DIV7:%.*]] = and i8 [[A:%.*]], -2
1495+
; CHECK-NEXT: [[RETVAL_0:%.*]] = select i1 [[CMP:%.*]], i8 [[DIV7]], i8 [[B:%.*]]
1496+
; CHECK-NEXT: ret i8 [[RETVAL_0]]
1497+
;
1498+
%div7 = and i8 %a, -2
1499+
%retval.0 = select i1 %cmp, i8 %div7, i8 %b
1500+
ret i8 %retval.0
1501+
}
1502+
1503+
;negative test
1504+
define i8 @select_mul_and(i8 noundef %a, i8 %b, i1 %cmp) {
1505+
; CHECK-LABEL: @select_mul_and(
1506+
; CHECK-NEXT: [[DIV7:%.*]] = and i8 [[A:%.*]], -2
1507+
; CHECK-NEXT: [[MUL:%.*]] = mul i8 [[DIV7]], [[DIV7]]
1508+
; CHECK-NEXT: [[RETVAL_0:%.*]] = select i1 [[CMP:%.*]], i8 [[MUL]], i8 [[B:%.*]]
1509+
; CHECK-NEXT: ret i8 [[RETVAL_0]]
1510+
;
1511+
%div7 = and i8 %a, -2
1512+
%mul = mul i8 %div7, %div7
1513+
%retval.0 = select i1 %cmp, i8 %mul, i8 %b
1514+
ret i8 %retval.0
1515+
}
1516+
14591517
define <4 x i32> @canonicalize_to_shuffle(<4 x i32> %a, <4 x i32> %b) {
14601518
; CHECK-LABEL: @canonicalize_to_shuffle(
14611519
; CHECK-NEXT: [[SEL:%.*]] = shufflevector <4 x i32> [[A:%.*]], <4 x i32> [[B:%.*]], <4 x i32> <i32 0, i32 5, i32 6, i32 3>

0 commit comments

Comments
 (0)