<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp, branch users/vitalybuka/spr/main.analysis-exclude-llvmallowruntimeubsancheck-from-aliassettracker</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>[Intrinsics] Make `patchpoint.i64` generic on its return type (#85911)</title>
<updated>2024-03-26T13:38:52+00:00</updated>
<author>
<name>Il-Capitano</name>
<email>52455591+Il-Capitano@users.noreply.github.com</email>
</author>
<published>2024-03-26T13:38:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=308ed0233a3da5b3a7d646808c6470ac30870603'/>
<id>308ed0233a3da5b3a7d646808c6470ac30870603</id>
<content type='text'>
Currently patchpoints can only have two result types, `void` and `i64`.
This limits the result to general purpose registers.
This patch makes `patchpoint.i64` an overloadable intrinsic, allowing
result values that can fit in a single register (e.g. integers,
pointers, floats).</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently patchpoints can only have two result types, `void` and `i64`.
This limits the result to general purpose registers.
This patch makes `patchpoint.i64` an overloadable intrinsic, allowing
result values that can fit in a single register (e.g. integers,
pointers, floats).</pre>
</div>
</content>
</entry>
<entry>
<title>[SystemZ] Provide improved cost estimates (#83873)</title>
<updated>2024-03-11T09:40:59+00:00</updated>
<author>
<name>Dominik Steenken</name>
<email>dost@de.ibm.com</email>
</author>
<published>2024-03-11T09:40:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=718962f53bfc610f670f1674457a426e01117097'/>
<id>718962f53bfc610f670f1674457a426e01117097</id>
<content type='text'>
This commit provides better cost estimates for
the llvm.vector.reduce.add intrinsic on SystemZ. These apply to all
vector lengths and integer types up to i128. For integer types larger
than i128, we fall back to the default cost estimate.

This has the effect of lowering the estimated costs of most common
instances of the intrinsic. The expected performance impact of this is
minimal with a tendency to slightly improve performance of some
benchmarks.

This commit also provides a test to check the proper computation of the
new estimates, as well as the fallback for types larger than i128.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This commit provides better cost estimates for
the llvm.vector.reduce.add intrinsic on SystemZ. These apply to all
vector lengths and integer types up to i128. For integer types larger
than i128, we fall back to the default cost estimate.

This has the effect of lowering the estimated costs of most common
instances of the intrinsic. The expected performance impact of this is
minimal with a tendency to slightly improve performance of some
benchmarks.

This commit also provides a test to check the proper computation of the
new estimates, as well as the fallback for types larger than i128.</pre>
</div>
</content>
</entry>
<entry>
<title>[SystemZ] i128 cost model (#78528)</title>
<updated>2024-01-18T17:23:57+00:00</updated>
<author>
<name>Jonas Paulsson</name>
<email>paulson1@linux.ibm.com</email>
</author>
<published>2024-01-18T17:23:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=964565f42eb8f06dc8610b44d56b432a8c2cb50b'/>
<id>964565f42eb8f06dc8610b44d56b432a8c2cb50b</id>
<content type='text'>
Update SystemZTTI to reflect the recent change of handling i128 as a
legal type in vector registers.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Update SystemZTTI to reflect the recent change of handling i128 as a
legal type in vector registers.</pre>
</div>
</content>
</entry>
<entry>
<title>[SystemZ] Don't assert for i128 vectors in getInterleavedMemoryOpCost() (#78009)</title>
<updated>2024-01-15T16:31:18+00:00</updated>
<author>
<name>Jonas Paulsson</name>
<email>paulson1@linux.ibm.com</email>
</author>
<published>2024-01-15T16:31:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=62b7e35f10f9b1676dde2efeccb95b623cbb4d29'/>
<id>62b7e35f10f9b1676dde2efeccb95b623cbb4d29</id>
<content type='text'>
This assert does not seem justified given that the LoopVectorizer can
form interleave groups containing i128 elements where the number of
elements per vector is indeed just one.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This assert does not seem justified given that the LoopVectorizer can
form interleave groups containing i128 elements where the number of
elements per vector is indeed just one.
</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm][TypeSize] Fix addition/subtraction in TypeSize. (#72979)</title>
<updated>2023-11-22T08:52:53+00:00</updated>
<author>
<name>Sander de Smalen</name>
<email>sander.desmalen@arm.com</email>
</author>
<published>2023-11-22T08:52:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=81b7f115fb272ef6fd6967f4121b64814b4bcf10'/>
<id>81b7f115fb272ef6fd6967f4121b64814b4bcf10</id>
<content type='text'>
It seems TypeSize is currently broken in the sense that:

  TypeSize::Fixed(4) + TypeSize::Scalable(4) =&gt; TypeSize::Fixed(8)

without failing its assert that explicitly tests for this case:

  assert(LHS.Scalable == RHS.Scalable &amp;&amp; ...);

The reason this fails is that `Scalable` is a static method of class
TypeSize,
and LHS and RHS are both objects of class TypeSize. So this is
evaluating
if the pointer to the function Scalable == the pointer to the function
Scalable,
which is always true because LHS and RHS have the same class.

This patch fixes the issue by renaming `TypeSize::Scalable` -&gt;
`TypeSize::getScalable`, as well as `TypeSize::Fixed` to
`TypeSize::getFixed`,
so that it no longer clashes with the variable in
FixedOrScalableQuantity.

The new methods now also better match the coding standard, which
specifies that:
* Variable names should be nouns (as they represent state)
* Function names should be verb phrases (as they represent actions)</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It seems TypeSize is currently broken in the sense that:

  TypeSize::Fixed(4) + TypeSize::Scalable(4) =&gt; TypeSize::Fixed(8)

without failing its assert that explicitly tests for this case:

  assert(LHS.Scalable == RHS.Scalable &amp;&amp; ...);

The reason this fails is that `Scalable` is a static method of class
TypeSize,
and LHS and RHS are both objects of class TypeSize. So this is
evaluating
if the pointer to the function Scalable == the pointer to the function
Scalable,
which is always true because LHS and RHS have the same class.

This patch fixes the issue by renaming `TypeSize::Scalable` -&gt;
`TypeSize::getScalable`, as well as `TypeSize::Fixed` to
`TypeSize::getFixed`,
so that it no longer clashes with the variable in
FixedOrScalableQuantity.

The new methods now also better match the coding standard, which
specifies that:
* Variable names should be nouns (as they represent state)
* Function names should be verb phrases (as they represent actions)</pre>
</div>
</content>
</entry>
<entry>
<title>Replace TypeSize::{getFixed,getScalable} with canonical TypeSize::{Fixed,Scalable}. NFC</title>
<updated>2023-10-27T07:30:41+00:00</updated>
<author>
<name>Fangrui Song</name>
<email>i@maskray.me</email>
</author>
<published>2023-10-27T07:30:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8e247b8f4734b1b829156794bb2d9bf8c9c0e72a'/>
<id>8e247b8f4734b1b829156794bb2d9bf8c9c0e72a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[TTI]Add InsertSubvector pattern in improveShuffleKindFromMask().</title>
<updated>2023-08-18T20:47:01+00:00</updated>
<author>
<name>Alexey Bataev</name>
<email>a.bataev@outlook.com</email>
</author>
<published>2023-08-08T16:57:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9a207578ac4f9f4fedbee6dc47bc6e2226104fc1'/>
<id>9a207578ac4f9f4fedbee6dc47bc6e2226104fc1</id>
<content type='text'>
It improves shuffle instructions estimation and improves vectorization
outcome.

Differential Revision: https://reviews.llvm.org/D157425
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It improves shuffle instructions estimation and improves vectorization
outcome.

Differential Revision: https://reviews.llvm.org/D157425
</pre>
</div>
</content>
</entry>
<entry>
<title>[SystemZ] Avoid type legalization on structs</title>
<updated>2023-08-08T00:52:15+00:00</updated>
<author>
<name>Josh Stone</name>
<email>jistone@redhat.com</email>
</author>
<published>2023-07-26T22:00:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=85e4ee15d32ae0344755d11d4ca90a15a6e005cd'/>
<id>85e4ee15d32ae0344755d11d4ca90a15a6e005cd</id>
<content type='text'>
In SystemZTTIImpl::getMemoryOpCost, the call to getNumberOfParts will
run type legalization, which can't handle structs. So before that, we
check for an unknown value type and forward to BaseT, just like many
other targets do in this situation.

https://bugzilla.redhat.com/show_bug.cgi?id=2224885

Reviewed By: uweigand

Differential Revision: https://reviews.llvm.org/D156379
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In SystemZTTIImpl::getMemoryOpCost, the call to getNumberOfParts will
run type legalization, which can't handle structs. So before that, we
check for an unknown value type and forward to BaseT, just like many
other targets do in this situation.

https://bugzilla.redhat.com/show_bug.cgi?id=2224885

Reviewed By: uweigand

Differential Revision: https://reviews.llvm.org/D156379
</pre>
</div>
</content>
</entry>
<entry>
<title>[Cost] Add CostKind to getVectorInstrCost and its related users</title>
<updated>2023-01-21T13:29:24+00:00</updated>
<author>
<name>ShihPo Hung</name>
<email>shihpo.hung@sifive.com</email>
</author>
<published>2023-01-21T13:29:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5fb3a57ea759fb60c064c084ec9e607fd63dcd75'/>
<id>5fb3a57ea759fb60c064c084ec9e607fd63dcd75</id>
<content type='text'>
LoopUnroll estimates the loop size via getInstructionCost(),
but getInstructionCost() cannot pass CostKind to getVectorInstrCost().
And so does getShuffleCost() to getBroadcastShuffleOverhead(),
getPermuteShuffleOverhead(), getExtractSubvectorOverhead(),
and getInsertSubvectorOverhead().

To address this, this patch adds an argument CostKind to these
functions.

Reviewed By: RKSimon

Differential Revision: https://reviews.llvm.org/D142116
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
LoopUnroll estimates the loop size via getInstructionCost(),
but getInstructionCost() cannot pass CostKind to getVectorInstrCost().
And so does getShuffleCost() to getBroadcastShuffleOverhead(),
getPermuteShuffleOverhead(), getExtractSubvectorOverhead(),
and getInsertSubvectorOverhead().

To address this, this patch adds an argument CostKind to these
functions.

Reviewed By: RKSimon

Differential Revision: https://reviews.llvm.org/D142116
</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC] Use TypeSize::geFixedValue() instead of TypeSize::getFixedSize()</title>
<updated>2023-01-11T16:49:38+00:00</updated>
<author>
<name>Guillaume Chatelet</name>
<email>gchatelet@google.com</email>
</author>
<published>2023-01-11T16:48:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8fd5558b29761aec91143129cb23c90581a944e9'/>
<id>8fd5558b29761aec91143129cb23c90581a944e9</id>
<content type='text'>
This change is one of a series to implement the discussion from
https://reviews.llvm.org/D141134.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change is one of a series to implement the discussion from
https://reviews.llvm.org/D141134.
</pre>
</div>
</content>
</entry>
</feed>
