Skip to content

Commit 195e0fa

Browse files
committed
precommit test
1 parent 5021e6d commit 195e0fa

File tree

1 file changed

+125
-0
lines changed

1 file changed

+125
-0
lines changed

llvm/test/Transforms/InstCombine/select.ll

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1456,6 +1456,131 @@ 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_shl_and(i8 noundef %a, i8 %b) {
1477+
; CHECK-LABEL: @select_icmp_eq_shl_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: [[SHL:%.*]] = shl i8 [[DIV7]], [[DIV7]]
1482+
; CHECK-NEXT: [[RETVAL_0:%.*]] = select i1 [[CMP]], i8 [[SHL]], i8 [[B:%.*]]
1483+
; CHECK-NEXT: ret i8 [[RETVAL_0]]
1484+
;
1485+
%1 = and i8 %a, 1
1486+
%cmp = icmp eq i8 %1, 0
1487+
%div7 = and i8 %a, -2
1488+
%shl = shl i8 %div7, %div7
1489+
%retval.0 = select i1 %cmp, i8 %shl, i8 %b
1490+
ret i8 %retval.0
1491+
}
1492+
1493+
define i8 @select_icmp_eq_and(i8 noundef %a, i8 %b) {
1494+
; CHECK-LABEL: @select_icmp_eq_and(
1495+
; CHECK-NEXT: [[TMP1:%.*]] = and i8 [[A:%.*]], 1
1496+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[TMP1]], 0
1497+
; CHECK-NEXT: [[DIV7:%.*]] = and i8 [[A]], -2
1498+
; CHECK-NEXT: [[RETVAL_0:%.*]] = select i1 [[CMP]], i8 [[DIV7]], i8 [[B:%.*]]
1499+
; CHECK-NEXT: ret i8 [[RETVAL_0]]
1500+
;
1501+
%1 = and i8 %a, 1
1502+
%cmp = icmp eq i8 %1, 0
1503+
%div7 = and i8 %a, -2
1504+
%retval.0 = select i1 %cmp, i8 %div7, i8 %b
1505+
ret i8 %retval.0
1506+
}
1507+
1508+
;negative test
1509+
define i8 @select_icmp_eq_mul_and_undef(i8 %a, i8 %b) {
1510+
; CHECK-LABEL: @select_icmp_eq_mul_and_undef(
1511+
; CHECK-NEXT: [[TMP1:%.*]] = and i8 [[A:%.*]], 1
1512+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[TMP1]], 0
1513+
; CHECK-NEXT: [[DIV7:%.*]] = and i8 [[A]], -2
1514+
; CHECK-NEXT: [[MUL:%.*]] = mul i8 [[DIV7]], [[DIV7]]
1515+
; CHECK-NEXT: [[RETVAL_0:%.*]] = select i1 [[CMP]], i8 [[MUL]], i8 [[B:%.*]]
1516+
; CHECK-NEXT: ret i8 [[RETVAL_0]]
1517+
;
1518+
%1 = and i8 %a, 1
1519+
%cmp = icmp eq i8 %1, 0
1520+
%div7 = and i8 %a, -2
1521+
%mul = mul i8 %div7, %div7
1522+
%retval.0 = select i1 %cmp, i8 %mul, i8 %b
1523+
ret i8 %retval.0
1524+
}
1525+
1526+
;negative test
1527+
define i8 @select_icmp_eq_and_undef(i8 %a, i8 %b) {
1528+
; CHECK-LABEL: @select_icmp_eq_and_undef(
1529+
; CHECK-NEXT: [[TMP1:%.*]] = and i8 [[A:%.*]], 1
1530+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[TMP1]], 0
1531+
; CHECK-NEXT: [[DIV7:%.*]] = and i8 [[A]], -2
1532+
; CHECK-NEXT: [[RETVAL_0:%.*]] = select i1 [[CMP]], i8 [[DIV7]], i8 [[B:%.*]]
1533+
; CHECK-NEXT: ret i8 [[RETVAL_0]]
1534+
;
1535+
%1 = and i8 %a, 1
1536+
%cmp = icmp eq i8 %1, 0
1537+
%div7 = and i8 %a, -2
1538+
%retval.0 = select i1 %cmp, i8 %div7, i8 %b
1539+
ret i8 %retval.0
1540+
}
1541+
1542+
;negative test
1543+
define i8 @select_and(i8 noundef %a, i8 %b, i1 %cmp) {
1544+
; CHECK-LABEL: @select_and(
1545+
; CHECK-NEXT: [[DIV7:%.*]] = and i8 [[A:%.*]], -2
1546+
; CHECK-NEXT: [[RETVAL_0:%.*]] = select i1 [[CMP:%.*]], i8 [[DIV7]], i8 [[B:%.*]]
1547+
; CHECK-NEXT: ret i8 [[RETVAL_0]]
1548+
;
1549+
%div7 = and i8 %a, -2
1550+
%retval.0 = select i1 %cmp, i8 %div7, i8 %b
1551+
ret i8 %retval.0
1552+
}
1553+
1554+
;negative test
1555+
define i8 @select_mul_and(i8 noundef %a, i8 %b, i1 %cmp) {
1556+
; CHECK-LABEL: @select_mul_and(
1557+
; CHECK-NEXT: [[DIV7:%.*]] = and i8 [[A:%.*]], -2
1558+
; CHECK-NEXT: [[MUL:%.*]] = mul i8 [[DIV7]], [[DIV7]]
1559+
; CHECK-NEXT: [[RETVAL_0:%.*]] = select i1 [[CMP:%.*]], i8 [[MUL]], i8 [[B:%.*]]
1560+
; CHECK-NEXT: ret i8 [[RETVAL_0]]
1561+
;
1562+
%div7 = and i8 %a, -2
1563+
%mul = mul i8 %div7, %div7
1564+
%retval.0 = select i1 %cmp, i8 %mul, i8 %b
1565+
ret i8 %retval.0
1566+
}
1567+
1568+
;negative test
1569+
define i8 @select_icmp_eq_and_diff(i8 noundef %a, i8 %b, i8 %c) {
1570+
; CHECK-LABEL: @select_icmp_eq_and_diff(
1571+
; CHECK-NEXT: [[TMP1:%.*]] = and i8 [[A:%.*]], 1
1572+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[TMP1]], 0
1573+
; CHECK-NEXT: [[DIV7:%.*]] = and i8 [[C:%.*]], -2
1574+
; CHECK-NEXT: [[RETVAL_0:%.*]] = select i1 [[CMP]], i8 [[DIV7]], i8 [[B:%.*]]
1575+
; CHECK-NEXT: ret i8 [[RETVAL_0]]
1576+
;
1577+
%1 = and i8 %a, 1
1578+
%cmp = icmp eq i8 %1, 0
1579+
%div7 = and i8 %c, -2
1580+
%retval.0 = select i1 %cmp, i8 %div7, i8 %b
1581+
ret i8 %retval.0
1582+
}
1583+
14591584
define <4 x i32> @canonicalize_to_shuffle(<4 x i32> %a, <4 x i32> %b) {
14601585
; CHECK-LABEL: @canonicalize_to_shuffle(
14611586
; 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)