<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/utils/TableGen/CompressInstEmitter.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>[TableGen] More generically handle tied source operands in CompressInstEmitter. (#146183)</title>
<updated>2025-07-02T20:09:35+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-07-02T20:09:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6ff3b43700175dbff8f2e4b63c6f27835418e20c'/>
<id>6ff3b43700175dbff8f2e4b63c6f27835418e20c</id>
<content type='text'>
Move the creation of OperandMap from createDagOperandMapping to the loop
in addDagOperandMapping. Expand it to store the DAG operand number and
the MI operand number which will be different when there are tied
operands.

Rename createDagOperandMapping to checkDagOperandMapping to better
describe the remaining code.

I didn't lift the restriction that a source instruction can only have
one tied operand, but we should be able to if we have a use case.

There's a slight difference in the generate output. We now check that
operand 0 and 2 of QC_MVEQI are equal instead of operand 1 and 2. This
should be equivalent since operand 0 and 1 have a tied constraint.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Move the creation of OperandMap from createDagOperandMapping to the loop
in addDagOperandMapping. Expand it to store the DAG operand number and
the MI operand number which will be different when there are tied
operands.

Rename createDagOperandMapping to checkDagOperandMapping to better
describe the remaining code.

I didn't lift the restriction that a source instruction can only have
one tied operand, but we should be able to if we have a use case.

There's a slight difference in the generate output. We now check that
operand 0 and 2 of QC_MVEQI are equal instead of operand 1 and 2. This
should be equivalent since operand 0 and 1 have a tied constraint.</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Simplify copying OperandMap entries for tied operands in CompressInstEmitter. NFC</title>
<updated>2025-06-27T21:58:53+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-06-27T21:35:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9a93de58f7f3670d106a9910976e967564b6883d'/>
<id>9a93de58f7f3670d106a9910976e967564b6883d</id>
<content type='text'>
Copy the whole struct instead of copying both fields.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Copy the whole struct instead of copying both fields.
</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Simplify how we calculate NumMIOperands in addDagOperandMapping. NFC</title>
<updated>2025-06-27T21:58:39+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-06-27T17:25:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=457c9aec9e845d09202ed8de83be122b9b58d2d7'/>
<id>457c9aec9e845d09202ed8de83be122b9b58d2d7</id>
<content type='text'>
We can use the MIOperandNo and NumMIOperands from the last operand
instead using a loop.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We can use the MIOperandNo and NumMIOperands from the last operand
instead using a loop.
</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Simplify verifyDagOpCount in CompressInstEmitter.cpp. NFC</title>
<updated>2025-06-27T17:08:03+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-06-27T17:08:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a3fcfacc35e7aec14b46f61260d477f89e856925'/>
<id>a3fcfacc35e7aec14b46f61260d477f89e856925</id>
<content type='text'>
We were counting the number of tied operands in two different loops.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We were counting the number of tied operands in two different loops.
</pre>
</div>
</content>
</entry>
<entry>
<title>[RISCV] Add Tied operands in Xqcicm instructions and changes to handle a single tied operand in source DAG and instruction (#145538)</title>
<updated>2025-06-25T04:55:00+00:00</updated>
<author>
<name>quic_hchandel</name>
<email>quic_hchandel@quicinc.com</email>
</author>
<published>2025-06-25T04:55:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=deb3464192647501ee1ba8431ffad6aa4c68ef00'/>
<id>deb3464192647501ee1ba8431ffad6aa4c68ef00</id>
<content type='text'>
Tied Operands change is required for adding codegen patterns for
Qualcomm uC Xqcicm instructions
which will be done in a follow-up PR. This change leads to one of
instructions getting compressed even
when it shouldn't be. This case was not covered in #143660. Added
changes to correctly handle this case.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Tied Operands change is required for adding codegen patterns for
Qualcomm uC Xqcicm instructions
which will be done in a follow-up PR. This change leads to one of
instructions getting compressed even
when it shouldn't be. This case was not covered in #143660. Added
changes to correctly handle this case.</pre>
</div>
</content>
</entry>
<entry>
<title>[RISCV] Add support for handling one tied operand in the source instruction for compress patterns (#143660)</title>
<updated>2025-06-19T07:06:20+00:00</updated>
<author>
<name>quic_hchandel</name>
<email>quic_hchandel@quicinc.com</email>
</author>
<published>2025-06-19T07:06:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=408e55098d7d8f7064d7a288b5e3fe6fdbbc2ad4'/>
<id>408e55098d7d8f7064d7a288b5e3fe6fdbbc2ad4</id>
<content type='text'>
This update enables compress patterns to handle one tied operand in
source instructions, which was previously unsupported. Qualcomm's uC
extension Xqci includes several instructions with tied operands that can
be compressed into smaller forms. This change adds the necessary support
to enable such compression. Additionally, a compress pattern for the
qc.muliadd instruction has been implemented.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This update enables compress patterns to handle one tied operand in
source instructions, which was previously unsupported. Qualcomm's uC
extension Xqci includes several instructions with tied operands that can
be compressed into smaller forms. This change adds the necessary support
to enable such compression. Additionally, a compress pattern for the
qc.muliadd instruction has been implemented.</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Use `emplace` instead of `insert` and similar. NFC. (#143164)</title>
<updated>2025-06-07T08:32:36+00:00</updated>
<author>
<name>Jay Foad</name>
<email>jay.foad@amd.com</email>
</author>
<published>2025-06-07T08:32:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=432c5f2c608dfd40c4131e7e3a8282b0231b15ab'/>
<id>432c5f2c608dfd40c4131e7e3a8282b0231b15ab</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC][TableGen] Add {} for `else` when `if` body has {} (#139420)</title>
<updated>2025-05-12T15:34:12+00:00</updated>
<author>
<name>Rahul Joshi</name>
<email>rjoshi@nvidia.com</email>
</author>
<published>2025-05-12T15:34:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2e8b539e7138122ae6bd54a2dddc296386bd7e28'/>
<id>2e8b539e7138122ae6bd54a2dddc296386bd7e28</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve readability of &lt;Target&gt;GenCompressionInstEmitter. NFC (#134834)</title>
<updated>2025-04-09T05:45:14+00:00</updated>
<author>
<name>Sudharsan Veeravalli</name>
<email>quic_svs@quicinc.com</email>
</author>
<published>2025-04-09T05:45:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9b8f5340ddbae0587a46d3b5882fe40c135c6fd4'/>
<id>9b8f5340ddbae0587a46d3b5882fe40c135c6fd4</id>
<content type='text'>
Use indent() instead of manually indenting the code in the
CompressInstEmitter.cpp. Also modify the current indentation in a few
places.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use indent() instead of manually indenting the code in the
CompressInstEmitter.cpp. Also modify the current indentation in a few
places.</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen][RISCV] Support sub-operands in CompressInstEmitter.cpp. (#133039)</title>
<updated>2025-03-28T02:10:40+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-03-28T02:10:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=ebe1ece4bbfdcd29dd2b578f466998970f28a333'/>
<id>ebe1ece4bbfdcd29dd2b578f466998970f28a333</id>
<content type='text'>
I'm looking into using sub-operands for memory operands. This would use
MIOperandInfo to create a single operand that contains a register and
immediate as sub-operands. We can treat this as a single operand for
parsing and matching in the assembler. I believe this will provide some
simplifications like removing the InstAliases we need to support "(rs1)"
without an immediate.

Doing this requires making CompressInstEmitter aware of sub-operands.

I've chosen to use a flat list of operands in the CompressPats so each
sub-operand is represented individually.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I'm looking into using sub-operands for memory operands. This would use
MIOperandInfo to create a single operand that contains a register and
immediate as sub-operands. We can treat this as a single operand for
parsing and matching in the assembler. I believe this will provide some
simplifications like removing the InstAliases we need to support "(rs1)"
without an immediate.

Doing this requires making CompressInstEmitter aware of sub-operands.

I've chosen to use a flat list of operands in the CompressPats so each
sub-operand is represented individually.</pre>
</div>
</content>
</entry>
</feed>
