Skip to content

Commit 4a995d2

Browse files
committed
[InstCombine] Add pre-commit tests
1 parent 206b5af commit 4a995d2

File tree

1 file changed

+108
-0
lines changed
  • llvm/test/Transforms/InstCombine

1 file changed

+108
-0
lines changed

llvm/test/Transforms/InstCombine/xor.ll

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1485,3 +1485,111 @@ define i4 @PR96857_xor_without_noundef(i4 %val0, i4 %val1, i4 %val2) {
14851485
%val7 = xor i4 %val4, %val6
14861486
ret i4 %val7
14871487
}
1488+
1489+
define i32 @or_disjoint_with_xor(i32 %a, i32 %b, i32 %c) {
1490+
; CHECK-LABEL: @or_disjoint_with_xor(
1491+
; CHECK-NEXT: entry:
1492+
; CHECK-NEXT: [[OR:%.*]] = or disjoint i32 [[A:%.*]], [[B:%.*]]
1493+
; CHECK-NEXT: [[XOR:%.*]] = xor i32 [[OR]], [[C:%.*]]
1494+
; CHECK-NEXT: ret i32 [[XOR]]
1495+
;
1496+
entry:
1497+
%or = or disjoint i32 %a, %b
1498+
%xor = xor i32 %or, %c
1499+
ret i32 %xor
1500+
}
1501+
1502+
define i32 @xor_with_or_disjoint(i32 %a, i32 %b, i32 %c) {
1503+
; CHECK-LABEL: @xor_with_or_disjoint(
1504+
; CHECK-NEXT: entry:
1505+
; CHECK-NEXT: [[OR:%.*]] = or disjoint i32 [[A:%.*]], [[B:%.*]]
1506+
; CHECK-NEXT: [[XOR:%.*]] = xor i32 [[C:%.*]], [[OR]]
1507+
; CHECK-NEXT: ret i32 [[XOR]]
1508+
;
1509+
entry:
1510+
%or = or disjoint i32 %a, %b
1511+
%xor = xor i32 %c, %or
1512+
ret i32 %xor
1513+
}
1514+
1515+
define <2 x i32> @or_disjoint_with_xor_vec(<2 x i32> %a, < 2 x i32> %b, <2 x i32> %c) {
1516+
; CHECK-LABEL: @or_disjoint_with_xor_vec(
1517+
; CHECK-NEXT: entry:
1518+
; CHECK-NEXT: [[OR:%.*]] = or disjoint <2 x i32> [[A:%.*]], [[B:%.*]]
1519+
; CHECK-NEXT: [[XOR:%.*]] = xor <2 x i32> [[OR]], [[C:%.*]]
1520+
; CHECK-NEXT: ret <2 x i32> [[XOR]]
1521+
;
1522+
entry:
1523+
%or = or disjoint <2 x i32> %a, %b
1524+
%xor = xor <2 x i32> %or, %c
1525+
ret <2 x i32> %xor
1526+
}
1527+
1528+
define <2 x i32> @xor_with_or_disjoint_vec(<2 x i32> %a, < 2 x i32> %b, <2 x i32> %c) {
1529+
; CHECK-LABEL: @xor_with_or_disjoint_vec(
1530+
; CHECK-NEXT: entry:
1531+
; CHECK-NEXT: [[OR:%.*]] = or disjoint <2 x i32> [[A:%.*]], [[B:%.*]]
1532+
; CHECK-NEXT: [[XOR:%.*]] = xor <2 x i32> [[C:%.*]], [[OR]]
1533+
; CHECK-NEXT: ret <2 x i32> [[XOR]]
1534+
;
1535+
entry:
1536+
%or = or disjoint <2 x i32> %a, %b
1537+
%xor = xor <2 x i32> %c, %or
1538+
ret <2 x i32> %xor
1539+
}
1540+
1541+
define i32 @or_multi_use_disjoint_with_xor(i32 %a, i32 %b, i32 %c) {
1542+
; CHECK-LABEL: @or_multi_use_disjoint_with_xor(
1543+
; CHECK-NEXT: entry:
1544+
; CHECK-NEXT: [[OR:%.*]] = or disjoint i32 [[A:%.*]], [[B:%.*]]
1545+
; CHECK-NEXT: [[XOR:%.*]] = xor i32 [[OR]], [[C:%.*]]
1546+
; CHECK-NEXT: [[ADD:%.*]] = add i32 [[OR]], [[XOR]]
1547+
; CHECK-NEXT: ret i32 [[ADD]]
1548+
;
1549+
entry:
1550+
%or = or disjoint i32 %a, %b
1551+
%xor = xor i32 %or, %c
1552+
%add = add i32 %or, %xor
1553+
ret i32 %add
1554+
}
1555+
1556+
define <2 x i32> @or_multi_use_disjoint_with_xor_vec(<2 x i32> %a, <2 x i32> %b, <2 x i32> %c) {
1557+
; CHECK-LABEL: @or_multi_use_disjoint_with_xor_vec(
1558+
; CHECK-NEXT: entry:
1559+
; CHECK-NEXT: [[OR:%.*]] = or disjoint <2 x i32> [[A:%.*]], [[B:%.*]]
1560+
; CHECK-NEXT: [[XOR:%.*]] = xor <2 x i32> [[OR]], [[C:%.*]]
1561+
; CHECK-NEXT: [[ADD:%.*]] = add <2 x i32> [[OR]], [[XOR]]
1562+
; CHECK-NEXT: ret <2 x i32> [[ADD]]
1563+
;
1564+
entry:
1565+
%or = or disjoint <2 x i32> %a, %b
1566+
%xor = xor <2 x i32> %or, %c
1567+
%add = add <2 x i32> %or, %xor
1568+
ret <2 x i32> %add
1569+
}
1570+
1571+
define i32 @add_with_or(i32 %a, i32 %b, i32 %c) {
1572+
; CHECK-LABEL: @add_with_or(
1573+
; CHECK-NEXT: entry:
1574+
; CHECK-NEXT: [[ADD:%.*]] = add i32 [[A:%.*]], [[B:%.*]]
1575+
; CHECK-NEXT: [[OR:%.*]] = or i32 [[ADD]], [[C:%.*]]
1576+
; CHECK-NEXT: ret i32 [[OR]]
1577+
;
1578+
entry:
1579+
%add = add i32 %a, %b
1580+
%or = or i32 %add, %c
1581+
ret i32 %or
1582+
}
1583+
1584+
define <2 x i32> @add_with_or_vec(<2 x i32> %a, <2 x i32> %b, <2 x i32> %c) {
1585+
; CHECK-LABEL: @add_with_or_vec(
1586+
; CHECK-NEXT: entry:
1587+
; CHECK-NEXT: [[ADD:%.*]] = add <2 x i32> [[A:%.*]], [[B:%.*]]
1588+
; CHECK-NEXT: [[OR:%.*]] = or <2 x i32> [[ADD]], [[C:%.*]]
1589+
; CHECK-NEXT: ret <2 x i32> [[OR]]
1590+
;
1591+
entry:
1592+
%add = add <2 x i32> %a, %b
1593+
%or = or <2 x i32> %add, %c
1594+
ret <2 x i32> %or
1595+
}

0 commit comments

Comments
 (0)