| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 122789
|
|
|
|
| |
llvm-svn: 122530
|
|
|
|
| |
llvm-svn: 122523
|
|
|
|
| |
llvm-svn: 122456
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instruction based on the t_addrmode_s# mode and what it returned. There is some
obvious badness to this. In particular, it's hard to do MC-encoding when the
instruction may change out from underneath you after the t_addrmode_s# variable
is finally resolved.
The solution is to revert a long-ago change that merged the reg/reg and reg/imm
versions. There is the addition of several new addressing modes. They no longer
have extraneous operands associated with them. I.e., if it's reg/reg we don't
have to have a dummy zero immediate tacked on to the SDNode.
There are some obvious cleanups here, which will happen shortly.
llvm-svn: 121747
|
|
|
|
| |
llvm-svn: 121450
|
|
|
|
|
|
|
|
|
| |
the condition codes. Where the ones that do have an 's' suffix and the ones
that don't don't have the suffix. The trick is if MatchInstructionImpl() fails
we try again after adding a CCOut operand with the correct value and removing
the 's' if present. Four simple test cases added for now, lots more to come.
llvm-svn: 121401
|
|
|
|
| |
llvm-svn: 121142
|
|
|
|
|
|
| |
the instruction is predicated, reg0 otherwise.
llvm-svn: 121020
|
|
|
|
|
|
| |
not an immediate. It stores either ARM::CPSR or reg0.
llvm-svn: 121018
|
|
|
|
|
|
|
|
|
|
| |
t_addrmode_s4, but with a different scaling factor.
* Encode the Thumb1 load and store instructions. This involved a bit of
refactoring (hi, Chris! :-). Some of the patterns became dead afterwards and
were removed.
llvm-svn: 120482
|
|
|
|
|
|
|
|
|
|
| |
certainly be made more generic. But it does allow us to parse something like:
ldr r3, [r2, r4]
correctly in Thumb mode.
llvm-svn: 120408
|
|
|
|
| |
llvm-svn: 120350
|
|
|
|
| |
llvm-svn: 120344
|
|
|
|
|
|
| |
the code to not add a "condition code" if it's trap.
llvm-svn: 119937
|
|
|
|
| |
llvm-svn: 119769
|
|
|
|
| |
llvm-svn: 119761
|
|
|
|
|
|
|
| |
should delete what when the object gets copied around. It's also making valgrind
upset.
llvm-svn: 119747
|
|
|
|
|
|
|
|
|
| |
instructions have to distinguish between lists of single- and double-precision
registers in order for the ASM matcher to do a proper job. In all other
respects, a list of single- or double-precision registers are the same as a list
of GPR registers.
llvm-svn: 119460
|
|
|
|
| |
llvm-svn: 118662
|
|
|
|
| |
llvm-svn: 118656
|
|
|
|
| |
llvm-svn: 118653
|
|
|
|
| |
llvm-svn: 118648
|
|
|
|
| |
llvm-svn: 118644
|
|
|
|
|
|
|
|
|
|
|
| |
* LDM, et al, uses a bit mask to indicate the register list.
* VLDM, et al, uses a base register plus number.
The LDM instructions may be non-contiguous, but the VLDM ones must be
contiguous. Those are semantic checks that should be done later in the
compiler. Also postpone the creation of the bit mask until it's needed.
llvm-svn: 118640
|
|
|
|
|
|
| |
number of registers in the list.
llvm-svn: 118456
|
|
|
|
| |
llvm-svn: 118389
|
|
|
|
| |
llvm-svn: 118375
|
|
|
|
|
|
|
|
|
|
|
| |
the registers, because the register numbers may be much greater than the number
of bits available in the machine's register.
I extracted the register list verification code out of the actual parsing of the
registers. This made checking for errors much easier. It also limits the number
of warnings that would be emitted for cascading infractions.
llvm-svn: 118363
|
|
|
|
|
|
|
| |
to satisfy the ClassifyOperand method of the Asm matcher without having to add a
RegList type to every back-end.
llvm-svn: 118360
|
|
|
|
|
|
|
| |
- Make ARMOperand a class so that some things are internal to the class.
- Reformatting.
llvm-svn: 118357
|
|
|
|
|
|
|
| |
(surprise!) a list of registers. Register lists are consecutive, so we only need
to record the start register plus the number of registers.
llvm-svn: 118351
|
|
|
|
| |
llvm-svn: 118341
|
|
|
|
| |
llvm-svn: 118340
|
|
|
|
| |
llvm-svn: 118339
|
|
|
|
|
|
| |
while the latter doesn't.
llvm-svn: 118338
|
|
|
|
| |
llvm-svn: 118310
|
|
|
|
| |
llvm-svn: 118307
|
|
|
|
| |
llvm-svn: 118304
|
|
|
|
|
|
|
|
|
|
|
|
| |
vldr.64 d1, [r0, #-32]
The problem was with how the addressing mode 5 encodes the offsets. This change
makes sure that the way offsets are handled in addressing mode 5 is consistent
throughout the MC code. It involves re-refactoring the "getAddrModeImmOpValue"
method into an "Imm12" and "addressing mode 5" version. But not to worry! The
majority of the duplicated code has been unified.
llvm-svn: 118144
|
|
|
|
| |
llvm-svn: 117936
|
|
|
|
| |
llvm-svn: 117929
|
|
|
|
| |
llvm-svn: 117927
|
|
|
|
| |
llvm-svn: 117782
|
|
|
|
| |
llvm-svn: 117771
|
|
|
|
|
|
| |
traffic.
llvm-svn: 117769
|
|
|
|
|
|
| |
conditional. Check for those instructions explicitly.
llvm-svn: 117747
|
|
|
|
| |
llvm-svn: 117718
|
|
|
|
| |
llvm-svn: 117672
|
|
|
|
| |
llvm-svn: 117663
|