[SelectionDAG][GlobalISel] Move even divisor optimization for division by constant...
authorCraig Topper <craig.topper@sifive.com>
Wed, 4 Jan 2023 00:25:08 +0000 (16:25 -0800)
committerCraig Topper <craig.topper@sifive.com>
Wed, 4 Jan 2023 00:34:13 +0000 (16:34 -0800)
commit84daed7fd4077704b0029c8f24ede2edd6d5a0e4
tree136d6796efb0e46efb4729aaea0d1d93ef45e966
parent817f64e7ce545a2d0ec4484b4066cb73ddb31fdd
[SelectionDAG][GlobalISel] Move even divisor optimization for division by constant into UnsignedDivideUsingMagic implementation. NFC

I've added a bool to UnsignedDivideUsingMagic so we can continue
testing it in the unit test with and without this optimization in
the unit test.

This is a step towards supporting "uncooperative" odd divisors.
See https://ridiculousfish.com/blog/posts/labor-of-division-episode-iii.html

Reviewed By: lebedev.ri

Differential Revision: https://reviews.llvm.org/D140924
llvm/include/llvm/Support/DivisionByConstantInfo.h
llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
llvm/lib/Support/DivisionByConstantInfo.cpp
llvm/unittests/Support/DivisionByConstantTest.cpp