| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
| |
FixedLenDecoderEmitter.
This new disassembler can correctly decode all the testcases that the old one did, though
some "expected failure" testcases are XFAIL'd for now because it is not (yet) as strict in
operand checking as the old one was.
llvm-svn: 137144
|
|
|
|
| |
llvm-svn: 136942
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Memory operand parsing is a bit haphazzard at the moment, in no small part
due to the even more haphazzard representations of memory operands in the .td
files. Start cleaning that all up, at least a bit.
The addressing modes in the .td files will be being simplified to not be
so monolithic, especially with regards to immediate vs. register offsets
and post-indexed addressing. addrmode3 is on its way with this patch, for
example.
This patch is foundational to enable going back to smaller incremental patches
for the individual memory referencing instructions themselves. It does just
enough to get the basics in place and handle the "make check" regression tests
we already have.
Follow-up work will be fleshing out the details and adding more robust test
cases for the individual instructions, starting with ARM mode and moving from
there into Thumb and Thumb2.
llvm-svn: 136845
|
|
|
|
|
|
| |
for allowing the fixed-length disassembler to distinguish between SBFX and STR_PRE.
llvm-svn: 136141
|
|
|
|
|
|
| |
rdar://9842203
llvm-svn: 136102
|
|
|
|
| |
llvm-svn: 136098
|
|
|
|
|
|
|
| |
No intendeded functional change. Just cleaning up a bit to make things more
self-consistent in layout and style.
llvm-svn: 136095
|
|
|
|
| |
llvm-svn: 135958
|
|
|
|
| |
llvm-svn: 135950
|
|
|
|
|
|
|
| |
Add parsing and diagnostics for malformed inputs. Tests for diagnostics and
for correct encodings.
llvm-svn: 135776
|
|
|
|
|
|
| |
necessitates a lot of changes to related bits.
llvm-svn: 135722
|
|
|
|
| |
llvm-svn: 135682
|
|
|
|
|
|
|
|
|
|
| |
Move the shift operator and special value (32 encoded as 0 for PKHTB) handling
into the instruction printer. This cleans up a bit of the disassembler
special casing for these instructions, more easily handles not printing the
operand at all for "lsl #0" and prepares for correct asm parsing of these
operands.
llvm-svn: 135626
|
|
|
|
|
|
|
| |
Move common definitions for ARM and Thumb2 into ARMInstrFormats.td and rename
them to be a bit more descriptive that they're for the PKH instructions.
llvm-svn: 135617
|
|
|
|
|
|
|
|
|
| |
The shift type is implied by the instruction (PKHBT vs. PKHTB) and so shouldn't
be also encoded as part of the shift value immediate. Otherwise we're able to
represent invalid instructions, plus it needlessly complicates the
representation. Preparatory work for asm parsing of these instructions.
llvm-svn: 135616
|
|
|
|
|
|
| |
decoders for ARM.
llvm-svn: 135524
|
|
|
|
|
|
| |
an opcode. Switch ARM over to using that rather than its own special MCInstrDesc bits.
llvm-svn: 135106
|
|
|
|
| |
llvm-svn: 135082
|
|
|
|
|
|
|
| |
They're all Thumb2 only, not just some of them. More refactoring cleanup
coming.
llvm-svn: 135081
|
|
|
|
|
|
|
|
|
| |
Hook up the TableGen lowering for simple pseudo instructions for ARM and
use it for a subset of the many pseudos the backend has as proof of concept.
More conversions to come.
llvm-svn: 134705
|
|
|
|
|
|
|
|
|
|
| |
This allows us to remove the (bogus and unneeded) encoding information from
the pseudo-instruction class definitions. All of the pseudos that haven't
been converted yet and still need encoding information instance from the normal
instruction classes and explicitly set isCodeGenOnly, and so are distinct
from this change.
llvm-svn: 134540
|
|
|
|
|
|
| |
followed by a conditional and imm8.
llvm-svn: 132179
|
|
|
|
| |
llvm-svn: 131649
|
|
|
|
| |
llvm-svn: 130763
|
|
|
|
|
|
|
|
|
| |
Also set the encoding bits (for A8.6.303, A8.6.328, A8.6.329) Inst{3-0} = 0b0000,
in class NVLaneOp.
rdar://problem/9240648
llvm-svn: 129015
|
|
|
|
|
|
|
|
|
|
| |
also fix the encoding of the later.
- Add a new encoding bit to describe the index mode used in AM3.
- Teach printAddrMode3Operand to check by the addressing mode which
index mode to print.
- Testcases.
llvm-svn: 128832
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
all LDR/STR changes and left them to a future patch. Passing all
checks now.
- Implement asm parsing support for LDRT, LDRBT, STRT, STRBT and
fix the encoding wherever is possible.
- Add a new encoding bit to describe the index mode used and teach
printAddrMode2Operand to check by the addressing mode which index
mode to print.
- Testcases
llvm-svn: 128689
|
|
|
|
| |
llvm-svn: 128635
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Implement asm parsing support for LDRT, LDRBT, STRT, STRBT and
{STR,LDC}{2}_{PRE,POST} fixing the encoding wherever is possible.
- Move all instructions which use am2offset without a pattern to use
addrmode2.
- Add a new encoding bit to describe the index mode used and teach
printAddrMode2Operand to check by the addressing mode which index
mode to print.
- Testcases
llvm-svn: 128632
|
|
|
|
|
|
| |
This revision introduced a dependency cycle, as nlewycky mentioned by email.
llvm-svn: 128597
|
|
|
|
|
|
| |
NEON instructions. With this fix, the entire test-suite passes with the Thumb integrated assembler.
llvm-svn: 128587
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
{STR,LDC}{2}_PRE.
- Fixed the encoding in some places.
- Some of those instructions were using am2offset and now use addrmode2.
Codegen isn't affected, instructions which use SelectAddrMode2Offset were not
touched.
- Teach printAddrMode2Operand to check by the addressing mode which index
mode to print.
- This is a work in progress, more work to come. The idea is to change places
which use am2offset to use addrmode2 instead, as to unify assembly parser.
- Add testcases for assembly parser
llvm-svn: 128585
|
|
|
|
| |
llvm-svn: 128236
|
|
|
|
| |
llvm-svn: 127601
|
|
|
|
| |
llvm-svn: 127420
|
|
|
|
|
|
|
|
| |
expand the testing of the narrowing shift right instructions.
No functionality change.
llvm-svn: 127193
|
|
|
|
|
|
|
|
|
|
| |
shift.
16-bit: imm6<5:3> = '001', 8 - <imm> is encded in imm6<2:0>
32-bit: imm6<5:4> = '01',16 - <imm> is encded in imm6<3:0>
64-bit: imm6<5> = '1', 32 - <imm> is encded in imm6<4:0>
llvm-svn: 126723
|
|
|
|
| |
llvm-svn: 126298
|
|
|
|
|
|
| |
Cortex-A8 only.
llvm-svn: 126238
|
|
|
|
|
|
| |
testcases for the disassembler to make sure it still works for "msr".
llvm-svn: 125948
|
|
|
|
|
|
| |
not double precision ones.
llvm-svn: 125624
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Add custom operand matching for imod and iflags.
- Rename SplitMnemonicAndCC to SplitMnemonic since it splits more than CC
from mnemonic.
- While adding ".w" as an operand, don't change "Head" to avoid passing the
wrong mnemonic to ParseOperand.
- Add asm parser tests.
- Add disassembler tests just to make sure it can catch all cps versions.
llvm-svn: 125489
|
|
|
|
|
|
|
|
|
|
|
| |
Teach the AsmMatcher handling to distinguish between an error custom-parsing
an operand and a failure to match. The former should propogate the error
upwards, while the latter should continue attempting to parse with
alternative matchers.
Update the ARM asm parser accordingly.
llvm-svn: 125426
|
|
|
|
| |
llvm-svn: 125055
|
|
|
|
| |
llvm-svn: 123919
|
|
|
|
| |
llvm-svn: 123917
|
|
|
|
| |
llvm-svn: 123769
|
|
|
|
|
|
| |
rdar://8768390
llvm-svn: 121876
|
|
|
|
|
|
| |
friends.
llvm-svn: 121585
|
|
|
|
| |
llvm-svn: 121522
|