| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The reference manual defines only 5 permitted values for the immediate field of the "hint" instruction:
1. nop (imm == 0)
2. yield (imm == 1)
3. wfe (imm == 2)
4. wfi (imm == 3)
5. sev (imm == 4)
Therefore, restrict the permitted values for the "hint" instruction to 0 through 4.
Patch by Mihail Popa <Mihail.Popa@arm.com>
llvm-svn: 179707
|
|
|
|
|
|
|
|
| |
the upper bit is set.
They should always be zero-extended, not sign extended. Added test case.
llvm-svn: 178275
|
|
|
|
|
|
|
|
|
|
| |
If PC or SP is the destination, the disassembler erroneously failed with the
invalid encoding, despite the manual saying that both are fine.
This patch addresses failure to decode encoding T4 of LDR (A8.8.62) which is a
postindexed load, where the offset 0xc is applied to SP after the load occurs.
llvm-svn: 178017
|
|
|
|
| |
llvm-svn: 170578
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.
Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]
llvm-svn: 169131
|
|
|
|
|
|
| |
which would then cause an assert when printed. rdar://11437956
llvm-svn: 168960
|
|
|
|
|
|
|
| |
is 24 bits not 20 and the decoding needed to correctly handle converting the
J1 and J2 bits to their I1 and I2 values to reconstruct the displacement.
llvm-svn: 166982
|
|
|
|
|
|
|
| |
because the value is incorrectly being signed extended when passed to
SymbolLookUp().
llvm-svn: 166234
|
|
|
|
|
|
|
|
|
| |
This patch fixes load/store instructions to handle less common cases
like "asr #32", "rrx" properly throughout the MC layer.
Patch by Chris Lidbury.
llvm-svn: 164455
|
|
|
|
|
|
| |
Patch by Chris Lidbury.
llvm-svn: 163323
|
|
|
|
|
|
|
|
| |
instructions.
Patch by Chris Lidbury.
llvm-svn: 163321
|
|
|
|
|
|
| |
Reviewed offline by chandlerc.
llvm-svn: 162623
|
|
|
|
| |
llvm-svn: 162086
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Refactor the TableGen'erated fixed length disassemblmer to use a
table-driven state machine rather than a massive set of nested
switch() statements.
As a result, the ARM Disassembler (ARMDisassembler.cpp) builds much more
quickly and generates a smaller end result. For a Release+Asserts build on
a 16GB 3.4GHz i7 iMac w/ SSD:
Time to compile at -O2 (averaged w/ hot caches):
Previous: 35.5s
New: 8.9s
TEXT size:
Previous: 447,251
New: 297,661
Builds in 25% of the time previously required and generates code 66% of
the size.
Execution time of the disassembler is only slightly slower (7% disassembling
10 million ARM instructions, 19.6s vs 21.0s). The new implementation has
not yet been tuned, however, so the performance should almost certainly
be recoverable should it become a concern.
llvm-svn: 161888
|
|
|
|
|
|
| |
index issue.
llvm-svn: 161162
|
|
|
|
| |
llvm-svn: 161161
|
|
|
|
| |
llvm-svn: 160621
|
|
|
|
|
|
| |
single-precision resiters) (and do it properly this time!
llvm-svn: 159989
|
|
|
|
| |
llvm-svn: 159960
|
|
|
|
| |
llvm-svn: 159945
|
|
|
|
|
|
| |
single-precision resiters)
llvm-svn: 159938
|
|
|
|
| |
llvm-svn: 158055
|
|
|
|
| |
llvm-svn: 157292
|
|
|
|
|
|
| |
SignExtend32<22>(Val<<1) also needs to change to SignExtend32<21>(Val) .
llvm-svn: 156213
|
|
|
|
|
|
|
| |
where the symbolic operand's displacement was incorrectly shifted left by 1.
rdar://11387046
llvm-svn: 156212
|
|
|
|
|
|
|
|
|
| |
for the assembler and disassembler. Which were not being set/read correctly
for offsets greater than 22 bits in some cases.
Changes to lib/Target/ARM/ARMAsmBackend.cpp from Gideon Myles!
llvm-svn: 156118
|
|
|
|
| |
llvm-svn: 156077
|
|
|
|
|
|
| |
Make the operand order of the instruction match that of the asm syntax.
llvm-svn: 155747
|
|
|
|
|
|
| |
the mask operand in the MCInst.
llvm-svn: 155700
|
|
|
|
|
|
| |
its vector
llvm-svn: 155439
|
|
|
|
| |
llvm-svn: 155004
|
|
|
|
|
|
| |
disassembler. Since the upredicability conditions are complex, C++ code was added to handle them.
llvm-svn: 155001
|
|
|
|
|
|
|
| |
instructions with writebacks. And add test a case for all opcodes handed by
DecodeVLD2DupInstruction() in ARMDisassembler.cpp .
llvm-svn: 154884
|
|
|
|
|
|
| |
symbolic operands added when using the C disassembler API.
llvm-svn: 154628
|
|
|
|
|
|
| |
of a VST instruction.
llvm-svn: 154544
|
|
|
|
|
|
| |
for all opcodes handed by DecodeVLDInstruction() in ARMDisassembler.cpp .
llvm-svn: 154459
|
|
|
|
|
|
|
| |
And indirectly, a dependency on most of the core LLVM optimization
libraries.
llvm-svn: 153957
|
|
|
|
| |
llvm-svn: 153500
|
|
|
|
|
|
| |
of the STRD, STRH, LDRD, LDRH, LDRSH and LDRSB instructions on ARM.
llvm-svn: 153252
|
|
|
|
|
|
| |
LDRSHT instruction on ARM
llvm-svn: 153251
|
|
|
|
|
|
| |
case for all opcodes handed by DecodeVSTInstruction() in ARMDisassembler.cpp .
llvm-svn: 153218
|
|
|
|
|
|
| |
register operand is given now fail with soft fail. Modified the regression tests to reflect this.
llvm-svn: 153089
|
|
|
|
|
|
| |
specific backends.
llvm-svn: 152537
|
|
|
|
| |
llvm-svn: 152184
|
|
|
|
|
|
| |
Register pair, all lanes subscripting.
llvm-svn: 152157
|
|
|
|
|
|
|
| |
Register pair VLD1/VLD2 all-lanes instructions. Kill off more of the
pseudos as a result.
llvm-svn: 152150
|
|
|
|
| |
llvm-svn: 152127
|
|
|
|
|
|
| |
Use the new composite physical registers.
llvm-svn: 152063
|
|
|
|
|
|
|
|
|
| |
With the new composite physical registers to represent arbitrary pairs
of DPR registers, we don't need the pseudo-registers anymore. Get rid of
a bunch of them that use DPR register pairs and just use the real
instructions directly instead.
llvm-svn: 152045
|
|
|
|
| |
llvm-svn: 151687
|