<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Target/AMDGPU/AMDGPUAlwaysInlinePass.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>[NFC][AMDGPU] Replace direct arch comparison with `isAMDGCN()` (#131357)</title>
<updated>2025-03-14T18:21:44+00:00</updated>
<author>
<name>Shilei Tian</name>
<email>i@tianshilei.me</email>
</author>
<published>2025-03-14T18:21:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=51c706c11955bc1de57ca98b21cf8c7dd7b39aa9'/>
<id>51c706c11955bc1de57ca98b21cf8c7dd7b39aa9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[AMDGPU] Always Inline preserved analyses (#91198)</title>
<updated>2024-05-09T10:17:01+00:00</updated>
<author>
<name>jofrn</name>
<email>jofernau@amd.com</email>
</author>
<published>2024-05-09T10:17:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=1494d8849fa2aef575dabd431b0060639f4a57c1'/>
<id>1494d8849fa2aef575dabd431b0060639f4a57c1</id>
<content type='text'>
When replacing all uses, the structural-hash of the IR can change, so
keep track of changes using Changed variable and return it to pass
manager.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When replacing all uses, the structural-hash of the IR can change, so
keep track of changes using Changed variable and return it to pass
manager.</pre>
</div>
</content>
</entry>
<entry>
<title>[amdgpu] Implement dynamic LDS accesses from non-kernel functions</title>
<updated>2023-04-04T19:06:34+00:00</updated>
<author>
<name>Jon Chesterfield</name>
<email>jonathanchesterfield@gmail.com</email>
</author>
<published>2023-04-04T19:06:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0507448d829818e29f7d8df6652002c8cc5683d1'/>
<id>0507448d829818e29f7d8df6652002c8cc5683d1</id>
<content type='text'>
The premise here is to allow non-kernel functions to locate external LDS variables without using LDS or extra magic SGPRs to do so.

1/ First it crawls the callgraph to work out which external LDS variables are reachable from a given kernel
2/ Then it creates a new `extern char[0]` variable for each kernel, which will alias all the other extern LDS variables because that's the documented behaviour of these variables
3/ The address of that variable is written to a lookup table. The global variable is tagged with metadata to track what address it was allocated at by codegen
4/ The assembler builds the lookup table using the metadata
5/ Any non-kernel functions use the same magic intrinsic used by table lookups of non-dynamic LDS variables to find the address to use

Heavy overlap with the code paths taken for other lowering, in particular the same intrinsic is used to pass the dynamic scope information through the same sgpr as for table lookups of static LDS.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D144233
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The premise here is to allow non-kernel functions to locate external LDS variables without using LDS or extra magic SGPRs to do so.

1/ First it crawls the callgraph to work out which external LDS variables are reachable from a given kernel
2/ Then it creates a new `extern char[0]` variable for each kernel, which will alias all the other extern LDS variables because that's the documented behaviour of these variables
3/ The address of that variable is written to a lookup table. The global variable is tagged with metadata to track what address it was allocated at by codegen
4/ The assembler builds the lookup table using the metadata
5/ Any non-kernel functions use the same magic intrinsic used by table lookups of non-dynamic LDS variables to find the address to use

Heavy overlap with the code paths taken for other lowering, in particular the same intrinsic is used to pass the dynamic scope information through the same sgpr as for table lookups of static LDS.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D144233
</pre>
</div>
</content>
</entry>
<entry>
<title>[HIP] [AlwaysInliner] Disable AlwaysInliner to eliminate undefined symbols</title>
<updated>2021-10-18T22:53:15+00:00</updated>
<author>
<name>Anshil Gandhi</name>
<email>Anshil.Gandhi@amd.com</email>
</author>
<published>2021-10-18T22:51:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0567f0333176e476e15b7f32b463f58f7475ff22'/>
<id>0567f0333176e476e15b7f32b463f58f7475ff22</id>
<content type='text'>
By default clang emits complete contructors as alias of base constructors if they are the same.
The backend is supposed to emit symbols for the alias, otherwise it causes undefined symbols.
@yaxunl observed that this issue is related to the llvm options `-amdgpu-early-inline-all=true`
and `-amdgpu-function-calls=false`. This issue is resolved by only inlining global values
with internal linkage. The `getCalleeFunction()` in AMDGPUResourceUsageAnalysis also had
to be extended to support aliases to functions. inline-calls.ll was corrected appropriately.

Reviewed By: yaxunl, #amdgpu

Differential Revision: https://reviews.llvm.org/D109707
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
By default clang emits complete contructors as alias of base constructors if they are the same.
The backend is supposed to emit symbols for the alias, otherwise it causes undefined symbols.
@yaxunl observed that this issue is related to the llvm options `-amdgpu-early-inline-all=true`
and `-amdgpu-function-calls=false`. This issue is resolved by only inlining global values
with internal linkage. The `getCalleeFunction()` in AMDGPUResourceUsageAnalysis also had
to be extended to support aliases to functions. inline-calls.ll was corrected appropriately.

Reviewed By: yaxunl, #amdgpu

Differential Revision: https://reviews.llvm.org/D109707
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[HIP] [AlwaysInliner] Disable AlwaysInliner to eliminate undefined symbols"</title>
<updated>2021-10-15T22:16:18+00:00</updated>
<author>
<name>Anshil Gandhi</name>
<email>Anshil.Gandhi@amd.com</email>
</author>
<published>2021-10-15T22:15:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=1830ec94ac022ae0b6d6876fc2251e6b91e5931e'/>
<id>1830ec94ac022ae0b6d6876fc2251e6b91e5931e</id>
<content type='text'>
This reverts commit 03375a3fb33b11e1249d9c88070b7f33cb97802a.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 03375a3fb33b11e1249d9c88070b7f33cb97802a.
</pre>
</div>
</content>
</entry>
<entry>
<title>[HIP] [AlwaysInliner] Disable AlwaysInliner to eliminate undefined symbols</title>
<updated>2021-10-15T17:39:15+00:00</updated>
<author>
<name>Anshil Gandhi</name>
<email>Anshil.Gandhi@amd.com</email>
</author>
<published>2021-10-15T17:13:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=03375a3fb33b11e1249d9c88070b7f33cb97802a'/>
<id>03375a3fb33b11e1249d9c88070b7f33cb97802a</id>
<content type='text'>
By default clang emits complete contructors as alias of base constructors if they are the same.
The backend is supposed to emit symbols for the alias, otherwise it causes undefined symbols.
@yaxunl observed that this issue is related to the llvm options `-amdgpu-early-inline-all=true`
and `-amdgpu-function-calls=false`. This issue is resolved by only inlining global values
with internal linkage. The `getCalleeFunction()` in AMDGPUResourceUsageAnalysis also had
to be extended to support aliases to functions. inline-calls.ll was corrected appropriately.

Reviewed By: yaxunl, #amdgpu

Differential Revision: https://reviews.llvm.org/D109707
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
By default clang emits complete contructors as alias of base constructors if they are the same.
The backend is supposed to emit symbols for the alias, otherwise it causes undefined symbols.
@yaxunl observed that this issue is related to the llvm options `-amdgpu-early-inline-all=true`
and `-amdgpu-function-calls=false`. This issue is resolved by only inlining global values
with internal linkage. The `getCalleeFunction()` in AMDGPUResourceUsageAnalysis also had
to be extended to support aliases to functions. inline-calls.ll was corrected appropriately.

Reviewed By: yaxunl, #amdgpu

Differential Revision: https://reviews.llvm.org/D109707
</pre>
</div>
</content>
</entry>
<entry>
<title>[AMDGPU][NFC] Correct typos in lib/Target/AMDGPU/AMDGPU*.cpp files. Test commit for new contributor.</title>
<updated>2021-09-20T21:48:50+00:00</updated>
<author>
<name>Jacob Lambert</name>
<email>jacob.lambert@amd.com</email>
</author>
<published>2021-09-20T21:28:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=dc6e8dfdfe7efecfda318d43a06fae18b40eb498'/>
<id>dc6e8dfdfe7efecfda318d43a06fae18b40eb498</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[AMDGPU] Inline non-kernel functions using extern lds</title>
<updated>2021-09-16T17:58:51+00:00</updated>
<author>
<name>Vang Thao</name>
<email>Vang.Thao@amd.com</email>
</author>
<published>2021-09-14T17:49:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=106959acc15c4b98e252af0c43406aa9342a2e05'/>
<id>106959acc15c4b98e252af0c43406aa9342a2e05</id>
<content type='text'>
In https://reviews.llvm.org/D100481, forceful inline of all non-kernel
functions using lds was disabled since AMDGPULowerModuleLDS pass now handles
static lds. However that pass does not handle extern lds so non-kernel
functions using extern lds must sill be inline.

Reviewed By: hsmhsm, arsenm

Differential Revision: https://reviews.llvm.org/D109773
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In https://reviews.llvm.org/D100481, forceful inline of all non-kernel
functions using lds was disabled since AMDGPULowerModuleLDS pass now handles
static lds. However that pass does not handle extern lds so non-kernel
functions using extern lds must sill be inline.

Reviewed By: hsmhsm, arsenm

Differential Revision: https://reviews.llvm.org/D109773
</pre>
</div>
</content>
</entry>
<entry>
<title>[AMDGPU] Disable forceful inline of non-kernel functions which use LDS.</title>
<updated>2021-04-15T03:42:56+00:00</updated>
<author>
<name>hsmahesha</name>
<email>mahesha.comp@gmail.com</email>
</author>
<published>2021-04-15T03:42:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4973b0c4e774e18452f2a7da23af4dec7d368bfa'/>
<id>4973b0c4e774e18452f2a7da23af4dec7d368bfa</id>
<content type='text'>
Now since LDS uses within non-kernel functions are being handled in the
pass - LowerModuleLDS, we *NO* need to *forcefully* inline non-kernel
functions just because they use LDS. Do forceful inlining only when the
pass - LowerModuleLDS is not enabled. It is enabled by default.

Reviewed By: JonChesterfield

Differential Revision: https://reviews.llvm.org/D100481
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now since LDS uses within non-kernel functions are being handled in the
pass - LowerModuleLDS, we *NO* need to *forcefully* inline non-kernel
functions just because they use LDS. Do forceful inlining only when the
pass - LowerModuleLDS is not enabled. It is enabled by default.

Reviewed By: JonChesterfield

Differential Revision: https://reviews.llvm.org/D100481
</pre>
</div>
</content>
</entry>
<entry>
<title>[Target] Use llvm::append_range (NFC)</title>
<updated>2021-01-24T20:18:56+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2021-01-24T20:18:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=054444177b1e6563a67e950a238084f082ece16f'/>
<id>054444177b1e6563a67e950a238084f082ece16f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
