- Feb 18, 2012
-
-
Jia Liu authored
Emacs-tag and some comment fix for all ARM, CellSPU, Hexagon, MBlaze, MSP430, PPC, PTX, Sparc, X86, XCore. llvm-svn: 150878
-
- Nov 15, 2011
-
-
Jakob Stoklund Olesen authored
Two new TargetInstrInfo hooks lets the target tell ExecutionDepsFix about instructions with partial register updates causing false unwanted dependencies. The ExecutionDepsFix pass will break the false dependencies if the updated register was written in the previoius N instructions. The small loop added to sse-domains.ll runs twice as fast with dependency-breaking instructions inserted. llvm-svn: 144602
-
- Sep 29, 2011
-
-
Jakob Stoklund Olesen authored
This also makes it possible to reduce the number of pseudo instructions and get rid of the encoding information. llvm-svn: 140776
-
- Sep 28, 2011
-
-
Jakob Stoklund Olesen authored
I am going to unify the SSEDomainFix and NEONMoveFix passes into a single target independent pass. They are essentially doing the same thing. llvm-svn: 140652
-
- Sep 08, 2011
-
-
Bruno Cardoso Lopes authored
single field (Flags), which is a bitwise OR of items from the TB_* enum. This makes it easier to add new information in the future. * Gives every static array an equivalent layout: { RegOp, MemOp, Flags } * Adds a helper function, AddTableEntry, to avoid duplication of the insertion code. * Renames TB_NOT_REVERSABLE to TB_NO_REVERSE. * Adds TB_NO_FORWARD, which is analogous to TB_NO_REVERSE, except that it prevents addition of the Reg->Mem entry. (This is going to be used by Native Client, in the next CL). Patch by David Meyer llvm-svn: 139311
-
- Aug 08, 2011
-
-
Jakob Stoklund Olesen authored
These the methods are target-independent since they simply scan the memory operands. They can live in TargetInstrInfoImpl. llvm-svn: 137063
-
- Jul 25, 2011
-
-
Evan Cheng authored
llvm-svn: 135930
-
- Jul 01, 2011
-
-
Evan Cheng authored
llvm-svn: 134244
-
- May 25, 2011
-
-
Francois Pichet authored
llvm-svn: 132062
-
Francois Pichet authored
MSVC doesn't support 64 bit enum. OpcodeMask is not used anywhere in the code base. llvm-svn: 132057
-
- Apr 15, 2011
-
-
Chris Lattner authored
Luis Felipe Strano Moraes! llvm-svn: 129558
-
- Apr 04, 2011
-
-
Joerg Sonnenberger authored
llvm-svn: 128847
-
Joerg Sonnenberger authored
llvm-svn: 128826
-
Joerg Sonnenberger authored
Define most shift masks incrementally to reduce the redundant hard-coding. Introduce new shift for the VEX flags to replace the magic constant 32 in various places. llvm-svn: 128822
-
- Mar 05, 2011
-
-
Andrew Trick authored
regs. This is the only change in this checkin that may affects the default scheduler. With better register tracking and heuristics, it doesn't make sense to artificially lower the register limit so much. Added -sched-high-latency-cycles and X86InstrInfo::isHighLatencyDef to give the scheduler a way to account for div and sqrt on targets that don't have an itinerary. It is currently defaults to 10 (the actual number doesn't matter much), but only takes effect on non-default schedulers: list-hybrid and list-ilp. Added several heuristics that can be individually disabled for the non-default sched=list-ilp mode. This helps us determine how much better we can do on a given benchmark than the default scheduler. Certain compute intensive loops run much faster in this mode with the right set of heuristics, and it doesn't seem to have much negative impact elsewhere. Not all of the heuristics are needed, but we still need to experiment to decide which should be disabled by default for sched=list-ilp. llvm-svn: 127067
-
Andrew Trick authored
llvm-svn: 127065
-
- Feb 22, 2011
-
-
Rafael Espindola authored
Patch by Jai Menon. llvm-svn: 126165
-
- Nov 28, 2010
-
-
Anton Korobeynikov authored
llvm-svn: 120228
-
- Nov 15, 2010
-
-
Chris Lattner authored
llvm-svn: 119092
-
- Oct 19, 2010
-
-
Evan Cheng authored
erased the instruction during LICM so UpdateRegPressureAfter() should not reference it afterwards. llvm-svn: 116845
-
Daniel Dunbar authored
is", which breaks some nightly tests. llvm-svn: 116816
-
Evan Cheng authored
"long latency" enough to hoist even if it may increase spilling. Reloading a value from spill slot is often cheaper than performing an expensive computation in the loop. For X86, that means machine LICM will hoist SQRT, DIV, etc. ARM will be somewhat aggressive with VFP and NEON instructions. - Enable register pressure aware machine LICM by default. llvm-svn: 116781
-
- Oct 08, 2010
-
-
Chris Lattner authored
with the right types. llvm-svn: 116001
-
- Oct 03, 2010
-
-
Chris Lattner authored
else in X86), and add support for pavgusb. This is apparently the only instruction (other than movsx) that is preventing ffmpeg from building with clang. If someone else is interested in banging out the rest of the 3DNow! instructions, it should be quite easy now. llvm-svn: 115466
-
- Sep 17, 2010
-
-
- Sep 05, 2010
-
-
rdar://6653118Chris Lattner authored
Since mem2reg isn't run at -O0, we get a ton of reloads from the stack, for example, before, this code: int foo(int x, int y, int z) { return x+y+z; } used to compile into: _foo: ## @foo subq $12, %rsp movl %edi, 8(%rsp) movl %esi, 4(%rsp) movl %edx, (%rsp) movl 8(%rsp), %edx movl 4(%rsp), %esi addl %edx, %esi movl (%rsp), %edx addl %esi, %edx movl %edx, %eax addq $12, %rsp ret Now we produce: _foo: ## @foo subq $12, %rsp movl %edi, 8(%rsp) movl %esi, 4(%rsp) movl %edx, (%rsp) movl 8(%rsp), %edx addl 4(%rsp), %edx ## Folded load addl (%rsp), %edx ## Folded load movl %edx, %eax addq $12, %rsp ret Fewer instructions and less register use = faster compiles. llvm-svn: 113102
-
- Aug 26, 2010
-
-
Bruno Cardoso Lopes authored
llvm-svn: 112128
-
- Aug 19, 2010
-
-
Chris Lattner authored
call and jumps. llvm-svn: 111496
-
- Jul 22, 2010
-
-
Chris Lattner authored
llvm-svn: 109167
-
Chris Lattner authored
rip out the implementation of X86InstrInfo::GetInstSizeInBytes. The code being ripped out just implemented a copy and hacked up version of the (old) instruction encoder, and is buggy and terrible in other ways. Since "GetInstSizeInBytes" is really only there to support the JIT's "NeedsExactSize" hook (which noone is using), just rip out the code. I will rip out the NeedsExactSize hook next. This resolves rdar://7617809 - switch X86InstrInfo::GetInstSizeInBytes to use X86MCCodeEmitter llvm-svn: 109149
-
- Jul 17, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 108567
-
- Jul 13, 2010
-
-
Bruno Cardoso Lopes authored
Add the x86 VEX_L form to handle special cases where VEX_L must be set. llvm-svn: 108274
-
- Jul 11, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 108076
-
- Jul 09, 2010
-
-
Bruno Cardoso Lopes authored
fields to use. llvm-svn: 107952
-
Chris Lattner authored
X86 memory operand. llvm-svn: 107925
-
Chris Lattner authored
returns the start of the memory operand for an instruction. Introduce a new "X86AddrSegment" enum to reduce # magic numbers referring to X86 memory operand layout. llvm-svn: 107916
-
- Jul 08, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 107898
-
Chris Lattner authored
in the integrated assembler. Still some discussion to be done. llvm-svn: 107825
-
- Jul 07, 2010
-
-
Bruno Cardoso Lopes authored
Update VEX encoding to support those new instructions llvm-svn: 107715
-
- Jul 01, 2010
-
-
Bruno Cardoso Lopes authored
- Add AVX SSE2 Move doubleword and quadword instructions. - Add encode bits for VEX_W - All 128-bit SSE 1 & SSE2 instructions that are described in the .td file now have a AVX encoded form already working. llvm-svn: 107365
-