| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
instruction
llvm-svn: 159257
|
|
|
|
|
|
|
|
|
|
|
| |
As an example of how the custom DiagnosticType can be used to provide
better operand-mismatch diagnostics, add a custom diagnostic for
the imm0_15 operand class used for several system instructions.
Update the tests to expect the improved diagnostic.
rdar://8987109
llvm-svn: 159051
|
|
|
|
|
|
| |
iaspr, espr and xpsr which also needed to have 0b10 in their mask encoding bits.
llvm-svn: 158560
|
|
|
|
| |
llvm-svn: 158445
|
|
|
|
| |
llvm-svn: 157885
|
|
|
|
| |
llvm-svn: 157368
|
|
|
|
|
|
|
|
|
|
| |
the 0b10 mask encoding bits. Make MSR APSR writes without a _<bits> qualifier
an alias for MSR APSR_nzcvq even though ARM as deprecated it use. Also add
support for suffixes (_nzcvq, _g, _nzcvqg) for APSR versions. Some FIXMEs in
the code for better error checking when versions shouldn't be used.
rdar://11457025
llvm-svn: 157019
|
|
|
|
|
|
| |
offset addressing. The assembler and instruction printer were not properly handeling the #-0 immediate.
llvm-svn: 156608
|
|
|
|
|
|
|
|
|
|
| |
Make sure when parsing the Thumb1 sp+register ADD instruction that
the source and destination operands match. In thumb2, just use the
wide encoding if they don't. In Thumb1, issue a diagnostic.
rdar://11219154
llvm-svn: 155748
|
|
|
|
| |
llvm-svn: 155720
|
|
|
|
|
|
| |
the mask operand in the MCInst.
llvm-svn: 155700
|
|
|
|
|
|
| |
right-shifted by #32. These are stored as shifts by #0 in the MCInst and correctly marshalled when transforming from or to assembly representation.
llvm-svn: 155565
|
|
|
|
|
|
| |
only targets that want the function get it. This prevents other targets from getting an unused function warning.
llvm-svn: 155538
|
|
|
|
|
|
|
|
|
|
|
| |
When an instruction match is found, but the subtarget features it
requires are not available (missing floating point unit, or thumb vs arm
mode, for example), issue a diagnostic that identifies what the feature
mismatch is.
rdar://11257547
llvm-svn: 155499
|
|
|
|
|
|
| |
rdar://11252521
llvm-svn: 154862
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As an example, attach range info to the "invalid instruction" message:
$ clang -arch arm -c asm.c
asm.c:2:11: error: invalid instruction
__asm__("foo r0");
^
<inline asm>:1:2: note: instantiated into assembly here
foo r0
^~~
llvm-svn: 154765
|
|
|
|
|
|
| |
rdar://11222742
llvm-svn: 154457
|
|
|
|
|
|
|
|
|
|
| |
1. The new instruction itinerary entries are not properly described.
2. The asm parser can't handle vfms and vfnms.
3. There were no assembler, disassembler test cases.
4. HasNEON2 has the wrong assembler predicate.
rdar://10139676
llvm-svn: 154456
|
|
|
|
|
|
|
|
|
|
|
|
| |
We were incorrectly conflating some add variants which don't have a
cc_out operand with the mirroring sub encodings, which do. Part of the
awesome non-orthogonality legacy of thumb1. Similarly, handling of
add/sub of an immediate was sometimes incorrectly removing the cc_out
operand for add/sub register variants.
rdar://11216577
llvm-svn: 154411
|
|
|
|
|
|
|
|
|
|
| |
'add r2, #-1024' should just use 'sub r2, #1024' rather than erroring out.
Thumb1 aliases for adding a negative immediate to the stack pointer,
also.
rdar://11192734
llvm-svn: 154123
|
|
|
|
|
|
|
|
| |
Plain 'cpsr' is an alias for 'cpsr_fc'.
rdar://11153753
llvm-svn: 154080
|
|
|
|
|
|
|
|
| |
When an immediate is both a value [t2_]so_imm and a [t2_]so_imm_neg,
we want to use the non-negated form to make sure we prefer the normal
encoding, not the aliased encoding via the negation of, e.g., 'cmp.w'.
llvm-svn: 153770
|
|
|
|
| |
llvm-svn: 153765
|
|
|
|
|
|
|
|
|
| |
For 'adds r2, r2, #56' outside of an IT block, the 16-bit encoding T2
can be used for this syntax. Prefer the narrow encoding when possible.
rdar://11156277
llvm-svn: 153759
|
|
|
|
|
|
|
|
| |
Make sure to treat immediates as unsigned when doing relative comparisons.
rdar://11153621
llvm-svn: 153753
|
|
|
|
|
|
|
|
|
| |
The CMP->CMN alias was matching for an immediate of zero when it
should only match for negative values.
rdar://11129224
llvm-svn: 153689
|
|
|
|
| |
llvm-svn: 153502
|
|
|
|
| |
llvm-svn: 153099
|
|
|
|
|
|
| |
rdar://11057160
llvm-svn: 153053
|
|
|
|
|
|
|
|
|
|
| |
It's not a good style idea, as the registers will be laid down in memory in
numerical order, not the order they're in the list, but it's legal. vldm/vstm
are stricter.
rdar://11064740
llvm-svn: 152943
|
|
|
|
| |
llvm-svn: 152870
|
|
|
|
|
|
| |
rdar://11056591
llvm-svn: 152846
|
|
|
|
|
|
| |
rdar://11056647
llvm-svn: 152834
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
Use the new composite physical registers.
llvm-svn: 152063
|
|
|
|
| |
llvm-svn: 152061
|
|
|
|
|
|
|
|
|
| |
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: 149961
|
|
|
|
| |
llvm-svn: 149452
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adjust an example MachObjectWriter diagnostic to use the information
to issue a better message.
Before:
LLVM ERROR: unknown ARM fixup kind!
After:
x.s:6:5: error: unsupported relocation on symbol
beq bar
^
rdar://9800182
llvm-svn: 149093
|
|
|
|
| |
llvm-svn: 149062
|
|
|
|
|
|
|
|
|
|
| |
"Although a Thumb2 instruction, the IT mnemonic shall be permitted in
ARM mode, and the condition verified to match the condition code(s)
on the following instruction(s)."
PR11853
llvm-svn: 148969
|
|
|
|
| |
llvm-svn: 148884
|
|
|
|
| |
llvm-svn: 148882
|
|
|
|
| |
llvm-svn: 148836
|
|
|
|
| |
llvm-svn: 148832
|
|
|
|
| |
llvm-svn: 148764
|
|
|
|
| |
llvm-svn: 148762
|
|
|
|
| |
llvm-svn: 148761
|