| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 148252
|
| |
|
|
| |
llvm-svn: 148251
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Register masks will be used as a compact representation of large clobber
lists. Currently, an x86 call instruction has some 40 operands
representing call-clobbered registers. That's more than 1kB of useless
operands per call site.
A register mask operand references a bit mask of call-preserved
registers, everything else is clobbered. The bit mask will typically
come from TargetRegisterInfo::getCallPreservedMask().
By abandoning ImplicitDefs for call-clobbered registers, it also becomes
possible to share call instruction descriptions between calling
conventions, and we can get rid of the WINCALL* instructions.
This patch introduces the new operand kind. Future patches will add
RegMask support to target-independent passes before finally the fixed
clobber lists can be removed from call instruction descriptions.
llvm-svn: 148250
|
| |
|
|
| |
llvm-svn: 148240
|
| |
|
|
| |
llvm-svn: 148239
|
| |
|
|
| |
llvm-svn: 148233
|
| |
|
|
|
|
| |
type" error on some 32-bit bots
llvm-svn: 148232
|
| |
|
|
|
|
|
|
| |
currently basic and will be enhanced with future patches.
Patch developed by Andy Kaylor and Daniel Malea. Reviewed on llvm-commits.
llvm-svn: 148231
|
| |
|
|
|
|
| |
unused variables).
llvm-svn: 148230
|
| |
|
|
|
|
| |
arithmetic so should not be checked in legalisation
llvm-svn: 148228
|
| |
|
|
|
|
|
|
|
|
|
| |
We know that the blend instructions only use the MSB, so if the mask is
sign-extended then we can convert it into a SHL instruction. This is a
common pattern because the type-legalizer sign-extends the i1 type which
is used by the LLVM-IR for the condition.
Added a new optimization in SimplifyDemandedBits for SIGN_EXTEND_INREG -> SHL.
llvm-svn: 148225
|
| |
|
|
|
|
| |
CodeGen.
llvm-svn: 148218
|
| |
|
|
| |
llvm-svn: 148217
|
| |
|
|
| |
llvm-svn: 148216
|
| |
|
|
|
|
|
|
|
| |
std::map, since we need to keep a valid pointer to properties of current loop.
Message for r148132:
LoopUnswitch: All helper data that is collected during loop-unswitch iterations was moved to separated class (LUAnalysisCache).
llvm-svn: 148215
|
| |
|
|
|
|
|
|
|
|
|
|
| |
or Clang is using this, and it would be hard to use it correctly given
the thread hostility of the function. Also, it never checked the return
which is rather dangerous with chdir. If someone was in fact using this,
please let me know, as well as what the usecase actually is so that
I can add it back and make it more correct and secure to use. (That
said, it's never going to be "safe" per-se, but we could at least
document the risks...)
llvm-svn: 148211
|
| |
|
|
| |
llvm-svn: 148206
|
| |
|
|
| |
llvm-svn: 148205
|
| |
|
|
|
|
| |
f128mem instead of f256mem.
llvm-svn: 148196
|
| |
|
|
|
|
| |
alignment on 256-bit AVX2 instructions.
llvm-svn: 148194
|
| |
|
|
|
|
|
|
| |
non-determinism in the 32 bit dragonegg buildbot. Original commit
message:
Only emit the Leh_func_endN symbol when needed.
llvm-svn: 148191
|
| |
|
|
|
|
| |
Fixes PR11761: bad IR w/ redundant Phi elim
llvm-svn: 148177
|
| |
|
|
| |
llvm-svn: 148175
|
| |
|
|
| |
llvm-svn: 148174
|
| |
|
|
| |
llvm-svn: 148173
|
| |
|
|
| |
llvm-svn: 148172
|
| |
|
|
| |
llvm-svn: 148171
|
| |
|
|
|
|
| |
be split up later.
llvm-svn: 148170
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
live across BBs before register allocation. This miscompiled 197.parser
when a cmp + b are optimized to a cbnz instruction even though the CPSR def
is live-in a successor.
cbnz r6, LBB89_12
...
LBB89_12:
ble LBB89_1
The fix consists of two parts. 1) Teach LiveVariables that some unallocatable
registers might be liveouts so don't mark their last use as kill if they are.
2) ARM constantpool island pass shouldn't form cbz / cbnz if the conditional
branch does not kill CPSR.
rdar://10676853
llvm-svn: 148168
|
| |
|
|
| |
llvm-svn: 148167
|
| |
|
|
| |
llvm-svn: 148164
|
| |
|
|
| |
llvm-svn: 148156
|
| |
|
|
|
|
|
|
|
|
| |
The QQ and QQQQ registers are not 'real', they are pseudo-registers used
to model some vld and vst instructions.
This makes the call clobber lists longer, but I intend to get rid of
those soon.
llvm-svn: 148151
|
| |
|
|
| |
llvm-svn: 148150
|
| |
|
|
| |
llvm-svn: 148149
|
| |
|
|
| |
llvm-svn: 148143
|
| |
|
|
| |
llvm-svn: 148134
|
| |
|
|
| |
llvm-svn: 148133
|
| |
|
|
|
|
| |
iterations was moved to separated class (LUAnalysisCache).
llvm-svn: 148132
|
| |
|
|
| |
llvm-svn: 148131
|
| |
|
|
|
|
| |
prevent a register copy. Similar to SHUFPS, but requires the mask to be converted.
llvm-svn: 148112
|
| |
|
|
|
|
| |
vs SSE1.
llvm-svn: 148109
|
| |
|
|
|
|
| |
ones if AVX2 is enabled. This gives the ExeDepsFix pass a chance to choose FP vs int as appropriate. Also use v8i32 as the type for getZeroVector if AVX2 is enabled. This is consistent with SSE2 using prefering v4i32.
llvm-svn: 148108
|
| |
|
|
|
|
| |
v4i64 and v8i32.
llvm-svn: 148106
|
| |
|
|
| |
llvm-svn: 148105
|
| |
|
|
| |
llvm-svn: 148103
|
| |
|
|
| |
llvm-svn: 148102
|
| |
|
|
|
|
| |
PR11750.
llvm-svn: 148101
|
| |
|
|
|
|
| |
horizontal add/sub if AVX2 is enabled. This caused an assert to fail for non 128/256-bit vectors when done before type legalizing. Fixes PR11749.
llvm-svn: 148096
|
| |
|
|
|
|
|
| |
The code type was always identical to a string anyway. Now it is simply
a synonym. The code literal syntax [{...}] is still valid.
llvm-svn: 148092
|