| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
of function parameters
llvm-svn: 194410
|
| |
|
|
| |
llvm-svn: 194409
|
| |
|
|
|
|
| |
source operands, a vector, an element to insert, and a shift amount.
llvm-svn: 194406
|
| |
|
|
|
|
|
|
| |
Besides, this relates it more obviously to the VirtRegAuxInfo::calculateSpillWeightAndHint.
No functionnal change.
llvm-svn: 194404
|
| |
|
|
| |
llvm-svn: 194401
|
| |
|
|
| |
llvm-svn: 194400
|
| |
|
|
| |
llvm-svn: 194399
|
| |
|
|
| |
llvm-svn: 194398
|
| |
|
|
|
|
| |
instructions.
llvm-svn: 194394
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
SimplifyVBinOp too
Reviewers: dsanders
Reviewed By: dsanders
CC: llvm-commits, nadav
Differential Revision: http://llvm-reviews.chandlerc.com/D1958
llvm-svn: 194393
|
| |
|
|
|
|
| |
No functional change, just better reporting.
llvm-svn: 194388
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On non-Darwin PPC systems, we currently strip off the register name prefix
prior to instruction printing. So instead of something like this:
mr r3, r4
we print this:
mr 3, 4
The first form is the default on Darwin, and is understood by binutils, but not
yet understood by our integrated assembler. Once our integrated-as understands
full register names as well, this temporary option will be replaced by tying
this functionality to the verbose-asm option. The numeric-only form is
compatible with legacy assemblers and tools, and is also gcc's default on most
PPC systems. On the other hand, it is harder to read, and there are some
analysis tools that expect full register names.
llvm-svn: 194384
|
| |
|
|
| |
llvm-svn: 194383
|
| |
|
|
| |
llvm-svn: 194374
|
| |
|
|
|
|
|
|
| |
This causes issues with virtual registers. We will likely need
to fix TailDuplicate in the future, or introduce a new version
that plays nicely with vregs.
llvm-svn: 194373
|
| |
|
|
|
|
|
|
|
|
|
| |
Instructions taking a vector list (e.g. "ld2 {v0.2d, v1.d2}, [x0]") need a
special register-class to deal with the constraints, and C++ code to support
selection. However, that C++ code can be made reasonably uniform to simplify
the selection process. Hence this patch.
No functionality change, so no tests.
llvm-svn: 194361
|
| |
|
|
|
|
|
|
|
|
| |
Based on discussions with Lang Hames and Jakob Stoklund Olesen at the hacker's lab, and in the light of upcoming work on the PBQP register allocator, it was though that CalcSpillWeights does not need to be a pass. This change will enable to customize / tune the spill weight computation depending on the allocator.
Update the documentation style while there.
No functionnal change.
llvm-svn: 194356
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
a fix to PR17307 & 17308."
This causes PR17852.
This reverts commit d93e8a06b2ca09ab18f390cd514b7443e2e571f7.
Conflicts:
test/Transforms/GVN/cond_br2.ll
llvm-svn: 194348
|
| |
|
|
|
|
|
|
| |
This should be inconsequential and is work
towards removing the default address space
arguments.
llvm-svn: 194347
|
| |
|
|
|
|
|
|
| |
it is worthwhile to merge branches. It tries to estimate if the operands of the instruction that we want to hoist are ready. This commit marks function arguments as 'ready' because they require no calculation. This boosts libquantum and a few other workloads from the testsuite.
llvm-svn: 194346
|
| |
|
|
| |
llvm-svn: 194345
|
| |
|
|
| |
llvm-svn: 194342
|
| |
|
|
| |
llvm-svn: 194341
|
| |
|
|
| |
llvm-svn: 194340
|
| |
|
|
| |
llvm-svn: 194339
|
| |
|
|
|
|
|
| |
Still need to finish the branch part. Still lots more review of the code,
clean up and testing.
llvm-svn: 194337
|
| |
|
|
| |
llvm-svn: 194335
|
| |
|
|
|
|
|
|
| |
This commit cleans up some comments in ARMBuildAttrs.h.
Besides, this commit fixes an error related to AllowWMMXv1
and AllowWMMXv2 (although they are not used currently.)
llvm-svn: 194327
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
give the files a legacy prefix in the right directory. Use forwarding
headers in the old locations to paper over the name change for most
clients during the transitional period.
No functionality changed here! This is just clearing some space to
reduce renaming churn later on with a new system.
Even when the new stuff starts to go in, it is going to be hidden behind
a flag and off-by-default as it is still WIP and under development.
This patch is specifically designed so that very little out-of-tree code
has to change. I'm going to work as hard as I can to keep that the case.
Only direct forward declarations of the PassManager class are impacted
by this change.
llvm-svn: 194324
|
| |
|
|
| |
llvm-svn: 194311
|
| |
|
|
|
|
|
|
|
| |
formal arguments on the stack and stores created afterwards. We need this to
ensure tail call optimized function calls do not write over the argument area
of the stack before it is read out.
llvm-svn: 194309
|
| |
|
|
| |
llvm-svn: 194308
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch moves the jump address materialization inside the noop slide. This
enables patching of the materialization itself or its complete removal. This
patch also adds the ability to define scratch registers that can be used safely
by the code called from the patchpoint intrinsic. At least one scratch register
is required, because that one is used for the materialization of the jump
address. This patch depends on D2009.
Differential Revision: http://llvm-reviews.chandlerc.com/D2074
Reviewed by Andy
llvm-svn: 194306
|
| |
|
|
|
|
|
|
| |
This would cause internal symbols that are only referenced by global initializers to be removed.
This reverts commit 194219.
llvm-svn: 194304
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new graph structure replaces the node and edge linked lists with vectors.
Free lists (well, free vectors) are used for fast insertion/deletion.
The ultimate aim is to make PBQP graphs cheap to clone. The motivation is that
the PBQP solver destructively consumes input graphs while computing a solution,
forcing the graph to be fully reconstructed for each round of PBQP. This
imposes a high cost on large functions, which often require several rounds of
solving/spilling to find a final register allocation. If we can cheaply clone
the PBQP graph and incrementally update it between rounds then hopefully we can
reduce this cost. Further, once we begin pooling matrix/vector values (future
work), we can cache some PBQP solver metadata and share it between cloned
graphs, allowing the PBQP solver to re-use some of the computation done in
earlier rounds.
For now this is just a data structure update. The allocator and solver still
use the graph the same way as before, fully reconstructing it between each
round. I expect no material change from this update, although it may change
the iteration order of the nodes, causing ties in the solver to break in
different directions, and this could perturb the generated allocations
(hopefully in a completely benign way).
Thanks very much to Arnaud Allard de Grandmaison for encouraging me to get back
to work on this, and for a lot of discussion and many useful PBQP test cases.
llvm-svn: 194300
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The idea of the AnyReg Calling Convention is to provide the call arguments in
registers, but not to force them to be placed in a paticular order into a
specified set of registers. Instead it is up tp the register allocator to assign
any register as it sees fit. The same applies to the return value (if
applicable).
Differential Revision: http://llvm-reviews.chandlerc.com/D2009
Reviewed by Andy
llvm-svn: 194293
|
| |
|
|
|
|
| |
dead definitions by using live intervals, if available, to identify dead definitions and proceed accordingly.
llvm-svn: 194286
|
| |
|
|
|
|
|
|
|
|
| |
On darwin, when trying to create compact unwind info, a .cfi_cfa_def
directive would case an llvm_unreachable() to be hit. Back off when we
see this directive and generate the regular DWARF style eh_frame.
rdar://15406518
llvm-svn: 194285
|
| |
|
|
| |
llvm-svn: 194284
|
| |
|
|
|
|
| |
Thanks to Eric Christopher for the tips on the appropriate way to do this.
llvm-svn: 194282
|
| |
|
|
|
|
|
|
|
|
|
|
| |
LoopUnswitch's code simplification routine has logic to convert conditional
branches into unconditional branches, after unswitching makes the condition
constant, and then remove any blocks that renders dead. Unfortunately, this
code is dead, currently broken, and furthermore, has never been alive (at least
as far back at 2006).
No functionality change intended.
llvm-svn: 194277
|
| |
|
|
|
|
| |
Temporarily revert my previous commit until I understand why it breaks 3 target tests.
llvm-svn: 194272
|
| |
|
|
|
|
|
| |
isPhysRegUsed if the unwind information is required.
Indeed, the runtime may need a correct stack to be able to unwind the call.
llvm-svn: 194271
|
| |
|
|
|
|
| |
modifiers.
llvm-svn: 194270
|
| |
|
|
|
|
|
|
|
|
| |
Based on discussions with Lang Hames and Jakob Stoklund Olesen at the hacker's lab, and in the light of upcoming work on the PBQP register allocator, it was though that CalcSpillWeights does not need to be a pass. This change will enable to customize / tune the spill weight computation depending on the allocator.
Update the documentation style while there.
No functionnal change.
llvm-svn: 194269
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ARM prologues usually look like:
push {r7, lr}
sub sp, sp, #4
If code size is extremely important, this can be optimised to the single
instruction:
push {r6, r7, lr}
where we don't actually care about the contents of r6, but pushing it subtracts
4 from sp as a side effect.
This should implement such a conversion, predicated on the "minsize" function
attribute (-Oz) since I've yet to find any code it actually makes faster.
llvm-svn: 194264
|
| |
|
|
|
|
| |
ARMv8 (Thumb encodings)
llvm-svn: 194263
|
| |
|
|
|
|
| |
ARMv8 (ARM encodings)
llvm-svn: 194261
|
| |
|
|
| |
llvm-svn: 194259
|
| |
|
|
|
|
| |
The encoding was updated in MSA r1.07.
llvm-svn: 194255
|