<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/test/CodeGen/X86/bitreverse.ll, branch users/nico/python-2</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>[X86] ReplaceNodeResults - adjust assert to allow XOP or GFNI subtargets to split i64 BITREVERSE nodes on 32-bit targets</title>
<updated>2024-10-24T13:39:07+00:00</updated>
<author>
<name>Simon Pilgrim</name>
<email>llvm-dev@redking.me.uk</email>
</author>
<published>2024-10-23T14:53:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b34d64921b2f878b6e1ac7205fc4b13d54a7d8db'/>
<id>b34d64921b2f878b6e1ac7205fc4b13d54a7d8db</id>
<content type='text'>
Fixes #113353
Fixes #113034
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes #113353
Fixes #113034
</pre>
</div>
</content>
</entry>
<entry>
<title>[X86] getGFNICtrlMask - create a vXi8 mask instead of a bitcasted vXi64 mask.</title>
<updated>2024-07-18T14:15:38+00:00</updated>
<author>
<name>Simon Pilgrim</name>
<email>llvm-dev@redking.me.uk</email>
</author>
<published>2024-07-18T14:09:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=92f9f014015554c5dd18df4699765cc42853a04d'/>
<id>92f9f014015554c5dd18df4699765cc42853a04d</id>
<content type='text'>
Helps avoid some missed load-folds by stripping away bitcasts and make it easier to grok the GF2P8AFFINEQB masks.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Helps avoid some missed load-folds by stripping away bitcasts and make it easier to grok the GF2P8AFFINEQB masks.
</pre>
</div>
</content>
</entry>
<entry>
<title>Support for i8/i16 for bitreverse using GFNI. (#88625)</title>
<updated>2024-04-15T09:38:26+00:00</updated>
<author>
<name>shamithoke</name>
<email>152091883+shamithoke@users.noreply.github.com</email>
</author>
<published>2024-04-15T09:38:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c7bd284dc3ff21a5a14b4ccbbfa1988de8723c33'/>
<id>c7bd284dc3ff21a5a14b4ccbbfa1988de8723c33</id>
<content type='text'>
In continuation to the PR #81764, this change extends the GFNI support to i8 and i16.

---------

Co-authored-by: shami &lt;shami_thoke@yahoo.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In continuation to the PR #81764, this change extends the GFNI support to i8 and i16.

---------

Co-authored-by: shami &lt;shami_thoke@yahoo.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Perform bitreverse using AVX512 GFNI for i32 and i64. (#81764)</title>
<updated>2024-04-10T19:22:44+00:00</updated>
<author>
<name>shamithoke</name>
<email>152091883+shamithoke@users.noreply.github.com</email>
</author>
<published>2024-04-10T19:22:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e3ef4612c18845876cda9a13c3435e102f74a3aa'/>
<id>e3ef4612c18845876cda9a13c3435e102f74a3aa</id>
<content type='text'>
Currently, the lowering operation for bitreverse using Intel AVX512 GFNI only supports byte vectors

Extend the operation to i32 and i64.

---------

Co-authored-by: shami &lt;shami_thoke@yahoo.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, the lowering operation for bitreverse using Intel AVX512 GFNI only supports byte vectors

Extend the operation to i32 and i64.

---------

Co-authored-by: shami &lt;shami_thoke@yahoo.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[X86] X86FixupVectorConstants - shrink vector load to movsd/movsd/movd/movq 'zero upper' instructions (#79000)</title>
<updated>2024-01-24T14:00:51+00:00</updated>
<author>
<name>Simon Pilgrim</name>
<email>RKSimon@users.noreply.github.com</email>
</author>
<published>2024-01-24T14:00:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8b43c1be23119c1024bed0a8ce392bc73727e2e2'/>
<id>8b43c1be23119c1024bed0a8ce392bc73727e2e2</id>
<content type='text'>
If we're loading a vector constant that is known to be zero in the upper elements, then attempt to shrink the constant and just scalar load the lower 32/64 bits.

Always chose the vzload/broadcast with the smallest constant load, and prefer vzload over broadcasts for same bitwidth to avoid domain flips (mainly a AVX1 issue).

Fixes #73783</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If we're loading a vector constant that is known to be zero in the upper elements, then attempt to shrink the constant and just scalar load the lower 32/64 bits.

Always chose the vzload/broadcast with the smallest constant load, and prefer vzload over broadcasts for same bitwidth to avoid domain flips (mainly a AVX1 issue).

Fixes #73783</pre>
</div>
</content>
</entry>
<entry>
<title>[MC][X86] Merge lane/element broadcast comment printers. (#79020)</title>
<updated>2024-01-23T12:33:52+00:00</updated>
<author>
<name>Simon Pilgrim</name>
<email>RKSimon@users.noreply.github.com</email>
</author>
<published>2024-01-23T12:33:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4318b033bddc64d5654f3e368fddde859ff4d02e'/>
<id>4318b033bddc64d5654f3e368fddde859ff4d02e</id>
<content type='text'>
This is /almost/ NFC - the only annoyance is that for some reason we were using "&lt;C1,C2,..&gt;" for ConstantVector types unlike all other cases - these now use the same "[C1,C2,..]" format as the other constant printers.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is /almost/ NFC - the only annoyance is that for some reason we were using "&lt;C1,C2,..&gt;" for ConstantVector types unlike all other cases - these now use the same "[C1,C2,..]" format as the other constant printers.</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[CodeGen] Really renumber slot indexes before register allocation (#67038)"</title>
<updated>2023-10-09T11:31:32+00:00</updated>
<author>
<name>Jay Foad</name>
<email>jay.foad@amd.com</email>
</author>
<published>2023-10-09T11:31:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7b3bbd83c0c24087072ec5b22a76799ab31f87d5'/>
<id>7b3bbd83c0c24087072ec5b22a76799ab31f87d5</id>
<content type='text'>
This reverts commit 2501ae58e3bb9a70d279a56d7b3a0ed70a8a852c.

Reverted due to various buildbot failures.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 2501ae58e3bb9a70d279a56d7b3a0ed70a8a852c.

Reverted due to various buildbot failures.
</pre>
</div>
</content>
</entry>
<entry>
<title>[CodeGen] Really renumber slot indexes before register allocation (#67038)</title>
<updated>2023-10-09T10:44:41+00:00</updated>
<author>
<name>Jay Foad</name>
<email>jay.foad@amd.com</email>
</author>
<published>2023-10-09T10:44:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2501ae58e3bb9a70d279a56d7b3a0ed70a8a852c'/>
<id>2501ae58e3bb9a70d279a56d7b3a0ed70a8a852c</id>
<content type='text'>
PR #66334 tried to renumber slot indexes before register allocation, but
the numbering was still affected by list entries for instructions which
had been erased. Fix this to make the register allocator's live range
length heuristics even less dependent on the history of how instructions
have been added to and removed from SlotIndexes's maps.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
PR #66334 tried to renumber slot indexes before register allocation, but
the numbering was still affected by list entries for instructions which
had been erased. Fix this to make the register allocator's live range
length heuristics even less dependent on the history of how instructions
have been added to and removed from SlotIndexes's maps.</pre>
</div>
</content>
</entry>
<entry>
<title>[CodeGen] Renumber slot indexes before register allocation (#66334)</title>
<updated>2023-09-19T10:18:12+00:00</updated>
<author>
<name>Jay Foad</name>
<email>jay.foad@amd.com</email>
</author>
<published>2023-09-13T19:22:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e0919b189bf2df4f97f22ba40260ab5153988b14'/>
<id>e0919b189bf2df4f97f22ba40260ab5153988b14</id>
<content type='text'>
RegAllocGreedy uses SlotIndexes::getApproxInstrDistance to approximate
the length of a live range for its heuristics. Renumbering all slot
indexes with the default instruction distance ensures that this estimate
will be as accurate as possible, and will not depend on the history of
how instructions have been added to and removed from SlotIndexes's maps.

This also means that enabling -early-live-intervals, which runs the
SlotIndexes analysis earlier, will not cause large amounts of churn due
to different register allocator decisions.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
RegAllocGreedy uses SlotIndexes::getApproxInstrDistance to approximate
the length of a live range for its heuristics. Renumbering all slot
indexes with the default instruction distance ensures that this estimate
will be as accurate as possible, and will not depend on the history of
how instructions have been added to and removed from SlotIndexes's maps.

This also means that enabling -early-live-intervals, which runs the
SlotIndexes analysis earlier, will not cause large amounts of churn due
to different register allocator decisions.
</pre>
</div>
</content>
</entry>
<entry>
<title>[X86] X86FixupVectorConstantsPass - attempt to replace full width fp vector constant loads with broadcasts on AVX+ targets (REAPPLIED)</title>
<updated>2023-06-13T11:10:11+00:00</updated>
<author>
<name>Simon Pilgrim</name>
<email>llvm-dev@redking.me.uk</email>
</author>
<published>2023-06-13T10:55:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=834cc88c5d08ca55664b7742590463de813d768f'/>
<id>834cc88c5d08ca55664b7742590463de813d768f</id>
<content type='text'>
lowerBuildVectorAsBroadcast will not broadcast splat constants in all cases, resulting in a lot of situations where a full width vector load that has failed to fold but is loading splat constant values could use a broadcast load instruction just as cheaply, and save constant pool space.

NOTE: SSE3 targets can use MOVDDUP but not all SSE era CPUs can perform this as cheaply as a vector load, we will need to add scheduler model checks if we want to pursue this.

This is an updated commit of 98061013e01207444cfd3980cde17b5e75764fbe after being reverted at a279a09ab9524d1d74ef29b34618102d4b202e2f
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
lowerBuildVectorAsBroadcast will not broadcast splat constants in all cases, resulting in a lot of situations where a full width vector load that has failed to fold but is loading splat constant values could use a broadcast load instruction just as cheaply, and save constant pool space.

NOTE: SSE3 targets can use MOVDDUP but not all SSE era CPUs can perform this as cheaply as a vector load, we will need to add scheduler model checks if we want to pursue this.

This is an updated commit of 98061013e01207444cfd3980cde17b5e75764fbe after being reverted at a279a09ab9524d1d74ef29b34618102d4b202e2f
</pre>
</div>
</content>
</entry>
</feed>
