| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 134279
|
|
|
|
|
|
| |
based on this.
llvm-svn: 134264
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The DSP instructions in the Thumb2 instruction set are an optional extension
in the Cortex-M* archtitecture. When present, the implementation is considered
an "ARMv7E-M implementation," and when not, an "ARMv7-M implementation."
Add a subtarget feature hook for the v7e-m instructions and hook it up. The
cortex-m3 cpu is an example of a v7m implementation, while the cortex-m4 is
a v7e-m implementation.
rdar://9572992
llvm-svn: 134261
|
|
|
|
| |
llvm-svn: 134259
|
|
|
|
|
|
|
|
|
| |
itineraries.
- Refactor TargetSubtarget to be based on MCSubtargetInfo.
- Change tablegen generated subtarget info to initialize MCSubtargetInfo
and hide more details from targets.
llvm-svn: 134257
|
|
|
|
|
|
| |
(low two bits always zero, so off by one bit of encoded value).
llvm-svn: 134247
|
|
|
|
| |
llvm-svn: 134244
|
|
|
|
|
|
|
|
| |
t2MOVCC[ri] are just t2MOV[ri] instructions, so properly pseudo-ize them.
The Thumb1 versions, tMOVCC[ri] were only present for use by the size-
reduction pass, so they're no longer necessary at all and can be deleted.
llvm-svn: 134242
|
|
|
|
| |
llvm-svn: 134224
|
|
|
|
|
|
|
|
| |
supporting the instruction that the constraint is for 'movw'.
Part of rdar://9119939
llvm-svn: 134222
|
|
|
|
|
|
|
|
| |
for the 'x' register constraint.
Part of rdar://9119939
llvm-svn: 134220
|
|
|
|
|
|
| |
Part of rdar://9119939
llvm-svn: 134217
|
|
|
|
|
|
| |
Part of rdar://9307836 and rdar://9119939
llvm-svn: 134215
|
|
|
|
| |
llvm-svn: 134211
|
|
|
|
| |
llvm-svn: 134210
|
|
|
|
| |
llvm-svn: 134208
|
|
|
|
|
|
|
|
|
| |
We would put the return value from long double functions in the wrong
register.
This fixes gcc.c-torture/execute/conversion.c
llvm-svn: 134205
|
|
|
|
|
|
|
|
|
|
| |
Merge the tMOVr, tMOVgpr2tgpr, tMOVtgpr2gpr, and tMOVgpr2gpr instructions
into tMOVr. There's no need to keep them separate. Giving the tMOVr
instruction the proper GPR register class for its operands is sufficient
to give the register allocator enough information to do the right thing
directly.
llvm-svn: 134204
|
|
|
|
|
|
| |
Part of rdar://9119939
llvm-svn: 134203
|
|
|
|
|
|
|
| |
encoding for the registers it knows about. Return -1 if it can't handle that
register.
llvm-svn: 134202
|
|
|
|
|
|
|
|
| |
No functional change.
Part of rdar://9119939
llvm-svn: 134198
|
|
|
|
|
|
|
|
|
| |
Fix a FIXME and allow predication (in Thumb2) for the T1 register to
register MOV instructions. This allows some better codegen with
if-conversion (as seen in the test updates), plus it lays the groundwork
for pseudo-izing the tMOVCC instructions.
llvm-svn: 134197
|
|
|
|
| |
llvm-svn: 134193
|
|
|
|
|
|
|
| |
It's just a call to a special helper function. Get rid of the T2 variant
entirely, as it's identical to the Thumb1 version.
llvm-svn: 134178
|
|
|
|
|
|
|
|
| |
It's just a t2LDMIA_UPD instruction with extra codegen properties, so it
doesn't need the encoding information. As a side-benefit, we now correctly
recognize for instruction printing as a 'pop' instruction.
llvm-svn: 134173
|
|
|
|
|
|
|
| |
It's just a tPOP instruction with additional code-gen properties, so it
doesn't need encoding information.
llvm-svn: 134172
|
|
|
|
| |
llvm-svn: 134131
|
|
|
|
|
|
|
| |
tADDrSPi is not predicable, so we can't size-reduce a t2ADDri to it if the
predicate is anything other than "always."
llvm-svn: 134130
|
|
|
|
| |
llvm-svn: 134129
|
|
|
|
|
|
|
|
|
|
| |
be the first encoded as the first feature. It then uses the CPU name to look up
features / scheduling itineray even though clients know full well the CPU name
being used to query these properties.
The fix is to just have the clients explictly pass the CPU name!
llvm-svn: 134127
|
|
|
|
| |
llvm-svn: 134126
|
|
|
|
|
|
| |
care about spill values.
llvm-svn: 134122
|
|
|
|
|
|
|
|
| |
we didn't have an opcode for 64-bit constant or expressions.
Fixes rdar://9692967
llvm-svn: 134121
|
|
|
|
|
|
|
|
|
|
| |
Unlike Thumb1, Thumb2 does not have dedicated encodings for adjusting the
stack pointer. It can just use the normal add-register-immediate encoding
since it can use all registers as a source, not just R0-R7. The extra
instruction definitions are just duplicates of the normal instructions with
the (not well enforced) constraint that the source register was SP.
llvm-svn: 134114
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some x86-32 calls pop values off the stack, and we need to readjust the
stack pointer after the call. This happens when ADJCALLSTACKUP is
eliminated.
It could happen that spill code was inserted between the CALL and
ADJCALLSTACKUP instructions, and we would compute wrong stack pointer
offsets for those frame index references.
Fix this by inserting the stack pointer adjustment immediately after the
call instead of where the ADJCALLSTACKUP instruction was erased.
I don't have a test case since we don't currently insert code in that
position. We will soon, though. I am testing a regalloc patch that
didn't work on Linux because of this.
llvm-svn: 134113
|
|
|
|
|
|
|
|
| |
already makes the assumption, which is correct on ARM, that a type's alignment is
less than its alloc size. This improves codegen with Clang (which inserts a lot of
extraneous alignment specifiers) and fixes <rdar://problem/9695089>.
llvm-svn: 134106
|
|
|
|
|
|
| |
Part of rdar://9643582
llvm-svn: 134095
|
|
|
|
| |
llvm-svn: 134094
|
|
|
|
|
|
|
| |
The tSpill and tRestore instructions are just copies of the tSTRspi and
tLDRspi instructions, respectively. Just use those directly instead.
llvm-svn: 134092
|
|
|
|
| |
llvm-svn: 134089
|
|
|
|
|
|
|
|
| |
getRegForInlineAsmConstraint.
Part of rdar://9643582
llvm-svn: 134088
|
|
|
|
| |
llvm-svn: 134087
|
|
|
|
|
|
|
|
| |
creating a few specific register classes.
Part of rdar://9643582
llvm-svn: 134086
|
|
|
|
|
|
|
|
| |
for the port.
Part of rdar://9643582
llvm-svn: 134085
|
|
|
|
|
|
| |
Part of rdar://9643582
llvm-svn: 134084
|
|
|
|
|
|
| |
Part of rdar://9643582
llvm-svn: 134083
|
|
|
|
|
|
|
|
| |
getRegForInlineAsmConstraint.
Part of rdar://9643582
llvm-svn: 134080
|
|
|
|
|
|
|
|
| |
via vectors.
Part of rdar://9643582
llvm-svn: 134079
|
|
|
|
| |
llvm-svn: 134055
|
|
|
|
|
|
| |
MCInstrItineraries) into MC.
llvm-svn: 134049
|