| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
16-bit and 32-bit pushf and popf.
llvm-svn: 104228
|
| |
|
|
|
|
|
| |
and fix a bug that valgrind noticed where the code would std::swap an
element with itself.
llvm-svn: 104225
|
| |
|
|
| |
llvm-svn: 104223
|
| |
|
|
|
|
|
|
|
| |
pipeline stall. It's useful for targets like ARM cortex-a8. NEON has a lot
of long latency instructions so a strict register pressure reduction
scheduler does not work well.
Early experiments show this speeds up some NEON loops by over 30%.
llvm-svn: 104216
|
| |
|
|
| |
llvm-svn: 104209
|
| |
|
|
| |
llvm-svn: 104204
|
| |
|
|
|
|
|
| |
doesn't have a register operand. Also, use I instead of PSI, for
consistency with mfence and lfence.
llvm-svn: 104203
|
| |
|
|
| |
llvm-svn: 104197
|
| |
|
|
|
|
|
|
| |
the addressing modes don't make this trivially easy. This allows
it to avoid falling into the less precise heuristics in more
cases.
llvm-svn: 104186
|
| |
|
|
|
|
|
| |
test/Codegen/ARM/reg_sequence.ll but it doesn't affect the generated code
because the coalescer cleans it up. Radar 7998853.
llvm-svn: 104185
|
| |
|
|
| |
llvm-svn: 104183
|
| |
|
|
| |
llvm-svn: 104175
|
| |
|
|
|
|
| |
more than one dbg_value instruction. rdar://7759363
llvm-svn: 104174
|
| |
|
|
| |
llvm-svn: 104173
|
| |
|
|
| |
llvm-svn: 104172
|
| |
|
|
|
|
|
|
|
|
| |
A partial redef now triggers a reload if required. Also don't add
<imp-def,dead> operands for physical superregisters.
Kill flags are still treated as full register kills, and <imp-use,kill> operands
are added for physical superregisters as before.
llvm-svn: 104167
|
| |
|
|
| |
llvm-svn: 104165
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
partial redefines.
We are going to treat a partial redefine of a virtual register as a
read-modify-write:
%reg1024:6 = OP
Unless the register is fully clobbered:
%reg1024:6 = OP, %reg1024<imp-def>
MachineInstr::readsVirtualRegister() knows the difference. The first case is a
read, the second isn't.
llvm-svn: 104149
|
| |
|
|
|
|
| |
TargetMachine.h and put it in its own namespace.
llvm-svn: 104147
|
| |
|
|
|
|
|
|
| |
lowering REG_SEQUENCE instructions.
Insert copies for REG_SEQUENCE sources not killed to avoid breaking later passes.
llvm-svn: 104146
|
| |
|
|
| |
llvm-svn: 104145
|
| |
|
|
|
|
|
|
| |
need to be promoted. The BUILD_VECTOR and EXTRACT_VECTOR_ELT nodes generated
here already allow the promoted type to be used without further changes, so
just do the promotion. This fixes part of pr7167.
llvm-svn: 104141
|
| |
|
|
| |
llvm-svn: 104122
|
| |
|
|
|
|
|
| |
prefix byte problem as in r104062.
- As a total hack to keep the TAILCALL markers in the output, which some tests depend on, this invents a new TAILJMP_1 instruction.
llvm-svn: 104120
|
| |
|
|
|
|
| |
CALL64pcrel32, for the same reason.
llvm-svn: 104116
|
| |
|
|
|
|
| |
hoist more loads during machine LICM.
llvm-svn: 104115
|
| |
|
|
| |
llvm-svn: 104114
|
| |
|
|
| |
llvm-svn: 104112
|
| |
|
|
|
|
| |
do not have other un-modeled side effects.
llvm-svn: 104111
|
| |
|
|
| |
llvm-svn: 104110
|
| |
|
|
|
|
| |
avoid same prefix byte problem as in r104062.
llvm-svn: 104108
|
| |
|
|
|
|
| |
especially important on instructions like t2LEApcreal which are prime candidate for machine LICM.
llvm-svn: 104102
|
| |
|
|
| |
llvm-svn: 104095
|
| |
|
|
|
|
|
|
|
|
| |
modeled as icmp / fcmp + sext. This is turned into a vsetcc by dag combine (yes, not a good long term solution). The targets can then isel the vsetcc to the appropriate instruction.
The trouble arises when the result of a vector cmp + sext is then and'ed with all ones. Instcombine will turn it into a vector cmp + zext, dag combiner will miss turning it into a vsetcc and hell breaks loose after that.
Teach dag combine to turn a vector cpm + zest into a vsetcc + and 1. This fixes rdar://7923010.
llvm-svn: 104094
|
| |
|
|
|
|
|
| |
opcodes into a helper function. This fixes a few places in the code
which were not properly selecting the 8-bit-immediate opcodes.
llvm-svn: 104091
|
| |
|
|
| |
llvm-svn: 104089
|
| |
|
|
|
|
| |
constants in registers which partially cancel out their immediate fields.
llvm-svn: 104088
|
| |
|
|
|
|
|
| |
of its formulae have been removed into a helper function, and also
teach it how to update the RegUseTracker.
llvm-svn: 104087
|
| |
|
|
|
|
| |
in the coalescer's instruction map.
llvm-svn: 104086
|
| |
|
|
|
|
| |
function.
llvm-svn: 104082
|
| |
|
|
| |
llvm-svn: 104080
|
| |
|
|
|
|
| |
a helper function.
llvm-svn: 104079
|
| |
|
|
| |
llvm-svn: 104078
|
| |
|
|
|
|
|
| |
is inconsistent with the BaseRegs field. It's not print's job to
assert on an invalid condition, but it can make one more obvious.
llvm-svn: 104077
|
| |
|
|
|
|
| |
confusion with LSRInstance's RegUses member.
llvm-svn: 104076
|
| |
|
|
| |
llvm-svn: 104074
|
| |
|
|
| |
llvm-svn: 104068
|
| |
|
|
|
|
| |
specified.
llvm-svn: 104066
|
| |
|
|
|
|
| |
8-bit immediate field rather than one with a wider immediate field.
llvm-svn: 104064
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The register use operands (e.g. the first argument is passed in a
register) is currently being modeled as a normal register use,
instead of correctly being an implicit use. This causes the operand
to get propagated onto the mcinst, which was causing the encoder to
emit a rex prefix byte, which generates an invalid call.
This fixes rdar://7998435
llvm-svn: 104062
|