| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 139739
|
|
|
|
|
|
| |
Fix a bug in handling default flags for both ARM and Thumb encodings.
llvm-svn: 139721
|
|
|
|
| |
llvm-svn: 139639
|
|
|
|
| |
llvm-svn: 139575
|
|
|
|
|
|
| |
either.
llvm-svn: 139542
|
|
|
|
|
|
|
| |
Some aliases for MOV(register) also to keep existing T1 tests happy when
run in thumbv7 mode.
llvm-svn: 139440
|
|
|
|
| |
llvm-svn: 139422
|
|
|
|
|
|
| |
have a predicate operand, unlike conditional branches.
llvm-svn: 139415
|
|
|
|
| |
llvm-svn: 139389
|
|
|
|
| |
llvm-svn: 139381
|
|
|
|
|
|
| |
Refactor operand handling for STRD as well. Tests for that forthcoming.
llvm-svn: 139322
|
|
|
|
|
|
|
| |
More cleanup of the general indexed addressing T2 instructions. Still more to
do, especially for stores.
llvm-svn: 139272
|
|
|
|
|
|
|
| |
Adjust encoding of writeback load/store instructions to better reflect the
way the operand types are represented.
llvm-svn: 139270
|
|
|
|
| |
llvm-svn: 139267
|
|
|
|
| |
llvm-svn: 139264
|
|
|
|
| |
llvm-svn: 139258
|
|
|
|
| |
llvm-svn: 139256
|
|
|
|
|
|
|
|
|
| |
The immediate offset of the non-writeback i8 form (encoding T4) allows
negative offsets only. The positive offset form of the encoding is the
LDRT instruction. Immediate offsets in the range [0,255] use encoding T3
instead.
llvm-svn: 139254
|
|
|
|
|
|
|
|
| |
There is no 16-bit wide encoding, so the .w suffix isn't needed (indeed, isn't
documented as allowed). Also add the missing '!' token on the _UPD
variant.
llvm-svn: 139243
|
|
|
|
|
|
| |
Handle explicit 'ia' suffix via a MnemonicAlias (pre-existing).
llvm-svn: 139234
|
|
|
|
| |
llvm-svn: 139202
|
|
|
|
| |
llvm-svn: 139200
|
|
|
|
| |
llvm-svn: 139193
|
|
|
|
| |
llvm-svn: 139191
|
|
|
|
| |
llvm-svn: 139188
|
|
|
|
| |
llvm-svn: 139172
|
|
|
|
|
|
|
|
| |
Now the 'S' instructions, e.g. ADDS, treat S bit as optional operand as well.
Also fix isel hook to correctly set the optional operand.
rdar://10073745
llvm-svn: 139157
|
|
|
|
| |
llvm-svn: 139053
|
|
|
|
|
|
|
| |
For other shift and rotate instructions, too. Tests for those forthcoming
as I work my way through the ISA.
llvm-svn: 139040
|
|
|
|
| |
llvm-svn: 139022
|
|
|
|
| |
llvm-svn: 139021
|
|
|
|
| |
llvm-svn: 139017
|
|
|
|
| |
llvm-svn: 138922
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
Also add instruction aliases for non-.w versions of SBC since they're the
same.
llvm-svn: 138871
|
|
|
|
|
|
| |
other the EQ/NE. Discovered by roundtrip testing.
llvm-svn: 138840
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
| |
I don't really like the patterns, but I'm having trouble coming up with a
better way to handle them.
I plan on making other targets use the same legalization
ARM-without-memory-barriers is using... it's not especially efficient, but
if anyone cares, it's not that hard to fix for a given target if there's
some better lowering.
llvm-svn: 138621
|
|
|
|
|
|
| |
remaining crashers when disassembling the entire 16-bit instruction space.
llvm-svn: 138507
|
|
|
|
|
|
| |
end up trying to print out an illegal predicate.
llvm-svn: 138443
|
|
|
|
|
|
| |
instructions.
llvm-svn: 138339
|
|
|
|
|
|
| |
Found by randomized testing.
llvm-svn: 138337
|
|
|
|
| |
llvm-svn: 138301
|
|
|
|
| |
llvm-svn: 138300
|
|
|
|
| |
llvm-svn: 138298
|
|
|
|
| |
llvm-svn: 138294
|