| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 326627
|
| |
|
|
| |
llvm-svn: 326599
|
| |
|
|
| |
llvm-svn: 326492
|
| |
|
|
| |
llvm-svn: 326450
|
| |
|
|
| |
llvm-svn: 326364
|
| |
|
|
| |
llvm-svn: 326263
|
| |
|
|
| |
llvm-svn: 326220
|
| |
|
|
| |
llvm-svn: 325954
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Add a target option AllowRegisterRenaming that is used to opt in to
post-register-allocation renaming of registers. This is set to 0 by
default, which causes the hasExtraSrcRegAllocReq/hasExtraDstRegAllocReq
fields of all opcodes to be set to 1, causing
MachineOperand::isRenamable to always return false.
Set the AllowRegisterRenaming flag to 1 for all in-tree targets that
have lit tests that were effected by enabling COPY forwarding in
MachineCopyPropagation (AArch64, AMDGPU, ARM, Hexagon, Mips, PowerPC,
RISCV, Sparc, SystemZ and X86).
Add some more comments describing the semantics of the
MachineOperand::isRenamable function and how it is set and maintained.
Change isRenamable to check the operand's opcode
hasExtraSrcRegAllocReq/hasExtraDstRegAllocReq bit directly instead of
relying on it being consistently reflected in the IsRenamable bit
setting.
Clear the IsRenamable bit when changing an operand's register value.
Remove target code that was clearing the IsRenamable bit when changing
registers/opcodes now that this is done conservatively by default.
Change setting of hasExtraSrcRegAllocReq in AMDGPU target to be done in
one place covering all opcodes that have constant pipe read limit
restrictions.
Reviewers: qcolombet, MatzeB
Subscribers: aemerson, arsenm, jyknight, mcrosier, sdardis, nhaehnle, javed.absar, tpr, arichardson, kristof.beyls, kbarton, fedor.sergeev, asb, rbar, johnrusso, simoncook, jordy.potman.lists, apazos, sabuasal, niosHD, escha, nemanjai, llvm-commits
Differential Revision: https://reviews.llvm.org/D43042
llvm-svn: 325931
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
There are transformation that change setcc into other constructs, and transform that try to reconstruct a setcc from the brcond condition. Depending on what order these transform are done, the end result differs.
Most of the time, it is preferable to get a setcc as a brcond argument (and this is why brcond try to recreate the setcc in the first place) so we ensure this is done every time by also doing it at the setcc level when the only user is a brcond.
Reviewers: spatel, hfinkel, niravd, craig.topper
Subscribers: nhaehnle, llvm-commits
Differential Revision: https://reviews.llvm.org/D41235
llvm-svn: 325892
|
| |
|
|
|
|
| |
"a a" -> "a"
llvm-svn: 325752
|
| |
|
|
| |
llvm-svn: 325731
|
| |
|
|
|
|
|
|
|
|
| |
Enable multiple COPY hints to eliminate more COPYs during register allocation.
Note that this is something all targets should do, see
https://reviews.llvm.org/D38128.
Review: Krzysztof Parzyszek
llvm-svn: 325697
|
| |
|
|
| |
llvm-svn: 325606
|
| |
|
|
| |
llvm-svn: 325580
|
| |
|
|
|
|
|
| |
Use the FunctionType of the callee when it's available. It may not be
available for synthetic calls to functions specified by external symbols.
llvm-svn: 325269
|
| |
|
|
|
|
| |
This is breaking lit tests.
llvm-svn: 325266
|
| |
|
|
|
|
|
| |
The FunctionType of the callee is always available, even if the Function
of the callee is not. Use that to get the number of fixed parameters.
llvm-svn: 325259
|
| |
|
|
|
|
| |
Lowering of formal arguments needs to be aware of vararg functions.
llvm-svn: 325255
|
| |
|
|
| |
llvm-svn: 325169
|
| |
|
|
| |
llvm-svn: 325014
|
| |
|
|
| |
llvm-svn: 325013
|
| |
|
|
|
|
|
|
|
|
|
| |
Add a common -trap-unreachable option, similar to the target
specific hexagon equivalent, which has been replaced. This
turns unreachable instructions into traps, which is useful for
debugging.
Differential Revision: https://reviews.llvm.org/D42965
llvm-svn: 324880
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This change is part of step five in the series of changes to remove alignment argument from
memcpy/memmove/memset in favour of alignment attributes. In particular, this changes the
Hexagon LoopIdiom pass to cease using the old IRBuilder createMemCpy/createMemMove
single-alignment APIs in favour of the new API that allows setting source and
destination alignments independently.
Steps:
Step 1) Remove alignment parameter and create alignment parameter attributes for
memcpy/memmove/memset. ( rL322965, rC322964, rL322963 )
Step 2) Expand the IRBuilder API to allow creation of memcpy/memmove with differing
source and dest alignments. ( rL323597 )
Step 3) Update Clang to use the new IRBuilder API. ( rC323617 )
Step 4) Update Polly to use the new IRBuilder API. ( rL323618 )
Step 5) Update LLVM passes that create memcpy/memmove calls to use the new IRBuilder API,
and those that use use MemIntrinsicInst::[get|set]Alignment() to use [get|set]DestAlignment()
and [get|set]SourceAlignment() instead. ( rL323886, rL323891, rL324148, rL324273, rL324278,
rL324384, rL324395, rL324402, rL324626, rL324642, rL324653, rL324654, rL324773, rL324774,
rL324781 )
Step 6) Remove the single-alignment IRBuilder API for memcpy/memmove, and the
MemIntrinsicInst::[get|set]Alignment() methods.
Reference
http://lists.llvm.org/pipermail/llvm-dev/2015-August/089384.html
http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20151109/312083.html
llvm-svn: 324784
|
| |
|
|
|
|
| |
Fixes http://llvm.org/PR36320.
llvm-svn: 324763
|
| |
|
|
|
|
| |
Additionally, simplify the rest of the argument/parameter lowering code.
llvm-svn: 324737
|
| |
|
|
| |
llvm-svn: 324392
|
| |
|
|
| |
llvm-svn: 324391
|
| |
|
|
|
|
|
| |
Additionally, verify that the register defined by the producer is a
32-bit register.
llvm-svn: 324381
|
| |
|
|
| |
llvm-svn: 324352
|
| |
|
|
|
|
|
|
| |
Vector pairs are legal types, but not every operation can work on pairs.
For those operations that are legal for single vectors, generate a concat
of their results on pair halves.
llvm-svn: 324350
|
| |
|
|
| |
llvm-svn: 324349
|
| |
|
|
|
|
|
|
|
|
| |
It was expanded directly into instructions earlier. That was to avoid
loads from a constant pool for a vector negation: "xor x, splat(i1 -1)".
Implement ISD opcodes QTRUE and QFALSE to denote logical vectors of
all true and all false values, and handle setcc with negations through
selection patterns.
llvm-svn: 324348
|
| |
|
|
| |
llvm-svn: 324250
|
| |
|
|
|
|
|
|
|
|
| |
defining file.
Patch by Dean Sturtevant!
Differential Revision: https://reviews.llvm.org/D42907
llvm-svn: 324245
|
| |
|
|
| |
llvm-svn: 324244
|
| |
|
|
|
|
|
|
| |
The function shuffp2 was breaking up a wide shuffle into a pair of
narrower ones, except that the narrower shuffle masks were actually
uninitialized.
llvm-svn: 324243
|
| |
|
|
|
|
|
| |
Unlike V6_vmpyhv, it produces the result in the exact form that is
expected without the need for a shuffle.
llvm-svn: 324241
|
| |
|
|
| |
llvm-svn: 323916
|
| |
|
|
| |
llvm-svn: 323914
|
| |
|
|
| |
llvm-svn: 323912
|
| |
|
|
| |
llvm-svn: 323911
|
| |
|
|
| |
llvm-svn: 323889
|
| |
|
|
|
|
|
|
| |
Selecting of constant HVX vectors involves some "manual processing",
which mishandled an unrelated BITCAST operation causing a selection
error.
llvm-svn: 323887
|
| |
|
|
| |
llvm-svn: 323831
|
| |
|
|
|
|
|
| |
This is in anticipation of https://reviews.llvm.org/D42424, which would
otherwise break one of the pmpy testcases.
llvm-svn: 323824
|
| |
|
|
|
|
|
|
|
|
| |
Instructions like memd(r0+##global+1) are legal as long as the entire
address is properly aligned. Assuming that "global" is aligned at an
8-byte boundary, the expression "global+1" appears to be misaligned.
Handle such cases in HexagonConstExtenders, and make sure that any non-
extended offsets generated are still aligned accordingly.
llvm-svn: 323799
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
requirements
This reverts r323562, since it wasn't actually necessary. Constant-
extended offsets do not need to be aligned, as long as the effective
address is aligned.
Keep the testcase, with a modification which checks that such offsets
are not unnecessarily avoided.
llvm-svn: 323798
|
| |
|
|
| |
llvm-svn: 323569
|
| |
|
|
| |
llvm-svn: 323568
|