<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in InstCombineShifts.cpp</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>d76c8f51 - [InstCombine] Add mul with negated power of 2 constant to canEvaluateShifted.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#d76c8f51</link>
        <description>[InstCombine] Add mul with negated power of 2 constant to canEvaluateShifted.If we are right shifting a multiply by a negated power of 2 wherethe power of 2 is the same as the shift amount, we can replace witha negate followed by an And.New tests have not been committed yet but the patch shows the diffs.Let me know if you want any changes or additional tests.Differential Revision: https://reviews.llvm.org/D130103

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Tue, 19 Jul 2022 17:24:15 +0000</pubDate>
        <dc:creator>Craig Topper &lt;craig.topper@sifive.com&gt;</dc:creator>
    </item>
<item>
        <title>df698a57 - [InstCombine] Avoid some calls to ConstantExpr::get() (NFCI)</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#df698a57</link>
        <description>[InstCombine] Avoid some calls to ConstantExpr::get() (NFCI)Replace some calls to ConstantExpr::get() with IRBuilder APIs(which will also constant fold if possible).

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Wed, 29 Jun 2022 14:06:49 +0000</pubDate>
        <dc:creator>Nikita Popov &lt;npopov@redhat.com&gt;</dc:creator>
    </item>
<item>
        <title>b8c2781f - [NFC] format InstructionSimplify &amp; lowerCaseFunctionNames</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#b8c2781f</link>
        <description>[NFC] format InstructionSimplify &amp; lowerCaseFunctionNamesClang-format InstructionSimplify and convert all &quot;FunctionName&quot;s to&quot;functionName&quot;.  This patch does touch a lot of files but gets done withthe cleanup of InstructionSimplify in one commit.This is the alternative to the less invasive clang-format only patch: D126783Reviewed By: spatel, rengolinDifferential Revision: https://reviews.llvm.org/D126889

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Thu, 09 Jun 2022 14:09:14 +0000</pubDate>
        <dc:creator>Simon Moll &lt;moll@cs.uni-saarland.de&gt;</dc:creator>
    </item>
<item>
        <title>a0c3c607 - [InstCombine] fold shift-right-by-constant with shift-right-of-constant operand</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#a0c3c607</link>
        <description>[InstCombine] fold shift-right-by-constant with shift-right-of-constant operand  (C2 &gt;&gt; X) &gt;&gt; C1 --&gt; (C2 &gt;&gt; C1) &gt;&gt; XThe shift-left form of this transform has existed since:16f18ed7b555bce5163...but it applies to matching shift right opcodes too:https://alive2.llvm.org/ce/z/c5eQms

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Mon, 30 May 2022 19:30:01 +0000</pubDate>
        <dc:creator>Sanjay Patel &lt;spatel@rotateright.com&gt;</dc:creator>
    </item>
<item>
        <title>c5d942a4 - [InstCombine] remove unnecessary one-use check from (C2 &lt;&lt; X) &lt;&lt; C1 fold</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#c5d942a4</link>
        <description>[InstCombine] remove unnecessary one-use check from (C2 &lt;&lt; X) &lt;&lt; C1 foldThe restriction goes back to:16f18ed7b555bce51...but the fold only replaces a shift with a shift, so that&apos;s not necessary.Generalizing to other opcodes is planned as a follow-up.

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Mon, 30 May 2022 19:15:27 +0000</pubDate>
        <dc:creator>Sanjay Patel &lt;spatel@rotateright.com&gt;</dc:creator>
    </item>
<item>
        <title>07d549bc - Revert &quot;[InstCombine] invert canonicalization for cast of signbit test&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#07d549bc</link>
        <description>Revert &quot;[InstCombine] invert canonicalization for cast of signbit test&quot;This reverts commit 3794cc0e996481e10307b67c8436aa44e0d65d22.This change is suspected of causing bots to hang at stage 2compiles, so reverting to confirm and investigate.

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Mon, 16 May 2022 21:47:02 +0000</pubDate>
        <dc:creator>Sanjay Patel &lt;spatel@rotateright.com&gt;</dc:creator>
    </item>
<item>
        <title>3794cc0e - [InstCombine] invert canonicalization for cast of signbit test</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#3794cc0e</link>
        <description>[InstCombine] invert canonicalization for cast of signbit testThe existing transform was wrong in 3 ways:1. It created an extra instruction when the source and dest types don&apos;t match.2. It did not account for an extra use of the icmp, so could create 2 extra insts.3. It favored bit hacks over icmp (icmp generally has better analysis).This fixes #54692 (modeled by the PhaseOrdering tests).This is a minimal step to fix the bug, but we should likely invertthe sibling transform for the &quot;is negative&quot; pattern too.The backend should be able to invert this back to a shift if thatleads to better codegen.

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Mon, 16 May 2022 16:29:47 +0000</pubDate>
        <dc:creator>Sanjay Patel &lt;spatel@rotateright.com&gt;</dc:creator>
    </item>
<item>
        <title>4c8c101b - [InstCombine] try to narrow more shifted bswap-of-zext</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#4c8c101b</link>
        <description>[InstCombine] try to narrow more shifted bswap-of-zextTry to narrow more bswap, if the shift amount is less than the zext(bswap (zext X)) &gt;&gt; C --&gt; (zext (bswap X)) &lt;&lt; C&apos;https://alive2.llvm.org/ce/z/i7ddjnReviewed By: RKSimonDifferential Revision: https://reviews.llvm.org/D124598

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Fri, 06 May 2022 02:45:10 +0000</pubDate>
        <dc:creator>Chenbing Zheng &lt;Chenbing.Zheng@streamcomputing.com&gt;</dc:creator>
    </item>
<item>
        <title>f8a574bf - [InstCombine] C0 &gt;&gt; (X - C1) --&gt; (C0 &lt;&lt; C1) &gt;&gt; X</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#f8a574bf</link>
        <description>[InstCombine] C0 &gt;&gt; (X - C1) --&gt; (C0 &lt;&lt; C1) &gt;&gt; XWith the right pre-conditions, we can fold the offsetinto the shifted constant:https://alive2.llvm.org/ce/z/drMRBUhttps://alive2.llvm.org/ce/z/cUQv-_Fixes #55016Differential Revision: https://reviews.llvm.org/D124369

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Wed, 27 Apr 2022 17:41:25 +0000</pubDate>
        <dc:creator>Nicolas Abram Lujan &lt;abramlujan@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>664ae7bb - [InstCombine] C0 &lt;&lt;{nsw, nuw} (X - C1) --&gt; (C0 &gt;&gt; C1) &lt;&lt; X (2nd try)</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#664ae7bb</link>
        <description>[InstCombine] C0 &lt;&lt;{nsw, nuw} (X - C1) --&gt; (C0 &gt;&gt; C1) &lt;&lt; X (2nd try)The first attempt at this missed a check to make sure the offsetconstant was in range and caused many bot failures.That was missed in the Alive2 proof because on overshift createspoison rather than the assert from APInt. Here&apos;s an alternateattempt at a proof using count-trailing-zeros:https://alive2.llvm.org/ce/z/pnXQYROriginal commit message:This is similar to an existing pre-shift-of-constant fold:8a9c70fc01e6...but in this case, we need no-wrap on the shl and a negativeoffset:https://alive2.llvm.org/ce/z/_RVz99

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Thu, 21 Apr 2022 20:07:00 +0000</pubDate>
        <dc:creator>Sanjay Patel &lt;spatel@rotateright.com&gt;</dc:creator>
    </item>
<item>
        <title>25aba1ab - Revert &quot;[InstCombine] Add one use limitation for  (X * C2) &lt;&lt; C1 --&gt; X * (C2 &lt;&lt; C1)&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#25aba1ab</link>
        <description>Revert &quot;[InstCombine] Add one use limitation for  (X * C2) &lt;&lt; C1 --&gt; X * (C2 &lt;&lt; C1)&quot;This reverts commit b543d28df7b067dcda833c717a59faa28c1151a1.

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Thu, 21 Apr 2022 16:56:20 +0000</pubDate>
        <dc:creator>chenglin.bi &lt;chenglin.bi@cixcomputing.com&gt;</dc:creator>
    </item>
<item>
        <title>b543d28d - [InstCombine] Add one use limitation for  (X * C2) &lt;&lt; C1 --&gt; X * (C2 &lt;&lt; C1)</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#b543d28d</link>
        <description>[InstCombine] Add one use limitation for  (X * C2) &lt;&lt; C1 --&gt; X * (C2 &lt;&lt; C1)Follow up D123453, add one-use limitation for(X * C2) &lt;&lt; C1 --&gt; X * (C2 &lt;&lt; C1)to make consistent withlshr (mul nuw x, MulC), ShAmtC -&gt; mul nuw x, (MulC &gt;&gt; ShAmtC)Reviewed By: spatelDifferential Revision: https://reviews.llvm.org/D124183

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Thu, 21 Apr 2022 16:32:36 +0000</pubDate>
        <dc:creator>chenglin.bi &lt;chenglin.bi@cixcomputing.com&gt;</dc:creator>
    </item>
<item>
        <title>8960ba74 - Revert &quot;[InstCombine] C0 &lt;&lt;{nsw, nuw} (X - C1) --&gt; (C0 &gt;&gt; C1) &lt;&lt; X&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#8960ba74</link>
        <description>Revert &quot;[InstCombine] C0 &lt;&lt;{nsw, nuw} (X - C1) --&gt; (C0 &gt;&gt; C1) &lt;&lt; X&quot;This reverts commit 5819f4a422865fc9a8ea4dc772769e14010ff6a7.This caused bots to fail with a crash/assert during the fold,so some constraint was missed.

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Thu, 21 Apr 2022 16:14:08 +0000</pubDate>
        <dc:creator>Sanjay Patel &lt;spatel@rotateright.com&gt;</dc:creator>
    </item>
<item>
        <title>5819f4a4 - [InstCombine] C0 &lt;&lt;{nsw, nuw} (X - C1) --&gt; (C0 &gt;&gt; C1) &lt;&lt; X</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#5819f4a4</link>
        <description>[InstCombine] C0 &lt;&lt;{nsw, nuw} (X - C1) --&gt; (C0 &gt;&gt; C1) &lt;&lt; XThis is similar to an existing pre-shift-of-constant fold:8a9c70fc01e6...but in this case, we need no-wrap on the shl and a negativeoffset:https://alive2.llvm.org/ce/z/_RVz99Fixes #54890

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Thu, 21 Apr 2022 14:54:40 +0000</pubDate>
        <dc:creator>Sanjay Patel &lt;spatel@rotateright.com&gt;</dc:creator>
    </item>
<item>
        <title>1fae4b49 - [InstCombine] Fold mul nuw+lshr to a single multiplication when the latter is a factor</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#1fae4b49</link>
        <description>[InstCombine] Fold mul nuw+lshr to a single multiplication when the latter is a factorif c is divisible by (1 &lt;&lt; ShAmtC), we can fold this pattern:lshr (mul nuw x, c), ShAmtC -&gt; mul nuw x, (c &gt;&gt; ShAmtC)https://alive2.llvm.org/ce/z/ox4wAtFix https://github.com/llvm/llvm-project/issues/54824Reviewed By: spatel, lebedev.ri, craig.topperDifferential Revision: https://reviews.llvm.org/D123453

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Wed, 20 Apr 2022 15:51:34 +0000</pubDate>
        <dc:creator>chenglin.bi &lt;chenglin.bi@cixcomputing.com&gt;</dc:creator>
    </item>
<item>
        <title>bf09a925 - [InstCombine] remove likely redundant ValueTracking-based folds for shifts</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#bf09a925</link>
        <description>[InstCombine] remove likely redundant ValueTracking-based folds for shiftsThis is not expected to have a functional difference as discussed in thepost-commit comments for 8a9c70fc01e6. All of the motivating tests forthe older fold still optimize as expected because other code can inferthe &apos;nuw&apos;.

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Wed, 20 Apr 2022 15:10:21 +0000</pubDate>
        <dc:creator>Sanjay Patel &lt;spatel@rotateright.com&gt;</dc:creator>
    </item>
<item>
        <title>8a9c70fc - [InstCombine] C0 shift (X add nuw C) --&gt; (C0 shift C) shift X</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#8a9c70fc</link>
        <description>[InstCombine] C0 shift (X add nuw C) --&gt; (C0 shift C) shift XWith &apos;nuw&apos; we can convert the increment of the shift amountinto a pre-shift (constant fold) of the shifted constant:https://alive2.llvm.org/ce/z/FkTyR2Fixes issue #41976

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Tue, 19 Apr 2022 19:09:45 +0000</pubDate>
        <dc:creator>Sanjay Patel &lt;spatel@rotateright.com&gt;</dc:creator>
    </item>
<item>
        <title>1206a18d - [InstCombine] guard against splat-mul corner case</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#1206a18d</link>
        <description>[InstCombine] guard against splat-mul corner caseThe test is already simplified, and I&apos;m not sure howto write a test to exercise the new clause. But itprotects the 2-bit pattern from miscompiling as notedin D123453.https://alive2.llvm.org/ce/z/QPyVfv(If we managed to fall into the mul transform, itwould wrongly create a zero on this pattern.)

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Mon, 11 Apr 2022 19:44:57 +0000</pubDate>
        <dc:creator>Sanjay Patel &lt;spatel@rotateright.com&gt;</dc:creator>
    </item>
<item>
        <title>0fcff69b - [InstCombine] try to narrow shifted bswap-of-zext (2nd try)</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#0fcff69b</link>
        <description>[InstCombine] try to narrow shifted bswap-of-zext (2nd try)The first attempt at this missed a validity check.This version includes a test of the narrow sourcetype for modulo-16-bits.Original commit message:This is the IR counterpart to 370ebc9d9a573d6which provided a bswap narrowing fix for issue #53867.Here we can be more general (although I&apos;m not sure yetwhat would happen for illegal types in codegen - toorare to worry about?):https://alive2.llvm.org/ce/z/3-CPfoThis will be more effective if we have moved the shiftafter the bswap as proposed in D122010, but it isindependent of that patch.Differential Revision: https://reviews.llvm.org/D122166

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Wed, 23 Mar 2022 13:06:47 +0000</pubDate>
        <dc:creator>Sanjay Patel &lt;spatel@rotateright.com&gt;</dc:creator>
    </item>
<item>
        <title>4e0008dc - Revert &quot;[InstCombine] try to narrow shifted bswap-of-zext&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp#4e0008dc</link>
        <description>Revert &quot;[InstCombine] try to narrow shifted bswap-of-zext&quot;This reverts commit 9e9bda2e8f5b88715bad767a4b7740df32b040d2.This causes a backend error when building the Linux kernel for arm64.See https://reviews.llvm.org/D122166 for a simplified reproducer.

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp</description>
        <pubDate>Wed, 23 Mar 2022 00:32:33 +0000</pubDate>
        <dc:creator>Nathan Chancellor &lt;nathan@kernel.org&gt;</dc:creator>
    </item>
</channel>
</rss>
