de46e48420 
								
							 
						 
						
							
							
								
								For PR786:  
							
							... 
							
							
							
							Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting
fall out by removing unused variables. Remaining warnings have to do with
unused functions (I didn't want to delete code without review) and unused
variables in generated code. Maintainers should clean up the remaining
issues when they see them. All changes pass DejaGnu tests and Olden.
llvm-svn: 31380 
							
						 
						
							2006-11-02 20:25:50 +00:00  
				
					
						
							
							
								 
						
							
								584a11ae22 
								
							 
						 
						
							
							
								
								Implement the getRegForInlineAsmConstraint method for PPC.  With recent  
							
							... 
							
							
							
							sdisel changes, this eliminates a ton of copies around common inline asms.
For example:
int test2(int Y, int X) {
  asm("foo %0, %1" : "=r"(X): "r"(X));
  return X;
}
now compiles to:
_test2:
        foo r3, r4
        blr
instead of:
_test2:
        mr r2, r4
        foo r2, r2
        mr r3, r2
        blr
GCC produces:
_test2:
        foo r4, r4
        mr r3,r4
        blr
llvm-svn: 31367 
							
						 
						
							2006-11-02 01:44:04 +00:00  
				
					
						
							
							
								 
						
							
								8c6949e5b2 
								
							 
						 
						
							
							
								
								Change the prototype for TargetLowering::isOperandValidForConstraint  
							
							... 
							
							
							
							llvm-svn: 31318 
							
						 
						
							2006-10-31 19:40:43 +00:00  
				
					
						
							
							
								 
						
							
								0d41d19427 
								
							 
						 
						
							
							
								
								All targets expand BR_JT for now.  
							
							... 
							
							
							
							llvm-svn: 31294 
							
						 
						
							2006-10-30 08:02:39 +00:00  
				
					
						
							
							
								 
						
							
								454436dcc5 
								
							 
						 
						
							
							
								
								set the ppc64 stack pointer right, dynamic alloca now works for ppc64  
							
							... 
							
							
							
							llvm-svn: 31028 
							
						 
						
							2006-10-18 01:20:43 +00:00  
				
					
						
							
							
								 
						
							
								ab4df83426 
								
							 
						 
						
							
							
								
								Expand alloca for ppc64  
							
							... 
							
							
							
							llvm-svn: 31027 
							
						 
						
							2006-10-18 01:18:48 +00:00  
				
					
						
							
							
								 
						
							
								ab51cf2e78 
								
							 
						 
						
							
							
								
								Merge ISD::TRUNCSTORE to ISD::STORE. Switch to using StoreSDNode.  
							
							... 
							
							
							
							llvm-svn: 30945 
							
						 
						
							2006-10-13 21:14:26 +00:00  
				
					
						
							
							
								 
						
							
								e71fe34d75 
								
							 
						 
						
							
							
								
								Reflects ISD::LOAD / ISD::LOADX / LoadSDNode changes.  
							
							... 
							
							
							
							llvm-svn: 30844 
							
						 
						
							2006-10-09 20:57:25 +00:00  
				
					
						
							
							
								 
						
							
								df9ac47e5e 
								
							 
						 
						
							
							
								
								Make use of getStore().  
							
							... 
							
							
							
							llvm-svn: 30759 
							
						 
						
							2006-10-05 23:01:46 +00:00  
				
					
						
							
							
								 
						
							
								5d9fd977d3 
								
							 
						 
						
							
							
								
								Combine ISD::EXTLOAD, ISD::SEXTLOAD, ISD::ZEXTLOAD into ISD::LOADX. Add an  
							
							... 
							
							
							
							extra operand to LOADX to specify the exact value extension type.
llvm-svn: 30714 
							
						 
						
							2006-10-04 00:56:09 +00:00  
				
					
						
							
							
								 
						
							
								601b86513d 
								
							 
						 
						
							
							
								
								Legalize is no longer limited to cleverness with just constant shift amounts.  
							
							... 
							
							
							
							Allow it to be clever when possible and fall back to the gross code when needed.
This allows us to compile:
long long foo1(long long X, int C) {
  return X << (C|32);
}
long long foo2(long long X, int C) {
  return X << (C&~32);
}
to:
_foo1:
        rlwinm r2, r5, 0, 27, 31
        slw r3, r4, r2
        li r4, 0
        blr
        .globl  _foo2
        .align  4
_foo2:
        rlwinm r2, r5, 0, 27, 25
        subfic r5, r2, 32
        slw r3, r3, r2
        srw r5, r4, r5
        or r3, r3, r5
        slw r4, r4, r2
        blr
instead of:
_foo1:
        ori r2, r5, 32
        subfic r5, r2, 32
        addi r6, r2, -32
        srw r5, r4, r5
        slw r3, r3, r2
        slw r6, r4, r6
        or r3, r3, r5
        slw r4, r4, r2
        or r3, r3, r6
        blr
        .globl  _foo2
        .align  4
_foo2:
        rlwinm r2, r5, 0, 27, 25
        subfic r5, r2, 32
        addi r6, r2, -32
        srw r5, r4, r5
        slw r3, r3, r2
        slw r6, r4, r6
        or r3, r3, r5
        slw r4, r4, r2
        or r3, r3, r6
        blr
llvm-svn: 30507 
							
						 
						
							2006-09-20 03:47:40 +00:00  
				
					
						
							
							
								 
						
							
								3c48ea54ee 
								
							 
						 
						
							
							
								
								Fold the PPCISD shifts when presented with 0 inputs.  This occurs for code  
							
							... 
							
							
							
							like:
long long test(long long X, int Y) {
  return 1ULL << Y;
}
long long test2(long long X, int Y) {
  return -1LL << Y;
}
which we used to compile to:
_test:
        li r2, 1
        subfic r3, r5, 32
        li r4, 0
        addi r6, r5, -32
        srw r3, r2, r3
        slw r4, r4, r5
        slw r6, r2, r6
        or r3, r4, r3
        slw r4, r2, r5
        or r3, r3, r6
        blr
_test2:
        li r2, -1
        subfic r3, r5, 32
        addi r6, r5, -32
        srw r3, r2, r3
        slw r4, r2, r5
        slw r2, r2, r6
        or r3, r4, r3
        or r3, r3, r2
        blr
Now we produce:
_test:
        li r2, 1
        addi r3, r5, -32
        subfic r4, r5, 32
        slw r3, r2, r3
        srw r4, r2, r4
        or r3, r4, r3
        slw r4, r2, r5
        blr
_test2:
        li r2, -1
        subfic r3, r5, 32
        addi r6, r5, -32
        srw r3, r2, r3
        slw r4, r2, r5
        slw r2, r2, r6
        or r3, r4, r3
        or r3, r3, r2
        blr
llvm-svn: 30479 
							
						 
						
							2006-09-19 05:22:59 +00:00  
				
					
						
							
							
								 
						
							
								9a083a4121 
								
							 
						 
						
							
							
								
								Reflects MachineConstantPoolEntry changes.  
							
							... 
							
							
							
							llvm-svn: 30279 
							
						 
						
							2006-09-12 21:04:05 +00:00  
				
					
						
							
							
								 
						
							
								e7141c8be6 
								
							 
						 
						
							
							
								
								For PR387:  
							
							... 
							
							
							
							Close out this long standing bug by removing the remaining overloaded
virtual functions in LLVM. The -Woverloaded-virtual option is now turned on.
llvm-svn: 29934 
							
						 
						
							2006-08-28 01:02:49 +00:00  
				
					
						
							
							
								 
						
							
								095e4ad2ea 
								
							 
						 
						
							
							
								
								Fix a bug in a recent refactoring that broke a bunch of stuff.  
							
							... 
							
							
							
							llvm-svn: 29649 
							
						 
						
							2006-08-12 07:20:05 +00:00  
				
					
						
							
							
								 
						
							
								ed728e8dc9 
								
							 
						 
						
							
							
								
								Eliminate use of getNode that takes a vector.  
							
							... 
							
							
							
							llvm-svn: 29614 
							
						 
						
							2006-08-11 17:38:39 +00:00  
				
					
						
							
							
								 
						
							
								d66f14e846 
								
							 
						 
						
							
							
								
								Convert vectors to fixed sized arrays and smallvectors.  Eliminate use of getNode that takes a vector.  
							
							... 
							
							
							
							llvm-svn: 29609 
							
						 
						
							2006-08-11 17:18:05 +00:00  
				
					
						
							
							
								 
						
							
								66f1fbaaad 
								
							 
						 
						
							
							
								
								Fix miscompilation of float vector returns.  Compile code to this:  
							
							... 
							
							
							
							_func:
        vsldoi v2, v3, v2, 12
        vsldoi v2, v2, v2, 4
        blr
instead of:
_func:
        vsldoi v2, v3, v2, 12
        vsldoi v2, v2, v2, 4
***     vor f1, v2, v2
        blr
llvm-svn: 29607 
							
						 
						
							2006-08-11 16:47:32 +00:00  
				
					
						
							
							
								 
						
							
								8298265042 
								
							 
						 
						
							
							
								
								Fix some ppc64 issues with vector code.  
							
							... 
							
							
							
							llvm-svn: 29384 
							
						 
						
							2006-07-28 16:45:47 +00:00  
				
					
						
							
							
								 
						
							
								9e56e5c003 
								
							 
						 
						
							
							
								
								Rename RelocModel::PIC to PIC_, to avoid conflicts with -DPIC.  
							
							... 
							
							
							
							llvm-svn: 29307 
							
						 
						
							2006-07-26 21:12:04 +00:00  
				
					
						
							
							
								 
						
							
								a7976d329e 
								
							 
						 
						
							
							
								
								Implement Regression/CodeGen/PowerPC/bswap-load-store.ll by folding bswaps  
							
							... 
							
							
							
							into i16/i32 load/stores.
llvm-svn: 29089 
							
						 
						
							2006-07-10 20:56:58 +00:00  
				
					
						
							
							
								 
						
							
								8aed3cc46b 
								
							 
						 
						
							
							
								
								Implement 64-bit select, bswap, etc.  
							
							... 
							
							
							
							llvm-svn: 28935 
							
						 
						
							2006-06-27 20:14:52 +00:00  
				
					
						
							
							
								 
						
							
								a07410c95b 
								
							 
						 
						
							
							
								
								PPC doesn't have bit converts to/from i64  
							
							... 
							
							
							
							llvm-svn: 28932 
							
						 
						
							2006-06-27 18:40:08 +00:00  
				
					
						
							
							
								 
						
							
								d48ce27532 
								
							 
						 
						
							
							
								
								Implement 64-bit undef, sub, shl/shr, srem/urem  
							
							... 
							
							
							
							llvm-svn: 28929 
							
						 
						
							2006-06-27 18:18:41 +00:00  
				
					
						
							
							
								 
						
							
								cb5a84f446 
								
							 
						 
						
							
							
								
								Use i32 for shift amounts instead of i64.  This gets bisort working.  
							
							... 
							
							
							
							llvm-svn: 28927 
							
						 
						
							2006-06-27 17:34:57 +00:00  
				
					
						
							
							
								 
						
							
								97b3da1519 
								
							 
						 
						
							
							
								
								Implement a bunch of 64-bit cleanliness work.  With this, treeadd builds (but  
							
							... 
							
							
							
							doesn't work right).
llvm-svn: 28921 
							
						 
						
							2006-06-27 00:04:13 +00:00  
				
					
						
							
							
								 
						
							
								ec78cade34 
								
							 
						 
						
							
							
								
								Improve PPC64 calling convention support  
							
							... 
							
							
							
							llvm-svn: 28919 
							
						 
						
							2006-06-26 22:48:35 +00:00  
				
					
						
							
							
								 
						
							
								dc38e6f322 
								
							 
						 
						
							
							
								
								Correct returns of 64-bit values, though they seemed to work before...  
							
							... 
							
							
							
							llvm-svn: 28892 
							
						 
						
							2006-06-21 00:34:03 +00:00  
				
					
						
							
							
								 
						
							
								a5190ae7a9 
								
							 
						 
						
							
							
								
								fix some assumptions that pointers can only be 32-bits.  With this, we can  
							
							... 
							
							
							
							now compile:
static unsigned long X;
void test1() {
  X = 0;
}
into:
_test1:
        lis r2, ha16(_X)
        li r3, 0
        stw r3, lo16(_X)(r2)
        blr
Totally amazing :)
llvm-svn: 28839 
							
						 
						
							2006-06-16 21:01:35 +00:00  
				
					
						
							
							
								 
						
							
								a35f306740 
								
							 
						 
						
							
							
								
								Rename some subtarget features.  A CPU now can *have* 64-bit instructions,  
							
							... 
							
							
							
							can in 32-bit mode we can choose to optionally *use* 64-bit registers.
llvm-svn: 28824 
							
						 
						
							2006-06-16 17:34:12 +00:00  
				
					
						
							
							
								 
						
							
								94bb93f8f7 
								
							 
						 
						
							
							
								
								Type of extract_element index operand should be iPTR.  
							
							... 
							
							
							
							llvm-svn: 28797 
							
						 
						
							2006-06-15 08:18:06 +00:00  
				
					
						
							
							
								 
						
							
								006b2c6ab9 
								
							 
						 
						
							
							
								
								Fix a problem exposed by the local allocator.  CALL instructions are not marked  
							
							... 
							
							
							
							as using incoming argument registers, so the local allocator would clobber them
between their set and use.  To fix this, we give the call instructions a variable
number of uses in the CALL MachineInstr itself, so live variables understands
the live ranges of these register arguments.
llvm-svn: 28744 
							
						 
						
							2006-06-10 01:14:28 +00:00  
				
					
						
							
							
								 
						
							
								b9342afa56 
								
							 
						 
						
							
							
								
								Always reserve space for 8 spilled GPRs.  GCC apparently assumes that this  
							
							... 
							
							
							
							space will be available, even if the callee isn't varargs.
llvm-svn: 28571 
							
						 
						
							2006-05-30 21:21:04 +00:00  
				
					
						
							
							
								 
						
							
								a3add0fea8 
								
							 
						 
						
							
							
								
								Change RET node to include signness information of the return values. i.e.  
							
							... 
							
							
							
							RET chain, value1, sign1, value2, sign2, ...
llvm-svn: 28510 
							
						 
						
							2006-05-26 23:10:12 +00:00  
				
					
						
							
							
								 
						
							
								c2cd473d9b 
								
							 
						 
						
							
							
								
								CALL node change (arg / sign pairs instead of just arguments).  
							
							... 
							
							
							
							llvm-svn: 28462 
							
						 
						
							2006-05-25 00:57:32 +00:00  
				
					
						
							
							
								 
						
							
								aa2372562e 
								
							 
						 
						
							
							
								
								Patches to make the LLVM sources more -pedantic clean.  Patch provided  
							
							... 
							
							
							
							by Anton Korobeynikov!  This is a step towards closing PR786.
llvm-svn: 28447 
							
						 
						
							2006-05-24 17:04:05 +00:00  
				
					
						
							
							
								 
						
							
								33165c246c 
								
							 
						 
						
							
							
								
								Fix CodeGen/Generic/vector.ll:test_div with altivec.  
							
							... 
							
							
							
							llvm-svn: 28445 
							
						 
						
							2006-05-24 00:15:25 +00:00  
				
					
						
							
							
								 
						
							
								b56d22c2f6 
								
							 
						 
						
							
							
								
								Handle SETO* like we handle SET*, restoring behavior after Evan's setcc  
							
							... 
							
							
							
							change.  This fixes PowerPC/fnegsel.ll.
llvm-svn: 28443 
							
						 
						
							2006-05-24 00:06:44 +00:00  
				
					
						
							
							
								 
						
							
								eb755fc1b3 
								
							 
						 
						
							
							
								
								Make PPC call lowering more aggressive, making the isel matching code simple  
							
							... 
							
							
							
							enough to be autogenerated.
llvm-svn: 28354 
							
						 
						
							2006-05-17 19:00:46 +00:00  
				
					
						
							
							
								 
						
							
								b1e9e37c58 
								
							 
						 
						
							
							
								
								Switch PPC over to a call-selection model where the lowering code creates  
							
							... 
							
							
							
							the copyto/fromregs instead of making the PPCISD::CALL selection code create
them.  This vastly simplifies the selection code, and moves the ABI handling
parts into one place.
llvm-svn: 28346 
							
						 
						
							2006-05-17 06:01:33 +00:00  
				
					
						
							
							
								 
						
							
								b7552a88d6 
								
							 
						 
						
							
							
								
								3 changes, 2 of which are cleanup one of which changes codegen:  
							
							... 
							
							
							
							1. Rearrange code a bit so that the special case doesn't require indenting lots
   of code.
2. Add comments describing PPC calling convention.
3. Only round up to 56-bytes of stack space for an outgoing call if the callee
   is varargs.  This saves a bit of stack space.
llvm-svn: 28342 
							
						 
						
							2006-05-17 00:15:40 +00:00  
				
					
						
							
							
								 
						
							
								f058f5aef1 
								
							 
						 
						
							
							
								
								implement passing/returning vector regs to calls, at least non-varargs calls.  
							
							... 
							
							
							
							llvm-svn: 28341 
							
						 
						
							2006-05-16 23:54:25 +00:00  
				
					
						
							
							
								 
						
							
								aa40ec1b32 
								
							 
						 
						
							
							
								
								Instead of implementing LowerCallTo directly, let the default impl produce an  
							
							... 
							
							
							
							ISD::CALL node, then custom lower that.  This means that we only have to handle
LEGAL call operands/results, not every possible type.  This allows us to
simplify the call code, shrinking it by about 1/3.
llvm-svn: 28339 
							
						 
						
							2006-05-16 22:56:08 +00:00  
				
					
						
							
							
								 
						
							
								26e2fcd8b1 
								
							 
						 
						
							
							
								
								Simplify the argument counting logic by only incrementing the index.  
							
							... 
							
							
							
							llvm-svn: 28335 
							
						 
						
							2006-05-16 18:58:15 +00:00  
				
					
						
							
							
								 
						
							
								76c47b50e7 
								
							 
						 
						
							
							
								
								Simplify the dead argument handling code.  
							
							... 
							
							
							
							llvm-svn: 28334 
							
						 
						
							2006-05-16 18:54:32 +00:00  
				
					
						
							
							
								 
						
							
								318f0d2122 
								
							 
						 
						
							
							
								
								Vector args passed in registers don't reserve stack space.  
							
							... 
							
							
							
							llvm-svn: 28333 
							
						 
						
							2006-05-16 18:51:52 +00:00  
				
					
						
							
							
								 
						
							
								4302e8fb67 
								
							 
						 
						
							
							
								
								Switch the PPC backend over to using FORMAL_ARGUMENTS for formal argument  
							
							... 
							
							
							
							handling.  This makes the lower argument code significantly simpler (we
only need to handle legal argument types).
Incidentally, this also implements support for vector argument registers,
so long as they are not on the stack.
llvm-svn: 28331 
							
						 
						
							2006-05-16 18:18:50 +00:00  
				
					
						
							
							
								 
						
							
								d2ca9abf57 
								
							 
						 
						
							
							
								
								Fit in 80 cols  
							
							... 
							
							
							
							llvm-svn: 28311 
							
						 
						
							2006-05-16 04:20:24 +00:00  
				
					
						
							
							
								 
						
							
								ae48a894b1 
								
							 
						 
						
							
							
								
								Remove dead var, fix bad override.  
							
							... 
							
							
							
							llvm-svn: 28264 
							
						 
						
							2006-05-12 21:09:57 +00:00  
				
					
						
							
							
								 
						
							
								84b49d51be 
								
							 
						 
						
							
							
								
								Fix CodeGen/Generic/2006-04-28-Sign-extend-bool.ll  
							
							... 
							
							
							
							llvm-svn: 28017 
							
						 
						
							2006-04-28 21:56:10 +00:00