Revision tags: llvmorg-21-init, llvmorg-19.1.7 |
|
#
785b16ad |
| 07-Jan-2025 |
Craig Topper <craig.topper@sifive.com> |
[RISCV][GISel] Support G_MERGE_VALUES/G_UNMERGE_VALUES with Zfa. (#120379)
Without Zfa we use pseudos that are lowered to a stack load/store. With
Zfa we have instructions that can move a pair of r
[RISCV][GISel] Support G_MERGE_VALUES/G_UNMERGE_VALUES with Zfa. (#120379)
Without Zfa we use pseudos that are lowered to a stack load/store. With
Zfa we have instructions that can move a pair of registers to an FPR. Or
move the high or low half of an FPR to a GPR.
I've used a GINodeEquiv to make use of 3 of the 4 tablegen patterns. The
split case with Zfa requires 2 instructions which I'm doing through
custom isel like we do in SelectionDAG.
show more ...
|
#
ce393bed |
| 23-Dec-2024 |
Sergei Barannikov <barannikov88@gmail.com> |
[RISCV] Pattern-match frameindex (#120917)
|
#
6ab8401f |
| 20-Dec-2024 |
Luke Quinn <quic_lquinn@quicinc.com> |
[RISCV][GISel] Port AddiPair optimization (#120463)
Check if (add r, imm) can be optimized to (ADDI (ADDI r, imm0), imm1),
in which imm = imm0 + imml and both imm0 and imm1 are simm12. We make
imm
[RISCV][GISel] Port AddiPair optimization (#120463)
Check if (add r, imm) can be optimized to (ADDI (ADDI r, imm0), imm1),
in which imm = imm0 + imml and both imm0 and imm1 are simm12. We make
imm0 as large as possible and imm1 as small as possible so that we might
be able to use c.addi for the small immediate.
show more ...
|
Revision tags: llvmorg-19.1.6 |
|
#
d78fe84d |
| 11-Dec-2024 |
Craig Topper <craig.topper@sifive.com> |
[RISCV][GISel] Port TrailingOnesMask PatLeaf. (#119427)
|
#
37b10af6 |
| 05-Dec-2024 |
Craig Topper <craig.topper@sifive.com> |
[RISCV][GISel] Use correct shift width for GIShiftMask32 ComplexOperandMatcher.
We should use 32 instead of XLen. This allows us to remove 'and X, 31' from the shift amount.
|
Revision tags: llvmorg-19.1.5 |
|
#
4087b871 |
| 20-Nov-2024 |
Craig Topper <craig.topper@sifive.com> |
[RISCV][GISel] Move G_BRJT expansion to legalization (#73711)
Instead of custom selecting a bunch of instructions, we can expand to
generic MIR during legalization.
|
Revision tags: llvmorg-19.1.4 |
|
#
4048c643 |
| 12-Nov-2024 |
Kazu Hirata <kazu@google.com> |
[llvm] Remove redundant control flow statements (NFC) (#115831)
Identified with readability-redundant-control-flow.
|
#
10b80ff0 |
| 10-Nov-2024 |
Kazu Hirata <kazu@google.com> |
[Target] Migrate away from PointerUnion::{is,get,dyn_cast} (NFC) (#115623)
Note that PointerUnion::{is,get,dyn_cast} have been soft deprecated in
PointerUnion.h:
// FIXME: Replace the uses of
[Target] Migrate away from PointerUnion::{is,get,dyn_cast} (NFC) (#115623)
Note that PointerUnion::{is,get,dyn_cast} have been soft deprecated in
PointerUnion.h:
// FIXME: Replace the uses of is(), get() and dyn_cast() with
// isa<T>, cast<T> and the llvm::dyn_cast<T>
show more ...
|
#
09b372aa |
| 09-Nov-2024 |
Craig Topper <craig.topper@sifive.com> |
[GISel][AArch64][RISCV] Allow G_SEXT_INREG patterns to be imported. (#115576)
SelectionDAG uses VTSDNode to store the extension type. GlobalISel uses
a literal constant operand.
For vectors, Sel
[GISel][AArch64][RISCV] Allow G_SEXT_INREG patterns to be imported. (#115576)
SelectionDAG uses VTSDNode to store the extension type. GlobalISel uses
a literal constant operand.
For vectors, SelectionDAG uses a type with the same number of elements
as other operand of the sext_inreg. I assume for GISel we would just use
the scalar size.
show more ...
|
#
694719a4 |
| 08-Nov-2024 |
Craig Topper <craig.topper@sifive.com> |
[RISCV][GISel] Add G_ZEXT to RISCVInstructionSelector::selectZExtBits. (#115391)
|
#
ae9d0623 |
| 07-Nov-2024 |
Craig Topper <craig.topper@sifive.com> |
[RISCV][GISel] Remove s32 input support for G_SITOFP/UITOFP on RV64. (#115236)
I plan to make i32 an illegal type for RV64 to match SelectionDAG and to
remove i32 from the GPR register class.
I'
[RISCV][GISel] Remove s32 input support for G_SITOFP/UITOFP on RV64. (#115236)
I plan to make i32 an illegal type for RV64 to match SelectionDAG and to
remove i32 from the GPR register class.
I've added a sexti32 ComplexPattern to select sext.w+fcvt.s.l as
fcvt.s.w. The recently added zexti32 handles selecting and+fcvt.s.lu as
fcvt.s.wu. There are still some regressions that suggest we should match
g_zero_extend in zexti32.
show more ...
|
#
da032b79 |
| 07-Nov-2024 |
Craig Topper <craig.topper@sifive.com> |
[RISCV][GISel] Use maskedValueIsZero in RISCVInstructionSelector::selectZExtBits. (#115244)
|
#
5dc8d611 |
| 06-Nov-2024 |
Craig Topper <craig.topper@sifive.com> |
[RISCV][GISel] Implement zexti32/zexti16 ComplexPatterns. (#115097)
|
Revision tags: llvmorg-19.1.3, llvmorg-19.1.2 |
|
#
989c437d |
| 07-Oct-2024 |
Michael Maitland <michaeltmaitland@gmail.com> |
[RISCV][GISEL][NFC] Add break statement to reduce diff on future changes of preISelLower
|
#
f873fc3a |
| 04-Oct-2024 |
Michael Maitland <michaeltmaitland@gmail.com> |
[RISCV][GISEL] instruction-select vmclr (#110782)
This is stacked on #110778. This PR adds and tests renderVLOp too, as
that is needed from vmclr.
|
#
a3cc4b61 |
| 04-Oct-2024 |
Michael Maitland <michaeltmaitland@gmail.com> |
[RISCV][GISEL][NFC] Make MRI a member in RISCVInstructionSelector (#110926)
It was requested in
https://github.com/llvm/llvm-project/pull/110782#discussion_r1784939348
that MRI be made a member of
[RISCV][GISEL][NFC] Make MRI a member in RISCVInstructionSelector (#110926)
It was requested in
https://github.com/llvm/llvm-project/pull/110782#discussion_r1784939348
that MRI be made a member of RISCVInstructionSelector.
RISCVInstructionSelector is created in the RISCVSubtarget, independent
of MachineFunction. So it cannot be passed by reference during
construction of RISCVInstructionSelector.
The MachineRegisterInfo object belongs to each MachineFunction, so
set it in setupMF.
show more ...
|
Revision tags: llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3 |
|
#
715c3033 |
| 14-Aug-2024 |
Craig Topper <craig.topper@sifive.com> |
[RISCV][GISel] Support G_SEXT_INREG for Zbb. (#102682)
|
Revision tags: llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init |
|
#
9b95d08e |
| 10-Jul-2024 |
Michael Maitland <michaeltmaitland@gmail.com> |
[GISel] Make create.*InstructionSelector arguments const (#98243)
The InstructionSelector objects all take these arguments in as `const`.
This function does not modify the object. Therefore we can
[GISel] Make create.*InstructionSelector arguments const (#98243)
The InstructionSelector objects all take these arguments in as `const`.
This function does not modify the object. Therefore we can mark them as
`const` here.
show more ...
|
#
acd6cb85 |
| 26-Jun-2024 |
Craig Topper <craig.topper@sifive.com> |
[RISCV][GISel] Support fcmp and fclass for Zfh. (#96696)
|
#
dff6871c |
| 25-Jun-2024 |
Craig Topper <craig.topper@sifive.com> |
[RISCV][GISel] Support G_FCONSTANT for Zfh.
|
Revision tags: llvmorg-18.1.8 |
|
#
643e4718 |
| 08-Jun-2024 |
Yingwei Zheng <dtcxzyw2333@gmail.com> |
[RISCV][GISel] Add calling convention support for half (#94110)
This patch adds initial support to the half type on RISC-V.
|
Revision tags: llvmorg-18.1.7 |
|
#
76748119 |
| 21-May-2024 |
Yingwei Zheng <dtcxzyw2333@gmail.com> |
[GISel][RISCV] Add irtranslator/legalizer/selector support for G_FREEZE. (#92744)
This patch adds support for G_FREEZE on riscv. It will be selected into
a copy instruction.
The ll test is copi
[GISel][RISCV] Add irtranslator/legalizer/selector support for G_FREEZE. (#92744)
This patch adds support for G_FREEZE on riscv. It will be selected into
a copy instruction.
The ll test is copied from the AArch64 patch:
https://github.com/llvm/llvm-project/commit/665da596854bf07ee25f368855156dde43845013.
show more ...
|
Revision tags: llvmorg-18.1.6 |
|
#
ed3a60c7 |
| 09-May-2024 |
Hongbin Jin <octopus.busts_0w@icloud.com> |
[RISCV][GlobalISel] Fix selectShiftMask when shift mask is created from G_AND (#89602)
This patch fixes cases where G_AND creating the shift mask is eliminated
if one of its source operands is a co
[RISCV][GlobalISel] Fix selectShiftMask when shift mask is created from G_AND (#89602)
This patch fixes cases where G_AND creating the shift mask is eliminated
if one of its source operands is a constant, resulting from an incorrect
predicate.
show more ...
|
Revision tags: llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3 |
|
#
d365a45c |
| 23-Mar-2024 |
Evgenii Kudriashov <evgenii.kudriashov@intel.com> |
[GlobalISel] Introduce G_TRAP, G_DEBUGTRAP, G_UBSANTRAP (#84941)
Here we introduce three new GMIR instructions to cover a set of trap
intrinsics. The idea behind it is that generic intrinsics shoul
[GlobalISel] Introduce G_TRAP, G_DEBUGTRAP, G_UBSANTRAP (#84941)
Here we introduce three new GMIR instructions to cover a set of trap
intrinsics. The idea behind it is that generic intrinsics shouldn't be
used with G_INTRINSIC opcode.
These new instructions can match perfectly with existing trap ISD nodes.
It allows X86, AArch64, RISCV and Mips to reuse SelectionDAG patterns for
selection and avoid manual selection. However AMDGPU is an exception. It
selects traps during legalization regardless SelectionDAG or GlobalISel.
Since there are not many places where traps are used, this change
attempts to clean up all the usages of G_INTRINSIC with trap intrinsics. So,
there is no stage when both G_TRAP and
G_INTRINSIC_W_SIDE_EFFECTS(@llvm.trap) are allowed.
show more ...
|
Revision tags: llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2 |
|
#
10c2d5ff |
| 01-Feb-2024 |
Jiahan Xie <88367305+jiahanxie353@users.noreply.github.com> |
[RISCV][GISel] RegBank select and instruction select for vector G_ADD, G_SUB (#74114)
RegisterBank Selection for scalable vector G_ADD and G_SUB by creating
new mappings for different types of vect
[RISCV][GISel] RegBank select and instruction select for vector G_ADD, G_SUB (#74114)
RegisterBank Selection for scalable vector G_ADD and G_SUB by creating
new mappings for different types of vector register banks.
Then implement Instruction Selection for the same operations by choosing
the correct RISC-V vector register class.
show more ...
|