| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
not externally exposed.
llvm-svn: 138982
|
| |
|
|
| |
llvm-svn: 138980
|
| |
|
|
|
|
|
|
|
|
|
| |
- On COFF the .lcomm directive has an alignment argument.
- On ELF we fall back to .local + .comm
Based on a patch by NAKAMURA Takumi.
Fixes PR9337, PR9483 and PR10128.
llvm-svn: 138976
|
| |
|
|
| |
llvm-svn: 138974
|
| |
|
|
| |
llvm-svn: 138952
|
| |
|
|
| |
llvm-svn: 138948
|
| |
|
|
| |
llvm-svn: 138946
|
| |
|
|
| |
llvm-svn: 138922
|
| |
|
|
| |
llvm-svn: 138918
|
| |
|
|
|
|
|
| |
Make sure the low bit of the PC is set when loading an address directly
for jump tables in static relocation model.
llvm-svn: 138912
|
| |
|
|
|
|
| |
Thumb2 branches. However, this exposed a number of situations where the decoder was too permissive in allowing invalid instructions to decode successful. Specify additional fixed bits to close those gaps.
llvm-svn: 138910
|
| |
|
|
| |
llvm-svn: 138898
|
| |
|
|
| |
llvm-svn: 138889
|
| |
|
|
|
|
|
|
| |
need to preserve the sign of the index. This fixes miscompilations of Quicksort in the nightly testsuite, and hopefully others as well.
<rdar://problem/10046188>
llvm-svn: 138885
|
| |
|
|
|
|
|
|
| |
When we want encoding T3 (the wide encoding), we can explicitly check for
that and twiddle the CanAcceptCarrySet accordingly. For now, just correctly
handle encodings T1 and T2 when in Thumb2 mode.
llvm-svn: 138879
|
| |
|
|
|
|
| |
instead of labels.
llvm-svn: 138874
|
| |
|
|
| |
llvm-svn: 138873
|
| |
|
|
|
|
|
| |
Also add instruction aliases for non-.w versions of SBC since they're the
same.
llvm-svn: 138871
|
| |
|
|
| |
llvm-svn: 138868
|
| |
|
|
|
|
|
|
| |
When the destination register of an add immediate instruction is
explicitly specified, encoding T1 is preferred, else encoding T2 is
preferred.
llvm-svn: 138862
|
| |
|
|
|
|
|
|
|
|
|
| |
It appears that our use of the imp-use and imp-def flags with
sub-registers is not yet robust enough to support this.
The failing test case is complicated, I am working on a reduction.
<rdar://problem/10044201>
llvm-svn: 138861
|
| |
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
a testcase that necessitates it.
llvm-svn: 138739
|
| |
|
|
| |
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: 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
|