| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
they are just as useless, but at least a bit more gramatical
llvm-svn: 122305
|
|
|
|
|
|
|
|
|
| |
tPseudoInst class, its size was changed from "special" to "2 bytes". This is
incorrect because the jump table will no longer be taken into account when
calculating branch offsets.
<rdar://problem/8782216>
llvm-svn: 122303
|
|
|
|
| |
llvm-svn: 122302
|
|
|
|
|
|
|
|
|
| |
Edge bundles is an annotation on the CFG that turns it into a bipartite directed
graph where each basic block is connected to an outgoing and an ingoing bundle.
These bundles are useful for identifying regions of the CFG for live range
splitting.
llvm-svn: 122301
|
|
|
|
| |
llvm-svn: 122296
|
|
|
|
|
|
|
|
|
|
| |
This implementation already exists as ConnectedVNInfoEqClasses in
LiveInterval.cpp, and it seems to be generally useful to have a light-weight way
of forming equivalence classes of small integers.
IntEqClasses doesn't allow enumeration of the elements in a class.
llvm-svn: 122293
|
|
|
|
|
|
| |
causing Linux self-host failures.
llvm-svn: 122291
|
|
|
|
| |
llvm-svn: 122288
|
|
|
|
|
|
| |
severe slowdowns on the Linux self-host configuration.
llvm-svn: 122279
|
|
|
|
|
|
|
|
| |
addition to being an intrinsic, and convert
lowering to use it. Hopefully the pattern fragment is doing the right thing with XMM0, looks correct in testing.
llvm-svn: 122277
|
|
|
|
|
|
| |
assured of iterator stability.
llvm-svn: 122273
|
|
|
|
| |
llvm-svn: 122269
|
|
|
|
| |
llvm-svn: 122268
|
|
|
|
| |
llvm-svn: 122265
|
|
|
|
|
|
|
|
|
| |
it could only be tested indirectly, via instcombine, gvn or some other
pass that makes use of InstructionSimplify, which means that testcases
had to be carefully contrived to dance around any other transformations
that that pass did.
llvm-svn: 122264
|
|
|
|
| |
llvm-svn: 122261
|
|
|
|
| |
llvm-svn: 122259
|
|
|
|
|
|
| |
situation.
llvm-svn: 122258
|
|
|
|
|
|
| |
the OverDefinedCache.
llvm-svn: 122256
|
|
|
|
|
|
|
|
| |
This is much easier to
verify as being safe thanks its recent de-recursivization.
llvm-svn: 122254
|
|
|
|
| |
llvm-svn: 122249
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(icmp ult (X + CA), C1 + 1) if C2 + CA == C1.
InstCombine creates these so now we compile x == 23 || x == 24 || x == 25 to
%x.off = add i32 %x, -23
%1 = icmp ult i32 %x.off, 3
instead of
%x.off = add i32 %x, -23
%1 = icmp ult i32 %x.off, 2
%cmp3 = icmp eq i32 %x, 25
%ret2 = or i1 %1, %cmp3
llvm-svn: 122248
|
|
|
|
| |
llvm-svn: 122247
|
|
|
|
| |
llvm-svn: 122246
|
|
|
|
|
|
|
| |
(they had just been forgotten before). Adding Xor causes "main" in the
existing testcase 2010-11-01-lshr-mask.ll to be hugely more simplified.
llvm-svn: 122245
|
|
|
|
| |
llvm-svn: 122243
|
|
|
|
| |
llvm-svn: 122242
|
|
|
|
| |
llvm-svn: 122238
|
|
|
|
| |
llvm-svn: 122237
|
|
|
|
|
|
| |
to make sure that the reused alloca has sufficient alignment.
llvm-svn: 122236
|
|
|
|
| |
llvm-svn: 122235
|
|
|
|
|
|
|
|
| |
argument. The generated alloca has to have at least the alignment of the
byval, if not, the client may be making assumptions that the new alloca won't
satisfy.
llvm-svn: 122234
|
|
|
|
|
|
| |
out-edges. Fixes PR8824.
llvm-svn: 122228
|
|
|
|
|
|
| |
begin at DEF slots. Fixes the second half of PR8813.
llvm-svn: 122225
|
|
|
|
| |
llvm-svn: 122224
|
|
|
|
|
|
|
|
| |
ARM (and other 32-bit-only) targets support for i8 and i16 overflow
multiplies. The generated code isn't great, but this at least fixes
CodeGen/Generic/overflow.ll when running on ARM hosts.
llvm-svn: 122221
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the same as setcc. Optimize ADDC(0,0,FLAGS) -> SET_CARRY(FLAGS). This is
a step towards finishing off PR5443. In the testcase in that bug we now get:
movq %rdi, %rax
addq %rsi, %rax
sbbq %rcx, %rcx
testb $1, %cl
setne %dl
ret
instead of:
movq %rdi, %rax
addq %rsi, %rax
movl $0, %ecx
adcq $0, %rcx
testq %rcx, %rcx
setne %dl
ret
llvm-svn: 122219
|
|
|
|
|
|
| |
the register; it may be a dead def instead. Fixes PR8820.
llvm-svn: 122218
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
doesn't, match it back to setb.
On a 64-bit version of the testcase before we'd get:
movq %rdi, %rax
addq %rsi, %rax
sbbb %dl, %dl
andb $1, %dl
ret
now we get:
movq %rdi, %rax
addq %rsi, %rax
setb %dl
ret
llvm-svn: 122217
|
|
|
|
| |
llvm-svn: 122215
|
|
|
|
| |
llvm-svn: 122214
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
their carry depenedencies with MVT::Flag operands) and use clean and beautiful
EFLAGS dependences instead.
We do this by changing the modelling of SBB/ADC to have EFLAGS input and outputs
(which is what requires the previous scheduler change) and change X86 ISelLowering
to custom lower ADDC and friends down to X86ISD::ADD/ADC/SUB/SBB nodes.
With the previous series of changes, this causes no changes in the testsuite, woo.
llvm-svn: 122213
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Imagine we see:
EFLAGS = inst1
EFLAGS = inst2 FLAGS
gpr = inst3 EFLAGS
Previously, we would refuse to schedule inst2 because it clobbers
the EFLAGS of the predecessor. However, it also uses the EFLAGS
of the predecessor, so it is safe to emit. SDep edges ensure that
the right order happens already anyway.
This fixes 2 testsuite crashes with the X86 patch I'm going to
commit next.
llvm-svn: 122211
|
|
|
|
| |
llvm-svn: 122209
|
|
|
|
| |
llvm-svn: 122208
|
|
|
|
|
|
| |
PR8822.
llvm-svn: 122207
|
|
|
|
|
|
|
|
| |
after legalize types
has run, e.g., prevent creating an i64 node from a v2i64 when i64 is not a legal type.
llvm-svn: 122206
|
|
|
|
|
|
| |
half of PR8813.
llvm-svn: 122205
|
|
|
|
| |
llvm-svn: 122204
|
|
|
|
|
|
| |
ConnectedVNInfoEqClasses::Classify().
llvm-svn: 122202
|