- Jun 11, 2004
-
-
Chris Lattner authored
This makes the code much simpler, and the two cases really do belong apart. Once we do it, it's pretty obvious how flawed the logic was for A != A case, so I fixed it (fixing PR369). This also uses freeStackSlotAfter instead of inserting an fxchg then popStackAfter'ing in the case where there is a dead result (unlikely, but possible), producing better code. llvm-svn: 14139
-
- Jun 02, 2004
-
-
Chris Lattner authored
llvm-svn: 13952
-
- May 01, 2004
-
-
Chris Lattner authored
Look at all of the pretty minuses. :) llvm-svn: 13303
-
- Apr 14, 2004
-
-
Chris Lattner authored
even when the "optimization" I added before is turned off. It generates this extremely pointless code: test: fld QWORD PTR [%ESP + 4] mov %AL, 0 test %AL, %AL fcmove %ST(0), %ST(0) ret Good thing the optimizer will have removed this before code generation anyway. :) llvm-svn: 12939
-
- Apr 12, 2004
-
-
Chris Lattner authored
llvm-svn: 12855
-
Chris Lattner authored
llvm-svn: 12851
-
- Apr 11, 2004
-
-
Chris Lattner authored
llvm-svn: 12836
-
- Apr 01, 2004
-
-
Chris Lattner authored
Implement a small optimization. In test/Regression/CodeGen/X86/select.ll, we now generate this for foldSel3: foldSel3: mov %AL, BYTE PTR [%ESP + 4] fld DWORD PTR [%ESP + 8] fld DWORD PTR [%ESP + 12] mov %EAX, DWORD PTR [%ESP + 16] mov %ECX, DWORD PTR [%ESP + 20] cmp %EAX, %ECX fxch %ST(1) fcmovae %ST(0), %ST(1) *** fstp %ST(1) ret Instead of: foldSel3: mov %AL, BYTE PTR [%ESP + 4] fld DWORD PTR [%ESP + 8] fld DWORD PTR [%ESP + 12] mov %EAX, DWORD PTR [%ESP + 16] mov %ECX, DWORD PTR [%ESP + 20] cmp %EAX, %ECX fxch %ST(1) fcmovae %ST(0), %ST(1) *** fxch %ST(1) *** fstp %ST(0) ret In practice, this only effects code size: performance should be basically unaffected. llvm-svn: 12588
-
Chris Lattner authored
llvm-svn: 12576
-
- Feb 29, 2004
-
-
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
-
Alkis Evlogimenos authored
denote this fact. llvm-svn: 11971
-
- Feb 15, 2004
-
-
Alkis Evlogimenos authored
dereferencing it causes an assertion error. llvm-svn: 11458
-
- Feb 14, 2004
-
-
Alkis Evlogimenos authored
llvm-svn: 11430
-
- Feb 12, 2004
-
-
Alkis Evlogimenos authored
ilist of MachineInstr objects. This allows constant time removal and insertion of MachineInstr instances from anywhere in each MachineBasicBlock. It also allows for constant time splicing of MachineInstrs into or out of MachineBasicBlocks. llvm-svn: 11340
-
- Feb 10, 2004
-
-
Chris Lattner authored
llvm-svn: 11276
-
- Feb 03, 2004
-
-
Chris Lattner authored
llvm-svn: 11094
-
- Feb 02, 2004
-
-
Chris Lattner authored
llvm-svn: 11077
-
- Jan 30, 2004
-
-
Chris Lattner authored
llvm-svn: 11026
-
- Dec 20, 2003
-
-
Alkis Evlogimenos authored
instruction selector by adding a new pseudo-instruction FP_REG_KILL. This instruction implicitly defines all x86 fp registers and is a terminator so that passes which add machine code at the end of basic blocks (like phi elimination) do not add instructions between it and the branch or return instruction. llvm-svn: 10562
-
Chris Lattner authored
instructions on an ilist llvm-svn: 10556
-
Chris Lattner authored
Minor cleanups to killer pass llvm-svn: 10555
-
- Dec 14, 2003
-
-
Alkis Evlogimenos authored
llvm-svn: 10460
-
- Dec 13, 2003
-
-
Alkis Evlogimenos authored
allocaton on the X86 to add information to the machine code denoting that our floating point stackifier cannot handle virtual point register that are alive across basic blocks. This pass adds an implicit def of all virtual floating point register at the end of each basic block. llvm-svn: 10446
-
- Nov 11, 2003
-
-
Brian Gaeke authored
llvm-svn: 9903
-
- Oct 20, 2003
-
-
John Criswell authored
Header files will be on the way. llvm-svn: 9298
-
- Oct 10, 2003
-
-
Misha Brukman authored
llvm-svn: 9027
-
- Aug 18, 2003
-
-
Misha Brukman authored
llvm-svn: 7944
-
- Aug 13, 2003
-
-
Brian Gaeke authored
llvm-svn: 7823
-
- Aug 03, 2003
-
-
Chris Lattner authored
llvm-svn: 7541
-
Chris Lattner authored
llvm-svn: 7532
-
- Aug 02, 2003
-
-
Chris Lattner authored
llvm-svn: 7497
-
- Jun 27, 2003
-
-
Brian Gaeke authored
SingleSource except oopack and Oscar. (Sorry, Oscar.) include/llvm/Target/TargetInstrInfo.h: Remove virtual print method. Add accessors for ImplicitUses/Defs. lib/Target/TargetInstrInfo.cpp: Remove virtual print method. If you really wanted this, just use MI->print(O, TM); instead... lib/Target/X86: FloatingPoint.cpp: ...like this. X86InstrInfo.h: Remove virtual print method. Define the PrintImplUses target-specific flag bit. X86InstrInfo.def: Add the PrintImplUses flag to all the instructions which implicitly use CL, because the assembler needs to see the CL in order to generate the right instruction. Printer.cpp: Ditch fnIndex at Chris's request. Now we use CurrentFnName to name constants in the constant pool for each function instead. This avoids keeping state between runOnMachineFunction() invocations, which is a no-no. Having MangledGlobals be global is a bogon I'd like to get rid of too, but making it a static member of Printer causes link errors (why???). Make NumberForBB into a member of Printer instead of a global, too. Make printOp and printMemReference into methods of Printer. X86InstrInfo::print is now Printer::printMachineInstruction, because TargetInstrInfo::print is history. (Because of this, we have to qualify the names of some TargetInstrInfo methods we call.) Print out the ImplicitUses field of any instruction we print that has the PrintImplUses bit set. llvm-svn: 6924
-
- Jan 14, 2003
-
-
Chris Lattner authored
llvm-svn: 5272
-
- Jan 13, 2003
-
-
Chris Lattner authored
llvm-svn: 5260
-