| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
| |
A .cur instruction can be identified by checking isCVINew() && mayLoad().
Patch by Colin LeMahieu.
llvm-svn: 301829
|
| |
|
|
|
|
| |
Patch by Colin LeMahieu.
llvm-svn: 301828
|
| |
|
|
|
|
| |
Patch by Colin LeMahieu.
llvm-svn: 301827
|
| |
|
|
|
|
| |
Patch by Colin LeMahieu.
llvm-svn: 301823
|
| |
|
|
|
|
| |
Otherwise an indeterminate value gets read, causing a bunch of UBSan failures.
llvm-svn: 301819
|
| |
|
|
|
|
| |
This relands r301424.
llvm-svn: 301812
|
| |
|
|
| |
llvm-svn: 301811
|
| |
|
|
|
|
|
|
| |
Patch by: Gergely Angeli!
Differential Revision: https://reviews.llvm.org/D31936
llvm-svn: 301807
|
| |
|
|
|
|
|
|
| |
This removes BinaryWithFlagsSDNode, and flags are now all passed by value.
Differential Revision: https://reviews.llvm.org/D32527
llvm-svn: 301803
|
| |
|
|
|
|
| |
This lets us do bit rotations of variable amount.
llvm-svn: 301794
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Prioritizes Tablegen-erated instruction selection over C++ instruction selection.
Remove G_ADD/G_SUB C++ selection - implemented by Tablegen.
Reviewers: dsanders, zvi, guyblank
Reviewed By: guyblank
Subscribers: rovka, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D32677
llvm-svn: 301792
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Reviewers: zvi, guyblank
Reviewed By: zvi
Subscribers: rovka, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D32591
llvm-svn: 301790
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: [GlobalISel][X86] G_LOAD/G_STORE pointer selection support.
Reviewers: zvi, guyblank
Reviewed By: zvi, guyblank
Subscribers: dberris, rovka, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D32217
llvm-svn: 301788
|
| |
|
|
|
|
|
| |
Before this, the LDS/STS instructions would have their opcodes
overwritten while linking.
llvm-svn: 301782
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
uaddo/addcarry
Summary: As per discution on how to get better codegen an large int legalization, it became clear that using a glue for the carry was preventing several desirable optimizations. Passing the carry down as a value allow for more flexibility.
Reviewers: jyknight, nemanjai, mkuper, spatel, RKSimon, zvi, bkramer
Subscribers: igorb, llvm-commits
Differential Revision: https://reviews.llvm.org/D29872
llvm-svn: 301775
|
| |
|
|
|
|
| |
setLowBits where possible.
llvm-svn: 301768
|
| |
|
|
| |
llvm-svn: 301767
|
| |
|
|
|
|
|
|
|
|
|
| |
microMIPS
In case of microMIPS mode %gottprel operator should emit microMIPS
relocation R_MICROMIPS_TLS_GOTTPREL, not R_MIPS_TLS_GOTTPREL.
Differential Revision: http://reviews.llvm.org/D32617
llvm-svn: 301763
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Predicate<> now has a field to indicate how often it must be recomputed.
Currently, there are two frequencies, per-module (RecomputePerFunction==0)
and per-function (RecomputePerFunction==1). Per-function predicates are
currently recomputed more frequently than necessary since the only predicate
in this category is cheap to test. Per-module predicates are now computed in
getSubtargetImpl() while per-function predicates are computed in selectImpl().
Tablegen now manages the PredicateBitset internally. It should only be
necessary to add the required includes.
Also fixed a problem revealed by the test case where
constrainSelectedInstRegOperands() would attempt to tie operands that
BuildMI had already tied.
Reviewers: ab, qcolombet, t.p.northover, rovka, aditya_nandakumar
Reviewed By: rovka
Subscribers: kristof.beyls, igorb, llvm-commits
Differential Revision: https://reviews.llvm.org/D32491
llvm-svn: 301750
|
| |
|
|
|
|
|
| |
r301392 introduced a potential nullptr deference causing compilation
failures.
llvm-svn: 301746
|
| |
|
|
|
|
|
|
|
| |
This would assert when there were multiple defs of
a physical register.
We just need to move all of the users of it.
llvm-svn: 301730
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
AttributeList"
This broke the Clang build. (Clang-side patch missing?)
Original commit message:
> [IR] Make add/remove Attributes use AttrBuilder instead of
> AttributeList
>
> This change cleans up call sites and avoids creating temporary
> AttributeList objects.
>
> NFC
llvm-svn: 301712
|
| |
|
|
| |
llvm-svn: 301700
|
| |
|
|
| |
llvm-svn: 301698
|
| |
|
|
|
|
|
|
|
| |
This change cleans up call sites and avoids creating temporary
AttributeList objects.
NFC
llvm-svn: 301697
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The method is called "get *Param* Alignment", and is only used for
return values exactly once, so it should take argument indices, not
attribute indices.
Avoids confusing code like:
IsSwiftError = CS->paramHasAttr(ArgIdx, Attribute::SwiftError);
Alignment = CS->getParamAlignment(ArgIdx + 1);
Add getRetAlignment to handle the one case in Value.cpp that wants the
return value alignment.
This is a potentially breaking change for out-of-tree backends that do
their own call lowering.
llvm-svn: 301682
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds a new method finalizeLowering to TargetLoweringBase. This is in
preparation for an upcoming commit.
This function is meant for target specific adjustments to
MachineFrameInfo or register reservations.
Move the freezeRegisters() and the hasCopyImplyingStackAdjustment()
handling into the new function to prove the concept. As an added bonus
GlobalISel no longer missed the hasCopyImplyingStackAdjustment()
handling with this.
Differential Revision: https://reviews.llvm.org/D32621
llvm-svn: 301679
|
| |
|
|
|
|
|
|
|
|
| |
v2: More tests, bug fixes, cosmetic changes.
Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, dstuttard, tpr, llvm-commits, t-tye
Differential Revision: https://reviews.llvm.org/D31762
llvm-svn: 301677
|
| |
|
|
| |
llvm-svn: 301673
|
| |
|
|
|
|
|
|
|
|
|
| |
This eliminates many extra 'Idx' induction variables in loops over
arguments in CodeGen/ and Target/. It also reduces the number of places
where we assume that ReturnIndex is 0 and that we should add one to
argument numbers to get the corresponding attribute list index.
NFC
llvm-svn: 301666
|
| |
|
|
| |
llvm-svn: 301662
|
| |
|
|
|
|
|
|
|
| |
. swap 4-bit register encoding, 16-bit offset and 32-bit imm to support big endian archs
. add a test
Reported-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
llvm-svn: 301653
|
| |
|
|
| |
llvm-svn: 301646
|
| |
|
|
|
|
|
| |
Actually remove ARMInstructionSelector.h... Forgot to stage the removal
in the previous commit.
llvm-svn: 301633
|
| |
|
|
|
|
|
|
|
| |
Declare the ARMInstructionSelector in an anonymous namespace, to make it
more in line with the other targets which were migrated to this in
r299637 in order to avoid TableGen'erated headers being included in
non-GlobalISel builds.
llvm-svn: 301632
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a follow up to the fix in r298360 to improve the handling of debug
values when redundant LEAs are removed. The fix in r298360 effectively
discarded the debug values. This patch now attempts to preserve the debug
values by using the DWARF DW_OP_stack_value operation via prependDIExpr.
Moved functions appendOffset and prependDIExpr from Local.cpp to
DebugInfoMetadata.cpp and made them available as static member functions of
DIExpression.
Differential Revision: https://reviews.llvm.org/D31604
llvm-svn: 301630
|
| |
|
|
|
|
| |
I didn't realize WebAssembly wasn't a default build target so I missed that changes were needed.
llvm-svn: 301629
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D32583
llvm-svn: 301628
|
| |
|
|
|
|
|
|
|
|
|
|
| |
simplifyDemandedBits
This patch replaces the separate APInts for KnownZero/KnownOne with a single KnownBits struct. This is similar to what was done to ValueTracking's version recently.
This is largely a mechanical transformation from KnownZero to Known.Zero.
Differential Revision: https://reviews.llvm.org/D32569
llvm-svn: 301620
|
| |
|
|
|
|
| |
This patch uses various APInt methods to reduce the number of temporary APInts. These were all found while working through converting SelectionDAG's computeKnownBits to also use the KnownBits struct recently added to the ValueTracking version.
llvm-svn: 301618
|
| |
|
|
| |
llvm-svn: 301612
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: artem.tamazov
Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye
Differential Revision: https://reviews.llvm.org/D32588
llvm-svn: 301551
|
| |
|
|
|
|
|
|
| |
Patch by Wei-Ren Chen.
Differential Revision: https://reviews.llvm.org/D32594
llvm-svn: 301546
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Author: milena.vujosevic.janicic
Reviewers: sdardis
The code implements size reduction pass for MicroMIPS.
Load and store instructions are examined and transformed, if possible.
lw32 instruction is transformed into 16-bit instruction lwsp
sw32 instruction is transformed into 16-bit instruction swsp
Arithmetic instrcutions are examined and transformed, if possible.
addu32 instruction is transformed into 16-bit instruction addu16
subu32 instruction is transformed into 16-bit instruction subu16
Differential Revision: https://reviews.llvm.org/D15144
llvm-svn: 301540
|
| |
|
|
|
|
|
|
|
| |
In getCmpSelInstrCost(), CondTy may actually be scalar while ValTy is a
vector when LoopVectorizer is the caller. Therefore the assert that CondTy
must be a vector type if ValTy is was wrong and is now removed.
Review: Ulrich Weigand
llvm-svn: 301533
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix a crash when trying to extend a value passed as a sign- or
zero-extended stack parameter. The cause of the crash was that we were
setting the size of the loaded value to 32 bits, and then tyring to
extend again to 32 bits.
This patch addresses the issue by also introducing a G_TRUNC after the
load. This will leave the unused bits to their original values set by
the caller, while being consistent about the types. For values that are
not extended, we just use a smaller load.
llvm-svn: 301531
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: handle not symmetric G_COPY
Reviewers: zvi, guyblank
Reviewed By: guyblank
Subscribers: rovka, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D32420
llvm-svn: 301523
|
| |
|
|
|
|
|
|
|
| |
'Src' looks like it was borrowed from memcpy, 'Val' makes more sense for
memset and is consistent with naming within the function.
Differential Revision: https://reviews.llvm.org/D32580
llvm-svn: 301521
|
| |
|
|
|
|
|
|
| |
Assert is triggered if DBG_VALUE is first instruction in BB
Differential Revision: https://reviews.llvm.org/D32572
llvm-svn: 301511
|
| |
|
|
|
|
|
|
| |
It was doing the same as the base implementation and was irritating me
when I was searching for backends that have custom behavior for
canRealignStack.
llvm-svn: 301495
|