| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
Accordingly, add helper funtions getSimpleValueType (in parallel to
getValueType) in SDValue, SDNode, and TargetLowering.
This is the first, in a series of patches.
llvm-svn: 169837
|
| |
|
|
| |
llvm-svn: 169819
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Teach it to use overlapping unaligned load / store to copy / set the trailing
bytes. e.g. On 86, use two pairs of movups / movaps for 17 - 31 byte copies.
2. Use f64 for memcpy / memset on targets where i64 is not legal but f64 is. e.g.
x86 and ARM.
3. When memcpy from a constant string, do *not* replace the load with a constant
if it's not possible to materialize an integer immediate with a single
instruction (required a new target hook: TLI.isIntImmLegal()).
4. Use unaligned load / stores more aggressively if target hooks indicates they
are "fast".
5. Update ARM target hooks to use unaligned load / stores. e.g. vld1.8 / vst1.8.
Also increase the threshold to something reasonable (8 for memset, 4 pairs
for memcpy).
This significantly improves Dhrystone, up to 50% on ARM iOS devices.
rdar://12760078
llvm-svn: 169791
|
| |
|
|
|
|
| |
getMipsRegisterNumbering and use MCRegisterInfo::getEncodingValue instead.
llvm-svn: 169760
|
| |
|
|
| |
llvm-svn: 169724
|
| |
|
|
|
|
| |
This is the preferred way of creating bundled machine instructions.
llvm-svn: 169585
|
| |
|
|
|
|
| |
use.
llvm-svn: 169580
|
| |
|
|
| |
llvm-svn: 169579
|
| |
|
|
| |
llvm-svn: 169578
|
| |
|
|
| |
llvm-svn: 169577
|
| |
|
|
|
|
|
|
|
|
| |
missed in the first pass because the script didn't yet handle include
guards.
Note that the script is now able to handle all of these headers without
manual edits. =]
llvm-svn: 169224
|
| |
|
|
|
|
|
|
|
| |
This change adds endian-awareness to MipsJITInfo and emitWordLE in
MipsCodeEmitter has become emitWord now to support both endianness.
Patch by Petar Jovanovic.
llvm-svn: 169177
|
| |
|
|
|
|
|
|
| |
code. Removing it.
Patch by Petar Jovanovic.
llvm-svn: 169174
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.
Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]
llvm-svn: 169131
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rationale:
1) This was the name in the comment block. ;]
2) It matches Clang's __has_feature naming convention.
3) It matches other compiler-feature-test conventions.
Sorry for the noise. =]
I've also switch the comment block to use a \brief tag and not duplicate
the name.
llvm-svn: 168996
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch provides support for the MIPS relocations:
*) R_MIPS_GOT_HI16
*) R_MIPS_GOT_LO16
*) R_MIPS_CALL_HI16
*) R_MIPS_CALL_LO16
These are used for large GOT instruction sequences.
Contributer: Jack Carter
llvm-svn: 168471
|
| |
|
|
| |
llvm-svn: 168460
|
| |
|
|
|
|
| |
functions added in r168456.
llvm-svn: 168458
|
| |
|
|
| |
llvm-svn: 168456
|
| |
|
|
| |
llvm-svn: 168455
|
| |
|
|
|
|
| |
referring to a GOT entry.
llvm-svn: 168453
|
| |
|
|
| |
llvm-svn: 168450
|
| |
|
|
| |
llvm-svn: 168230
|
| |
|
|
|
|
| |
allowed in branch delay slot.
llvm-svn: 168131
|
| |
|
|
|
|
| |
support and use it in place of HasMips32r2Or64.
llvm-svn: 168089
|
| |
|
|
| |
llvm-svn: 168078
|
| |
|
|
|
|
| |
Patch by Sasa Stankovic.
llvm-svn: 167548
|
| |
|
|
| |
llvm-svn: 167546
|
| |
|
|
|
|
| |
instructions.
llvm-svn: 167348
|
| |
|
|
| |
llvm-svn: 167345
|
| |
|
|
|
|
| |
register is needed.
llvm-svn: 167341
|
| |
|
|
|
|
|
| |
reserved. Without this fix, RegScavenger::getRegsAvailable incorrectly
returns an empty set of integer registers.
llvm-svn: 167335
|
| |
|
|
| |
llvm-svn: 167315
|
| |
|
|
|
|
|
| |
This function estimates stack size and will be called before
PrologEpilogInserter scans the callee-saved registers.
llvm-svn: 167313
|
| |
|
|
|
|
| |
of the incoming argument area.
llvm-svn: 167312
|
| |
|
|
|
|
|
| |
"set .noat" so that the assembler doesn't issue warnings when register $AT is
used.
llvm-svn: 167310
|
| |
|
|
|
|
| |
re-materialization of immediate loads.
llvm-svn: 167153
|
| |
|
|
| |
llvm-svn: 167107
|
| |
|
|
|
|
| |
use the caller's stack.
llvm-svn: 167048
|
| |
|
|
|
|
|
| |
information will be used by IsEligibleForTailCallOptimization to determine
whether a call can be tail-call optimized.
llvm-svn: 167043
|
| |
|
|
|
|
| |
for passing a function call argument on a stack.
llvm-svn: 167041
|
| |
|
|
| |
llvm-svn: 167039
|
| |
|
|
|
|
|
|
| |
We will make them delay slot forms if there is something that can be
placed in the delay slot during a separate pass. Mips16 extended instructions
cannot be placed in delay slots.
llvm-svn: 166990
|
| |
|
|
| |
llvm-svn: 166960
|
| |
|
|
| |
llvm-svn: 166935
|
| |
|
|
| |
llvm-svn: 166903
|
| |
|
|
|
|
| |
All the credit goes to Jan Voung for noticing it was dead!
llvm-svn: 166902
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously mips16 was sharing the pattern addr which is used for mips32
and mips64. This had a number of problems:
1) Storing and loading byte and halfword quantities for mips16 has particular
problems due to the primarily non mips16 nature of SP. When we must
load/store byte/halfword stack objects in a function, we must create a mips16
alias register for SP. This functionality is tested in stchar.ll.
2) We need to have an FP register under certain conditions (such as
dynamically sized alloca). We use mips16 register S0 for this purpose.
In this case, we also use this register when accessing frame objects so this
issue also affects the complex pattern addr16. This functionality is
tested in alloca16.ll.
The Mips16InstrInfo.td has been updated to use addr16 instead of addr.
The complex pattern C++ function for addr has been copied to addr16 and
updated to reflect the above issues.
llvm-svn: 166897
|
| |
|
|
| |
llvm-svn: 166852
|
| |
|
|
|
|
|
|
| |
arguments.
This is rather conservative and should be fixed later to be more aggressive.
llvm-svn: 166851
|