ac96b764ea 
								
							 
						 
						
							
							
								
								Cleanup whitespace.  
							
							... 
							
							
							
							llvm-svn: 158443 
							
						 
						
							2012-06-14 06:08:19 +00:00  
				
					
						
							
							
								 
						
							
								c6916f88a8 
								
							 
						 
						
							
							
								
								[arm-fast-isel] Add support for -arm-long-calls.  
							
							... 
							
							
							
							Patch by Jush Lu <jush.msn@gmail.com>.
llvm-svn: 158368 
							
						 
						
							2012-06-12 19:25:13 +00:00  
				
					
						
							
							
								 
						
							
								4b79647a6e 
								
							 
						 
						
							
							
								
								Re-enable the CMN instruction.  
							
							... 
							
							
							
							We turned off the CMN instruction because it had semantics which we weren't
getting correct. If we are comparing with an immediate, then it's okay to use
the CMN instruction.
<rdar://problem/7569620>
llvm-svn: 158302 
							
						 
						
							2012-06-11 08:07:26 +00:00  
				
					
						
							
							
								 
						
							
								f319324082 
								
							 
						 
						
							
							
								
								[arm-fast-isel] Fix handling of the frameaddress intrinsic.  If depth is 0  
							
							... 
							
							
							
							then DestReg is undefined.
llvm-svn: 157840 
							
						 
						
							2012-06-01 21:12:31 +00:00  
				
					
						
							
							
								 
						
							
								820d248c4d 
								
							 
						 
						
							
							
								
								[arm-fast-isel] Add support for the llvm.frameaddress() intrinsic.  
							
							... 
							
							
							
							Patch by Jush Lu <jush.msn@gmail.com>.
llvm-svn: 157696 
							
						 
						
							2012-05-30 17:23:22 +00:00  
				
					
						
							
							
								 
						
							
								223faf719c 
								
							 
						 
						
							
							
								
								[arm-fast-isel] Add support for non-global callee.  
							
							... 
							
							
							
							Patch by Jush Lu <jush.msn@gmail.com>.
llvm-svn: 157336 
							
						 
						
							2012-05-23 18:38:57 +00:00  
				
					
						
							
							
								 
						
							
								aa9cb9df59 
								
							 
						 
						
							
							
								
								[fast-isel] Add support for selecting @llvm.trap().  
							
							... 
							
							
							
							llvm-svn: 156646 
							
						 
						
							2012-05-11 21:33:49 +00:00  
				
					
						
							
							
								 
						
							
								3268692aa8 
								
							 
						 
						
							
							
								
								[fast-isel] Remove -disable-arm-fast-isel option. -fast-isel=0 suffices.  Minor cleanup.  
							
							... 
							
							
							
							llvm-svn: 156632 
							
						 
						
							2012-05-11 19:40:25 +00:00  
				
					
						
							
							
								 
						
							
								90f9afe659 
								
							 
						 
						
							
							
								
								[fast-isel] Cleaner fix for when we're unable to handle a non-double multi-reg  
							
							... 
							
							
							
							retval.  Hoists check before emitting the call to avoid unnecessary work.
rdar://11430407
PR12796
llvm-svn: 156628 
							
						 
						
							2012-05-11 18:51:55 +00:00  
				
					
						
							
							
								 
						
							
								519b12f927 
								
							 
						 
						
							
							
								
								[fast-isel] Rather then assert (or segfault in a non-asserts build), fall back  
							
							... 
							
							
							
							to selection DAG isel if we're unable to handle a non-double multi-reg retval.
rdar://11430407
PR12796
llvm-svn: 156622 
							
						 
						
							2012-05-11 17:41:06 +00:00  
				
					
						
							
							
								 
						
							
								466d3d8faa 
								
							 
						 
						
							
							
								
								The return type is an unsigned, not a bool.  
							
							... 
							
							
							
							llvm-svn: 156621 
							
						 
						
							2012-05-11 16:41:38 +00:00  
				
					
						
							
							
								 
						
							
								c7242e054d 
								
							 
						 
						
							
							
								
								Convert more uses of XXXRegisterClass to &XXXRegClass. No functional change since they are equivalent.  
							
							... 
							
							
							
							llvm-svn: 155188 
							
						 
						
							2012-04-20 07:30:17 +00:00  
				
					
						
							
							
								 
						
							
								0c509fa6bf 
								
							 
						 
						
							
							
								
								Tidy up. 80 columns.  
							
							... 
							
							
							
							llvm-svn: 154226 
							
						 
						
							2012-04-06 23:43:50 +00:00  
				
					
						
							
							
								 
						
							
								6a2e99a46a 
								
							 
						 
						
							
							
								
								Deduplicate ARM call-related instructions.  
							
							... 
							
							
							
							We had special instructions for iOS because r9 is call-clobbered, but
that is represented dynamically by the register mask operands now, so
there is no need for the pseudo-instructions.
llvm-svn: 154144 
							
						 
						
							2012-04-06 00:04:58 +00:00  
				
					
						
							
							
								 
						
							
								f6e7e12f75 
								
							 
						 
						
							
							
								
								Remove unnecessary llvm:: qualifications  
							
							... 
							
							
							
							llvm-svn: 153500 
							
						 
						
							2012-03-27 07:21:54 +00:00  
				
					
						
							
							
								 
						
							
								5fa0caafc0 
								
							 
						 
						
							
							
								
								Prune includes and replace uses of ARMRegisterInfo.h with ARMBaeRegisterInfo.h  
							
							... 
							
							
							
							llvm-svn: 153422 
							
						 
						
							2012-03-26 00:45:15 +00:00  
				
					
						
							
							
								 
						
							
								23f8c4a50c 
								
							 
						 
						
							
							
								
								Check if we can handle the arguments of a call (and therefore the call) in  
							
							... 
							
							
							
							fast-isel before emitting code. If the program bails after code was emitted,
then it could lead to the stack being adjusted more than once (two
CALLSEQ_BEGINs emitted) but being adjuste back only once after the call. This
leads to general badness and gnashing of teeth.
<rdar://problem/11050630>
llvm-svn: 152959 
							
						 
						
							2012-03-16 23:11:07 +00:00  
				
					
						
							
							
								 
						
							
								26d05887d9 
								
							 
						 
						
							
							
								
								[fast-isel] Address Eli's comments for r152847.  Specifically, add a test case  
							
							... 
							
							
							
							and still allow immediate encoding, just not with cmn.
rdar://11038907
llvm-svn: 152869 
							
						 
						
							2012-03-15 22:54:20 +00:00  
				
					
						
							
							
								 
						
							
								01cecbffd6 
								
							 
						 
						
							
							
								
								[fast-isel] Don't try to encode LONG_MIN using cmn instructions.  
							
							... 
							
							
							
							rdar://11038907
llvm-svn: 152847 
							
						 
						
							2012-03-15 21:40:23 +00:00  
				
					
						
							
							
								 
						
							
								377f1f2d39 
								
							 
						 
						
							
							
								
								[fast-isel] ARMEmitCmp generates FMSTAT, which transfers the floating-point  
							
							... 
							
							
							
							condition flags to CPSR.  This allows us to simplify SelectCmp.
Patch by Zonr Chang <zonr.xchg@gmail.com>.
llvm-svn: 152243 
							
						 
						
							2012-03-07 20:59:26 +00:00  
				
					
						
							
							
								 
						
							
								718cfbe05a 
								
							 
						 
						
							
							
								
								Split fpscr into two registers: FPSCR and FPSCR_NZCV.  
							
							... 
							
							
							
							The fpscr register contains both flags (set by FP operations/comparisons) and
control bits. The control bits (FPSCR) should be reserved, since they're always
available and needn't be defined before use. The flag bits (FPSCR_NZCV) should
like to be unreserved so they can be hoisted by MachineCSE. This fixes PR12165.
llvm-svn: 152076 
							
						 
						
							2012-03-06 00:19:55 +00:00  
				
					
						
							
							
								 
						
							
								6990e5f08c 
								
							 
						 
						
							
							
								
								ARM use the right opcode for FP<->Integer move in fast-isel.  
							
							... 
							
							
							
							rdar://10965031
llvm-svn: 151850 
							
						 
						
							2012-03-01 22:47:09 +00:00  
				
					
						
							
							
								 
						
							
								fa7a53746c 
								
							 
						 
						
							
							
								
								Switch ARM target to register masks.  
							
							... 
							
							
							
							I'll let the buildbots determine the compile time improvements from this
change, but 464.h264ref has 5% faster codegen at -O2.
This patch does cause some assembly changes.  Branch folding can make
different decisions about calls with dead return values.
CriticalAntiDepBreaker may choose different registers because its
liveness tracking is affected.  MachineCopyPropagation may sometimes
leave a dead copy behind.
llvm-svn: 151331 
							
						 
						
							2012-02-24 01:19:29 +00:00  
				
					
						
							
							
								 
						
							
								760b134ffa 
								
							 
						 
						
							
							
								
								Make all pointers to TargetRegisterClass const since they are all pointers to static data that should not be modified.  
							
							... 
							
							
							
							llvm-svn: 151134 
							
						 
						
							2012-02-22 05:59:10 +00:00  
				
					
						
							
							
								 
						
							
								fcd29ae390 
								
							 
						 
						
							
							
								
								[fast-isel] Add support for returning non-legal types with no sign- or zero-  
							
							... 
							
							
							
							entend flag.
llvm-svn: 150774 
							
						 
						
							2012-02-17 01:21:28 +00:00  
				
					
						
							
							
								 
						
							
								a0d3c75015 
								
							 
						 
						
							
							
								
								Remove unnecessary assignment to temporary, ResultReg.  
							
							... 
							
							
							
							llvm-svn: 150737 
							
						 
						
							2012-02-16 22:45:33 +00:00  
				
					
						
							
							
								 
						
							
								0bc5132457 
								
							 
						 
						
							
							
								
								Add braces to if clause to make symmetric with associate else clause.  
							
							... 
							
							
							
							llvm-svn: 150591 
							
						 
						
							2012-02-15 17:36:21 +00:00  
				
					
						
							
							
								 
						
							
								dccc4794e6 
								
							 
						 
						
							
							
								
								Use a temporary variable, rather then a series of redundant calls.  
							
							... 
							
							
							
							llvm-svn: 150536 
							
						 
						
							2012-02-15 00:23:55 +00:00  
				
					
						
							
							
								 
						
							
								5b9c3974d2 
								
							 
						 
						
							
							
								
								Remove unnecessary assignment to temporary, ResultReg.  
							
							... 
							
							
							
							llvm-svn: 150520 
							
						 
						
							2012-02-14 22:29:48 +00:00  
				
					
						
							
							
								 
						
							
								0ee8c513f7 
								
							 
						 
						
							
							
								
								[fast-isel] Add support for SUBs with non-legal types.  
							
							... 
							
							
							
							llvm-svn: 150047 
							
						 
						
							2012-02-08 02:45:44 +00:00  
				
					
						
							
							
								 
						
							
								bd471255a9 
								
							 
						 
						
							
							
								
								[fast-isel] Add support for ORs with non-legal types.  
							
							... 
							
							
							
							llvm-svn: 150045 
							
						 
						
							2012-02-08 02:29:21 +00:00  
				
					
						
							
							
								 
						
							
								ded4c99f2e 
								
							 
						 
						
							
							
								
								[fast-isel] Add support for indirect branches.  
							
							... 
							
							
							
							llvm-svn: 150014 
							
						 
						
							2012-02-07 23:56:08 +00:00  
				
					
						
							
							
								 
						
							
								e55c556a24 
								
							 
						 
						
							
							
								
								Convert assert(0) to llvm_unreachable  
							
							... 
							
							
							
							llvm-svn: 149961 
							
						 
						
							2012-02-07 02:50:20 +00:00  
				
					
						
							
							
								 
						
							
								685b20c114 
								
							 
						 
						
							
							
								
								[fast-isel] Add support for ADDs with non-legal types.  
							
							... 
							
							
							
							llvm-svn: 149934 
							
						 
						
							2012-02-06 23:50:07 +00:00  
				
					
						
							
							
								 
						
							
								ae22c60f90 
								
							 
						 
						
							
							
								
								Persuade GCC that there is nothing worth warning about here (there isn't).  
							
							... 
							
							
							
							llvm-svn: 149834 
							
						 
						
							2012-02-05 14:20:11 +00:00  
				
					
						
							
							
								 
						
							
								b84a4b4c64 
								
							 
						 
						
							
							
								
								[fast-isel] Add support for URem.  
							
							... 
							
							
							
							llvm-svn: 149716 
							
						 
						
							2012-02-03 21:23:45 +00:00  
				
					
						
							
							
								 
						
							
								e023d5d7f3 
								
							 
						 
						
							
							
								
								[fast-isel] Rename isZExt to isSigned.  No functional change intended.  
							
							... 
							
							
							
							llvm-svn: 149714 
							
						 
						
							2012-02-03 21:14:11 +00:00  
				
					
						
							
							
								 
						
							
								aaa55a88b6 
								
							 
						 
						
							
							
								
								[fast-isel] Add support for UDIV.  
							
							... 
							
							
							
							llvm-svn: 149712 
							
						 
						
							2012-02-03 21:07:27 +00:00  
				
					
						
							
							
								 
						
							
								41f0e78b6c 
								
							 
						 
						
							
							
								
								[fast-isel] Add support for FPToUI.  Also add test cases for FPToSI.  
							
							... 
							
							
							
							llvm-svn: 149706 
							
						 
						
							2012-02-03 20:27:51 +00:00  
				
					
						
							
							
								 
						
							
								a8a8ac5d47 
								
							 
						 
						
							
							
								
								[fast-isel] Add support for selecting UIToFP.  
							
							... 
							
							
							
							llvm-svn: 149704 
							
						 
						
							2012-02-03 19:42:52 +00:00  
				
					
						
							
							
								 
						
							
								46a9f016c5 
								
							 
						 
						
							
							
								
								More dead code removal (using -Wunreachable-code)  
							
							... 
							
							
							
							llvm-svn: 148578 
							
						 
						
							2012-01-20 21:51:11 +00:00  
				
					
						
							
							
								 
						
							
								d284c1d80d 
								
							 
						 
						
							
							
								
								Fix assert.  
							
							... 
							
							
							
							llvm-svn: 147966 
							
						 
						
							2012-01-11 20:55:27 +00:00  
				
					
						
							
							
								 
						
							
								083dbdca7f 
								
							 
						 
						
							
							
								
								Match SelectionDAG logic for enabling movt.  
							
							... 
							
							
							
							Darwin doesn't do static, and ELF targets only support static.
llvm-svn: 147740 
							
						 
						
							2012-01-07 20:49:15 +00:00  
				
					
						
							
							
								 
						
							
								8cdce7e690 
								
							 
						 
						
							
							
								
								Use getRegForValue() to materialize the address of ARM globals.  
							
							... 
							
							
							
							This enables basic local CSE, giving us 20% smaller code for
consumer-typeset in -O0 builds.
<rdar://problem/10658692>
llvm-svn: 147720 
							
						 
						
							2012-01-07 04:07:22 +00:00  
				
					
						
							
							
								 
						
							
								68f034ee1a 
								
							 
						 
						
							
							
								
								Use movw+movt in ARMFastISel::ARMMaterializeGV.  
							
							... 
							
							
							
							This eliminates a lot of constant pool entries for -O0 builds of code
with many global variable accesses.
This speeds up -O0 codegen of consumer-typeset by 2x because the
constant island pass no longer has to look at thousands of constant pool
entries.
<rdar://problem/10629774>
llvm-svn: 147712 
							
						 
						
							2012-01-07 01:47:05 +00:00  
				
					
						
							
							
								 
						
							
								68132d8093 
								
							 
						 
						
							
							
								
								ARM target code clean up. Check for iOS, not Darwin where it makes sense.  
							
							... 
							
							
							
							llvm-svn: 146981 
							
						 
						
							2011-12-20 18:26:50 +00:00  
				
					
						
							
							
								 
						
							
								ded6160473 
								
							 
						 
						
							
							
								
								VFP2 is required for FP loads.  Noticed by inspection.  
							
							... 
							
							
							
							llvm-svn: 146569 
							
						 
						
							2011-12-14 17:55:03 +00:00  
				
					
						
							
							
								 
						
							
								fce28914ea 
								
							 
						 
						
							
							
								
								Tidy up.  
							
							... 
							
							
							
							llvm-svn: 146568 
							
						 
						
							2011-12-14 17:32:02 +00:00  
				
					
						
							
							
								 
						
							
								a26979be29 
								
							 
						 
						
							
							
								
								Fix 80-column violation and extraneous brackets.  
							
							... 
							
							
							
							llvm-svn: 146566 
							
						 
						
							2011-12-14 17:26:05 +00:00  
				
					
						
							
							
								 
						
							
								7fae11b231 
								
							 
						 
						
							
							
								
								- Add MachineInstrBundle.h and MachineInstrBundle.cpp. This includes a function  
							
							... 
							
							
							
							to finalize MI bundles (i.e. add BUNDLE instruction and computing register def
  and use lists of the BUNDLE instruction) and a pass to unpack bundles.
- Teach more of MachineBasic and MachineInstr methods to be bundle aware.
- Switch Thumb2 IT block to MI bundles and delete the hazard recognizer hack to
  prevent IT blocks from being broken apart.
llvm-svn: 146542 
							
						 
						
							2011-12-14 02:11:42 +00:00