| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 118337
|
| |
|
|
|
|
|
|
| |
result instruction operand numbering matched the result pattern.
Fixing this allows us to move the xchg/test aliases to the .td file.
llvm-svn: 118334
|
| |
|
|
|
|
| |
Fixes 8559.
llvm-svn: 118333
|
| |
|
|
| |
llvm-svn: 118332
|
| |
|
|
|
|
| |
tidy up the movsx and movzx aliases.
llvm-svn: 118331
|
| |
|
|
|
|
| |
from c++ hacks to proper .td InstAlias definitions. Change them!
llvm-svn: 118330
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
operand list instead of the operand list redundantly declared on the alias
or instruction.
With this change, we finally remove the ins/outs list on the alias. Before:
def : InstAlias<(outs GR16:$dst), (ins GR8 :$src),
"movsx $src, $dst",
(MOVSX16rr8W GR16:$dst, GR8:$src)>;
After:
def : InstAlias<"movsx $src, $dst",
(MOVSX16rr8W GR16:$dst, GR8:$src)>;
This also makes the alias mechanism more general and powerful, which will
be exploited in subsequent patches.
llvm-svn: 118329
|
| |
|
|
| |
llvm-svn: 118310
|
| |
|
|
| |
llvm-svn: 118307
|
| |
|
|
| |
llvm-svn: 118304
|
| |
|
|
| |
llvm-svn: 118301
|
| |
|
|
| |
llvm-svn: 118300
|
| |
|
|
| |
llvm-svn: 118295
|
| |
|
|
| |
llvm-svn: 118291
|
| |
|
|
|
|
| |
(relocations, e.g.), but this will allow simple things to flow through.
llvm-svn: 118289
|
| |
|
|
| |
llvm-svn: 118288
|
| |
|
|
| |
llvm-svn: 118280
|
| |
|
|
|
|
|
|
|
| |
sequence of loads and stores was being generated to perform the
copy on the x86 targets if the parameter was less than 4 byte
aligned, causing llc to use up vast amounts of memory and time.
Use a "rep movs" form instead. PR7170.
llvm-svn: 118260
|
| |
|
|
|
|
|
| |
and as such can be represented by an MVT - the more complicated
EVT is not needed. Use MVT for ValVT everywhere.
llvm-svn: 118245
|
| |
|
|
|
|
| |
immediate rw. There is currently no intrinsic that matches to pli.
llvm-svn: 118237
|
| |
|
|
|
|
|
| |
tweaking when we start using it for object file emission or JIT, but it's a
start.
llvm-svn: 118221
|
| |
|
|
| |
llvm-svn: 118220
|
| |
|
|
|
|
| |
CodeEmitter.
llvm-svn: 118209
|
| |
|
|
|
|
|
|
| |
rather than legalization.
This is both the conceptually correct place for it, as well as allowing it to be more aggressive.
llvm-svn: 118204
|
| |
|
|
|
|
|
| |
We could be more aggressive about making this work for a larger range of constants,
but this seems like a good start.
llvm-svn: 118201
|
| |
|
|
| |
llvm-svn: 118199
|
| |
|
|
| |
llvm-svn: 118192
|
| |
|
|
|
|
|
|
|
| |
element size. Instead,
all of the different element sizes are pseudo instructions that map down to vext.8 underneath, with
the immediate shifted left to reflect the increased element size.
llvm-svn: 118183
|
| |
|
|
| |
llvm-svn: 118176
|
| |
|
|
|
|
| |
For NEON we had been assuming this was always an immediate constant.
llvm-svn: 118175
|
| |
|
|
|
|
|
| |
with a SimpleValueType, while an EVT supports equality and
inequality comparisons with SimpleValueType.
llvm-svn: 118169
|
| |
|
|
|
|
|
|
|
|
| |
value type, so there is no point in passing it around using
an EVT. Use the simpler MVT everywhere. Rather than trying
to propagate this information maximally in all the code that
using the calling convention stuff, I chose to do a mainly
low impact change instead.
llvm-svn: 118167
|
| |
|
|
|
|
| |
extension supports pldw. Add subtarget attribute to denote mp extension support and legalize illegal ones to nothing.
llvm-svn: 118160
|
| |
|
|
| |
llvm-svn: 118152
|
| |
|
|
| |
llvm-svn: 118151
|
| |
|
|
|
|
| |
easier to read.
llvm-svn: 118148
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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: 118141
|
| |
|
|
|
|
| |
printOperand() asm printer helper functions. rdar://8425198
llvm-svn: 118140
|
| |
|
|
| |
llvm-svn: 118139
|
| |
|
|
|
|
|
| |
parts. Represent the operation mode as an optional operand instead.
rdar://8614429
llvm-svn: 118137
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
1. Fix pre-ra scheduler so it doesn't try to push instructions above calls to
"optimize for latency". Call instructions don't have the right latency and
this is more likely to use introduce spills.
2. Fix if-converter cost function. For ARM, it should use instruction latencies,
not # of micro-ops since multi-latency instructions is completely executed
even when the predicate is false. Also, some instruction will be "slower"
when they are predicated due to the register def becoming implicit input.
rdar://8598427
llvm-svn: 118135
|
| |
|
|
|
|
| |
latencies) of loads.
llvm-svn: 118134
|
| |
|
|
| |
llvm-svn: 118126
|
| |
|
|
|
|
|
| |
instructions as isCodeGenOnly in the parent class instead of
sprinkling it throughout the .td files.
llvm-svn: 118125
|
| |
|
|
| |
llvm-svn: 118121
|
| |
|
|
|
|
|
|
|
|
|
|
| |
ins/outs list that isn't specified by their asmstring. Previously
the asmmatcher would just force a 0 register into it, which clearly
isn't right. Mark a bunch of ARM instructions that use this as
isCodeGenOnly. Some of them are clearly pseudo instructions (like
t2TBB) others use a weird hasExtraSrcRegAllocReq thing that will
either need to be removed or the asmmatcher will need to be taught
about it (someday).
llvm-svn: 118119
|
| |
|
|
| |
llvm-svn: 118103
|
| |
|
|
| |
llvm-svn: 118099
|
| |
|
|
|
|
| |
is handled with the MC encoder.
llvm-svn: 118098
|