![]() This is an unusual canonicalization because we create an extra instruction, but it's likely better for analysis and codegen (similar reasoning as D133399). InstCombine::Negator may create this kind of multiply from negate and shift, but this should not conflict because of the narrow negation. I don't know how to create a fully general proof for this kind of transform in Alive2, but here's an example with bitwidths similar to one of the regression tests: https://alive2.llvm.org/ce/z/J3jTjR Differential Revision: https://reviews.llvm.org/D133667 |
||
---|---|---|
.. | ||
AggressiveInstCombine | ||
CFGuard | ||
Coroutines | ||
Hello | ||
IPO | ||
InstCombine | ||
Instrumentation | ||
ObjCARC | ||
Scalar | ||
Utils | ||
Vectorize | ||
CMakeLists.txt |