[PATCH] D71657: [SDAG] Handle BUILD_PAIR in ComputeNumSignBits
Danila Malyutin via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 23 09:25:05 PST 2019
danilaml added a comment.
One of the motivating examples (not sure how stable this IR to use as a test) is something like this (needs `-mllvm -disable-cgp` to prevent `sext` sinking):
define i64 @foo(i32 %a, i32 %b) local_unnamed_addr {
entry:
%conv6 = sext i32 %a to i64
%conv17 = sext i32 %b to i64
%add = add i64 %conv6, 42
%cmp0 = icmp slt i64 %conv17, %add
br i1 %cmp0, label %exit, label %exit2 ; branch to prevent bb merging
exit:
%mul = mul nsw i64 %conv6, %conv17
ret i64 %mul
exit2:
ret i64 0
}
On 32-bit target %conv* would be copyFromReg'ed across BBs in the DAG in a pair of registers. Without knowing that ComputeNumSignBits for their build_pair is 33 (since it's just a copy from sext i32 to i64), LLVM won't generate smul_lohi.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D71657/new/
https://reviews.llvm.org/D71657
More information about the llvm-commits
mailing list