| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 138848
|
| |
|
|
| |
llvm-svn: 138846
|
| |
|
|
| |
llvm-svn: 138845
|
| |
|
|
|
|
| |
other the EQ/NE. Discovered by roundtrip testing.
llvm-svn: 138840
|
| |
|
|
|
|
| |
than labels.
llvm-svn: 138837
|
| |
|
|
|
|
| |
instead of labels.
llvm-svn: 138835
|
| |
|
|
|
|
| |
necessary for round-tripping.
llvm-svn: 138834
|
| |
|
|
| |
llvm-svn: 138833
|
| |
|
|
| |
llvm-svn: 138832
|
| |
|
|
|
|
| |
disabled.
llvm-svn: 138826
|
| |
|
|
|
|
|
| |
In the case of EDInstInfo, this would actually cause a bug when -1 became 255
and was then compared >=0 in llvm-mc/Disassembler.cpp.
llvm-svn: 138825
|
| |
|
|
|
|
|
|
|
|
|
|
| |
code is inserted to first check if the current stacklet has enough
space. If so, space is allocated by simply decrementing the stack
pointer. Otherwise a runtime routine (__morestack_allocate_stack_space
in libgcc) is called which allocates the required memory from the
heap.
Patch by Sanjoy Das.
llvm-svn: 138818
|
| |
|
|
|
|
|
|
|
|
|
|
| |
from DYNAMIC_STACKALLOC.
Two new pseudo instructions (SEG_ALLOCA_32 and SEG_ALLOCA_64) which
will match X86SegAlloca (based on word size) are also added. They
will be custom emitted to inject the actual stack handling code.
Patch by Sanjoy Das.
llvm-svn: 138814
|
| |
|
|
|
|
|
|
|
|
|
|
| |
X86. Modify the pass added in the previous patch to call this new
code.
This new prologues generated will call a libgcc routine (__morestack)
to allocate more stack space from the heap when required
Patch by Sanjoy Das.
llvm-svn: 138812
|
| |
|
|
|
|
|
| |
-segmented-stacks.
Patch by Sanjoy Das!
llvm-svn: 138811
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Add a instruction flag: hasPostISelHook which tells the pre-RA scheduler to
call a target hook to adjust the instruction. For ARM, this is used to
adjust instructions which may be setting the 's' flag. ADC, SBC, RSB, and RSC
instructions have implicit def of CPSR (required since it now uses CPSR physical
register dependency rather than "glue"). If the carry flag is used, then the
target hook will *fill in* the optional operand with CPSR. Otherwise, the hook
will remove the CPSR implicit def from the MachineInstr.
llvm-svn: 138810
|
| |
|
|
|
|
| |
arguments as before), unset CR1EQ otherwise.
llvm-svn: 138802
|
| |
|
|
|
|
| |
Patch supplied by Liu (projlc@gmail.com)
llvm-svn: 138799
|
| |
|
|
|
|
| |
Patch supplied by Liu (projlc@gmail.com)
llvm-svn: 138798
|
| |
|
|
|
|
| |
Patch supplied by Liu (projlc@gmail.com)
llvm-svn: 138797
|
| |
|
|
| |
llvm-svn: 138796
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
register dependency (rather than glue them together). This is general
goodness as it gives scheduler more freedom. However it is motivated by
a nasty bug in isel.
When a i64 sub is expanded to subc + sube.
libcall #1
\
\ subc
\ / \
\ / \
\ / libcall #2
sube
If the libcalls are not serialized (i.e. both have chains which are dag
entry), legalizer can serialize them in arbitrary orders. If it's
unlucky, it can force libcall #2 before libcall #1 in the above case.
subc
|
libcall #2
|
libcall #1
|
sube
However since subc and sube are "glued" together, this ends up being a
cycle when the scheduler combine subc and sube as a single scheduling
unit.
The right solution is to fix LegalizeType too chains the libcalls together.
However, LegalizeType is not processing nodes in order so that's harder than
it should be. For now, the move to physical register dependency will do.
rdar://10019576
llvm-svn: 138791
|
| |
|
|
| |
llvm-svn: 138782
|
| |
|
|
| |
llvm-svn: 138781
|
| |
|
|
| |
llvm-svn: 138780
|
| |
|
|
| |
llvm-svn: 138773
|
| |
|
|
|
|
| |
algorithm in LowerUINT_TO_FP_i32. This only has a substantial effect on the generated code when the input is extracted from a vector register; other ways of loading an i32 do the appropriate zeroing implicitly. Fixes PR10802.
llvm-svn: 138768
|
| |
|
|
|
|
| |
encodings to the load-store optimizer that I applied to the instruction selector in r138758. Fixes ary3 from the nightly test suite.
llvm-svn: 138766
|
| |
|
|
| |
llvm-svn: 138760
|
| |
|
|
|
|
| |
differently. Update the manual instruction selection code that was encoding them the addrmode2 way even though LDR_PRE_IMM/LDRB_PRE_IMM had switched to addrmode_imm12. Should fix a number of nightly test failures.
llvm-svn: 138758
|
| |
|
|
| |
llvm-svn: 138754
|
| |
|
|
|
|
| |
enough to fix properly.
llvm-svn: 138751
|
| |
|
|
|
|
| |
and LDRB_PRE_IMM in r138653.
llvm-svn: 138746
|
| |
|
|
| |
llvm-svn: 138744
|
| |
|
|
|
|
| |
a testcase that necessitates it.
llvm-svn: 138739
|
| |
|
|
| |
llvm-svn: 138725
|
| |
|
|
|
|
| |
X86MCCodeEmitter does.
llvm-svn: 138723
|
| |
|
|
| |
llvm-svn: 138706
|
| |
|
|
|
|
| |
decoding bug this uncovered.
llvm-svn: 138675
|
| |
|
|
| |
llvm-svn: 138673
|
| |
|
|
| |
llvm-svn: 138669
|
| |
|
|
| |
llvm-svn: 138667
|
| |
|
|
|
|
|
|
| |
This handles only the handling of the IT instruction itself, not the
processing and validation of the instructions in the IT block. That's next,
and will include encoding tests for IT itself.
llvm-svn: 138665
|
| |
|
|
| |
llvm-svn: 138660
|
| |
|
|
| |
llvm-svn: 138657
|
| |
|
|
|
|
| |
were failing to specify enough fixed bits of LDR_PRE/LDRB_PRE, resulting in decoding conflicts. Separate them into immediate vs. register versions, allowing us to specify the necessary fixed bits. This in turn results in the test being decoded properly, and being rejected as UNPREDICTABLE rather than a hard failure.
llvm-svn: 138653
|
| |
|
|
| |
llvm-svn: 138642
|
| |
|
|
|
|
| |
This should fix PR10772.
llvm-svn: 138636
|
| |
|
|
|
|
| |
instructions. This is helpful for disassembler testing, and indeed exposed a disassembler bug that is also fixed here.
llvm-svn: 138635
|
| |
|
|
| |
llvm-svn: 138630
|