| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
When extracting a bitfield from the high register in a register pair,
the final offset should be relative to the high register (for 32-bit
extracts).
llvm-svn: 297288
|
| |
|
|
| |
llvm-svn: 297240
|
| |
|
|
| |
llvm-svn: 297239
|
| |
|
|
| |
llvm-svn: 297141
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Merge the tail block into the loop in cases where the main loop body
exits early, subject to profitability constraints. This will coalesce
the loop body into fewer blocks.
For example:
loop: loop:
// loop body // loop body
if (...) jump exit --> // more body
more: if (...) jump exit
// more body jump loop
jump loop
llvm-svn: 297033
|
| |
|
|
|
|
|
|
|
| |
The code in updateDeadFlags removed unnecessary <dead> flags, but there
can be cases where such a flag is not set, and yet a register has become
dead. For example, if a mux with identical inputs is replaced with a COPY,
the predicate register may no longer be used after that.
llvm-svn: 297032
|
| |
|
|
| |
llvm-svn: 297031
|
| |
|
|
| |
llvm-svn: 296901
|
| |
|
|
|
|
|
| |
Specifically, pick the opcode with the correct branch prediction, i.e.
jump:t or jump:nt.
llvm-svn: 296821
|
| |
|
|
| |
llvm-svn: 296777
|
| |
|
|
| |
llvm-svn: 296772
|
| |
|
|
| |
llvm-svn: 296666
|
| |
|
|
|
|
|
| |
For large programs this function can take significant amounts of time.
Let it abort gracefully when the program is too complex.
llvm-svn: 296662
|
| |
|
|
|
|
|
|
|
|
|
| |
On Hexagon, values of type i1 are passed in registers of type i32,
even though i1 is not a legal value for these registers. This is a
special case and needs special handling to maintain consistency of
the lowering information.
This fixes PR32089.
llvm-svn: 296645
|
| |
|
|
| |
llvm-svn: 296537
|
| |
|
|
| |
llvm-svn: 296532
|
| |
|
|
| |
llvm-svn: 296365
|
| |
|
|
|
|
|
|
|
|
|
|
| |
For example, avoid (single shift):
r0 = and(##536870908,lsr(r0,#3))
r0 = memw(r1+r0<<#0)
in favor of (two shifts):
r0 = lsr(r0,#5)
r0 = memw(r1+r0<<#2)
llvm-svn: 296196
|
| |
|
|
| |
llvm-svn: 296187
|
| |
|
|
| |
llvm-svn: 296026
|
| |
|
|
|
|
|
|
|
|
|
| |
In the bit tracker, references to other bit values in which the register
is 0 are prohibited. This means that generating self-referential register
cells like { w:32 [0-15]:s[0-15] [16-31]:s[15] } is impossible. In order
to get a self-referential cell, it had to be stored into a map and then
reloaded from it. To avoid this step, add a function that will set the
register to a given value without going through the map.
llvm-svn: 296025
|
| |
|
|
| |
llvm-svn: 295997
|
| |
|
|
| |
llvm-svn: 295981
|
| |
|
|
| |
llvm-svn: 295892
|
| |
|
|
| |
llvm-svn: 295883
|
| |
|
|
|
|
| |
Patch by Harsha Jagasia.
llvm-svn: 295879
|
| |
|
|
| |
llvm-svn: 295856
|
| |
|
|
| |
llvm-svn: 295855
|
| |
|
|
| |
llvm-svn: 295585
|
| |
|
|
|
|
| |
Reapply r295371 with a fix for the Windows bot failures.
llvm-svn: 295504
|
| |
|
|
|
|
|
|
|
|
| |
This reverts commit r295371.
It broke windows bots:
http://bb.pgr.jp/builders/ninja-clang-i686-msc19-R/builds/11402/steps/test-llvm/logs/stdio
llvm-svn: 295402
|
| |
|
|
| |
llvm-svn: 295373
|
| |
|
|
|
|
| |
All the cool targets are doing it...
llvm-svn: 295371
|
| |
|
|
| |
llvm-svn: 295366
|
| |
|
|
|
|
|
|
|
|
| |
Defining nodes should not alias with one another, while clobbering
nodes can. When pushing defs on stacks, push clobbers first, link
non-clobbering defs, then push the defs.
The data flow in a statement is now: uses -> clobbers -> defs.
llvm-svn: 295356
|
| |
|
|
|
|
| |
Remove the duplicate from DFG and make some members of PRI private.
llvm-svn: 295351
|
| |
|
|
| |
llvm-svn: 295078
|
| |
|
|
| |
llvm-svn: 294843
|
| |
|
|
| |
llvm-svn: 294837
|
| |
|
|
| |
llvm-svn: 294805
|
| |
|
|
| |
llvm-svn: 294775
|
| |
|
|
| |
llvm-svn: 294753
|
| |
|
|
| |
llvm-svn: 294621
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
graph_children, inverse_graph_nodes, inverse_graph_children).
Summary:
Convert all obvious node_begin/node_end and child_begin/child_end
pairs to range based for.
Sending for review in case someone has a good idea how to make
graph_children able to be inferred. It looks like it would require
changing GraphTraits to be two argument or something. I presume
inference does not happen because it would have to check every
GraphTraits in the world to see if the noderef types matched.
Note: This change was 3-staged with clang as well, which uses
Dominators/etc from LLVM.
Reviewers: chandlerc, tstellarAMD, dblaikie, rsmith
Subscribers: arsenm, llvm-commits, nhaehnle
Differential Revision: https://reviews.llvm.org/D29767
llvm-svn: 294620
|
| |
|
|
| |
llvm-svn: 294472
|
| |
|
|
|
|
|
|
|
| |
Remove TypeXTYPE, TypeALU32, TypeSYSTEM, TypeJR, and instead use their
architecture counterparts.
Patch by Colin LeMahieu.
llvm-svn: 294321
|
| |
|
|
|
|
|
|
|
|
| |
- Map A2_zxtb to A2_andir.
- Map PS_call_nr J2_call.
- Map A2_tfr[t|f][new] to A2_padd[t|f][new].
Patch by Colin LeMahieu.
llvm-svn: 294320
|
| |
|
|
|
|
| |
Reinstate r294256 with a fix.
llvm-svn: 294269
|
| |
|
|
|
|
|
| |
This reverts commit r294256. It seems to be causing more problems instead
of solving them.
llvm-svn: 294259
|
| |
|
|
|
|
| |
Patch by Colin LeMahieu.
llvm-svn: 294258
|