| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 148762
|
|
|
|
| |
llvm-svn: 148745
|
|
|
|
|
|
| |
rdar://10558523
llvm-svn: 147189
|
|
|
|
| |
llvm-svn: 147025
|
|
|
|
|
|
| |
rdar://9932658
llvm-svn: 146921
|
|
|
|
|
|
|
|
| |
Work in progress. Parsing for non-writeback, single spaced register lists
works now. The rest have the representations better factored, but still
need more to be able to parse properly.
llvm-svn: 146579
|
|
|
|
| |
llvm-svn: 145504
|
|
|
|
| |
llvm-svn: 145464
|
|
|
|
|
|
| |
As a side effect hex is printed lowercase instead of uppercase now.
llvm-svn: 144013
|
|
|
|
|
|
| |
One-register lists are legal on LDM/STM instructions, but we should not print the PUSH/POP aliases when they appear. This fixes round tripping on this instruction.
llvm-svn: 143557
|
|
|
|
| |
llvm-svn: 142682
|
|
|
|
| |
llvm-svn: 142675
|
|
|
|
|
|
|
|
|
|
|
|
| |
Next step in the ongoing saga of NEON load/store assmebly parsing. Handle
VLD1 instructions that take a two-register register list.
Adjust the instruction definitions to only have the single encoded register
as an operand. The super-register from the pseudo is kept as an implicit def,
so passes which come after pseudo-expansion still know that the instruction
defines the other subregs.
llvm-svn: 142670
|
|
|
|
| |
llvm-svn: 142657
|
|
|
|
| |
llvm-svn: 142441
|
|
|
|
| |
llvm-svn: 141786
|
|
|
|
| |
llvm-svn: 141781
|
|
|
|
| |
llvm-svn: 141780
|
|
|
|
| |
llvm-svn: 141446
|
|
|
|
|
|
| |
AIF bits are set.
llvm-svn: 141190
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
using llvm's public 'C' disassembler API now including annotations.
Hooked this up to Darwin's otool(1) so it can again print things like branch
targets for example this:
blx _puts
instead of this:
blx #-36
and includes support for annotations for branches to symbol stubs like:
bl 0x40 @ symbol stub for: _puts
and annotations for pc relative loads like this:
ldr r3, #8 @ literal pool for: Hello, world!
Also again can print the expression encoded in the Mach-O relocation entries for
things like this:
movt r0, :upper16:((_foo-_bar)+1234)
llvm-svn: 141129
|
|
|
|
|
|
|
|
|
|
|
| |
Encode the immediate into its 8-bit form as part of isel rather than later,
which simplifies things for mapping the encoding bits, allows the removal
of the custom disassembler decoding hook, makes the operand printer trivial,
and prepares things more cleanly for handling these in the asm parser.
rdar://10211428
llvm-svn: 140834
|
|
|
|
|
|
|
|
|
|
|
|
| |
forgotten to commit.
Build on previous patches to successfully distinguish between an M-series and A/R-series MSR and MRS instruction. These take different mask names and have a *slightly* different opcode format.
Add decoder and disassembler tests.
Improvement on the previous patch - successfully distinguish between valid v6m and v7m masks (one is a subset of the other). The patch had to be edited slightly to apply to ToT.
llvm-svn: 140696
|
|
|
|
|
|
| |
even if it's zero, to distinguish them from non-post-indexed instructions.
llvm-svn: 140420
|
|
|
|
|
|
| |
other test failures I caused.
llvm-svn: 140284
|
|
|
|
|
|
| |
as [pc, #123] rather than simply #123.
llvm-svn: 140283
|
|
|
|
|
|
| |
they have a fallback path now.
llvm-svn: 140267
|
|
|
|
|
|
| |
that the disassembler outputs annotations on with the streamer that the InstPrinter will print them on.
llvm-svn: 140217
|
|
|
|
| |
llvm-svn: 140078
|
|
|
|
| |
llvm-svn: 139943
|
|
|
|
|
|
| |
return, and the printer accept, an annotation string which can be passed through if the client cares about annotations.
llvm-svn: 139876
|
|
|
|
|
|
| |
MC-based InstPrinters to print them out. Enhance the ARM and X86 InstPrinter's to do so in verbose mode.
llvm-svn: 139820
|
|
|
|
| |
llvm-svn: 139639
|
|
|
|
| |
llvm-svn: 139381
|
|
|
|
|
|
| |
handling to llvm-mc. Reviewed by Owen Anderson.
llvm-svn: 139237
|
|
|
|
| |
llvm-svn: 138754
|
|
|
|
|
|
| |
rdar://10015134
llvm-svn: 138467
|
|
|
|
|
|
|
|
| |
There is no non-writeback store multiple instruction in Thumb1, so
don't define one. As a result load multiple is the only instantiation of
the multiclass, so refactor that away entirely.
llvm-svn: 138338
|
|
|
|
|
|
| |
The irony is not lost that this is not a completely trivial patchset.
llvm-svn: 138143
|
|
|
|
|
|
|
|
| |
Fix base register type and canonicallize to the "ldm" spelling rather than
"ldmia." Add diagnostics for incorrect writeback token and out-of-range
registers.
llvm-svn: 137986
|
|
|
|
| |
llvm-svn: 137900
|
|
|
|
|
|
|
|
|
| |
Represent the operand value as it will be encoded in the instruction. This
allows removing the specialized encoder and decoder methods entirely. Add
an assembler match class while we're at it to lay groundwork for parsing the
thumb shift instructions.
llvm-svn: 137879
|
|
|
|
|
|
| |
additional encoding fixes added by me.
llvm-svn: 137322
|
|
|
|
|
|
|
| |
Per the ARM ARM, a 'push' of a single register encodes as an STR,
not an STM.
llvm-svn: 137318
|
|
|
|
|
|
|
| |
Per the ARM ARM, a 'pop' of a single register encodes as an LDR,
not an LDM.
llvm-svn: 137316
|
|
|
|
|
|
|
| |
The immediate portion of the operand is just a boolean (the 'U' bit indicating
add vs. subtract). Treat it as such.
llvm-svn: 136969
|
|
|
|
| |
llvm-svn: 136968
|
|
|
|
|
|
| |
complement offsets. Add an appropriate immediate type for them.
llvm-svn: 136896
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
Allow the rot_imm operand to be optional. This sets the stage for refactoring
away the "rr" versions from the multiclasses and replacing them with Pat<>s.
llvm-svn: 136154
|