Nate Begeman 
							
						 
					 
					
						
						
							
						
						14e2cf62f4 
					 
					
						
						
							
							Properly split f32 and f64 into separate register classes for scalar sse fp  
						
						... 
						
						
						
						fixing a bunch of nasty hackery
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23735  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-14 22:06:00 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						11cefd926a 
					 
					
						
						
							
							Teach the register allocator that movaps is also a move instruction  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22451  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-07-16 02:00:20 +00:00 
						 
				 
			
				
					
						
							
							
								Nate Begeman 
							
						 
					 
					
						
						
							
						
						f63be7d395 
					 
					
						
						
							
							First round of support for doing scalar FP using the SSE2 ISA extension and  
						
						... 
						
						
						
						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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22340  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-07-06 18:59:04 +00:00 
						 
				 
			
				
					
						
							
							
								Misha Brukman 
							
						 
					 
					
						
						
							
						
						0e0a7a45d3 
					 
					
						
						
							
							* Remove trailing whitespace  
						
						... 
						
						
						
						* Convert tabs to spaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21426  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-04-21 23:38:14 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						a76f04828a 
					 
					
						
						
							
							When commuting these instructions, make sure to actually swap the operands too.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19694  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-19 16:55:52 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						0df53d22c3 
					 
					
						
						
							
							Improve coverage of the X86 instruction set by adding 16-bit shift doubles.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19687  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-19 07:31:24 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						41e431ba04 
					 
					
						
						
							
							Teach the code generator that shrd/shld is commutable if it has an immediate.  
						
						... 
						
						
						
						This allows us to generate this:
foo:
        mov %EAX, DWORD PTR [%ESP + 4]
        mov %EDX, DWORD PTR [%ESP + 8]
        shld %EDX, %EDX, 2
        shl %EAX, 2
        ret
instead of this:
foo:
        mov %EAX, DWORD PTR [%ESP + 4]
        mov %ECX, DWORD PTR [%ESP + 8]
        mov %EDX, %EAX
        shrd %EDX, %ECX, 30
        shl %EAX, 2
        ret
Note the magically transmogrifying immediate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19686  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-19 07:11:01 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						5aee0b97aa 
					 
					
						
						
							
							Disable 2->3 address promotion of add and inc instructions to LEA's.  In  
						
						... 
						
						
						
						addition to being three address, LEA's don't set the flags.
This fixes 186.crafty.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19251  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-02 04:18:17 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						bcea4d6f28 
					 
					
						
						
							
							Implement the convertToThreeAddress method, add support for inverting JP/JNP  
						
						... 
						
						
						
						branches.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19247  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-02 02:37:07 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						bcdda01210 
					 
					
						
						
							
							Fix a warning  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15409  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-08-01 19:31:30 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						31e155e610 
					 
					
						
						
							
							Align breaks.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15371  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-07-31 10:05:44 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						167cf33e1d 
					 
					
						
						
							
							Add breaks  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15365  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-07-31 09:53:31 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						6103c1703c 
					 
					
						
						
							
							Simplify code a bit.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15364  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-07-31 09:44:32 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						02a453074d 
					 
					
						
						
							
							Correctly spell 'unconditional'.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15363  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-07-31 09:41:44 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						36f506eddb 
					 
					
						
						
							
							Implement insertGoto and reverseBranchCondition for the X86.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15362  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-07-31 09:38:47 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						8295f202d9 
					 
					
						
						
							
							A big X86 instruction rename. The instructions are renamed to make  
						
						... 
						
						
						
						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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11995  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-29 08:50:03 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						dce363d5ec 
					 
					
						
						
							
							Adjust to change in TII ctor arguments  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11987  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-29 06:31:44 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						1ddf475b6a 
					 
					
						
						
							
							These two virtual methods are never called.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11984  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-29 05:59:33 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						890f92328d 
					 
					
						
						
							
							Move MOTy::UseType enum into MachineOperand. This eliminates the  
						
						... 
						
						
						
						switch statements in the constructors and simplifies the
implementation of the getUseType() member function. You will have to
specify defs using MachineOperand::Def instead of MOTy::Def though
(similarly for Use and UseAndDef).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11715  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-22 19:23:26 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						be766c7246 
					 
					
						
						
							
							Remove getAllocatedRegNum(). Use getReg() instead.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11393  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-13 21:01:20 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						6d21518718 
					 
					
						
						
							
							Don't use MachineOperator::is(Phys|Virt)Register  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11276  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-10 20:31:28 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						0bbf3052c2 
					 
					
						
						
							
							Tighten up checks  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11274  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-10 20:25:13 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						a1b6f95f78 
					 
					
						
						
							
							FpMOV is also a move instruction.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11055  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-01 08:22:16 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						5e30002af7 
					 
					
						
						
							
							Add TargetInstrInfo::isMoveInstr() to support coalescing in register  
						
						... 
						
						
						
						allocation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10633  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-12-28 17:35:08 +00:00 
						 
				 
			
				
					
						
							
							
								Brian Gaeke 
							
						 
					 
					
						
						
							
						
						d0fde30ce8 
					 
					
						
						
							
							Put all LLVM code into the llvm namespace, as per bug 109.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9903  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-11-11 22:41:34 +00:00 
						 
				 
			
				
					
						
							
							
								John Criswell 
							
						 
					 
					
						
						
							
						
						b576c94c15 
					 
					
						
						
							
							Added LLVM project notice to the top of every C++ source file.  
						
						... 
						
						
						
						Header files will be on the way.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9298  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-10-20 19:43:21 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						abf05b2dae 
					 
					
						
						
							
							* Start using tablegen'd instruction descriptions  
						
						... 
						
						
						
						* Fix bug in the createNOP method, which was not marking the operands of the
  generated XCHG as useanddef.  I don't think this method is actually used,
  so it wasn't breaking anything, but it should be fixed anyway...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7539  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-08-03 21:55:55 +00:00 
						 
				 
			
				
					
						
							
							
								Misha Brukman 
							
						 
					 
					
						
						
							
						
						12745c55e1 
					 
					
						
						
							
							Reword to remove reference to how things worked in the past.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6323  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-05-24 01:08:43 +00:00 
						 
				 
			
				
					
						
							
							
								Misha Brukman 
							
						 
					 
					
						
						
							
						
						e9d883828a 
					 
					
						
						
							
							Implement the TargetInstrInfo's createNOPinstr() and isNOPinstr() interface.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6320  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-05-24 00:09:50 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						3501feab81 
					 
					
						
						
							
							Rename MachineInstrInfo -> TargetInstrInfo  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5272  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-01-14 22:00:31 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						b339223518 
					 
					
						
						
							
							Add comments, switch uses/defs to match InstrInfo.def file  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5102  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2002-12-18 01:05:54 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						4ce42a776a 
					 
					
						
						
							
							* Move information about Implicit Defs/Uses into X86InstrInfo.def.  
						
						... 
						
						
						
						* Expose information about implicit defs/uses of register through the
  MachineInstrInfo.h file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4877  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2002-12-03 05:42:53 +00:00 
						 
				 
			
				
					
						
							
							
								Misha Brukman 
							
						 
					 
					
						
						
							
						
						a85d6bc2bc 
					 
					
						
						
							
							Added -*- C++ -*- mode to the comments.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4826  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2002-11-22 22:42:50 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						f21dfcddcf 
					 
					
						
						
							
							Expose base opcode  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4742  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2002-11-18 06:56:24 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						6aab9cf65c 
					 
					
						
						
							
							Start to add more information to instr.def  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4741  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2002-11-18 05:37:11 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						dbb61c6445 
					 
					
						
						
							
							Reorganize printing interface a bit  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4728  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2002-11-17 22:53:13 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						b752e9a2ae 
					 
					
						
						
							
							Set the destination register field based on the target specific flags  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4442  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2002-10-30 01:15:31 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						055c965bff 
					 
					
						
						
							
							Rename X86InstructionInfo to X86InstrInfo  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4413  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2002-10-29 21:05:24 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						33f53b554a 
					 
					
						
						
							
							Minor renaming  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4410  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2002-10-29 20:48:56 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						9bbf439e38 
					 
					
						
						
							
							Implement MachineInstrInfo interface  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4394  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2002-10-29 17:43:19 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						726140821f 
					 
					
						
						
							
							Initial checkin of X86 backend.  
						
						... 
						
						
						
						We can instruction select exactly one instruction 'ret void'.  Wow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4284  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2002-10-25 22:55:53 +00:00