| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instruction defines subregisters.
Any existing subreg indices on the original instruction are preserved or
composed with the new subreg index.
Also substitute multiple operands mentioning the original register by using the
new MachineInstr::substituteRegister() function. This is necessary because there
will soon be <imp-def> operands added to non read-modify-write partial
definitions. This instruction:
%reg1234:foo = FLAP %reg1234<imp-def>
will reMaterialize(%reg3333, bar) like this:
%reg3333:bar-foo = FLAP %reg333:bar<imp-def>
Finally, replace the TargetRegisterInfo pointer argument with a reference to
indicate that it cannot be NULL.
llvm-svn: 105358
|
|
|
|
| |
llvm-svn: 105350
|
|
|
|
| |
llvm-svn: 105344
|
|
|
|
|
|
| |
an alloca() or an llvm.stackrestore(). rdar://8031573
llvm-svn: 104900
|
|
|
|
|
|
| |
from ARMRegisterInfo.h
llvm-svn: 104508
|
|
|
|
| |
llvm-svn: 104421
|
|
|
|
|
|
|
| |
Followups: docs patch for the builtin and eh.sjlj.setjmp cleanup to match
longjmp.
llvm-svn: 104419
|
|
|
|
| |
llvm-svn: 103760
|
|
|
|
|
|
| |
registers. This allows folding loads and stores into VMOVQ.
llvm-svn: 103692
|
|
|
|
|
|
| |
slot is sufficiently aligned. Use VLDMD / VSTMD otherwise.
llvm-svn: 103235
|
|
|
|
|
|
| |
VLDQ. The later are aliases which ought to be eliminated but we can't because they are used for storing and loading v2f64 values.
llvm-svn: 103234
|
|
|
|
|
|
| |
VLD1q64 / VST1q64 and reference sub-registers.
llvm-svn: 103218
|
|
|
|
|
|
| |
doesn't have to guess.
llvm-svn: 103194
|
|
|
|
| |
llvm-svn: 103193
|
|
|
|
|
|
| |
coalescer bug that's fixed by 103170.
llvm-svn: 103172
|
|
|
|
| |
llvm-svn: 103163
|
|
|
|
|
|
|
|
|
|
|
| |
Reverse-merging r103156 into '.':
U lib/Target/ARM/ARMInstrNEON.td
U lib/Target/ARM/ARMRegisterInfo.h
U lib/Target/ARM/ARMBaseRegisterInfo.cpp
U lib/Target/ARM/ARMBaseInstrInfo.cpp
U lib/Target/ARM/ARMRegisterInfo.td
llvm-svn: 103159
|
|
|
|
| |
llvm-svn: 103157
|
|
|
|
|
|
| |
registers. These will be used to model VLD2 / VST2 instructions in order to get substantially better codegen for them.
llvm-svn: 103156
|
|
|
|
| |
llvm-svn: 103155
|
|
|
|
| |
llvm-svn: 103154
|
|
|
|
| |
llvm-svn: 102577
|
|
|
|
|
|
| |
rdar://7895451
llvm-svn: 102526
|
|
|
|
| |
llvm-svn: 102324
|
|
|
|
|
|
| |
DBG_VALUE does not generate code.
llvm-svn: 100681
|
|
|
|
| |
llvm-svn: 100214
|
|
|
|
|
|
|
| |
folder to be tolerant of debug info following the
branch(es) at the end of a block.
llvm-svn: 100168
|
|
|
|
|
|
|
|
|
|
| |
These instructions are only needed for codegen, so I've removed all the
explicit encoding bits for now; they should be set in the same way as the for
VLDMD and VSTMD whenever we add encodings for VFP. The use of addrmode5
requires that the instructions be custom-selected so that the number of
registers can be set in the AM5Opc value.
llvm-svn: 99309
|
|
|
|
| |
llvm-svn: 99266
|
|
|
|
|
|
|
| |
of D registers. Add a separate VST1q instruction with a Q register
source operand for use by storeRegToStackSlot.
llvm-svn: 99265
|
|
|
|
|
|
|
| |
of D registers. Add a separate VLD1q instruction with a Q register
destination operand for use by loadRegFromStackSlot.
llvm-svn: 99261
|
|
|
|
|
|
|
| |
with changes to add a separate optional register update argument. Change all
the NEON instructions with address register writeback to use it.
llvm-svn: 99095
|
|
|
|
|
|
| |
copies weirdness more straightforward. Also, add GPR <-> SPR copy support.
llvm-svn: 98887
|
|
|
|
| |
llvm-svn: 98692
|
|
|
|
|
|
|
| |
optional register update argument, which is currently unused -- when we add
support for that, it can just be a separate operand.
llvm-svn: 98683
|
|
|
|
|
|
|
|
| |
whether it should skip checking defs or at least virtual register defs. This subsumes part of the TargetInstrInfo::isIdentical functionality.
- Eliminate TargetInstrInfo::isIdentical and replace it with produceSameValue. In the default case, produceSameValue just checks whether two machine instructions are identical (except for virtual register defs). But targets may override it to check for unusual cases (e.g. ARM pic loads from constant pools).
llvm-svn: 97628
|
|
|
|
|
|
| |
build failures due to my fix for pr6111.
llvm-svn: 96402
|
|
|
|
|
|
|
|
| |
branch in ARM v4 code, since it gets clobbered by the return address before
it is used. Instead of adding a new register class containing all the GPRs
except LR, just use the existing tGPR class.
llvm-svn: 96360
|
|
|
|
|
|
|
|
|
| |
into TargetOpcodes.h. #include the new TargetOpcodes.h
into MachineInstr. Add new inline accessors (like isPHI())
to MachineInstr, and start using them throughout the
codebase.
llvm-svn: 95687
|
|
|
|
| |
llvm-svn: 95603
|
|
|
|
| |
llvm-svn: 94627
|
|
|
|
|
|
|
| |
a null pointer for functions with no jump tables. No functionality
change.
llvm-svn: 94469
|
|
|
|
|
|
|
|
|
|
|
| |
function can support dynamic stack realignment. That's a much easier question
to answer at instruction selection stage than whether the function actually
will have dynamic alignment prologue. This allows the removal of the
stack alignment heuristic pass, and improves code quality for cases where
the heuristic would result in dynamic alignment code being generated when
it was not strictly necessary.
llvm-svn: 93885
|
|
|
|
|
|
|
| |
Some instructions refer to unique labels, and so cannot be trivially cloned
with CloneMachineInstr.
llvm-svn: 92873
|
|
|
|
| |
llvm-svn: 92193
|
|
|
|
| |
llvm-svn: 90490
|
|
|
|
| |
llvm-svn: 90419
|
|
|
|
| |
llvm-svn: 90246
|
|
|
|
|
|
|
|
|
| |
for all the processors where I have tried it, and even when it might not help
performance, the cost is quite low. The opportunities for duplicating
indirect branches are limited by other factors so code size does not change
much due to tail duplicating indirect branches aggressively.
llvm-svn: 90144
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make tail duplication of indirect branches much more aggressive (for targets
that indicate that it is profitable), based on further experience with
this transformation. I compiled 3 large applications with and without
this more aggressive tail duplication and measured minimal changes in code
size. ("size" on Darwin seems to round the text size up to the nearest
page boundary, so I can only say that any code size increase was less than
one 4k page.) Radar 7421267.
llvm-svn: 89814
|