<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp, branch users/chapuni/cov/single/loop</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>[AArch64][GlobalISel] Fix legalization for &lt;4 x i1&gt; vector stores.</title>
<updated>2025-01-06T18:22:48+00:00</updated>
<author>
<name>Amara Emerson</name>
<email>amara@apple.com</email>
</author>
<published>2025-01-06T18:22:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2d53eaff4aee73605170ce9910cde68fa7a300b2'/>
<id>2d53eaff4aee73605170ce9910cde68fa7a300b2</id>
<content type='text'>
This case is different from the earlier &lt;8 x i1&gt; case handled because it triggers
a legalization failure in lowerStore() that's intended for scalar code.

It also was triggering incorrect bitcast actions in the AArch64 rules that weren't
expecting truncating stores.

With these two fixed, more cases are handled. The code is still bad, including
some missing load promotion in our combiners that result in dead stores hanging
around at the end of codegen. Again, we can fix these in separate changes.

Reviewers: davemgreen, madhur13490, topperc, arsenm

Reviewed By: davemgreen

Pull Request: https://github.com/llvm/llvm-project/pull/121185
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This case is different from the earlier &lt;8 x i1&gt; case handled because it triggers
a legalization failure in lowerStore() that's intended for scalar code.

It also was triggering incorrect bitcast actions in the AArch64 rules that weren't
expecting truncating stores.

With these two fixed, more cases are handled. The code is still bad, including
some missing load promotion in our combiners that result in dead stores hanging
around at the end of codegen. Again, we can fix these in separate changes.

Reviewers: davemgreen, madhur13490, topperc, arsenm

Reviewed By: davemgreen

Pull Request: https://github.com/llvm/llvm-project/pull/121185
</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64][GlobalISel] Add support for lowering trunc stores of vector bools.</title>
<updated>2025-01-06T18:21:42+00:00</updated>
<author>
<name>Amara Emerson</name>
<email>amara@apple.com</email>
</author>
<published>2025-01-06T18:21:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6b0807fe2b8af7361f98f0f947a3129a6ab79f7e'/>
<id>6b0807fe2b8af7361f98f0f947a3129a6ab79f7e</id>
<content type='text'>
This is essentially a port of TargetLowering::scalarizeVectorStore(), which
is used for the case where we have something like a store of &lt;8 x s8&gt; truncating
to &lt;8 x s1&gt; in memory. The naive lowering is a sequence of extracts to compute
a scalar value to store.

AArch64's DAG implementation has some more smarts to improve this further which
we can do later.

Reviewers: topperc, davemgreen

Pull Request: https://github.com/llvm/llvm-project/pull/121169
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is essentially a port of TargetLowering::scalarizeVectorStore(), which
is used for the case where we have something like a store of &lt;8 x s8&gt; truncating
to &lt;8 x s1&gt; in memory. The naive lowering is a sequence of extracts to compute
a scalar value to store.

AArch64's DAG implementation has some more smarts to improve this further which
we can do later.

Reviewers: topperc, davemgreen

Pull Request: https://github.com/llvm/llvm-project/pull/121169
</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64][GlobalISel] Legalize vector boolean bitcasts to scalars by lowering via stack.</title>
<updated>2025-01-06T05:32:27+00:00</updated>
<author>
<name>Amara Emerson</name>
<email>amara@apple.com</email>
</author>
<published>2025-01-06T05:32:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=41ebbed280e9e4e8fa3b394486fad70d1af4c797'/>
<id>41ebbed280e9e4e8fa3b394486fad70d1af4c797</id>
<content type='text'>
Reviewers: davemgreen, topperc, arsenm

Reviewed By: arsenm

Pull Request: https://github.com/llvm/llvm-project/pull/121171
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reviewers: davemgreen, topperc, arsenm

Reviewed By: arsenm

Pull Request: https://github.com/llvm/llvm-project/pull/121171
</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64][GlobalISel] Add support for widening vector store elements to s8.</title>
<updated>2025-01-06T05:31:34+00:00</updated>
<author>
<name>Amara Emerson</name>
<email>amara@apple.com</email>
</author>
<published>2025-01-06T05:31:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7e3180a2c2ca2383688d4b8a74c99ce486dd8486'/>
<id>7e3180a2c2ca2383688d4b8a74c99ce486dd8486</id>
<content type='text'>
Reviewers: topperc, arsenm, davemgreen

Reviewed By: arsenm

Pull Request: https://github.com/llvm/llvm-project/pull/121170
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reviewers: topperc, arsenm, davemgreen

Reviewed By: arsenm

Pull Request: https://github.com/llvm/llvm-project/pull/121170
</pre>
</div>
</content>
</entry>
<entry>
<title>[GISel][RISCV] Use isSExtCheaperThanZExt when widening G_UMAX/G_UMIN. (#120041)</title>
<updated>2024-12-16T07:16:58+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2024-12-16T07:16:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=54dac27c57d05d3f5c33bd4ec878bcb0a9c7cb71'/>
<id>54dac27c57d05d3f5c33bd4ec878bcb0a9c7cb71</id>
<content type='text'>
Similar to what we do for unsigned comparisons after #120032.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Similar to what we do for unsigned comparisons after #120032.</pre>
</div>
</content>
</entry>
<entry>
<title>[GISel][RISCV] Use isSExtCheaperThanZExt when widening G_ICMP. (#120032)</title>
<updated>2024-12-16T06:55:58+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2024-12-16T06:55:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=115872902b9b056d42e24273f93a2be7c93d2f54'/>
<id>115872902b9b056d42e24273f93a2be7c93d2f54</id>
<content type='text'>
Sign extending i32-&gt;i64 is more efficient than zero extend for RV64.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Sign extending i32-&gt;i64 is more efficient than zero extend for RV64.</pre>
</div>
</content>
</entry>
<entry>
<title>[GISel][RISCV][AArch64] Support legalizing G_SCMP/G_UCMP to sub(isgt,islt). (#119265)</title>
<updated>2024-12-16T04:47:17+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2024-12-16T04:47:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=de1a423c2356d2040cab74e657ed024bf9ce8517'/>
<id>de1a423c2356d2040cab74e657ed024bf9ce8517</id>
<content type='text'>
Convert the LLT to EVT and call
TargetLowering::shouldExpandCmpUsingSelects to determine if we should do
this.

We don't have a getSetccResultType, so I'm boolean extending the
compares to the result type and using that. If the compares legalize to
the same type, these extends will get removed. Unfortunately, if the
compares legalize to a different type, we end up with truncates or
extends that might not be optimally placed.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Convert the LLT to EVT and call
TargetLowering::shouldExpandCmpUsingSelects to determine if we should do
this.

We don't have a getSetccResultType, so I'm boolean extending the
compares to the result type and using that. If the compares legalize to
the same type, these extends will get removed. Unfortunately, if the
compares legalize to a different type, we end up with truncates or
extends that might not be optimally placed.</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64][GlobalISel] Scalarize i128 shufflevector instructions. (#119980)</title>
<updated>2024-12-15T10:44:40+00:00</updated>
<author>
<name>David Green</name>
<email>david.green@arm.com</email>
</author>
<published>2024-12-15T10:44:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4c8c1308479166d00b4e1d74ceee7cf0abfe6e72'/>
<id>4c8c1308479166d00b4e1d74ceee7cf0abfe6e72</id>
<content type='text'>
This, like other operations, scalarizes shuffle vector operations with
types larger than 64bits. ImplicitDef and Freeze are also handled the
same way, to allow them to legalize. The legalization of
fewerElementsVectorShuffle is adjusted to handled scalarization.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This, like other operations, scalarizes shuffle vector operations with
types larger than 64bits. ImplicitDef and Freeze are also handled the
same way, to allow them to legalize. The legalization of
fewerElementsVectorShuffle is adjusted to handled scalarization.</pre>
</div>
</content>
</entry>
<entry>
<title>[GISel] Support narrowing G_ICMP with more than 2 parts. (#119335)</title>
<updated>2024-12-12T17:50:26+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2024-12-12T17:50:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7ece560a50d09686bb384b309b8b05d8f63111e5'/>
<id>7ece560a50d09686bb384b309b8b05d8f63111e5</id>
<content type='text'>
This allows us to support i128 G_ICMP on RV32. I'm not sure how to test
the "left over" part of this as RISC-V always widens to a power of 2
before narrowing.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This allows us to support i128 G_ICMP on RV32. I'm not sure how to test
the "left over" part of this as RISC-V always widens to a power of 2
before narrowing.</pre>
</div>
</content>
</entry>
<entry>
<title>[GlobalISel][NFC] Fix LLT Propagation (#119587)</title>
<updated>2024-12-12T17:47:46+00:00</updated>
<author>
<name>Tim Gymnich</name>
<email>tim@gymni.ch</email>
</author>
<published>2024-12-12T17:47:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2db2dc8ab917de54a085776b874e93f4fdfd2e8c'/>
<id>2db2dc8ab917de54a085776b874e93f4fdfd2e8c</id>
<content type='text'>
Retain LLT type information by creating new LLTs from the original LLT
instead of only using the original scalar size.

This PR prepares for the [LLT FPInfo
RFC](https://discourse.llvm.org/t/rfc-globalisel-adding-fp-type-information-to-llt/83349/24)
where LLTs will carry additional floating point type information in
addition to the scalar size.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Retain LLT type information by creating new LLTs from the original LLT
instead of only using the original scalar size.

This PR prepares for the [LLT FPInfo
RFC](https://discourse.llvm.org/t/rfc-globalisel-adding-fp-type-information-to-llt/83349/24)
where LLTs will carry additional floating point type information in
addition to the scalar size.</pre>
</div>
</content>
</entry>
</feed>
