summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86CodeEmitter.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Don't special case XS, XD prefixes.Evan Cheng2006-02-141-14/+9
| | | | llvm-svn: 26183
* Bug fix: XS, XD prefixes were being emitted twice.Evan Cheng2006-02-141-9/+9
| | | | | | XMM registers were not being handled. llvm-svn: 26182
* - Use xor to clear integer registers (set R, 0).Evan Cheng2006-02-011-1/+6
| | | | | | | | - Added a new format for instructions where the source register is implied and it is same as the destination register. Used for pseudo instructions that clear the destination register. llvm-svn: 25872
* Fix a bunch of JIT failures with the new iselChris Lattner2006-01-281-4/+15
| | | | llvm-svn: 25748
* Unbreak the JIT with SSEChris Lattner2006-01-271-0/+8
| | | | llvm-svn: 25688
* Allow jit-beta to workChris Lattner2006-01-241-1/+0
| | | | llvm-svn: 25578
* Add explicit #includes of <iostream>Chris Lattner2006-01-221-0/+1
| | | | llvm-svn: 25515
* Refactor things a bit to allow the ELF code emitter to run the X86 machine ↵Chris Lattner2005-07-111-12/+4
| | | | | | | | code emitter after itself. llvm-svn: 22376
* First round of support for doing scalar FP using the SSE2 ISA extension andNate Begeman2005-07-061-2/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | XMM registers. There are many known deficiencies and fixmes, which will be addressed ASAP. The major benefit of this work is that it will allow the LLVM register allocator to allocate FP registers across basic blocks. The x86 backend will still default to x87 style FP. To enable this work, you must pass -enable-sse-scalar-fp and either -sse2 or -sse3 to llc. An example before and after would be for: double foo(double *P) { double Sum = 0; int i; for (i = 0; i < 1000; ++i) Sum += P[i]; return Sum; } The inner loop looks like the following: x87: .LBB_foo_1: # no_exit fldl (%esp) faddl (%eax,%ecx,8) fstpl (%esp) incl %ecx cmpl $1000, %ecx #FP_REG_KILL jne .LBB_foo_1 # no_exit SSE2: addsd (%eax,%ecx,8), %xmm0 incl %ecx cmpl $1000, %ecx #FP_REG_KILL jne .LBB_foo_1 # no_exit llvm-svn: 22340
* Tailcalls require stubs to be emitted. Otherwise, the compilation callbackChris Lattner2005-05-191-8/+15
| | | | | | doesn't know who 'called' it. llvm-svn: 22136
* * Remove trailing whitespaceMisha Brukman2005-04-211-4/+4
| | | | | | * Convert tabs to spaces llvm-svn: 21426
* There is no reason to emit function stubs for direct calls.Chris Lattner2004-11-211-1/+1
| | | | llvm-svn: 18082
* Remove all JIT specific code and switch the code generator over to emittingChris Lattner2004-11-201-194/+26
| | | | | | relocations for global references. llvm-svn: 18068
* Dont' forget to switch back to decimal outputChris Lattner2004-11-191-1/+2
| | | | llvm-svn: 18010
* Fix a major bug in the signed shr code, which apparently only breaks 134.perl!Chris Lattner2004-11-161-1/+2
| | | | llvm-svn: 17902
* Remove a dead function, which died when we got GAS emission working (phwew,Chris Lattner2004-11-161-8/+0
| | | | | | hold your nose!) llvm-svn: 17869
* Implement a simple FIXME: if we are emitting a basic block address that hasChris Lattner2004-11-161-3/+13
| | | | | | | already been emitted, we don't have to remember it and deal with it later, just emit it directly. llvm-svn: 17868
* * Merge some win32 ifdefs togetherChris Lattner2004-11-161-22/+17
| | | | | | | | * Get rid of "emitMaybePCRelativeValue", either we want to emit a PC relative value or not: drop the maybe BS. As it turns out, the only places where the bool was a variable coming in, the bool was a dynamic constant. llvm-svn: 17867
* Add debug-only=jit printout, so we see when lazily resolved symbols areChris Lattner2004-11-151-0/+2
| | | | | | set up. llvm-svn: 17862
* Fix compilation problem; make the cast and the LHS be the same type.John Criswell2004-11-051-1/+1
| | | | llvm-svn: 17488
* Quiet VC++ warningsChris Lattner2004-11-051-2/+2
| | | | llvm-svn: 17484
* Improve compatibility with VC++, patch contributed by Morten Ofstad!Chris Lattner2004-10-181-0/+17
| | | | llvm-svn: 17126
* Unify handling of constant pool indexes with the other code paths, allowingChris Lattner2004-10-171-17/+17
| | | | | | us to use index registers for CPI's llvm-svn: 17082
* Give the X86 JIT the ability to encode global+disp constants. PatchChris Lattner2004-10-151-27/+54
| | | | | | contributed by Jeff Cohen! llvm-svn: 17010
* Fix filename: Printer.cpp has become X86AsmPrinter.cppMisha Brukman2004-09-121-1/+1
| | | | llvm-svn: 16299
* Changes For Bug 352Reid Spencer2004-09-011-3/+3
| | | | | | | | Move include/Config and include/Support into include/llvm/Config, include/llvm/ADT and include/llvm/Support. From here on out, all LLVM public header files must be under include/llvm/. llvm-svn: 16137
* Remove dead methodChris Lattner2004-08-111-13/+0
| | | | llvm-svn: 15647
* Make sure to emit the immediate byte for instructions like:Chris Lattner2004-07-171-0/+2
| | | | | | | | shrd [mem], reg, imm This fixes the jit-ls failure on 186.crafty. llvm-svn: 14914
* Convert to the new TargetMachine interface.Chris Lattner2004-06-021-1/+1
| | | | llvm-svn: 13952
* Don't keep track of references to LLVM BasicBlocks while emitting; useBrian Gaeke2004-05-141-11/+9
| | | | | | MachineBasicBlocks instead. llvm-svn: 13568
* Use emitWordAt() to emit forward-branch fixups.Brian Gaeke2004-04-231-1/+1
| | | | llvm-svn: 13120
* Add support for new instruction typeChris Lattner2004-04-131-0/+2
| | | | llvm-svn: 12894
* Add emitInstruction() API so that we can get the bytes of a simple instructionAlkis Evlogimenos2004-03-091-3/+13
| | | | llvm-svn: 12252
* Constify things a bitAlkis Evlogimenos2004-03-091-9/+9
| | | | llvm-svn: 12251
* Each instruction now has both an ImmType and a MemType. This describesAlkis Evlogimenos2004-02-281-33/+37
| | | | | | | | 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
* Rename MRMS[0-7]{r,m} to MRM[0-7]{r,m}.Alkis Evlogimenos2004-02-271-10/+10
| | | | llvm-svn: 11921
* Add support for GlobalAddress's for alkisChris Lattner2004-02-171-1/+6
| | | | llvm-svn: 11560
* Expand the repertoire of the forms we can print and encode.Chris Lattner2004-02-171-2/+3
| | | | llvm-svn: 11537
* Make dense maps keyed on physical registers smallerusingAlkis Evlogimenos2004-02-151-1/+1
| | | | | | | | | | MRegisterInfo::getNumRegs() instead of MRegisterInfo::FirstVirtualRegister. Also use MRegisterInfo::is{Physical,Virtual}Register where appropriate. llvm-svn: 11477
* Add back machine code deleter pass until we get a MachineCode passAlkis Evlogimenos2004-02-151-0/+2
| | | | | | | that will be responsible for the creation of MachineFunctions and will be required by all MachineFunctionPass passes. llvm-svn: 11453
* Add support for the rep movs[bwd] instructions, and emit them when codeChris Lattner2004-02-121-0/+4
| | | | | | generating the llvm.memcpy intrinsic. llvm-svn: 11351
* Change MachineBasicBlock's vector of MachineInstr pointers into anAlkis Evlogimenos2004-02-121-3/+1
| | | | | | | | | 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
* Modify the two address instruction pass to remove the duplicateAlkis Evlogimenos2004-02-041-15/+7
| | | | | | operand of the instruction and thus simplify the register allocation. llvm-svn: 11124
* Remove floating point killer pass. This is now implemented in theAlkis Evlogimenos2003-12-201-1/+3
| | | | | | | | | | 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
* Finally, _actually delete the machine code_ for a function, after it hasChris Lattner2003-12-201-0/+3
| | | | | | | been emitted. Also, since the FPK pass is causing memory access violations, disable it. llvm-svn: 10559
* A minor cleanup for better encapsulationChris Lattner2003-12-201-12/+13
| | | | llvm-svn: 10545
* Rip JIT specific stuff out of TargetMachine, as per PR176Chris Lattner2003-12-201-2/+10
| | | | llvm-svn: 10542
* Modified cast so that it converts the int to a long before casting toJohn Criswell2003-12-121-1/+1
| | | | | | | a pointer. This evades a warning emitted by GCC when we cast from unsigned int (32 bit) to void * (64 bit) on SparcV9. llvm-svn: 10435
* Implement the TargetMachine::getJITStubForFunction method for X86, finegrainifyChris Lattner2003-12-121-4/+7
| | | | | | namespacification. llvm-svn: 10430
* Put all LLVM code into the llvm namespace, as per bug 109.Brian Gaeke2003-11-111-0/+4
| | | | llvm-svn: 9903
OpenPOWER on IntegriCloud