- Feb 29, 2004
-
-
Alkis Evlogimenos authored
1) For 8-bit registers try to use first the ones that are parts of the same register (AL then AH). This way we only alias 2 16/32-bit registers after allocating 4 8-bit variables. 2) Move EBX as the last register to allocate. This will cause less spills to happen since we will have 8-bit registers available up to register excaustion (assuming we use the allocation order). It would be nice if we could push all of the 8-bit aliased registers towards the end but we much prefer to keep callee saved register to the end to avoid saving them on entry and exit of the function. For example this gives a slight reduction of spills with linear scan on 164.gzip. Before: 11221 asm-printer - Number of machine instrs printed 975 spiller - Number of loads added 675 spiller - Number of stores added 398 spiller - Number of register spills After: 11182 asm-printer - Number of machine instrs printed 952 spiller - Number of loads added 652 spiller - Number of stores added 386 spiller - Number of register spills llvm-svn: 11996
-
Alkis Evlogimenos authored
their names more decriptive. A name consists of the base name, a default operand size followed by a character per operand with an optional special size. For example: ADD8rr -> add, 8-bit register, 8-bit register IMUL16rmi -> imul, 16-bit register, 16-bit memory, 16-bit immediate IMUL16rmi8 -> imul, 16-bit register, 16-bit memory, 8-bit immediate MOVSX32rm16 -> movsx, 32-bit register, 16-bit memory llvm-svn: 11995
-
Brian Gaeke authored
llvm-svn: 11994
-
Chris Lattner authored
Replace uses of addZImm with addImm. llvm-svn: 11992
-
Chris Lattner authored
block loops. llvm-svn: 11990
-
Chris Lattner authored
Note that this is a band-aid put over a band-aid. This just undisables tail duplication in on very specific case that it seems to work in. llvm-svn: 11989
-
Chris Lattner authored
llvm-svn: 11987
-
Chris Lattner authored
llvm-svn: 11986
-
Chris Lattner authored
llvm-svn: 11984
-
Chris Lattner authored
llvm-svn: 11983
-
Chris Lattner authored
llvm-svn: 11982
-
Chris Lattner authored
llvm-svn: 11981
-
Chris Lattner authored
llvm-svn: 11979
-
Chris Lattner authored
llvm-svn: 11977
-
Alkis Evlogimenos authored
llvm-svn: 11974
-
Chris Lattner authored
llvm-svn: 11973
-
Alkis Evlogimenos authored
to denote this fact. llvm-svn: 11972
-
Alkis Evlogimenos authored
denote this fact. llvm-svn: 11971
-
Alkis Evlogimenos authored
parse. The name is now I (operand size)*. For example: Im32 -> instruction with 32-bit memory operands. Im16i8 -> instruction with 16-bit memory operands and 8 bit immediate operands. llvm-svn: 11970
-
- Feb 28, 2004
-
-
Alkis Evlogimenos authored
operand but their sizes differ. llvm-svn: 11969
-
Alkis Evlogimenos authored
the size of the immediate and the memory operand on instructions that use them. This resolves problems with instructions that take both a memory and an immediate operand but their sizes differ (i.e. ADDmi32b). llvm-svn: 11967
-
Brian Gaeke authored
llvm-svn: 11966
-
Chris Lattner authored
and br->br code and generalizing it. This allows us to compile code like this: int test(Instruction *I) { if (isa<CastInst>(I)) return foo(7); else if (isa<BranchInst>(I)) return foo(123); else if (isa<UnwindInst>(I)) return foo(1241); else if (isa<SetCondInst>(I)) return foo(1); else if (isa<VAArgInst>(I)) return foo(42); return foo(-1); } into: int %_Z4testPN4llvm11InstructionE("struct.llvm::Instruction"* %I) { entry: %tmp.1.i.i.i.i.i.i.i = getelementptr "struct.llvm::Instruction"* %I, long 0, ubyte 4 ; <uint*> [#uses=1] %tmp.2.i.i.i.i.i.i.i = load uint* %tmp.1.i.i.i.i.i.i.i ; <uint> [#uses=2] %tmp.2.i.i.i.i.i.i = seteq uint %tmp.2.i.i.i.i.i.i.i, 27 ; <bool> [#uses=0] switch uint %tmp.2.i.i.i.i.i.i.i, label %endif.0 [ uint 27, label %then.0 uint 2, label %then.1 uint 5, label %then.2 uint 14, label %then.3 uint 15, label %then.3 uint 16, label %then.3 uint 17, label %then.3 uint 18, label %then.3 uint 19, label %then.3 uint 32, label %then.4 ] ... As well as handling the cases in 176.gcc and many other programs more effectively. llvm-svn: 11964
-
Chris Lattner authored
immediately abort due to lack of an instruction selector. :) llvm-svn: 11963
-
Chris Lattner authored
llvm-svn: 11960
-
Chris Lattner authored
llvm-svn: 11959
-
Chris Lattner authored
llvm-svn: 11958
-
Chris Lattner authored
llvm-svn: 11957
-
Chris Lattner authored
llvm-svn: 11956
-
Chris Lattner authored
llvm-svn: 11955
-
Chris Lattner authored
llvm-svn: 11954
-
Chris Lattner authored
Do not just inject a new prototype. llvm-svn: 11951
-
Alkis Evlogimenos authored
operands. The X86 backend doesn't handle them properly right now. llvm-svn: 11944
-
Chris Lattner authored
Create a new AddUsesToWorkList method optimize memmove/set/cpy of zero bytes to a noop. llvm-svn: 11941
-
Chris Lattner authored
llvm-svn: 11940
-
Misha Brukman authored
llvm-svn: 11939
-
Misha Brukman authored
function, as long as the loop isn't the only one in that function. This should help debugging passes easier with BugPoint. llvm-svn: 11936
-
Misha Brukman authored
a new function, taking care of inputs and outputs. llvm-svn: 11935
-
Alkis Evlogimenos authored
llvm-svn: 11933
-
Alkis Evlogimenos authored
llvm-svn: 11932
-