History log of /llvm-project/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp (Results 1 – 25 of 221)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5
# 028d41d7 22-Nov-2024 Yashas Andaluri <quic_yandalur@quicinc.com>

[Hexagon] Add Hexagon Load Widening Pass (#116330)

Extend existing store widening pass to widen load instructions.

This patch also borrows the alias check algorithm from AMDGPU's load
store wide

[Hexagon] Add Hexagon Load Widening Pass (#116330)

Extend existing store widening pass to widen load instructions.

This patch also borrows the alias check algorithm from AMDGPU's load
store widening pass.

Widened load instruction is inserted before the first candidate load
instruction.
Widened store instruction is inserted after the last candidate store
instruction.
This method helps avoid moving uses/defs when replacing load/store
instructions with their widened equivalents.

The pass has also been extended to
* Generate 64-bit widened stores
* Handle 32-bit post increment load/store
* Handle stores of non-immediate values
* Handle stores where the offset is a GlobalValue

show more ...


Revision tags: llvmorg-19.1.4
# 7e8bc5cf 17-Nov-2024 Kazu Hirata <kazu@google.com>

[Hexagon] Remove unused includes (NFC) (#116529)

Identified with misc-include-cleaner.


# bb3f5e1f 14-Nov-2024 Matin Raayai <30674652+matinraayai@users.noreply.github.com>

Overhaul the TargetMachine and LLVMTargetMachine Classes (#111234)

Following discussions in #110443, and the following earlier discussions
in https://lists.llvm.org/pipermail/llvm-dev/2017-October/

Overhaul the TargetMachine and LLVMTargetMachine Classes (#111234)

Following discussions in #110443, and the following earlier discussions
in https://lists.llvm.org/pipermail/llvm-dev/2017-October/117907.html,
https://reviews.llvm.org/D38482, https://reviews.llvm.org/D38489, this
PR attempts to overhaul the `TargetMachine` and `LLVMTargetMachine`
interface classes. More specifically:
1. Makes `TargetMachine` the only class implemented under
`TargetMachine.h` in the `Target` library.
2. `TargetMachine` contains target-specific interface functions that
relate to IR/CodeGen/MC constructs, whereas before (at least on paper)
it was supposed to have only IR/MC constructs. Any Target that doesn't
want to use the independent code generator simply does not implement
them, and returns either `false` or `nullptr`.
3. Renames `LLVMTargetMachine` to `CodeGenCommonTMImpl`. This renaming
aims to make the purpose of `LLVMTargetMachine` clearer. Its interface
was moved under the CodeGen library, to further emphasis its usage in
Targets that use CodeGen directly.
4. Makes `TargetMachine` the only interface used across LLVM and its
projects. With these changes, `CodeGenCommonTMImpl` is simply a set of
shared function implementations of `TargetMachine`, and CodeGen users
don't need to static cast to `LLVMTargetMachine` every time they need a
CodeGen-specific feature of the `TargetMachine`.
5. More importantly, does not change any requirements regarding library
linking.

cc @arsenm @aeubanks

show more ...


Revision tags: llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2
# c04857cb 05-Aug-2024 Abinaya Saravanan <quic_asaravan@quicinc.com>

[HEXAGON] Utilize new mask instruction (#92365)

This pass utilizes the new Hexagon Mask Instruction.
Authored by : Harsha Jagasia, Krzysztof Parzyszek

Co-authored-by: Harsha Jagasia <harsha.jaga

[HEXAGON] Utilize new mask instruction (#92365)

This pass utilizes the new Hexagon Mask Instruction.
Authored by : Harsha Jagasia, Krzysztof Parzyszek

Co-authored-by: Harsha Jagasia <harsha.jagasia@gmail.com>
Co-authored-by: Krzysztof Parzyszek <Krzysztof.Parzyszek@amd.com>

show more ...


Revision tags: llvmorg-19.1.0-rc1, llvmorg-20-init
# 5cd0ba30 24-Jun-2024 Nikita Popov <npopov@redhat.com>

Reapply [IR] Lazily initialize the class to pass name mapping (NFC) (#96321) (#96462)

On MSVC the `this` uses inside `decltype` require a lambda capture. On
clang they result in an unused capture w

Reapply [IR] Lazily initialize the class to pass name mapping (NFC) (#96321) (#96462)

On MSVC the `this` uses inside `decltype` require a lambda capture. On
clang they result in an unused capture warning instead. Add the capture
and suppress the warning with `(void)this`.

-----

Initializing this map is somewhat expensive (especially for O0), so we
currently only do it if certain flags are used. I would like to make use
of it for crash dumps (#96078), where we don't know in advance whether
it will be needed or not.

This patch changes the initialization to a lazy approach, where a
callback is registered that does the actual initialization. The
callbacks will be run the first time the pass name is requested.

This way there is no compile-time impact if the mapping is not used.

show more ...


# e5a41f0a 24-Jun-2024 Nikita Popov <npopov@redhat.com>

Revert "[IR] Lazily initialize the class to pass name mapping (NFC) (#96321)"

My attempt to fix the Windows build made things worse,
revert entirely for now.

This reverts commit e7137f2fed5cfee822a

Revert "[IR] Lazily initialize the class to pass name mapping (NFC) (#96321)"

My attempt to fix the Windows build made things worse,
revert entirely for now.

This reverts commit e7137f2fed5cfee822ae3c4c6d39188adb59a16c.
This reverts commit 6eaf204dbb0a6a81cddfd02f625c130f7bb1aae5.
This reverts commit 957dc4366dd2ce9d5d2991c3ad76bbf438e9954e.

show more ...


# 957dc436 24-Jun-2024 Nikita Popov <npopov@redhat.com>

[IR] Lazily initialize the class to pass name mapping (NFC) (#96321)

Initializing this map is somewhat expensive (especially for O0), so we
currently only do it if certain flags are used. I would l

[IR] Lazily initialize the class to pass name mapping (NFC) (#96321)

Initializing this map is somewhat expensive (especially for O0), so we
currently only do it if certain flags are used. I would like to make use
of it for crash dumps (#96078), where we don't know in advance whether
it will be needed or not.

This patch changes the initialization to a lazy approach, where a
callback is registered that does the actual initialization. The
callbacks will be run the first time the pass name is requested.

This way there is no compile-time impact if the mapping is not used.

show more ...


Revision tags: llvmorg-18.1.8, llvmorg-18.1.7
# 7652a594 04-Jun-2024 paperchalice <liujunchang97@outlook.com>

Reland "[NewPM][CodeGen] Port selection dag isel to new pass manager" (#94149)

- Fix build with `EXPENSIVE_CHECKS`
- Remove unused `PassName::ID` to resolve warning
- Mark `~SelectionDAGISel` virt

Reland "[NewPM][CodeGen] Port selection dag isel to new pass manager" (#94149)

- Fix build with `EXPENSIVE_CHECKS`
- Remove unused `PassName::ID` to resolve warning
- Mark `~SelectionDAGISel` virtual so AArch64 backend can work properly

show more ...


# 8917afaf 02-Jun-2024 paperchalice <liujunchang97@outlook.com>

Revert "[NewPM][CodeGen] Port selection dag isel to new pass manager" (#94146)

This reverts commit de37c06f01772e02465ccc9f538894c76d89a7a1 to
de37c06f01772e02465ccc9f538894c76d89a7a1

It still b

Revert "[NewPM][CodeGen] Port selection dag isel to new pass manager" (#94146)

This reverts commit de37c06f01772e02465ccc9f538894c76d89a7a1 to
de37c06f01772e02465ccc9f538894c76d89a7a1

It still breaks EXPENSIVE_CHECKS build. Sorry.

show more ...


# d2cdc8ab 02-Jun-2024 paperchalice <liujunchang97@outlook.com>

[NewPM][CodeGen] Port selection dag isel to new pass manager (#83567)

Port selection dag isel to new pass manager.
Only `AMDGPU` and `X86` support new pass version. `-verify-machineinstrs` in new p

[NewPM][CodeGen] Port selection dag isel to new pass manager (#83567)

Port selection dag isel to new pass manager.
Only `AMDGPU` and `X86` support new pass version. `-verify-machineinstrs` in new pass manager belongs to verify instrumentation, it is enabled by default.

show more ...


Revision tags: llvmorg-18.1.6, llvmorg-18.1.5
# cb508a00 27-Apr-2024 Perry MacMurray <pmacmurr@quicinc.com>

[Hexagon] Add Hexagon Copy Hoisting pass (#89313)

Adds the HexagonCopyHoisting pass, which moves a common copy instruction
into a basic block if it is present in all successor basic blocks.

----

[Hexagon] Add Hexagon Copy Hoisting pass (#89313)

Adds the HexagonCopyHoisting pass, which moves a common copy instruction
into a basic block if it is present in all successor basic blocks.

---------

Co-authored-by: Jyotsna Verma <jverma@quicinc.com>

show more ...


Revision tags: llvmorg-18.1.4, llvmorg-18.1.3
# ef57977f 23-Mar-2024 paperchalice <liujunchang97@outlook.com>

[NewPM][Hexagon] Add HexagonPassRegistry.def (#86244)

Prepare for dag-isel, also migrate some test case


Revision tags: llvmorg-18.1.2, llvmorg-18.1.1
# ca9d2e92 29-Feb-2024 Sumanth Gundapaneni <sgundapa@quicinc.com>

[Hexagon] Add Loop Alignment pass. (#83379)

Inspect a basic block and if its single basic block loop with a small
number of instructions, set the Loop Alignment to 32 bytes. This will
avoid the ca

[Hexagon] Add Loop Alignment pass. (#83379)

Inspect a basic block and if its single basic block loop with a small
number of instructions, set the Loop Alignment to 32 bytes. This will
avoid the cache line break in the first packet of loop which will cause
a stall per each execution of loop.

show more ...


# f44c3fac 27-Feb-2024 Sumanth Gundapaneni <sgundapa@quicinc.com>

Revert "[Hexagon] Optimize post-increment load and stores in loops. (… (#83151)

…#82418)"

This reverts commit d62ca8def395ac165f253fdde1d93725394a4d53.


Revision tags: llvmorg-18.1.0, llvmorg-18.1.0-rc4
# fe42e72d 25-Feb-2024 Rishabh Bali <rishabhsbali@gmail.com>

[CodeGen] Port AtomicExpand to new Pass Manager (#71220)

Port the `atomicexpand` pass to the new Pass Manager.
Fixes #64559


# aaf2d078 22-Feb-2024 Sumanth Gundapaneni <sgundapa@quicinc.com>

[Hexagon] Clean up redundant transfer instructions. (#82663)

This patch adds a Hexagon specific backend pass that cleans up redundant
transfers after register allocation.


# d62ca8de 22-Feb-2024 Sumanth Gundapaneni <sgundapa@quicinc.com>

[Hexagon] Optimize post-increment load and stores in loops. (#82418)

This patch optimizes the post-increment instructions so that we can
packetize them together.
v1 = phi(v0, v3')
v2,v3 = post_l

[Hexagon] Optimize post-increment load and stores in loops. (#82418)

This patch optimizes the post-increment instructions so that we can
packetize them together.
v1 = phi(v0, v3')
v2,v3 = post_load v1, 4
v2',v3'= post_load v3, 4

This can be optimized in two ways

v1 = phi(v0, v3')
v2,v3' = post_load v1, 8
v2' = load v1, 4

show more ...


# 4c0fdcdb 22-Feb-2024 Sumanth Gundapaneni <sgundapa@quicinc.com>

[Hexagon] Generate absolute-set load/store instructions. (#82034)

The optimization finds the loads/stores of a specific form and translate
the first load/store to an absolute-set form there by opti

[Hexagon] Generate absolute-set load/store instructions. (#82034)

The optimization finds the loads/stores of a specific form and translate
the first load/store to an absolute-set form there by optimizing out the
transfer and eliminate the constant extenders.

show more ...


Revision tags: llvmorg-18.1.0-rc3
# 49a8fc0d 20-Feb-2024 Krasimir Georgiev <krasimir@google.com>

Revert "[Hexagon] Optimize post-increment load and stores in loops. (#82011)"

This reverts commit 0e6a48c3e8cc53f9eb5945ec04f8e03f6d2bae37.

Temporary revert as it causes bad codegen: https://github

Revert "[Hexagon] Optimize post-increment load and stores in loops. (#82011)"

This reverts commit 0e6a48c3e8cc53f9eb5945ec04f8e03f6d2bae37.

Temporary revert as it causes bad codegen: https://github.com/llvm/llvm-project/pull/82011#issuecomment-1951426107

show more ...


# 0e6a48c3 16-Feb-2024 Sumanth Gundapaneni <sgundapa@quicinc.com>

[Hexagon] Optimize post-increment load and stores in loops. (#82011)

This patch optimizes the post-increment instructions so that we can
packetize them together.
v1 = phi(v0, v3')
v2,v3 = post_l

[Hexagon] Optimize post-increment load and stores in loops. (#82011)

This patch optimizes the post-increment instructions so that we can
packetize them together.
v1 = phi(v0, v3')
v2,v3 = post_load v1, 4
v2',v3'= post_load v3, 4

This can be optimized in two ways

v1 = phi(v0, v3')
v2,v3' = post_load v1, 8
v2' = load v1, 4

show more ...


# ac057717 09-Feb-2024 Abinaya Saravanan <quic_asaravan@quicinc.com>

[HEXAGON] Add basic block limit for RDF optimizations (#81071)

Skip RDF optimizations if a function contains a number of basic blocks
that is more than a limit

---------

Co-authored-by: Yasha

[HEXAGON] Add basic block limit for RDF optimizations (#81071)

Skip RDF optimizations if a function contains a number of basic blocks
that is more than a limit

---------

Co-authored-by: Yashas Andaluri <quic_yandalur@quicinc.com>

show more ...


Revision tags: llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init
# ffb1f20e 03-Jan-2024 paperchalice <liujunchang97@outlook.com>

[CodeGen] Add flag to populate target pass names (#76328)

`print-pipeline-passes` can show target pass names.


Revision tags: llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0
# 0a1aa6cd 14-Sep-2023 Arthur Eubanks <aeubanks@google.com>

[NFC][CodeGen] Change CodeGenOpt::Level/CodeGenFileType into enum classes (#66295)

This will make it easy for callers to see issues with and fix up calls
to createTargetMachine after a future chang

[NFC][CodeGen] Change CodeGenOpt::Level/CodeGenFileType into enum classes (#66295)

This will make it easy for callers to see issues with and fix up calls
to createTargetMachine after a future change to the params of
TargetMachine.

This matches other nearby enums.

For downstream users, this should be a fairly straightforward
replacement,
e.g. s/CodeGenOpt::Aggressive/CodeGenOptLevel::Aggressive
or s/CGFT_/CodeGenFileType::

show more ...


Revision tags: llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2
# 2dd221fe 06-Feb-2023 Bjorn Pettersson <bjorn.a.pettersson@ericsson.com>

Remove no longer needed includes of LegacyPassManager.h

Most of the removed includes should probably have been removed already
when we removed TargetMachine::adjustPassManager.


Revision tags: llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7
# 19a004b4 21-Dec-2022 Nick Desaulniers <ndesaulniers@google.com>

[llvm][SelectionDAGISel] support -{start|stop}-{before|after}= for remaining targets

Follow up to the series:
1. https://reviews.llvm.org/D140161
2. https://reviews.llvm.org/D140349
3. https://revie

[llvm][SelectionDAGISel] support -{start|stop}-{before|after}= for remaining targets

Follow up to the series:
1. https://reviews.llvm.org/D140161
2. https://reviews.llvm.org/D140349
3. https://reviews.llvm.org/D140331
4. https://reviews.llvm.org/D140323

Completes the work from the previous two for remaining targets.

This creates the following named passes that can be run via
`llc -{start|stop}-{before|after}`:
- arc-isel
- arm-isel
- avr-isel
- bpf-isel
- csky-isel
- hexagon-isel
- lanai-isel
- loongarch-isel
- m68k-isel
- msp430-isel
- mips-isel
- nvptx-isel
- ppc-codegen
- riscv-isel
- sparc-isel
- systemz-isel
- ve-isel
- wasm-isel
- xcore-isel

A nice way to write tests for SelectionDAGISel might be to use a RUN:
line like:
llc -mtriple=<triple> -start-before=<arch>-isel -stop-after=finalize-isel -o -

Fixes: https://github.com/llvm/llvm-project/issues/59538

Reviewed By: asb, zixuan-wu

Differential Revision: https://reviews.llvm.org/D140364

show more ...


123456789