<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Target/X86/X86InstrInfo.cpp, branch users/mingmingl-llvm/samplefdo-profile-format</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>CodeGen: Pass SubtargetInfo to TargetGenInstrInfo constructors (#157337)</title>
<updated>2025-09-08T03:12:19+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2025-09-08T03:12:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=727e9f5ea5b2bb9d2fa37619ad2f19b21af7ce4d'/>
<id>727e9f5ea5b2bb9d2fa37619ad2f19b21af7ce4d</id>
<content type='text'>
This will make it possible for tablegen to make subtarget
dependent decisions without adding new arguments to every
target.

---------

Co-authored-by: Sergei Barannikov &lt;barannikov88@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This will make it possible for tablegen to make subtarget
dependent decisions without adding new arguments to every
target.

---------

Co-authored-by: Sergei Barannikov &lt;barannikov88@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Reland "[X86][APX] Remove redundant TEST*ri instructions" (#156002)</title>
<updated>2025-08-29T14:51:40+00:00</updated>
<author>
<name>Phoebe Wang</name>
<email>phoebe.wang@intel.com</email>
</author>
<published>2025-08-29T14:51:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=59082485e6c5f5f8a399b91903eea59ba25153dc'/>
<id>59082485e6c5f5f8a399b91903eea59ba25153dc</id>
<content type='text'>
The goal is to remove redundant TEST*ri instructions, especially with NF
feature. Other tests are side effects due to longer live range of
EFLAGS. https://godbolt.org/z/PbaTj1oa3

Reland with fix to buildbot failures.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The goal is to remove redundant TEST*ri instructions, especially with NF
feature. Other tests are side effects due to longer live range of
EFLAGS. https://godbolt.org/z/PbaTj1oa3

Reland with fix to buildbot failures.</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[X86][APX] Remove redundant TEST*ri instructions" (#155968)</title>
<updated>2025-08-29T04:05:31+00:00</updated>
<author>
<name>Vitaly Buka</name>
<email>vitalybuka@google.com</email>
</author>
<published>2025-08-29T04:05:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3789e593e831609dd6858cb647d0ee0c6c8a4910'/>
<id>3789e593e831609dd6858cb647d0ee0c6c8a4910</id>
<content type='text'>
Reverts llvm/llvm-project#155586

Breaks bots, see details in #155586.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reverts llvm/llvm-project#155586

Breaks bots, see details in #155586.</pre>
</div>
</content>
</entry>
<entry>
<title>[X86][APX] Remove redundant TEST*ri instructions (#155586)</title>
<updated>2025-08-28T00:46:58+00:00</updated>
<author>
<name>Phoebe Wang</name>
<email>phoebe.wang@intel.com</email>
</author>
<published>2025-08-28T00:46:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9c9e56b81cdfd42ddb0de4f5efb3bf787978894e'/>
<id>9c9e56b81cdfd42ddb0de4f5efb3bf787978894e</id>
<content type='text'>
The goal is to remove redundant TEST*ri instructions, especially with NF
feature. Other tests are side effects due to longer live range of
EFLAGS. https://godbolt.org/z/PbaTj1oa3</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The goal is to remove redundant TEST*ri instructions, especially with NF
feature. Other tests are side effects due to longer live range of
EFLAGS. https://godbolt.org/z/PbaTj1oa3</pre>
</div>
</content>
</entry>
<entry>
<title>[X86] Fix spill issue for fr16 (#155225)</title>
<updated>2025-08-26T07:35:40+00:00</updated>
<author>
<name>Luo, Yuanke</name>
<email>lyk_03@hotmail.com</email>
</author>
<published>2025-08-26T07:35:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4780bd9458d0035514e2a3b23c4aa3521dea3d4d'/>
<id>4780bd9458d0035514e2a3b23c4aa3521dea3d4d</id>
<content type='text'>
When avx512fp16 is not available, we use MOVSS to spill fr16/fr16x
register.
However The MOVSSmr require fr32 register class and MOVSSrm require
vr128
register class which cause bad instruction detected by machine verifier.
To fix the issue this patch is to create a pseudo instruction MOVSHP for
fr16 register spilling. MOVSHP is expanded to MOVSS or VMOVSSZ depending
on the register number.

---------

Co-authored-by: Yuanke Luo &lt;ykluo@birentech.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When avx512fp16 is not available, we use MOVSS to spill fr16/fr16x
register.
However The MOVSSmr require fr32 register class and MOVSSrm require
vr128
register class which cause bad instruction detected by machine verifier.
To fix the issue this patch is to create a pseudo instruction MOVSHP for
fr16 register spilling. MOVSHP is expanded to MOVSS or VMOVSSZ depending
on the register number.

---------

Co-authored-by: Yuanke Luo &lt;ykluo@birentech.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[X86][ARM][RISCV][XCore][M68K] Invert the low bit to get the inverse predicate (NFC) (#151748)"</title>
<updated>2025-08-04T22:24:52+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-08-04T22:24:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f58bc72759e2e6e11d7e50ef3370a5a7d345e651'/>
<id>f58bc72759e2e6e11d7e50ef3370a5a7d345e651</id>
<content type='text'>
This reverts commit 518703806286c98bac7b84156738839f8bd55bef.

Failing M68k build bot.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 518703806286c98bac7b84156738839f8bd55bef.

Failing M68k build bot.
</pre>
</div>
</content>
</entry>
<entry>
<title>[X86][ARM][RISCV][XCore][M68K] Invert the low bit to get the inverse predicate (NFC) (#151748)</title>
<updated>2025-08-04T21:45:04+00:00</updated>
<author>
<name>AZero13</name>
<email>gfunni234@gmail.com</email>
</author>
<published>2025-08-04T21:45:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=518703806286c98bac7b84156738839f8bd55bef'/>
<id>518703806286c98bac7b84156738839f8bd55bef</id>
<content type='text'>
All these platforms defined their predicate in such a way to allow bit
twiddling to get inverse predicates</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
All these platforms defined their predicate in such a way to allow bit
twiddling to get inverse predicates</pre>
</div>
</content>
</entry>
<entry>
<title>[X86] X86InstrInfo::commuteInstructionImpl - remove (V)BLENDPD/S commutation to (V)MOVSD/S optsize handling (#144051)</title>
<updated>2025-06-13T11:49:22+00:00</updated>
<author>
<name>Simon Pilgrim</name>
<email>llvm-dev@redking.me.uk</email>
</author>
<published>2025-06-13T11:49:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f1036d844e4b886ac702859ccf8a19cf2153c7f7'/>
<id>f1036d844e4b886ac702859ccf8a19cf2153c7f7</id>
<content type='text'>
Just commute with (V)BLENDPD/S like all other BLEND instructions

This is now handled more generally by the X86FixupInstTuningPass (OptSize fold occurs even without a scheduler model).

First step towards #142972</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Just commute with (V)BLENDPD/S like all other BLEND instructions

This is now handled more generally by the X86FixupInstTuningPass (OptSize fold occurs even without a scheduler model).

First step towards #142972</pre>
</div>
</content>
</entry>
<entry>
<title>[X86] commuteInstructionImpl - assert that only MOVSDrr is being commuted to SHUFPDrri</title>
<updated>2025-06-10T07:49:18+00:00</updated>
<author>
<name>Simon Pilgrim</name>
<email>llvm-dev@redking.me.uk</email>
</author>
<published>2025-06-10T07:48:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=054646f335e8fbec1305c27af4d98227791ecf9f'/>
<id>054646f335e8fbec1305c27af4d98227791ecf9f</id>
<content type='text'>
Noticed while preparing for #142972
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Noticed while preparing for #142972
</pre>
</div>
</content>
</entry>
<entry>
<title>[x64][win] Add compiler support for x64 import call optimization (equivalent to MSVC /d2guardretpoline) (#126631)</title>
<updated>2025-05-20T21:48:41+00:00</updated>
<author>
<name>Daniel Paoliello</name>
<email>danpao@microsoft.com</email>
</author>
<published>2025-05-20T21:48:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a414877a7a5f000d01370acb1162eb1dea87f48c'/>
<id>a414877a7a5f000d01370acb1162eb1dea87f48c</id>
<content type='text'>
This is the x64 equivalent of #121516

Since import call optimization was originally [added to x64 Windows to
implement a more efficient retpoline
mitigation](https://techcommunity.microsoft.com/blog/windowsosplatform/mitigating-spectre-variant-2-with-retpoline-on-windows/295618)
the section and constant names relating to this all mention "retpoline"
and we need to mark indirect calls, control-flow guard calls and jumps
for jump tables in the section alongside calls to imported functions.

As with the AArch64 feature, this emits a new section into the obj which
is used by the MSVC linker to generate the Dynamic Value Relocation
Table and the section itself does not appear in the final binary.

The Windows Loader requires a specific sequence of instructions be
emitted when this feature is enabled:
* Indirect calls/jumps must have the function pointer to jump to in
`rax`.
* Calls to imported functions must use the `rex` prefix and be followed
by a 5-byte nop.
* Indirect calls must be followed by a 3-byte nop.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is the x64 equivalent of #121516

Since import call optimization was originally [added to x64 Windows to
implement a more efficient retpoline
mitigation](https://techcommunity.microsoft.com/blog/windowsosplatform/mitigating-spectre-variant-2-with-retpoline-on-windows/295618)
the section and constant names relating to this all mention "retpoline"
and we need to mark indirect calls, control-flow guard calls and jumps
for jump tables in the section alongside calls to imported functions.

As with the AArch64 feature, this emits a new section into the obj which
is used by the MSVC linker to generate the Dynamic Value Relocation
Table and the section itself does not appear in the final binary.

The Windows Loader requires a specific sequence of instructions be
emitted when this feature is enabled:
* Indirect calls/jumps must have the function pointer to jump to in
`rax`.
* Calls to imported functions must use the `rex` prefix and be followed
by a 5-byte nop.
* Indirect calls must be followed by a 3-byte nop.</pre>
</div>
</content>
</entry>
</feed>
