<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/CodeGen/SelectionDAG/SelectionDAGAddressAnalysis.cpp, 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>[AMDGPU][SDAG] Handle ISD::PTRADD in SelectionDAGAddressAnalysis (#142778)</title>
<updated>2025-06-26T07:47:46+00:00</updated>
<author>
<name>Fabian Ritter</name>
<email>fabian.ritter@amd.com</email>
</author>
<published>2025-06-26T07:47:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c225d6dee01175855de12d358e74734e0c328d7b'/>
<id>c225d6dee01175855de12d358e74734e0c328d7b</id>
<content type='text'>
This is used in a bunch of memory-related transforms.

For SWDEV-516125.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is used in a bunch of memory-related transforms.

For SWDEV-516125.</pre>
</div>
</content>
</entry>
<entry>
<title>[CodeGen] Update for scalable MemoryType in MMO (#70452)</title>
<updated>2024-03-23T12:56:25+00:00</updated>
<author>
<name>Harvin Iriawan</name>
<email>25712785+harviniriawan@users.noreply.github.com</email>
</author>
<published>2024-03-23T12:56:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=57146daeaaf366050dc913db910fcc2995a3e06d'/>
<id>57146daeaaf366050dc913db910fcc2995a3e06d</id>
<content type='text'>
Remove getSizeOrUnknown call when MachineMemOperand is created.  For Scalable
TypeSize, the MemoryType created becomes a scalable_vector.

2 MMOs that have scalable memory access can then use the updated BasicAA that
understands scalable LocationSize.

Original Patch by Harvin Iriawan
Co-authored-by: David Green &lt;david.green@arm.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove getSizeOrUnknown call when MachineMemOperand is created.  For Scalable
TypeSize, the MemoryType created becomes a scalable_vector.

2 MMOs that have scalable memory access can then use the updated BasicAA that
understands scalable LocationSize.

Original Patch by Harvin Iriawan
Co-authored-by: David Green &lt;david.green@arm.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[SelectionDAG] Change computeAliasing signature from optional&lt;uint64&gt; to LocationSize. (#83017)</title>
<updated>2024-02-28T09:43:05+00:00</updated>
<author>
<name>David Green</name>
<email>david.green@arm.com</email>
</author>
<published>2024-02-28T09:43:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6e41d60a717132fadac74abe61ac6a9b1ca98778'/>
<id>6e41d60a717132fadac74abe61ac6a9b1ca98778</id>
<content type='text'>
This is another smaller step of #70452, changing the signature of
computeAliasing() from optional&lt;uint64_t&gt; to LocationSize, and follow-up
changes in DAGCombiner::mayAlias(). There are some test change due to
the previous AA-&gt;isNoAlias call incorrectly using an unknown size
(~UINT64_T(0)). This should then be improved again in #70452 when the
types are known to be scalable.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is another smaller step of #70452, changing the signature of
computeAliasing() from optional&lt;uint64_t&gt; to LocationSize, and follow-up
changes in DAGCombiner::mayAlias(). There are some test change due to
the previous AA-&gt;isNoAlias call incorrectly using an unknown size
(~UINT64_T(0)). This should then be improved again in #70452 when the
types are known to be scalable.</pre>
</div>
</content>
</entry>
<entry>
<title>[DAG] BaseIndexOffset::equalBaseIndex - early out on failed matches. NFCI.</title>
<updated>2024-01-04T10:50:43+00:00</updated>
<author>
<name>Simon Pilgrim</name>
<email>llvm-dev@redking.me.uk</email>
</author>
<published>2024-01-04T10:50:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5b38ecff6e9d7ef84ba8fd9b1b1e4c9b229dbdb5'/>
<id>5b38ecff6e9d7ef84ba8fd9b1b1e4c9b229dbdb5</id>
<content type='text'>
If we successfully cast only the first base node as GlobalAddressSDNode / ConstantPoolSDNode / FrameIndexSDNode then we can early out as we know that base won't cast as a later type.

Noticed while investigating profiles for potential compile time improvements.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If we successfully cast only the first base node as GlobalAddressSDNode / ConstantPoolSDNode / FrameIndexSDNode then we can early out as we know that base won't cast as a later type.

Noticed while investigating profiles for potential compile time improvements.
</pre>
</div>
</content>
</entry>
<entry>
<title>[DAG] BaseIndexOffset::computeAliasing - early out on failed matches. NFCI.</title>
<updated>2024-01-04T10:50:42+00:00</updated>
<author>
<name>Simon Pilgrim</name>
<email>llvm-dev@redking.me.uk</email>
</author>
<published>2024-01-03T17:24:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=43e0723899e909cb2502b34da2003a5774ffb394'/>
<id>43e0723899e909cb2502b34da2003a5774ffb394</id>
<content type='text'>
Don't wait to test that all base ptr matches have succeeded
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Don't wait to test that all base ptr matches have succeeded
</pre>
</div>
</content>
</entry>
<entry>
<title>[X86] Fix aliasing check between TargetFrameIndex and FrameIndex</title>
<updated>2023-08-17T09:48:08+00:00</updated>
<author>
<name>Nabeel Omer</name>
<email>Nabeel.Omer@sony.com</email>
</author>
<published>2023-08-17T09:43:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d06608060c8f9d315f98314372110b7b3473f1b3'/>
<id>d06608060c8f9d315f98314372110b7b3473f1b3</id>
<content type='text'>
Compare slot indices instead of comparing pointer values.

Closes #63645

Differential Revision: https://reviews.llvm.org/D157513
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Compare slot indices instead of comparing pointer values.

Closes #63645

Differential Revision: https://reviews.llvm.org/D157513
</pre>
</div>
</content>
</entry>
<entry>
<title>[CodeGen] llvm::Optional =&gt; std::optional</title>
<updated>2022-12-13T09:06:36+00:00</updated>
<author>
<name>Fangrui Song</name>
<email>i@maskray.me</email>
</author>
<published>2022-12-13T09:06:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=67819a72c6ba39267effe8edfc1befddc3f3f2f9'/>
<id>67819a72c6ba39267effe8edfc1befddc3f3f2f9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm] Don't use Optional::hasValue (NFC)</title>
<updated>2022-06-20T17:38:12+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2022-06-20T17:38:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e0e687a615c1fdb6ba034fc2e48b0834a372706f'/>
<id>e0e687a615c1fdb6ba034fc2e48b0834a372706f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[SelectionDAG] Replace error prone index check in BaseIndexOffset::computeAliasing</title>
<updated>2021-10-05T10:15:55+00:00</updated>
<author>
<name>Bjorn Pettersson</name>
<email>bjorn.a.pettersson@ericsson.com</email>
</author>
<published>2021-09-20T09:32:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8ed0e6b2cf941aa29628acdf718e82618d60bfc0'/>
<id>8ed0e6b2cf941aa29628acdf718e82618d60bfc0</id>
<content type='text'>
Deriving NoAlias based on having the same index in two BaseIndexOffset
expressions seemed weird (and as shown in the added unittest the
correctness of doing so depended on undocumented pre-conditions that
the user of BaseIndexOffset::computeAliasing would need to take care
of.

This patch removes the code that dereived NoAlias based on indices
being the same. As a compensation, to avoid regressions/diffs in
various lit test, we also add a new check. The new check derives
NoAlias in case the two base pointers are based on two different
GlobalValue:s (neither of them being a GlobalAlias).

Reviewed By: niravd

Differential Revision: https://reviews.llvm.org/D110256
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Deriving NoAlias based on having the same index in two BaseIndexOffset
expressions seemed weird (and as shown in the added unittest the
correctness of doing so depended on undocumented pre-conditions that
the user of BaseIndexOffset::computeAliasing would need to take care
of.

This patch removes the code that dereived NoAlias based on indices
being the same. As a compensation, to avoid regressions/diffs in
various lit test, we also add a new check. The new check derives
NoAlias in case the two base pointers are based on two different
GlobalValue:s (neither of them being a GlobalAlias).

Reviewed By: niravd

Differential Revision: https://reviews.llvm.org/D110256
</pre>
</div>
</content>
</entry>
<entry>
<title>[SelectionDAG] Assume that a GlobalAlias may alias other global values</title>
<updated>2021-10-05T10:15:55+00:00</updated>
<author>
<name>Bjorn Pettersson</name>
<email>bjorn.a.pettersson@ericsson.com</email>
</author>
<published>2021-09-20T08:29:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=1896fb2cfffcf120eb28cefb67ac3d56035adc43'/>
<id>1896fb2cfffcf120eb28cefb67ac3d56035adc43</id>
<content type='text'>
This fixes a bug detected in DAGCombiner when using global alias
variables. Here is an example:
  @foo = global i16 0, align 1
  @aliasFoo = alias i16, i16 * @foo
  define i16 @bar() {
    ...
    store i16 7, i16 * @foo, align 1
    store i16 8, i16 * @aliasFoo, align 1
    ...
  }

BaseIndexOffset::computeAliasing would incorrectly derive NoAlias
for the two accesses in the example above, resulting in DAGCombiner
miscompiles.

This patch fixes the problem by a defensive approach letting
BaseIndexOffset::computeAliasing return false, i.e. that the aliasing
couldn't be determined, when comparing two global values and at least
one is a GlobalAlias. In the future we might improve this with a
deeper analysis to look at the aliasee for the GlobalAlias etc. But
that is a bit more complicated considering that we could have
'local_unnamed_addr' and situations with several 'alias' variables.

Fixes PR51878.

Differential Revision: https://reviews.llvm.org/D110064
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes a bug detected in DAGCombiner when using global alias
variables. Here is an example:
  @foo = global i16 0, align 1
  @aliasFoo = alias i16, i16 * @foo
  define i16 @bar() {
    ...
    store i16 7, i16 * @foo, align 1
    store i16 8, i16 * @aliasFoo, align 1
    ...
  }

BaseIndexOffset::computeAliasing would incorrectly derive NoAlias
for the two accesses in the example above, resulting in DAGCombiner
miscompiles.

This patch fixes the problem by a defensive approach letting
BaseIndexOffset::computeAliasing return false, i.e. that the aliasing
couldn't be determined, when comparing two global values and at least
one is a GlobalAlias. In the future we might improve this with a
deeper analysis to look at the aliasee for the GlobalAlias etc. But
that is a bit more complicated considering that we could have
'local_unnamed_addr' and situations with several 'alias' variables.

Fixes PR51878.

Differential Revision: https://reviews.llvm.org/D110064
</pre>
</div>
</content>
</entry>
</feed>
