<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Analysis/TargetTransformInfo.cpp, branch users/shawbyoung/spr/main.boltnfc-refactoring-callgraph</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][CodeGen] Support hoisting load/store with conditional faulting (#96720)</title>
<updated>2024-06-27T09:01:55+00:00</updated>
<author>
<name>Shengchen Kan</name>
<email>shengchen.kan@intel.com</email>
</author>
<published>2024-06-27T09:01:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=15fc801cf0ca7a4d09fe52546394efa51414047a'/>
<id>15fc801cf0ca7a4d09fe52546394efa51414047a</id>
<content type='text'>
1. Add TTI interface for conditional load/store.
2. Mark 1 x i16/i32/i64 masked load/store legal so that it's not
   legalized in pass scalarize-masked-mem-intrin.
3. Visit 1 x i16/i32/i64 masked load/store to build a target-specific
   CLOAD/CSTORE node to avoid error in
   `DAGTypeLegalizer::ScalarizeVectorResult`.
4. Combine DAG to simplify the nodes for CLOAD/CSTORE.
5. Lower CLOAD/CSTORE to CFCMOV by pattern match.

This is CodeGen part of #95515</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
1. Add TTI interface for conditional load/store.
2. Mark 1 x i16/i32/i64 masked load/store legal so that it's not
   legalized in pass scalarize-masked-mem-intrin.
3. Visit 1 x i16/i32/i64 masked load/store to build a target-specific
   CLOAD/CSTORE node to avoid error in
   `DAGTypeLegalizer::ScalarizeVectorResult`.
4. Combine DAG to simplify the nodes for CLOAD/CSTORE.
5. Lower CLOAD/CSTORE to CFCMOV by pattern match.

This is CodeGen part of #95515</pre>
</div>
</content>
</entry>
<entry>
<title>[Analysis] Use range-based for loops (NFC) (#96587)</title>
<updated>2024-06-25T13:57:30+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2024-06-25T13:57:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=1462605ab0a121fc2f652f178c7c13dc0179f10e'/>
<id>1462605ab0a121fc2f652f178c7c13dc0179f10e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[LSR] Provide TTI hook to enable dropping solutions deemed to be unprofitable (#89924)</title>
<updated>2024-06-05T12:40:58+00:00</updated>
<author>
<name>Alex Bradbury</name>
<email>asb@igalia.com</email>
</author>
<published>2024-06-05T12:40:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5a201415392bcd0e0b22d13e9aaae03ccf3043e6'/>
<id>5a201415392bcd0e0b22d13e9aaae03ccf3043e6</id>
<content type='text'>
&lt;https://reviews.llvm.org/D126043&gt; introduced a flag to drop solutions
if deemed unprofitable. As noted there, introducing a TTI hook enables
backends to individually opt into this behaviour.

This will be used by #89927.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
&lt;https://reviews.llvm.org/D126043&gt; introduced a flag to drop solutions
if deemed unprofitable. As noted there, introducing a TTI hook enables
backends to individually opt into this behaviour.

This will be used by #89927.</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC][TTI] Mark `getReplicationShuffleCost()` as `const` (#92194)</title>
<updated>2024-05-22T16:44:10+00:00</updated>
<author>
<name>Tyler Lanphear</name>
<email>tylanphear@gmail.com</email>
</author>
<published>2024-05-22T16:44:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e8dd4df72bb5f63a235359d46d7825fe46761ed2'/>
<id>e8dd4df72bb5f63a235359d46d7825fe46761ed2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64] Add an all-in-one histogram intrinsic</title>
<updated>2024-05-13T10:35:28+00:00</updated>
<author>
<name>Graham Hunter</name>
<email>graham.hunter@arm.com</email>
</author>
<published>2024-05-13T10:35:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=fbb37e960616efcf7cd5c1ebbe95f75c65d565dc'/>
<id>fbb37e960616efcf7cd5c1ebbe95f75c65d565dc</id>
<content type='text'>
Based on discussion from
https://discourse.llvm.org/t/rfc-vectorization-support-for-histogram-count-operations/74788

Current interface is:

llvm.experimental.histogram(&lt;vecty&gt; ptrs, &lt;intty&gt; inc_amount, &lt;vecty&gt; mask)

The integer type used by 'inc_amount' needs to match the type of the buckets in memory.

The intrinsic covers the following operations:
  * Gather load
  * histogram on the elements of 'ptrs'
  * multiply the histogram results by 'inc_amount'
  * add the result of the multiply to the values loaded by the gather
  * scatter store the results of the add

Supports lowering to histcnt instructions for AArch64 targets, and scalarization for all others at present.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Based on discussion from
https://discourse.llvm.org/t/rfc-vectorization-support-for-histogram-count-operations/74788

Current interface is:

llvm.experimental.histogram(&lt;vecty&gt; ptrs, &lt;intty&gt; inc_amount, &lt;vecty&gt; mask)

The integer type used by 'inc_amount' needs to match the type of the buckets in memory.

The intrinsic covers the following operations:
  * Gather load
  * histogram on the elements of 'ptrs'
  * multiply the histogram results by 'inc_amount'
  * add the result of the multiply to the values loaded by the gather
  * scatter store the results of the add

Supports lowering to histcnt instructions for AArch64 targets, and scalarization for all others at present.</pre>
</div>
</content>
</entry>
<entry>
<title>[TTI] Support scalable offsets in getScalingFactorCost (#88113)</title>
<updated>2024-05-10T10:22:11+00:00</updated>
<author>
<name>Graham Hunter</name>
<email>graham.hunter@arm.com</email>
</author>
<published>2024-05-10T10:22:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2e8d8155969f90b8f17634ce9a8e4541fb21dbab'/>
<id>2e8d8155969f90b8f17634ce9a8e4541fb21dbab</id>
<content type='text'>
Part of the work to support vscale-relative immediates in LSR.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Part of the work to support vscale-relative immediates in LSR.</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64] Add costs for ST3 and ST4 instructions, modelled as store(shuffle). (#87934)</title>
<updated>2024-04-09T15:36:08+00:00</updated>
<author>
<name>David Green</name>
<email>david.green@arm.com</email>
</author>
<published>2024-04-09T15:36:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4ac2721e51131b3a160fee5ae0fcbd695d090e86'/>
<id>4ac2721e51131b3a160fee5ae0fcbd695d090e86</id>
<content type='text'>
This tries to add some costs for the shuffle in a ST3/ST4 instruction,
which are represented in LLVM IR as store(interleaving shuffle). In
order to detect the store, it needs to add a CxtI context instruction to
check the users of the shuffle. LD3 and LD4 are added, LD2 should be a
zip1 shuffle, which will be added in another patch.

It should help fix some of the regressions from #87510.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This tries to add some costs for the shuffle in a ST3/ST4 instruction,
which are represented in LLVM IR as store(interleaving shuffle). In
order to detect the store, it needs to add a CxtI context instruction to
check the users of the shuffle. LD3 and LD4 are added, LD2 should be a
zip1 shuffle, which will be added in another patch.

It should help fix some of the regressions from #87510.</pre>
</div>
</content>
</entry>
<entry>
<title>[TTI][TLI][AArch64] Support scalable immediates with isLegalAddImmediate (#84173)</title>
<updated>2024-03-20T10:28:46+00:00</updated>
<author>
<name>Graham Hunter</name>
<email>graham.hunter@arm.com</email>
</author>
<published>2024-03-20T10:28:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=36a3f8f6471ba04b7ebf32a3393708b8fb32aecf'/>
<id>36a3f8f6471ba04b7ebf32a3393708b8fb32aecf</id>
<content type='text'>
Adds a second parameter (default to 0) to isLegalAddImmediate, to
represent a scalable immediate.

Extends the AArch64 implementation to match immediates based on what addvl and inc[h|w|d] support.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adds a second parameter (default to 0) to isLegalAddImmediate, to
represent a scalable immediate.

Extends the AArch64 implementation to match immediates based on what addvl and inc[h|w|d] support.</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64] Support scalable offsets with isLegalAddressingMode (#83255)</title>
<updated>2024-03-20T10:13:20+00:00</updated>
<author>
<name>Graham Hunter</name>
<email>graham.hunter@arm.com</email>
</author>
<published>2024-03-20T10:13:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=cd768ec9837afed4d226a5abc8035a1559c18bc5'/>
<id>cd768ec9837afed4d226a5abc8035a1559c18bc5</id>
<content type='text'>
Allows us to indicate that an addressing mode featuring a
vscale-relative immediate offset is supported.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Allows us to indicate that an addressing mode featuring a
vscale-relative immediate offset is supported.</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64][LV][SLP] Vectorizers use call cost for vectorized frem  (#82488)</title>
<updated>2024-03-14T17:20:29+00:00</updated>
<author>
<name>Paschalis Mpeis</name>
<email>paschalis.mpeis@arm.com</email>
</author>
<published>2024-03-14T17:20:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f795d1a8b1d1e51d2bc815d5bbed8099b37da0b7'/>
<id>f795d1a8b1d1e51d2bc815d5bbed8099b37da0b7</id>
<content type='text'>
getArithmeticInstrCost is used by both LoopVectorizer and SLPVectorizer
to compute the cost of frem, which becomes a call cost on AArch64 when
TLI has a vector library function.

Add tests that do SLP vectorization for code that contains 2x double and
4x float frem instructions.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
getArithmeticInstrCost is used by both LoopVectorizer and SLPVectorizer
to compute the cost of frem, which becomes a call cost on AArch64 when
TLI has a vector library function.

Add tests that do SLP vectorization for code that contains 2x double and
4x float frem instructions.</pre>
</div>
</content>
</entry>
</feed>
