| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 128048
|
|
|
|
|
|
|
|
| |
The relevant instruction table entries were changed sometime ago to no longer take
<Rt2> as an operand. Modify ARMDisassemblerCore.cpp to accomodate the change and
add a test case.
llvm-svn: 127935
|
|
|
|
|
|
| |
Remove the offending logic and update the test cases.
llvm-svn: 127843
|
|
|
|
|
|
|
|
|
|
|
| |
o A8.6.195 STR (register) -- Encoding T1
o A8.6.193 STR (immediate, Thumb) -- Encoding T1
It has been changed so that now they use different addressing modes
and thus different MC representation (Operand Infos). Modify the
disassembler to reflect the change, and add relevant tests.
llvm-svn: 127833
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. The ARM Darwin *r9 call instructions were pseudo-ized recently.
Modify the ARMDisassemblerCore.cpp file to accomodate the change.
2. The disassembler was unnecessarily adding 8 to the sign-extended imm24:
imm32 = SignExtend(imm24:'00', 32); // A8.6.23 BL, BLX (immediate)
// Encoding A1
It has no business doing such. Removed the offending logic.
Add test cases to arm-tests.txt.
llvm-svn: 127707
|
|
|
|
|
|
|
|
|
|
| |
because an extra
register operand was erroneously added. Remove an incorrect assert which triggers the bug.
rdar://problem/9131529
llvm-svn: 127642
|
|
|
|
|
|
|
|
|
| |
The insufficient encoding information of the combined instruction confuses the decoder wrt
UQADD16. Add extra logic to recover from that.
Fixed an assert reported by Sean Callanan
llvm-svn: 127354
|
|
|
|
|
|
| |
Patch by Jyun-Yan You, with some minor adjustments and a testcase from me.
llvm-svn: 126915
|
|
|
|
| |
llvm-svn: 126687
|
|
|
|
|
|
| |
needed two predicate operands before the imm operand.
llvm-svn: 126662
|
|
|
|
|
|
| |
testcases for the disassembler to make sure it still works for "msr".
llvm-svn: 125948
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
| |
(which worked around it). This should get us back to the old, correct behavior, though it will make the integrated assembler unhappy for the time being.
llvm-svn: 125127
|
|
|
|
|
|
| |
Patch by Jyun-Yan You.
llvm-svn: 124492
|
|
|
|
|
|
| |
files in Target/ARM and Target/X86.
llvm-svn: 122623
|
|
|
|
|
|
| |
gazillion places that need to know about it.
llvm-svn: 121082
|
|
|
|
|
|
| |
Additionally, update these to unified syntax.
llvm-svn: 120589
|
|
|
|
|
|
|
|
|
| |
This allows the
Thumb2 encoding to share code with the ARM encoding, which gets use fixup support for free.
It also allows us to fold away at least one codegen-only pattern.
llvm-svn: 120481
|
|
|
|
| |
llvm-svn: 120371
|
|
|
|
|
|
| |
instructions. This simplifies instruction printing and disassembly.
llvm-svn: 120333
|
|
|
|
|
|
|
|
|
| |
'db', 'ib', 'da') instead of having that mode as a separate field in the
instruction. It's more convenient for the asm parser and much more readable for
humans.
<rdar://problem/8654088>
llvm-svn: 119310
|
|
|
|
| |
llvm-svn: 118152
|
|
|
|
|
|
|
| |
parts. Represent the operation mode as an optional operand instead.
rdar://8614429
llvm-svn: 118137
|
|
|
|
| |
llvm-svn: 117571
|
|
|
|
| |
llvm-svn: 116454
|
|
|
|
|
|
|
| |
and handle the operand explicitly. Flesh out encoding information. Add an
explicit disassembler testcase for the instruction.
llvm-svn: 116432
|
|
|
|
| |
llvm-svn: 116201
|
|
|
|
| |
llvm-svn: 114949
|
|
|
|
| |
llvm-svn: 114240
|
|
|
|
|
|
| |
unnecessary dtor for MCOperand.
llvm-svn: 114064
|
|
|
|
|
|
|
| |
moves. Previously, the immediate was printed as the encoded integer value,
which is incorrect.
llvm-svn: 114021
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"The register specified for a dregpair is the corresponding Q register, so to
get the pair, we need to look up the sub-regs based on the qreg. Create a
lookup function since we don't have access to TargetRegisterInfo here to
be able to use getSubReg(ARM::dsub_[01])."
Additionaly, fix the NEON VLD1* and VST1* instruction patterns not to use
the dregpair modifier for the 2xdreg versions. Explicitly specifying the two
registers as operands is more correct and more consistent with the other
instruction patterns. This enables further cleanup of special case code in the
disassembler as a nice side-effect.
llvm-svn: 113903
|
|
|
|
|
|
| |
Cygwin-1.5, following up to r113255.
llvm-svn: 113345
|
|
|
|
| |
llvm-svn: 113255
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
all the other LDM/STM instructions. This fixes asm printer crashes when
compiling with -O0. I've changed one of the NEON tests (vst3.ll) to run
with -O0 to check this in the future.
Prior to this change VLDM/VSTM used addressing mode #5, but not really.
The offset field was used to hold a count of the number of registers being
loaded or stored, and the AM5 opcode field was expanded to specify the IA
or DB mode, instead of the standard ADD/SUB specifier. Much of the backend
was not aware of these special cases. The crashes occured when rewriting
a frameindex caused the AM5 offset field to be changed so that it did not
have a valid submode. I don't know exactly what changed to expose this now.
Maybe we've never done much with -O0 and NEON. Regardless, there's no longer
any reason to keep a count of the VLDM/VSTM registers, so we can use
addressing mode #4 and clean things up in a lot of places.
llvm-svn: 112322
|
|
|
|
| |
llvm-svn: 111260
|
|
|
|
|
|
|
| |
printing "lsl #0". This fixes the remaining parts of pr7792. Make
corresponding changes for encoding/decoding these instructions.
llvm-svn: 111251
|
|
|
|
|
|
| |
instruction opcode. This fixes part of PR7792.
llvm-svn: 111047
|
|
|
|
|
|
| |
same lines as the change I made for ARM saturate instructions.
llvm-svn: 111029
|
|
|
|
|
|
|
| |
the memory barrier variants (other than 'SY' full system domain read and write)
are treated as one instruction with option operand.
llvm-svn: 110951
|
|
|
|
|
|
|
|
|
|
| |
entry for ARM STRBT is actually a super-instruction for A8.6.199 STRBT A1 & A2.
Recover by looking for ARM:USAT encoding pattern before delegating to the auto-
gened decoder.
Added a "usat" test case to arm-tests.txt.
llvm-svn: 110894
|
|
|
|
|
|
| |
Added two test cases to arm-tests.txt.
llvm-svn: 110880
|
|
|
|
|
|
| |
instruction opcode. This also fixes part of PR7792.
llvm-svn: 110875
|
|
|
|
|
|
|
|
|
| |
memory and synchronization barrier dmb and dsb instructions.
- Change instruction names to something more sensible (matching name of actual
instructions).
- Added tests for memory barrier codegen.
llvm-svn: 110785
|
|
|
|
|
|
|
|
|
| |
(I discovered 2 more copies of the ARM instruction format list, bringing the
total to 4!! Two of them were already out of sync. I haven't yet gotten into
the disassembler enough to know the best way to fix this, but something needs
to be done.) Add support for encoding these instructions.
llvm-svn: 110754
|
|
|
|
| |
llvm-svn: 109946
|
|
|
|
|
|
|
| |
reference registers past the end of the NEON register file, and report them
as invalid instead of asserting when trying to print them. PR7746.
llvm-svn: 109933
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
have 4 bits per register in the operand encoding), but have undefined
behavior when the operand value is 13 or 15 (SP and PC, respectively).
The trivial coalescer in linear scan sometimes will merge a copy from
SP into a subsequent instruction which uses the copy, and if that
instruction cannot legally reference SP, we get bad code such as:
mls r0,r9,r0,sp
instead of:
mov r2, sp
mls r0, r9, r0, r2
This patch adds a new register class for use by Thumb2 that excludes
the problematic registers (SP and PC) and is used instead of GPR
for those operands which cannot legally reference PC or SP. The
trivial coalescer explicitly requires that the register class
of the destination for the COPY instruction contain the source
register for the COPY to be considered for coalescing. This prevents
errant instructions like that above.
PR7499
llvm-svn: 109842
|
|
|
|
|
|
| |
PR7745.
llvm-svn: 109788
|
|
|
|
| |
llvm-svn: 108929
|