Skip to content

Commit 321fe74

Browse files
committed
[InstCombine] Add extra test for eq of parts fold (NFC)
To guard against regression from #112704.
1 parent 22ec44f commit 321fe74

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

llvm/test/Transforms/InstCombine/eq-of-parts.ll

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1538,3 +1538,28 @@ define i1 @or_trunc_i1_wrong_operands(i64 %a1, i64 %a2, i64 %a3) {
15381538
%or = or i1 %cmp, %trunc
15391539
ret i1 %or
15401540
}
1541+
1542+
define i1 @jv_identical(i64 %arg1, i64 %arg2) {
1543+
; CHECK-LABEL: @jv_identical(
1544+
; CHECK-NEXT: [[ARG1_TRUNC:%.*]] = trunc i64 [[ARG1:%.*]] to i8
1545+
; CHECK-NEXT: [[ARG2_TRUNC:%.*]] = trunc i64 [[ARG2:%.*]] to i8
1546+
; CHECK-NEXT: [[EQ1:%.*]] = icmp eq i8 [[ARG1_TRUNC]], [[ARG2_TRUNC]]
1547+
; CHECK-NEXT: [[DOTUNSHIFTED:%.*]] = xor i64 [[ARG2]], [[ARG1]]
1548+
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i64 [[DOTUNSHIFTED]], 65536
1549+
; CHECK-NEXT: [[AND2:%.*]] = and i1 [[EQ1]], [[TMP1]]
1550+
; CHECK-NEXT: ret i1 [[AND2]]
1551+
;
1552+
%arg1.trunc = trunc i64 %arg1 to i8
1553+
%arg1.shift = lshr i64 %arg1, 16
1554+
%arg1.shift.trunc = trunc i64 %arg1.shift to i16
1555+
%arg2.trunc = trunc i64 %arg2 to i8
1556+
%arg2.shift = lshr i64 %arg2, 16
1557+
%arg2.shift.trunc = trunc i64 %arg2.shift to i16
1558+
%eq1 = icmp eq i8 %arg1.trunc, %arg2.trunc
1559+
%eq2 = icmp eq i16 %arg1.shift.trunc, %arg2.shift.trunc
1560+
%and1 = and i1 %eq1, %eq2
1561+
%xor = xor i64 %arg2, %arg1
1562+
%cmp = icmp ult i64 %xor, 4294967296
1563+
%and2 = and i1 %cmp, %and1
1564+
ret i1 %and2
1565+
}

0 commit comments

Comments
 (0)