diff options
author | Nikita Popov <npopov@redhat.com> | 2024-11-25 10:26:39 +0100 |
---|---|---|
committer | Nikita Popov <npopov@redhat.com> | 2024-11-25 10:27:35 +0100 |
commit | 321fe747957703ec1d17b59b5e3ed96f58cfdb12 (patch) | |
tree | 18d98e89a59d141c53218543860626f160a0bfaa | |
parent | 22ec44f509ff266b581dbb490d7b040473b7c31a (diff) | |
download | llvm-321fe747957703ec1d17b59b5e3ed96f58cfdb12.zip llvm-321fe747957703ec1d17b59b5e3ed96f58cfdb12.tar.gz llvm-321fe747957703ec1d17b59b5e3ed96f58cfdb12.tar.bz2 |
[InstCombine] Add extra test for eq of parts fold (NFC)
To guard against regression from #112704.
-rw-r--r-- | llvm/test/Transforms/InstCombine/eq-of-parts.ll | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/eq-of-parts.ll b/llvm/test/Transforms/InstCombine/eq-of-parts.ll index 00ee7bf..9494dd6 100644 --- a/llvm/test/Transforms/InstCombine/eq-of-parts.ll +++ b/llvm/test/Transforms/InstCombine/eq-of-parts.ll @@ -1538,3 +1538,28 @@ define i1 @or_trunc_i1_wrong_operands(i64 %a1, i64 %a2, i64 %a3) { %or = or i1 %cmp, %trunc ret i1 %or } + +define i1 @jv_identical(i64 %arg1, i64 %arg2) { +; CHECK-LABEL: @jv_identical( +; CHECK-NEXT: [[ARG1_TRUNC:%.*]] = trunc i64 [[ARG1:%.*]] to i8 +; CHECK-NEXT: [[ARG2_TRUNC:%.*]] = trunc i64 [[ARG2:%.*]] to i8 +; CHECK-NEXT: [[EQ1:%.*]] = icmp eq i8 [[ARG1_TRUNC]], [[ARG2_TRUNC]] +; CHECK-NEXT: [[DOTUNSHIFTED:%.*]] = xor i64 [[ARG2]], [[ARG1]] +; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i64 [[DOTUNSHIFTED]], 65536 +; CHECK-NEXT: [[AND2:%.*]] = and i1 [[EQ1]], [[TMP1]] +; CHECK-NEXT: ret i1 [[AND2]] +; + %arg1.trunc = trunc i64 %arg1 to i8 + %arg1.shift = lshr i64 %arg1, 16 + %arg1.shift.trunc = trunc i64 %arg1.shift to i16 + %arg2.trunc = trunc i64 %arg2 to i8 + %arg2.shift = lshr i64 %arg2, 16 + %arg2.shift.trunc = trunc i64 %arg2.shift to i16 + %eq1 = icmp eq i8 %arg1.trunc, %arg2.trunc + %eq2 = icmp eq i16 %arg1.shift.trunc, %arg2.shift.trunc + %and1 = and i1 %eq1, %eq2 + %xor = xor i64 %arg2, %arg1 + %cmp = icmp ult i64 %xor, 4294967296 + %and2 = and i1 %cmp, %and1 + ret i1 %and2 +} |