Revision tags: llvmorg-18.1.3 |
|
#
3a106e5b |
| 29-Mar-2024 |
Shilei Tian <i@tianshilei.me> |
[GlobalISel] Fold G_ICMP if possible (#86357)
This patch tries to fold `G_ICMP` if possible.
|
#
0a429940 |
| 25-Mar-2024 |
Shilei Tian <i@tianshilei.me> |
[GlobalISel] Fold G_CTTZ if possible (#86224)
This patch tries to fold `G_CTTZ` if possible.
|
Revision tags: llvmorg-18.1.2 |
|
#
430de48a |
| 08-Mar-2024 |
Jay Foad <jay.foad@amd.com> |
[GISel] Simplify getConstantVRegValWithLookThrough. NFC.
|
Revision tags: llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4 |
|
#
4235e44d |
| 22-Feb-2024 |
Pierre van Houtryve <pierre.vanhoutryve@amd.com> |
[GlobalISel] Constant-fold G_PTR_ADD with different type sizes (#81473)
All other opcodes in the list are constrained to have the same type on
both operands, but not G_PTR_ADD.
Fixes #81464
|
Revision tags: llvmorg-18.1.0-rc3 |
|
#
c954986f |
| 07-Feb-2024 |
Michael Maitland <michaeltmaitland@gmail.com> |
[GISel] Add support for scalable vectors in getGCDType (#80307)
This function can be called from buildCopyToRegs where at least one of
the types is a scalable vector type. This function crashed bec
[GISel] Add support for scalable vectors in getGCDType (#80307)
This function can be called from buildCopyToRegs where at least one of
the types is a scalable vector type. This function crashed because it
did not know how to handle scalable vector types.
This patch extends the functionality of getGCDType to handle when at
least one of the types is a scalable vector. getGCDType between a fixed
and scalable vector is not implemented since the docstring of the
function explains that getGCDType is used to build MERGE/UNMERGE
instructions and we will never build a MERGE/UNMERGE between fixed and
scalable vectors.
---------
Co-authored-by: Matt Arsenault <arsenm2@gmail.com>
show more ...
|
Revision tags: llvmorg-18.1.0-rc2 |
|
#
055ac72e |
| 07-Feb-2024 |
Michael Maitland <michaeltmaitland@gmail.com> |
[GISel] Add support for scalable vectors in getLCMType (#80306)
This function can be called from buildCopyToRegs where at least one of
the types is a scalable vector type. This function crashed bec
[GISel] Add support for scalable vectors in getLCMType (#80306)
This function can be called from buildCopyToRegs where at least one of
the types is a scalable vector type. This function crashed because it
did not know how to handle scalable vector types.
This patch extends the functionality of getLCMType to handle when at
least one of the types is a scalable vector. getLCMType between a fixed
and scalable vector is not implemented since the docstring of the
function explains that getLCMType is used to build MERGE/UNMERGE
instructions and we will never build a MERGE/UNMERGE between fixed and
scalable vectors.
show more ...
|
#
ad0acf9e |
| 02-Feb-2024 |
Michael Maitland <michaeltmaitland@gmail.com> |
[GISEL] More accounting for scalable vectors when operating on LLTs (#80372)
This is stacked on by #80377 and #80378
|
Revision tags: llvmorg-18.1.0-rc1, llvmorg-19-init |
|
#
fcfe1b64 |
| 15-Jan-2024 |
chuongg3 <chuong.goh@arm.com> |
[GlobalISel] Refactor extractParts() (#75223)
Moved extractParts() and extractVectorParts() from LegalizerHelper
to Utils to be able to use it in different passes.
extractParts() will also try t
[GlobalISel] Refactor extractParts() (#75223)
Moved extractParts() and extractVectorParts() from LegalizerHelper
to Utils to be able to use it in different passes.
extractParts() will also try to use unmerge when doing irregular
splits where possible, falling back to extract elements when not.
show more ...
|
Revision tags: llvmorg-17.0.6 |
|
#
011c9eeb |
| 14-Nov-2023 |
Changpeng Fang <changpeng.fang@amd.com> |
GlobalISel: Guard return in llvm::getIConstantSplatVal (#71989)
getIConstantVRegValWithLookThrough could return NULL.
|
Revision tags: llvmorg-17.0.5 |
|
#
16ddd25b |
| 04-Nov-2023 |
Craig Topper <craig.topper@sifive.com> |
Revert "[GISel] Add LookThroughInstrs for getIConstantVRegVal and getIConstan… (#68327)"
This reverts commit 28ae42e6625154dfd164803850b15d8a0c296b94.
The assert in getIConstantVRegVal was not upda
Revert "[GISel] Add LookThroughInstrs for getIConstantVRegVal and getIConstan… (#68327)"
This reverts commit 28ae42e6625154dfd164803850b15d8a0c296b94.
The assert in getIConstantVRegVal was not updated for this change. The ValAndVReg->VReg == VReg check fails if any look through happens.
RISC-V was the only target using the lookthrough functionality, but I'm not sure it was needed so I'm removing that too.
show more ...
|
Revision tags: llvmorg-17.0.4 |
|
#
28ae42e6 |
| 20-Oct-2023 |
Michael Maitland <michaeltmaitland@gmail.com> |
[GISel] Add LookThroughInstrs for getIConstantVRegVal and getIConstan… (#68327)
…tVRegSExtVal
The implementation of these methods uses
getIConstantVRegValWithLookThrough with LookThroughInstrs a
[GISel] Add LookThroughInstrs for getIConstantVRegVal and getIConstan… (#68327)
…tVRegSExtVal
The implementation of these methods uses
getIConstantVRegValWithLookThrough with LookThroughInstrs argument set
to false. By adding the optional argument to getIConstantVRegVal and
getIConstantVRegSExtVal we can take advantage of the already built look
through functionality.
show more ...
|
Revision tags: llvmorg-17.0.3, llvmorg-17.0.2 |
|
#
ce8c2285 |
| 23-Sep-2023 |
Kazu Hirata <kazu@google.com> |
Use llvm::drop_begin and llvm::drop_end (NFC)
|
Revision tags: llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1 |
|
#
d86a7d63 |
| 28-Jul-2023 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
GlobalISel: Add constant fold combine for zext/sext/anyext
Could use more work for vectors.
https://reviews.llvm.org/D156534
|
#
c5f763b5 |
| 16-Aug-2023 |
David Green <david.green@arm.com> |
[AArch64][GISel] Fix selection of G_CONSTANT_FOLD_BARRIER
As far as I understand - When lowering a G_CONSTANT_FOLD_BARRIER we replace the DstReg with SrcReg, and need to check that the register clas
[AArch64][GISel] Fix selection of G_CONSTANT_FOLD_BARRIER
As far as I understand - When lowering a G_CONSTANT_FOLD_BARRIER we replace the DstReg with SrcReg, and need to check that the register class is equivalent when doing so for the replacement to be legal. During lowering we could end up visiting nodes in an odd order, leaving a G_CONSTANT_FOLD_BARRIER with a known regclass for the src, but only a regbank for the dst. Providing the Regbank contains the regclass, the replacement should still be safe.
This fixes an assert seen in the llvm-test-suite when lowering hoisted constants, relaxing canReplaceReg to account for the case when the regbank covers the regclass, so it is better able to handle differences in visiting order.
Differential Revision: https://reviews.llvm.org/D157202
show more ...
|
Revision tags: llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5 |
|
#
5022fc2a |
| 24-May-2023 |
Jay Foad <jay.foad@amd.com> |
[CodeGen] Make use of MachineInstr::all_defs and all_uses. NFCI.
Differential Revision: https://reviews.llvm.org/D151424
|
Revision tags: llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2 |
|
#
7021182d |
| 16-Apr-2023 |
Shraiysh Vaishay <shraiysh@gmail.com> |
[nfc][llvm] Replace pointer cast functions in PointerUnion by llvm casting functions.
This patch replaces the uses of PointerUnion.is function by llvm::isa, PointerUnion.get function by llvm::cast,
[nfc][llvm] Replace pointer cast functions in PointerUnion by llvm casting functions.
This patch replaces the uses of PointerUnion.is function by llvm::isa, PointerUnion.get function by llvm::cast, and PointerUnion.dyn_cast by llvm::dyn_cast_if_present. This is according to the FIXME in the definition of the class PointerUnion.
This patch does not remove them as they are being used in other subprojects.
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D148449
show more ...
|
Revision tags: llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3 |
|
#
f8f3db27 |
| 20-Feb-2023 |
Kazu Hirata <kazu@google.com> |
Use APInt::count{l,r}_{zero,one} (NFC)
|
Revision tags: llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init |
|
#
0a85c531 |
| 17-Jan-2023 |
Diana Picus <Diana-Magda.Picus@amd.com> |
[GlobalISel] Detect splats built with G_CONCAT_VECTORS
Add support to the MI matching of vector splats for patterns that consist of `G_CONCAT_VECTORS` of smaller splats with the same constant value.
[GlobalISel] Detect splats built with G_CONCAT_VECTORS
Add support to the MI matching of vector splats for patterns that consist of `G_CONCAT_VECTORS` of smaller splats with the same constant value. With this, we would consider the following pseudo-MIR to be a splat:
``` %0 = G_[F]CONSTANT [...] %1 = G_BUILD_VECTOR %0, %0, ..., %0 %2 = G_CONCAT_VECTORS %1, %1, ..., %1 ```
Since it uses recursion for matching splats, it could match pretty complicated patterns with all sorts of combinations of `G_BUILD_VECTOR` and `G_CONCAT_VECTORS` (e.g. a `G_CONCAT_VECTORS` with a `G_BUILD_VECTOR_TRUNC` and another `G_CONCAT_VECTORS` as operands), and it should also look through copies etc.
This should make it easier to match complex immediates for certain instructions on AMDGPU, where for instance a <8 x s16> will be split before instruction selection into a `G_CONCAT_VECTORS` of <2 x s16> splats.
Differential Revision: https://reviews.llvm.org/D141902
show more ...
|
#
544e0290 |
| 16-Jan-2023 |
Diana Picus <Diana-Magda.Picus@amd.com> |
Fix typo. NFC
|
#
e72ca520 |
| 13-Jan-2023 |
Craig Topper <craig.topper@sifive.com> |
[CodeGen] Remove uses of Register::isPhysicalRegister/isVirtualRegister. NFC
Use isPhysical/isVirtual methods.
Reviewed By: foad
Differential Revision: https://reviews.llvm.org/D141715
|
Revision tags: llvmorg-15.0.7 |
|
#
6eb0b0a0 |
| 15-Dec-2022 |
Kazu Hirata <kazu@google.com> |
Don't include Optional.h
These files no longer use llvm::Optional.
|
#
67819a72 |
| 13-Dec-2022 |
Fangrui Song <i@maskray.me> |
[CodeGen] llvm::Optional => std::optional
|
#
998960ee |
| 03-Dec-2022 |
Kazu Hirata <kazu@google.com> |
[CodeGen] Use std::nullopt instead of None (NFC)
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the amount of
[CodeGen] Use std::nullopt instead of None (NFC)
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the amount of manual work required in migrating from Optional to std::optional.
This is part of an effort to migrate from llvm::Optional to std::optional:
https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
show more ...
|
Revision tags: llvmorg-15.0.6 |
|
#
af0d3856 |
| 26-Nov-2022 |
Kazu Hirata <kazu@google.com> |
[GlobalISel] Use std::optional in Utils.cpp (NFC)
This is part of an effort to migrate from llvm::Optional to std::optional:
https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getval
[GlobalISel] Use std::optional in Utils.cpp (NFC)
This is part of an effort to migrate from llvm::Optional to std::optional:
https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
show more ...
|
Revision tags: llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, working, llvmorg-15.0.2 |
|
#
7388520d |
| 29-Sep-2022 |
Pierre van Houtryve <pierre.vanhoutryve@amd.com> |
[GISel] Add more cases to isKnownNeverNaN
Make it even with the DAG implementation as of D134854
Reviewed By: arsenm, foad
Differential Revision: https://reviews.llvm.org/D134857
|