| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 192106
|
|
|
|
|
|
|
| |
This also removes the restriction on the immediate field of the 'hint'
instruction.
llvm-svn: 191744
|
|
|
|
| |
llvm-svn: 191610
|
|
|
|
| |
llvm-svn: 190996
|
|
|
|
| |
llvm-svn: 190929
|
|
|
|
|
|
| |
Patch by Bradley Smith
llvm-svn: 190694
|
|
|
|
| |
llvm-svn: 190060
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These were pretty straightforward instructions, with some assembly support
required for HLT.
The ARM assembler is keen to split the instruction mnemonic into a
(non-existent) 'H' instruction with the LT condition code. An exception for
HLT is needed.
HLT follows the same rules as BKPT when in IT blocks, so the special BKPT
hadling code has been adapted to handle HLT also.
Regression tests added including diagnostic tests for out of range immediates
and illegal condition codes, as well as negative tests for pre-ARMv8.
llvm-svn: 190053
|
|
|
|
| |
llvm-svn: 189388
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Instead of setting the suffixes in a bunch of places, just set one master
list in the top-level config. We now only modify the suffix list in a few
suites that have one particular unique suffix (.ml, .mc, .yaml, .td, .py).
- Aside from removing the need for a bunch of lit.local.cfg files, this enables
4 tests that were inadvertently being skipped (one in
Transforms/BranchFolding, a .s file each in DebugInfo/AArch64 and
CodeGen/PowerPC, and one in CodeGen/SI which is now failing and has been
XFAILED).
- This commit also fixes a bunch of config files to use config.root instead of
older copy-pasted code.
llvm-svn: 188513
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In Thumb1, only one variant is supported: CPS{effect} {flags}
Thumb2 supports three:
CPS{effect}.W {flags}
CPS{effect} {flags} {mode}
CPS {mode}
Canonically, .W should be used only when ambiguity is present between encodings of different width.
The wide suffix is still accepted for the latter two forms via aliases.
llvm-svn: 188071
|
|
|
|
|
|
|
|
|
|
|
| |
While the .td entry is nice and all, it takes a pretty gross hack in
ARMAsmParser::ParseInstruction() because of handling of other "subs"
instructions to get it to match. Ran it by Jim Grosbach and he said it was
about what he expected to make this work given the existing code.
rdar://14214063
llvm-svn: 187530
|
|
|
|
| |
llvm-svn: 186939
|
|
|
|
| |
llvm-svn: 186688
|
|
|
|
|
|
|
|
| |
Somehow forgot to git rm these two files. I believe I left the remaining
invalid* tests intentionally, though whether my reasons were sound is a
different matter.
llvm-svn: 186663
|
|
|
|
|
|
|
|
|
|
|
| |
The tests were checking for barriers which the ARM ARM says they must execute
as a full system DMB/DSB, rather than that they're UNDEFINED and LLVM does in
fact represent them.
The tests happened to be passing because they were using a non-versioned ARM
triple which didn't have *any* DMB/DSB instructions.
llvm-svn: 186662
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows "llvm-mc -disassemble" to accept two new features:
+ Using comma as a byte separator
+ Grouping bytes with '[' and ']' pairs.
The behaviour outside a [...] group is unchanged. But within the group once
llvm-mc encounters a true error, it stops rather than trying to resynchronise
the stream at the next byte. This is more useful for disassembly tests, where
we have an almost-instruction in mind and don't care what the misaligned
interpretation would be. Particularly if it means llvm-mc won't actually see
the next intended almost-instruction.
As a side effect, this means llvm-mc can disassemble its own -show-encoding
output if copy-pasted.
llvm-svn: 186661
|
|
|
|
| |
llvm-svn: 186574
|
|
|
|
|
|
| |
Also, fix the namespace for two instructions that I missed previously.
llvm-svn: 186572
|
|
|
|
| |
llvm-svn: 186506
|
|
|
|
| |
llvm-svn: 185929
|
|
|
|
| |
llvm-svn: 185926
|
|
|
|
| |
llvm-svn: 185922
|
|
|
|
| |
llvm-svn: 185767
|
|
|
|
|
|
|
|
|
| |
instructions.
This adds a new decoder table/namespace 'VFPV8', as these instructions have their
top 4 bits as 0b1111, while other Thumb instructions have 0b1110.
llvm-svn: 185642
|
|
|
|
| |
llvm-svn: 185620
|
|
|
|
|
|
|
|
|
|
| |
issues:
1. it should accept only 4-byte aligned addresses
2. the maximum offset should be 1020
3. it should be encoded with the offset scaled by two bits
llvm-svn: 185528
|
|
|
|
| |
llvm-svn: 184943
|
|
|
|
|
|
|
| |
When encoded to thumb, VFP instruction and VMOV/VDUP between scalar and
core registers, must have their predicate bit to 0b1110.
llvm-svn: 184707
|
|
|
|
| |
llvm-svn: 184706
|
|
|
|
|
|
|
| |
In thumb1, NOP is a pseudo-instruction equivalent to mov r8, r8.
However the disassembler should not use this alias.
llvm-svn: 184703
|
|
|
|
|
|
| |
mask == 0 -> UNPRED
llvm-svn: 184702
|
|
|
|
| |
llvm-svn: 184701
|
|
|
|
|
|
|
|
|
| |
The cdp2 instruction should have the same restrictions as cdp on the
co-processor registers.
VFP instructions on v8/AArch32 share the same encoding space as cdp2.
llvm-svn: 184445
|
|
|
|
| |
llvm-svn: 184181
|
|
|
|
|
|
|
|
| |
This fixes two previous issues:
- Negative offsets were not correctly disassembled
- The decoded opcodes were not the right one
llvm-svn: 184180
|
|
|
|
| |
llvm-svn: 184179
|
|
|
|
|
|
|
| |
was stc2 p0, c0, [r0]!
instead of stc2 p0, c0, [r0,#0]!
llvm-svn: 183975
|
|
|
|
| |
llvm-svn: 183914
|
|
|
|
|
|
| |
are optional registers that may be supported some ARM implementations to aid with resolution of floating point exceptions. The manual pages for vmsr and vmrs do not detail their use. Encodings and other information can be found in ARM Architecture Reference Manual section F, chapter 6, paragraph 3.
llvm-svn: 183733
|
|
|
|
| |
llvm-svn: 183731
|
|
|
|
|
|
| |
The decoded MCInst wasn't reencoded as the same instruction
llvm-svn: 183729
|
|
|
|
|
|
| |
ISB should only accepts full system sync, other options are reserved
llvm-svn: 183656
|
|
|
|
|
|
| |
Enforce Table A7-15 (op=1, cmode=0b111) -> UNDEF
llvm-svn: 183612
|
|
|
|
| |
llvm-svn: 183611
|
|
|
|
|
|
|
|
|
| |
Handle the case when the disassembler table can't tell
the difference between some encodings of QADD and CPS.
Add some necessary safe guards in CPS decoding as well.
llvm-svn: 183610
|
|
|
|
|
|
| |
UNPRED was reported instead of UNDEF
llvm-svn: 183608
|
|
|
|
|
|
|
|
| |
operands.
According to the ARM reference manual, RRX(S) have defined encodings for lr, pc and sp.
llvm-svn: 183307
|
|
|
|
|
|
|
|
|
| |
These instructions are deprecated oddities, but we still need to be able to
disassemble (and reassemble) them if and when they're encountered.
Patch by Amaury de la Vieuville.
llvm-svn: 183011
|
|
|
|
|
|
|
|
|
|
| |
The disassembly of VEXT instructions was too lax in the bits checked. This
fixes the case where the instruction affects Q-registers but a misaligned lane
was specified (should be UNDEFINED).
Patch by Amaury de la Vieuville
llvm-svn: 183003
|