| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
as the "Permanently UNDEFINED" instruction.
llvm-svn: 95873
|
| |
|
|
| |
llvm-svn: 95871
|
| |
|
|
|
|
| |
fixes the remaining x86-64 jit failures afaik.
llvm-svn: 95867
|
| |
|
|
|
|
|
|
|
| |
r12b, etc) also encodes to a R/M value of 4, which is just
as illegal as ESP/RSP for the non-sib version an address.
This fixes x86-64 jit miscompilations of a bunch of programs.
llvm-svn: 95866
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Stub out some dummy fixups to make things work.
We can now emit fixups like this:
subl $20, %esp ## encoding: [0x83,0xec,A]
## fixup A - offset: 2, value: 20, kind: fixup_1byte_imm
Emitting $20 as a single-byte fixup to be later resolved
by the assembler is ridiculous of course (vs just emitting
the byte) but this is a failure of the matcher, which
should be producing an imm of 20, not an MCExpr of 20.
llvm-svn: 95860
|
| |
|
|
|
|
| |
and rename it to EmitImmediate.
llvm-svn: 95859
|
| |
|
|
| |
llvm-svn: 95858
|
| |
|
|
| |
llvm-svn: 95857
|
| |
|
|
| |
llvm-svn: 95856
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
what it does. Enhance it to return false to optimizing vector
sign extensions from vector comparisions, which is the idiom used
to get a splatted vector for a vector comparison.
Doing this breaks vector-casts.ll, add some compensating
transformations to handle the important case they cover without
depending on this canonicalization.
This fixes rdar://7434900 a serious pessimization of vector compares.
llvm-svn: 95855
|
| |
|
|
|
|
|
|
|
| |
block. Other blocks may have pointer cycles that will crash
basicaa and other alias analyses. In any case, there is no
point wasting cycles optimizing dead blocks. This fixes
rdar://7635088
llvm-svn: 95852
|
| |
|
|
|
|
| |
instead of considering x|undef -> x, which may not be true.
llvm-svn: 95850
|
| |
|
|
|
|
|
| |
Update testcase accordingly now that we can optimize another
section.
llvm-svn: 95846
|
| |
|
|
| |
llvm-svn: 95840
|
| |
|
|
|
|
| |
almost always comments afterwards that need printing.
llvm-svn: 95839
|
| |
|
|
|
|
|
|
|
|
| |
the global TheJIT and TheJITResolver variables. Lazy compilation is supported
by a global map from a stub address to the JITResolver that knows how to
compile it.
Patch by Olivier Meurant!
llvm-svn: 95837
|
| |
|
|
|
|
|
|
| |
Calling RemoveOperand is very expensive on huge PHI instructions. This makes
early tail duplication run twice as fast on the Firefox JavaScript
interpreter.
llvm-svn: 95832
|
| |
|
|
|
|
|
|
|
| |
machine CFG.
This makes early tail duplication run 60 times faster when compiling the Firefox
JavaScript interpreter, see PR6186.
llvm-svn: 95831
|
| |
|
|
| |
llvm-svn: 95828
|
| |
|
|
|
|
|
|
|
|
|
| |
on custom
lowering and requires that certain types exist in ValueTypes.h. Modified widening to
check if an op can trap and if so, the widening algorithm will apply only the op on
the defined elements. It is safer to do this in widening because the optimizer can't
guarantee removing unused ops in some cases.
llvm-svn: 95823
|
| |
|
|
| |
llvm-svn: 95819
|
| |
|
|
|
|
|
|
|
| |
legalization even when the IR-level optimizer has removed dead phis, such
as when the high half of an i64 value is unused on a 32-bit target.
I had to adjust a few test cases that had dead phis.
This is a partial fix for Radar 7627077.
llvm-svn: 95816
|
| |
|
|
| |
llvm-svn: 95814
|
| |
|
|
|
|
| |
the pointer values could be invalid.
llvm-svn: 95813
|
| |
|
|
|
|
| |
changed its behavior. Oops.
llvm-svn: 95811
|
| |
|
|
|
|
| |
code with lots of bitfields.
llvm-svn: 95809
|
| |
|
|
| |
llvm-svn: 95807
|
| |
|
|
|
|
| |
x86_32-encoding.s in on expectation of it passing.
llvm-svn: 95806
|
| |
|
|
| |
llvm-svn: 95801
|
| |
|
|
|
|
| |
The "uses=" comments are just clutter in this context.
llvm-svn: 95799
|
| |
|
|
|
|
| |
to be printed, in place of the familiar "uses=" comments.
llvm-svn: 95798
|
| |
|
|
|
|
| |
different word was intended.
llvm-svn: 95795
|
| |
|
|
| |
llvm-svn: 95784
|
| |
|
|
| |
llvm-svn: 95781
|
| |
|
|
|
|
| |
displacement values.
llvm-svn: 95773
|
| |
|
|
|
|
| |
throughout the X86 encoder.
llvm-svn: 95771
|
| |
|
|
|
|
| |
even for the immediate case. No functionality change.
llvm-svn: 95770
|
| |
|
|
|
|
| |
pointer type.
llvm-svn: 95769
|
| |
|
|
|
|
| |
MCInst it came from.
llvm-svn: 95767
|
| |
|
|
|
|
| |
leave some obvious nops which dag combine used to clean up afterwards e.g. (trunk (ext n)) -> n. Look for them and squash them.
llvm-svn: 95757
|
| |
|
|
|
|
| |
Also, fix a silly memory leak.
llvm-svn: 95752
|
| |
|
|
| |
llvm-svn: 95749
|
| |
|
|
| |
llvm-svn: 95748
|
| |
|
|
| |
llvm-svn: 95747
|
| |
|
|
|
|
| |
rather than asserting.
llvm-svn: 95746
|
| |
|
|
| |
llvm-svn: 95745
|
| |
|
|
| |
llvm-svn: 95742
|
| |
|
|
| |
llvm-svn: 95740
|
| |
|
|
|
|
|
|
|
| |
register coalescing. This fixes many crashes and
places where debug info affects codegen (when
dbg.value is lowered to machine instructions, which
it isn't yet in TOT).
llvm-svn: 95739
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The major win of this is that the code is simpler and they
print on the same line as the instruction again:
movl %eax, 96(%esp) ## 4-byte Spill
movl 96(%esp), %eax ## 4-byte Reload
cmpl 92(%esp), %eax ## 4-byte Folded Reload
jl LBB7_86
llvm-svn: 95738
|