|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| ... |  | 
| | 
| 
| 
| | llvm-svn: 143262 | 
| | 
| 
| 
| | llvm-svn: 143237 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | When '~imm' is encodable as a t2_so_imm but plain 'imm' is not. For example,
  mov r2, #-3
becomes
  mvn r2, #2
rdar://10349224
llvm-svn: 143235 | 
| | 
| 
| 
| 
| 
| | instructions.
llvm-svn: 143220 | 
| | 
| 
| 
| | llvm-svn: 143218 | 
| | 
| 
| 
| | llvm-svn: 143217 | 
| | 
| 
| 
| | llvm-svn: 143213 | 
| | 
| 
| 
| 
| 
| | inadvertantly exposed a decoding ambiguity between SWP and CPS that the auto-generated decoder can't handle.
llvm-svn: 143208 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | fixes: Use a separate register, instead of SP, as the
calling-convention resource, to avoid spurious conflicts with
actual uses of SP. Also, fix unscheduling of calling sequences,
which can be triggered by pseudo-two-address dependencies.
llvm-svn: 143206 | 
| | 
| 
| 
| | llvm-svn: 143203 | 
| | 
| 
| 
| | llvm-svn: 143202 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | Outside an IT block, "add r3, #2" should select a 32-bit wide encoding
rather than generating an error indicating the 16-bit encoding is only
legal in an IT block (outside, the 'S' suffic is required for the 16-bit
encoding).
rdar://10348481
llvm-svn: 143201 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | it fixes the dragonegg self-host (it looks like gcc is miscompiled).
Original commit messages:
Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW
on every node as it legalizes them. This makes it easier to use
hasOneUse() heuristics, since unneeded nodes can be removed from the
DAG earlier.
Make LegalizeOps visit the DAG in an operands-last order. It previously
used operands-first, because LegalizeTypes has to go operands-first, and
LegalizeTypes used to be part of LegalizeOps, but they're now split.
The operands-last order is more natural for several legalization tasks.
For example, it allows lowering code for nodes with floating-point or
vector constants to see those constants directly instead of seeing the
lowered form (often constant-pool loads). This makes some things
somewhat more complicated today, though it ought to allow things to be
simpler in the future. It also fixes some bugs exposed by Legalizing
using RAUW aggressively.
Remove the part of LegalizeOps that attempted to patch up invalid chain
operands on libcalls generated by LegalizeTypes, since it doesn't work
with the new LegalizeOps traversal order. Instead, define what
LegalizeTypes is doing to be correct, and transfer the responsibility
of keeping calls from having overlapping calling sequences into the
scheduler.
Teach the scheduler to model callseq_begin/end pairs as having a
physical register definition/use to prevent calls from having
overlapping calling sequences. This is also somewhat complicated, though
there are ways it might be simplified in the future.
This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others.
Please direct high-level questions about this patch to management.
Delete #if 0 code accidentally left in.
llvm-svn: 143188 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | on every node as it legalizes them. This makes it easier to use
hasOneUse() heuristics, since unneeded nodes can be removed from the
DAG earlier.
Make LegalizeOps visit the DAG in an operands-last order. It previously
used operands-first, because LegalizeTypes has to go operands-first, and
LegalizeTypes used to be part of LegalizeOps, but they're now split.
The operands-last order is more natural for several legalization tasks.
For example, it allows lowering code for nodes with floating-point or
vector constants to see those constants directly instead of seeing the
lowered form (often constant-pool loads). This makes some things
somewhat more complicated today, though it ought to allow things to be
simpler in the future. It also fixes some bugs exposed by Legalizing
using RAUW aggressively.
Remove the part of LegalizeOps that attempted to patch up invalid chain
operands on libcalls generated by LegalizeTypes, since it doesn't work
with the new LegalizeOps traversal order. Instead, define what
LegalizeTypes is doing to be correct, and transfer the responsibility
of keeping calls from having overlapping calling sequences into the
scheduler.
Teach the scheduler to model callseq_begin/end pairs as having a
physical register definition/use to prevent calls from having
overlapping calling sequences. This is also somewhat complicated, though
there are ways it might be simplified in the future.
This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others.
Please direct high-level questions about this patch to management.
llvm-svn: 143177 | 
| | 
| 
| 
| 
| 
| 
| 
| | Just treat it as if the constituent D registers where specified.
rdar://10348896
llvm-svn: 143167 | 
| | 
| 
| 
| | llvm-svn: 143164 | 
| | 
| 
| 
| 
| 
| | previously.
llvm-svn: 143162 | 
| | 
| 
| 
| 
| 
| 
| | Previously, we were only setting the alignment bits on over-aligned
loads and stores.
llvm-svn: 143160 | 
| | 
| 
| 
| | llvm-svn: 143158 | 
| | 
| 
| 
| | llvm-svn: 143145 | 
| | 
| 
| 
| 
| 
| 
| | not depend on In32BitMode.  Use the sysexitq mnemonic for the version with the
REX.W prefix and only allow it only In64BitMode.  rdar://9738584
llvm-svn: 143112 | 
| | 
| 
| 
| 
| 
| | rdar://10348844
llvm-svn: 143110 | 
| | 
| 
| 
| 
| 
| | rdar://10348584
llvm-svn: 143108 | 
| | 
| 
| 
| | llvm-svn: 143086 | 
| | 
| 
| 
| | llvm-svn: 143080 | 
| | 
| 
| 
| 
| 
| 
| 
| | up.  Thus, improving the support for compares is goodness because it increases
the number of terminator instructions we can handle.  This creates many more 
opportunities for target specific fast-isel.
llvm-svn: 143079 | 
| | 
| 
| 
| 
| 
| | place.  No functional change intended.
llvm-svn: 143078 | 
| | 
| 
| 
| | llvm-svn: 143076 | 
| | 
| 
| 
| 
| 
| | SelectBranch.  No functional change intended.
llvm-svn: 143072 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | We were parsing label references to the i12 encoding, which isn't right.
They need to go to the pci variant instead.
More of rdar://10348687
llvm-svn: 143068 | 
| | 
| 
| 
| 
| 
| | Patch by Sanjoy Das.
llvm-svn: 143064 | 
| | 
| 
| 
| 
| 
| | Partial fix for rdar://10348687.
llvm-svn: 143063 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | MORESTACK_RET_RESTORE_R10; which are lowered to a RET and a RET
followed by a MOV respectively.  Having a fake instruction prevents
the verifier from seeing a MachineBasicBlock end with a
non-terminator (MOV).  It also prevents the rather eccentric case of a
MachineBasicBlock ending with RET but having successors nevertheless.
Patch by Sanjoy Das.
llvm-svn: 143062 | 
| | 
| 
| 
| | llvm-svn: 143055 | 
| | 
| 
| 
| | llvm-svn: 143034 | 
| | 
| 
| 
| 
| 
| | llvm-commits regarding exactly how much optsize should optimize for size over performance.
llvm-svn: 143023 | 
| | 
| 
| 
| 
| 
| | the 'removeSuccessor' call. Noticed in a Release+Asserts+Check buildbot.
llvm-svn: 143018 | 
| | 
| 
| 
| 
| 
| 
| | on Darwin platforms where -Os means optimize for size without hurting
performance.
llvm-svn: 143002 | 
| | 
| 
| 
| 
| 
| 
| 
| | The address for $sp, and addresses for sdc1/ldc1 must be 8-byte aligned
Patch by Petar Jovanovic.
llvm-svn: 142930 | 
| | 
| 
| 
| 
| 
| | Four entry register lists.
llvm-svn: 142882 | 
| | 
| 
| 
| | llvm-svn: 142880 | 
| | 
| 
| 
| | llvm-svn: 142878 | 
| | 
| 
| 
| | llvm-svn: 142877 | 
| | 
| 
| 
| 
| 
| | Three entry register list variation.
llvm-svn: 142876 | 
| | 
| 
| 
| | llvm-svn: 142871 | 
| | 
| 
| 
| | llvm-svn: 142867 | 
| | 
| 
| 
| 
| 
| | One and two length register list variants.
llvm-svn: 142861 | 
| | 
| 
| 
| 
| 
| 
| 
| | Split am6offset into fixed and register offset variants so the instruction
encodings are explicit rather than relying an a magic reg0 marker.
Needed to being able to parse these.
llvm-svn: 142853 | 
| | 
| 
| 
| 
| 
| | PR11207.
llvm-svn: 142841 | 
| | 
| 
| 
| 
| 
| | more of this code gets refactored, a lot of these manual decoding hooks should get smaller and/or go away entirely.
llvm-svn: 142817 |