9054d25808 
								
							 
						 
						
							
							
								
								Fix a typo.  Somehow I thought this had passed before, but I guess not.  
							
							... 
							
							
							
							llvm-svn: 79937 
							
						 
						
							2009-08-24 21:17:17 +00:00  
				
					
						
							
							
								 
						
							
								5fe1d38607 
								
							 
						 
						
							
							
								
								Convert slow test to use FileCheck.  
							
							... 
							
							
							
							llvm-svn: 79935 
							
						 
						
							2009-08-24 20:33:47 +00:00  
				
					
						
							
							
								 
						
							
								a41fa35992 
								
							 
						 
						
							
							
								
								Make tail merging handle blocks with repeated predecessors correctly, and  
							
							... 
							
							
							
							remove RemoveDuplicateSuccessor, as it is no longer necessary, and because
it breaks assumptions made in
MachineBasicBlock::isOnlyReachableByFallthrough.
Convert test/CodeGen/X86/omit-label.ll to FileCheck and add a testcase
for PR4732.
test/CodeGen/Thumb2/thumb2-ifcvt2.ll sees a diff with this commit due to
it being bugpoint-reduced to the point where it doesn't matter what the
condition for the branch is.
Add some more interesting code to
test/CodeGen/X86/2009-08-06-branchfolder-crash.ll, which is the testcase
that originally motivated the RemoveDuplicateSuccessor code, to help
verify that the original problem isn't being re-broken.
llvm-svn: 79338 
							
						 
						
							2009-08-18 15:18:18 +00:00  
				
					
						
							
							
								 
						
							
								dd406177de 
								
							 
						 
						
							
							
								
								Fix revsh pattern.  
							
							... 
							
							
							
							llvm-svn: 79318 
							
						 
						
							2009-08-18 05:43:23 +00:00  
				
					
						
							
							
								 
						
							
								d7e1a79eea 
								
							 
						 
						
							
							
								
								Fix tests.  
							
							... 
							
							
							
							llvm-svn: 79086 
							
						 
						
							2009-08-15 08:23:11 +00:00  
				
					
						
							
							
								 
						
							
								6ddd7bcdd1 
								
							 
						 
						
							
							
								
								Turn on if-conversion for thumb2.  
							
							... 
							
							
							
							llvm-svn: 79084 
							
						 
						
							2009-08-15 07:59:10 +00:00  
				
					
						
							
							
								 
						
							
								7dae88d2c9 
								
							 
						 
						
							
							
								
								Leaf functions which do not save CSRs can be frameless even with -disable-fp-elim.  
							
							... 
							
							
							
							llvm-svn: 79039 
							
						 
						
							2009-08-14 20:48:13 +00:00  
				
					
						
							
							
								 
						
							
								e41903b10d 
								
							 
						 
						
							
							
								
								Also shrink immediate branches; also more assembler workarounds.  
							
							... 
							
							
							
							llvm-svn: 79014 
							
						 
						
							2009-08-14 18:31:44 +00:00  
				
					
						
							
							
								 
						
							
								db73d68cbe 
								
							 
						 
						
							
							
								
								Shrink ADR and LDR from constantpool late during constantpool island pass.  
							
							... 
							
							
							
							llvm-svn: 78970 
							
						 
						
							2009-08-14 00:32:16 +00:00  
				
					
						
							
							
								 
						
							
								608d92c943 
								
							 
						 
						
							
							
								
								Remove an Darwin assembler workaround.  
							
							... 
							
							
							
							llvm-svn: 78777 
							
						 
						
							2009-08-12 01:56:42 +00:00  
				
					
						
							
							
								 
						
							
								1e6c2a1c17 
								
							 
						 
						
							
							
								
								Shrink ADDS, ADC, RSB, and SUBS.  
							
							... 
							
							
							
							llvm-svn: 78776 
							
						 
						
							2009-08-12 01:49:45 +00:00  
				
					
						
							
							
								 
						
							
								f6a9d06241 
								
							 
						 
						
							
							
								
								Shrinkify Thumb2 r = add sp, imm.  
							
							... 
							
							
							
							llvm-svn: 78745 
							
						 
						
							2009-08-11 23:00:31 +00:00  
				
					
						
							
							
								 
						
							
								cc9ca3500d 
								
							 
						 
						
							
							
								
								Shrinkify Thumb2 load / store multiple instructions.  
							
							... 
							
							
							
							llvm-svn: 78717 
							
						 
						
							2009-08-11 21:11:32 +00:00  
				
					
						
							
							
								 
						
							
								806845daec 
								
							 
						 
						
							
							
								
								Fix the previous accidental commit. Now shrinking common Thumb2 load / store instructions.  
							
							... 
							
							
							
							llvm-svn: 78659 
							
						 
						
							2009-08-11 09:37:40 +00:00  
				
					
						
							
							
								 
						
							
								475f8a4fa2 
								
							 
						 
						
							
							
								
								Enable Thumb2 instruction shrinking (32-bit to 16-bit) pass. Convert a bunch of thumb2 tests to FileCheck.  
							
							... 
							
							
							
							llvm-svn: 78622 
							
						 
						
							2009-08-10 23:56:04 +00:00  
				
					
						
							
							
								 
						
							
								f72c13bdf5 
								
							 
						 
						
							
							
								
								Handle the constantfp created during post-legalization dag combiner phase.  
							
							... 
							
							
							
							llvm-svn: 78594 
							
						 
						
							2009-08-10 20:25:59 +00:00  
				
					
						
							
							
								 
						
							
								ac51533b8a 
								
							 
						 
						
							
							
								
								Simplify RegScavenger::forward a bit more.  
							
							... 
							
							
							
							Verify that early clobber registers and their aliases are not used.
All changes to RegsAvailable are now done as a transaction so the order of
operands makes no difference.
The included test case is from PR4686. It has behaviour that was dependent on the order of operands.
llvm-svn: 78465 
							
						 
						
							2009-08-08 13:18:47 +00:00  
				
					
						
							
							
								 
						
							
								6e130db3b7 
								
							 
						 
						
							
							
								
								Thumb2 32-bit ldm / stm needs .w suffix if submode is ia.  
							
							... 
							
							
							
							llvm-svn: 78410 
							
						 
						
							2009-08-07 21:19:10 +00:00  
				
					
						
							
							
								 
						
							
								4c3b1ca5a0 
								
							 
						 
						
							
							
								
								Fix support to use NEON for single precision fp math.  
							
							... 
							
							
							
							llvm-svn: 78397 
							
						 
						
							2009-08-07 19:30:41 +00:00  
				
					
						
							
							
								 
						
							
								b1aeeed03e 
								
							 
						 
						
							
							
								
								Another coalescer bug. When a dead copy is eliminated, transfer the kill to a def of the exact register rather than a super-register.  
							
							... 
							
							
							
							llvm-svn: 78376 
							
						 
						
							2009-08-07 07:14:14 +00:00  
				
					
						
							
							
								 
						
							
								b972e5633f 
								
							 
						 
						
							
							
								
								It turns out most of the thumb2 instructions are not allowed to touch SP. The semantics of such instructions are unpredictable. We have just been lucky that tests have been passing.  
							
							... 
							
							
							
							This patch takes pain to ensure all the PEI lowering code does the right thing when lowering frame indices, insert code to manipulate stack pointers, etc. It's also custom lowering dynamic stack alloc into pseudo instructions so we can insert the right instructions at scheduling time.
This fixes PR4659 and PR4682.
llvm-svn: 78361 
							
						 
						
							2009-08-07 00:34:42 +00:00  
				
					
						
							
							
								 
						
							
								ea2b82b8fc 
								
							 
						 
						
							
							
								
								Disable stack coloring with register for now. It's not able to set kill markers.  
							
							... 
							
							
							
							llvm-svn: 78179 
							
						 
						
							2009-08-05 07:26:17 +00:00  
				
					
						
							
							
								 
						
							
								a2ce665f60 
								
							 
						 
						
							
							
								
								Another nasty coalescer bug (is there another kind):  
							
							... 
							
							
							
							After coalescing reg1027's def and kill are both at the same point:
 %reg1027,0.000000e+00 = [56,814:0)  0@70-(814)
bb5:
60   %reg1027<def> = t2MOVr %reg1027, 14, %reg0, %reg0
68   %reg1027<def> = t2LDRi12 %reg1027<kill>, 8, 14, %reg0
76   t2CMPzri %reg1038<kill,undef>, 0, 14, %reg0, %CPSR<imp-def>
84   %reg1027<def> = t2MOVr %reg1027, 14, %reg0, %reg0
96   t2Bcc mbb<bb5,0x2030910>, 1, %CPSR<kill>
Do not remove the kill marker on t2LDRi12.
llvm-svn: 78178 
							
						 
						
							2009-08-05 07:05:41 +00:00  
				
					
						
							
							
								 
						
							
								1f7b549c79 
								
							 
						 
						
							
							
								
								One more. Transfer kill of the larger register when lowering an EXTRACT_SUBREG.  
							
							... 
							
							
							
							llvm-svn: 78145 
							
						 
						
							2009-08-05 02:25:11 +00:00  
				
					
						
							
							
								 
						
							
								6376367356 
								
							 
						 
						
							
							
								
								One more place where subreg lowering forgot to transfer undefness.  
							
							... 
							
							
							
							llvm-svn: 78144 
							
						 
						
							2009-08-05 01:57:22 +00:00  
				
					
						
							
							
								 
						
							
								cdb125ce66 
								
							 
						 
						
							
							
								
								If the insert_subreg source is <undef>, insert an implicit_def instead of a copy.  
							
							... 
							
							
							
							llvm-svn: 78141 
							
						 
						
							2009-08-05 01:29:24 +00:00  
				
					
						
							
							
								 
						
							
								7cc6aca1e6 
								
							 
						 
						
							
							
								
								Fix part 1 of pr4682. PICADD is a 16-bit instruction even in thumb2 mode.  
							
							... 
							
							
							
							llvm-svn: 78126 
							
						 
						
							2009-08-04 23:47:55 +00:00  
				
					
						
							
							
								 
						
							
								28c2d9809d 
								
							 
						 
						
							
							
								
								Fix test.  
							
							... 
							
							
							
							llvm-svn: 78113 
							
						 
						
							2009-08-04 22:22:58 +00:00  
				
					
						
							
							
								 
						
							
								783b65b546 
								
							 
						 
						
							
							
								
								Enable load / store multiple pass for Thumb2. It's not using ldrd / strd yet.  
							
							... 
							
							
							
							llvm-svn: 78104 
							
						 
						
							2009-08-04 21:12:13 +00:00  
				
					
						
							
							
								 
						
							
								a3abe2a7ce 
								
							 
						 
						
							
							
								
								In thumb mode, r7 is used as frame register. This fixes pr4681.  
							
							... 
							
							
							
							llvm-svn: 78086 
							
						 
						
							2009-08-04 18:46:17 +00:00  
				
					
						
							
							
								 
						
							
								03eb0e3c33 
								
							 
						 
						
							
							
								
								Emit sub r, #c instead of transforming it to add r, #-c if c fits in 8-bit. This is a bit of pre-mature optimization. 8-bit variant makes it likely it will be narrowed to a 16-bit instruction.  
							
							... 
							
							
							
							llvm-svn: 78030 
							
						 
						
							2009-08-04 01:41:15 +00:00  
				
					
						
							
							
								 
						
							
								093e124256 
								
							 
						 
						
							
							
								
								Fix a coaelescer bug. If a copy val# is extended to eliminate a non-trivially coalesced copy, and the copy kills its source register. Trim the source register's live range to the last use if possible. This fixes up kill marker to make the scavenger happy.  
							
							... 
							
							
							
							llvm-svn: 77967 
							
						 
						
							2009-08-03 08:41:59 +00:00  
				
					
						
							
							
								 
						
							
								8b9deebba3 
								
							 
						 
						
							
							
								
								Use the i12 variant of load / store opcodes if offset is zero. Now we pass all of multisource as well.  
							
							... 
							
							
							
							llvm-svn: 77939 
							
						 
						
							2009-08-03 02:38:06 +00:00  
				
					
						
							
							
								 
						
							
								8e3889f12e 
								
							 
						 
						
							
							
								
								Test both darwin and linux.  
							
							... 
							
							
							
							llvm-svn: 77852 
							
						 
						
							2009-08-02 02:54:34 +00:00  
				
					
						
							
							
								 
						
							
								f165160724 
								
							 
						 
						
							
							
								
								Hack to make this test work on platforms which aren't Macs.  Fixing this  
							
							... 
							
							
							
							myself because I'm getting tired of seeing the red buildbots, which have 
been red since 5:30PM PDT last night.
Proposed supplement to developer policy: committers should make sure to 
be around to watch for buildbot failures after committing.
llvm-svn: 77785 
							
						 
						
							2009-08-01 16:37:18 +00:00  
				
					
						
							
							
								 
						
							
								e64f48ba8b 
								
							 
						 
						
							
							
								
								Workaround a couple of Darwin assembler bugs.  
							
							... 
							
							
							
							llvm-svn: 77781 
							
						 
						
							2009-08-01 06:13:52 +00:00  
				
					
						
							
							
								 
						
							
								e6e8289d72 
								
							 
						 
						
							
							
								
								Split t2MOVCCs since some assemblers do not recognize mov shifted register alias with predicate.  
							
							... 
							
							
							
							llvm-svn: 77764 
							
						 
						
							2009-08-01 01:43:45 +00:00  
				
					
						
							
							
								 
						
							
								6ab54fdb0a 
								
							 
						 
						
							
							
								
								Fix Thumb2 function call isel. Thumb1 and Thumb2 should share the same  
							
							... 
							
							
							
							instructions for calls since BL and BLX are always 32-bit long and BX is always
16-bit long.
Also, we should be using BLX to call external function stubs.
llvm-svn: 77756 
							
						 
						
							2009-08-01 00:16:10 +00:00  
				
					
						
							
							
								 
						
							
								be8422e8e0 
								
							 
						 
						
							
							
								
								Until we have a "ALIGN" pseudo instruction, have asm printer emitted a .align  
							
							... 
							
							
							
							to ensure the instruction that follows a TBB (when the number of table entries
is odd) is 2-byte aligned.
Patch by Sandeep Patel.
llvm-svn: 77705 
							
						 
						
							2009-07-31 18:35:56 +00:00  
				
					
						
							
							
								 
						
							
								5811ab5cf3 
								
							 
						 
						
							
							
								
								When fp is not eliminated, instructions with T2_i12 modes will be changed to T2_i8 ones. Take that into consideration when determining stack size limit for reserving register scavenging slot.  
							
							... 
							
							
							
							llvm-svn: 77642 
							
						 
						
							2009-07-30 23:29:25 +00:00  
				
					
						
							
							
								 
						
							
								0bfc8312c2 
								
							 
						 
						
							
							
								
								Darwin assembler now recognizes "orn", so remove workaround.  
							
							... 
							
							
							
							llvm-svn: 77627 
							
						 
						
							2009-07-30 21:51:41 +00:00  
				
					
						
							
							
								 
						
							
								ce774e2383 
								
							 
						 
						
							
							
								
								Darwin assembler now supports "rrx", so remove workaround.  
							
							... 
							
							
							
							llvm-svn: 77625 
							
						 
						
							2009-07-30 21:38:40 +00:00  
				
					
						
							
							
								 
						
							
								79c079b478 
								
							 
						 
						
							
							
								
								Cleanup and include code selection for some frame index cases.  
							
							... 
							
							
							
							llvm-svn: 77622 
							
						 
						
							2009-07-30 18:56:48 +00:00  
				
					
						
							
							
								 
						
							
								e3493a91cc 
								
							 
						 
						
							
							
								
								tbb / tbh instructions only branch forward, not backwards.  
							
							... 
							
							
							
							llvm-svn: 77522 
							
						 
						
							2009-07-29 23:20:20 +00:00  
				
					
						
							
							
								 
						
							
								c6d70ae063 
								
							 
						 
						
							
							
								
								Optimize Thumb2 jumptable to use tbb / tbh when all the offsets fit in byte / halfword.  
							
							... 
							
							
							
							llvm-svn: 77422 
							
						 
						
							2009-07-29 02:18:14 +00:00  
				
					
						
							
							
								 
						
							
								c8bed03349 
								
							 
						 
						
							
							
								
								In thumb2 mode, add pc is unpredictable. Use add + mov pc instead (that is until more optimization goes in).  
							
							... 
							
							
							
							llvm-svn: 77364 
							
						 
						
							2009-07-28 20:53:24 +00:00  
				
					
						
							
							
								 
						
							
								68bb69d6e3 
								
							 
						 
						
							
							
								
								Remove support for ORN to workaround <rdar://problem/7096522>.  
							
							... 
							
							
							
							llvm-svn: 77363 
							
						 
						
							2009-07-28 20:51:25 +00:00  
				
					
						
							
							
								 
						
							
								865c6298d7 
								
							 
						 
						
							
							
								
								Add workaround for <rdar://problem/7098328>.  
							
							... 
							
							
							
							llvm-svn: 77340 
							
						 
						
							2009-07-28 18:15:38 +00:00  
				
					
						
							
							
								 
						
							
								e82862e24e 
								
							 
						 
						
							
							
								
								Add Thumb-2 patterns for ARMsrl_flag and ARMsra_flag.  
							
							... 
							
							
							
							llvm-svn: 77329 
							
						 
						
							2009-07-28 17:06:49 +00:00  
				
					
						
							
							
								 
						
							
								780748d565 
								
							 
						 
						
							
							
								
								- More refactoring. This gets rid of all of the getOpcode calls.  
							
							... 
							
							
							
							- This change also makes it possible to switch between ARM / Thumb on a
  per-function basis.
- Fixed thumb2 routine which expand reg + arbitrary immediate. It was using
  using ARM so_imm logic.
- Use movw and movt to do reg + imm when profitable.
- Other code clean ups and minor optimizations.
llvm-svn: 77300 
							
						 
						
							2009-07-28 05:48:47 +00:00  
				
					
						
							
							
								 
						
							
								57b51d9f82 
								
							 
						 
						
							
							
								
								ORN does not require (and can not have) the ".w" suffix. "Orthogonality" is a dirty word at ARM.  
							
							... 
							
							
							
							llvm-svn: 77275 
							
						 
						
							2009-07-27 23:34:12 +00:00  
				
					
						
							
							
								 
						
							
								782f242fd7 
								
							 
						 
						
							
							
								
								Add ".w" suffix for wide thumb-2 instructions.  
							
							... 
							
							
							
							llvm-svn: 77199 
							
						 
						
							2009-07-27 16:31:55 +00:00  
				
					
						
							
							
								 
						
							
								f3a1fce8ae 
								
							 
						 
						
							
							
								
								Change Thumb2 jumptable codegen to one that uses two level jumps:  
							
							... 
							
							
							
							Before:
      adr r12, #LJTI3_0_0
      ldr pc, [r12, +r0, lsl #2 ]
LJTI3_0_0:
      .long    LBB3_24
      .long    LBB3_30
      .long    LBB3_31
      .long    LBB3_32
After:
      adr r12, #LJTI3_0_0
      add pc, r12, +r0, lsl #2 
LJTI3_0_0:
      b.w    LBB3_24
      b.w    LBB3_30
      b.w    LBB3_31
      b.w    LBB3_32
This has several advantages.
1. This will make it easier to optimize this to a TBB / TBH instruction +
   (smaller) table.
2. This eliminate the need for ugly asm printer hack to force the address
   into thumb addresses (bit 0 is one).
3. Same codegen for pic and non-pic.
4. This eliminate the need to align the table so constantpool island pass
   won't have to over-estimate the size.
Based on my calculation, the later is probably slightly faster as well since
ldr pc with shifter address is very slow. That is, it should be a win as long
as the HW implementation can do a reasonable job of branch predict the second
branch.
llvm-svn: 77024 
							
						 
						
							2009-07-25 00:33:29 +00:00  
				
					
						
							
							
								 
						
							
								8c8e88bd39 
								
							 
						 
						
							
							
								
								Remove a duplicated test.  
							
							... 
							
							
							
							llvm-svn: 77020 
							
						 
						
							2009-07-25 00:24:40 +00:00  
				
					
						
							
							
								 
						
							
								aee0e1f48c 
								
							 
						 
						
							
							
								
								Fix these tests.  
							
							... 
							
							
							
							llvm-svn: 77006 
							
						 
						
							2009-07-24 22:42:22 +00:00  
				
					
						
							
							
								 
						
							
								3990850a7d 
								
							 
						 
						
							
							
								
								Convert a test to FileCheck.  
							
							... 
							
							
							
							llvm-svn: 76954 
							
						 
						
							2009-07-24 06:01:46 +00:00  
				
					
						
							
							
								 
						
							
								dc99f07113 
								
							 
						 
						
							
							
								
								Thumb2 does not allow the use of "pc" register as part of the load / store address.  
							
							... 
							
							
							
							llvm-svn: 76909 
							
						 
						
							2009-07-23 23:09:51 +00:00  
				
					
						
							
							
								 
						
							
								d2919a1773 
								
							 
						 
						
							
							
								
								Fix up ARM constant island pass for Thumb2.  
							
							... 
							
							
							
							Also fixed up code to fully use the SoImm field for ADR on ARM mode.
llvm-svn: 76890 
							
						 
						
							2009-07-23 18:27:47 +00:00  
				
					
						
							
							
								 
						
							
								38e88cb53f 
								
							 
						 
						
							
							
								
								Do not select tSXTB / tSXTH in thumb2 mode.  
							
							... 
							
							
							
							llvm-svn: 76600 
							
						 
						
							2009-07-21 18:15:26 +00:00  
				
					
						
							
							
								 
						
							
								0d8b0cf3b8 
								
							 
						 
						
							
							
								
								Fix ARM isle code that optimize multiply by constants which are power-of-2 +/- 1.  
							
							... 
							
							
							
							llvm-svn: 76520 
							
						 
						
							2009-07-21 00:31:12 +00:00  
				
					
						
							
							
								 
						
							
								c5df7e2dc1 
								
							 
						 
						
							
							
								
								Emit cross regclass register moves for thumb2.  
							
							... 
							
							
							
							Minor code duplication cleanup.
llvm-svn: 76124 
							
						 
						
							2009-07-16 23:26:06 +00:00  
				
					
						
							
							
								 
						
							
								72b80ac9b1 
								
							 
						 
						
							
							
								
								Fix detection of valid BFC immediates.  
							
							... 
							
							
							
							llvm-svn: 75576 
							
						 
						
							2009-07-14 00:57:56 +00:00  
				
					
						
							
							
								 
						
							
								017288a4fc 
								
							 
						 
						
							
							
								
								Don't put IT instruction before conditional branches.  
							
							... 
							
							
							
							llvm-svn: 75361 
							
						 
						
							2009-07-11 07:26:20 +00:00  
				
					
						
							
							
								 
						
							
								e3c4765bac 
								
							 
						 
						
							
							
								
								convert test to use FileCheck, which is much more precise and faster than  
							
							... 
							
							
							
							the previous RUN lines.  Hopefully this will be an inspiration for future
tests :)
llvm-svn: 75261 
							
						 
						
							2009-07-10 18:34:47 +00:00  
				
					
						
							
							
								 
						
							
								0f9cce7951 
								
							 
						 
						
							
							
								
								Add a thumb2 pass to insert IT blocks.  
							
							... 
							
							
							
							llvm-svn: 75218 
							
						 
						
							2009-07-10 01:54:42 +00:00  
				
					
						
							
							
								 
						
							
								22c2fba978 
								
							 
						 
						
							
							
								
								Use common code for both ARM and Thumb-2 instruction and register info.  
							
							... 
							
							
							
							llvm-svn: 75067 
							
						 
						
							2009-07-08 23:10:31 +00:00  
				
					
						
							
							
								 
						
							
								121563c615 
								
							 
						 
						
							
							
								
								Add rev16 test... xfail for now  
							
							... 
							
							
							
							llvm-svn: 75012 
							
						 
						
							2009-07-08 16:15:06 +00:00  
				
					
						
							
							
								 
						
							
								af7451b674 
								
							 
						 
						
							
							
								
								Checkpoint Thumb2 Instr info work. Generalized base code so that it can be shared between ARM and Thumb2. Not yet activated because register information must be generalized first.  
							
							... 
							
							
							
							llvm-svn: 75010 
							
						 
						
							2009-07-08 16:09:28 +00:00  
				
					
						
							
							
								 
						
							
								d0611f9a37 
								
							 
						 
						
							
							
								
								Add Thumb2 movcc instructions.  
							
							... 
							
							
							
							llvm-svn: 74946 
							
						 
						
							2009-07-07 20:39:03 +00:00  
				
					
						
							
							
								 
						
							
								d0f6324cdc 
								
							 
						 
						
							
							
								
								Add Thumb2 pkhbt / pkhtb.  
							
							... 
							
							
							
							llvm-svn: 74895 
							
						 
						
							2009-07-07 05:35:52 +00:00  
				
					
						
							
							
								 
						
							
								b24e51e2d9 
								
							 
						 
						
							
							
								
								Add some more Thumb2 multiplication instructions.  
							
							... 
							
							
							
							llvm-svn: 74889 
							
						 
						
							2009-07-07 01:17:28 +00:00  
				
					
						
							
							
								 
						
							
								0e8bde5910 
								
							 
						 
						
							
							
								
								Add thumb2 sign / zero extend with rotate instructions.  
							
							... 
							
							
							
							llvm-svn: 74755 
							
						 
						
							2009-07-03 01:43:10 +00:00  
				
					
						
							
							
								 
						
							
								53cdf022b6 
								
							 
						 
						
							
							
								
								Added indexed stores.  
							
							... 
							
							
							
							llvm-svn: 74740 
							
						 
						
							2009-07-03 00:06:39 +00:00  
				
					
						
							
							
								 
						
							
								8ecd7eb3f7 
								
							 
						 
						
							
							
								
								Sign extending pre/post indexed loads.  
							
							... 
							
							
							
							llvm-svn: 74736 
							
						 
						
							2009-07-02 23:16:11 +00:00  
				
					
						
							
							
								 
						
							
								84c6cda2ef 
								
							 
						 
						
							
							
								
								Thumb2 pre/post indexed loads.  
							
							... 
							
							
							
							llvm-svn: 74696 
							
						 
						
							2009-07-02 07:28:31 +00:00  
				
					
						
							
							
								 
						
							
								86c7e20ca6 
								
							 
						 
						
							
							
								
								Add PIC load and store patterns for Thumb-2.  
							
							... 
							
							
							
							llvm-svn: 74577 
							
						 
						
							2009-07-01 00:01:13 +00:00  
				
					
						
							
							
								 
						
							
								d0890a2bad 
								
							 
						 
						
							
							
								
								Add thumb-2 store word, halfword, and byte.  
							
							... 
							
							
							
							llvm-svn: 74555 
							
						 
						
							2009-06-30 22:11:34 +00:00  
				
					
						
							
							
								 
						
							
								28d6d87244 
								
							 
						 
						
							
							
								
								Improve Thumb-2 jump table support.  
							
							... 
							
							
							
							llvm-svn: 74549 
							
						 
						
							2009-06-30 19:50:22 +00:00  
				
					
						
							
							
								 
						
							
								57726817aa 
								
							 
						 
						
							
							
								
								A few more load instructions.  
							
							... 
							
							
							
							llvm-svn: 74500 
							
						 
						
							2009-06-30 02:15:48 +00:00  
				
					
						
							
							
								 
						
							
								17512663f5 
								
							 
						 
						
							
							
								
								Enhance tests to include shifted-register operand testing.  
							
							... 
							
							
							
							llvm-svn: 74490 
							
						 
						
							2009-06-30 01:02:20 +00:00  
				
					
						
							
							
								 
						
							
								76b37950ca 
								
							 
						 
						
							
							
								
								Add Thumb-2 support for TEQ amd TST.  
							
							... 
							
							
							
							llvm-svn: 74468 
							
						 
						
							2009-06-29 22:49:42 +00:00  
				
					
						
							
							
								 
						
							
								911edef65b 
								
							 
						 
						
							
							
								
								Thumb-2 tests  
							
							... 
							
							
							
							llvm-svn: 74464 
							
						 
						
							2009-06-29 22:25:22 +00:00  
				
					
						
							
							
								 
						
							
								dbf11ba800 
								
							 
						 
						
							
							
								
								Rename ARMcmpNZ to ARMcmpZ and use it to represent comparisons that set only the Z flag (i.e. eq and ne). Make ARMcmpZ commutative.  
							
							... 
							
							
							
							llvm-svn: 74423 
							
						 
						
							2009-06-29 15:33:01 +00:00  
				
					
						
							
							
								 
						
							
								b23b50d54d 
								
							 
						 
						
							
							
								
								Implement Thumb2 ldr.  
							
							... 
							
							
							
							After much back and forth, I decided to deviate from ARM design and split LDR into 4 instructions (r + imm12, r + imm8, r + r << imm12, constantpool). The advantage of this is 1) it follows the latest ARM technical manual, and 2) makes it easier to reduce the width of the instruction later. The down side is this creates more inconsistency between the two sub-targets. We should split ARM LDR instruction in a similar fashion later. I've added a README entry for this.
llvm-svn: 74420 
							
						 
						
							2009-06-29 07:51:04 +00:00  
				
					
						
							
							
								 
						
							
								5285817490 
								
							 
						 
						
							
							
								
								When possible, use "mvn ra, rb" instead of "eor ra, rb, -1" because mvn has a narrow version and eor(i) does not.  
							
							... 
							
							
							
							llvm-svn: 74355 
							
						 
						
							2009-06-26 23:13:13 +00:00  
				
					
						
							
							
								 
						
							
								3aaa751712 
								
							 
						 
						
							
							
								
								Thumb-2 tests  
							
							... 
							
							
							
							llvm-svn: 74345 
							
						 
						
							2009-06-26 22:37:07 +00:00  
				
					
						
							
							
								 
						
							
								aa294c5593 
								
							 
						 
						
							
							
								
								Thumb-2 has CLZ.  
							
							... 
							
							
							
							llvm-svn: 74322 
							
						 
						
							2009-06-26 20:47:43 +00:00  
				
					
						
							
							
								 
						
							
								35ee722d42 
								
							 
						 
						
							
							
								
								Use "adcs/sbcs" only when the carry-out is live, otherwise use "adc/sbc".  
							
							... 
							
							
							
							llvm-svn: 74321 
							
						 
						
							2009-06-26 20:45:56 +00:00  
				
					
						
							
							
								 
						
							
								a720af1370 
								
							 
						 
						
							
							
								
								More spelling Count as count.  
							
							... 
							
							
							
							llvm-svn: 74306 
							
						 
						
							2009-06-26 18:35:07 +00:00  
				
					
						
							
							
								 
						
							
								6b1678d5d8 
								
							 
						 
						
							
							
								
								Spell Count as count.  
							
							... 
							
							
							
							llvm-svn: 74298 
							
						 
						
							2009-06-26 18:21:54 +00:00  
				
					
						
							
							
								 
						
							
								3bd42afebe 
								
							 
						 
						
							
							
								
								Add Thumb-2 tests.  
							
							... 
							
							
							
							llvm-svn: 74295 
							
						 
						
							2009-06-26 18:10:30 +00:00  
				
					
						
							
							
								 
						
							
								5960e6d974 
								
							 
						 
						
							
							
								
								ADC used to implement adde should use "adcs" opcode instead of "adc".  
							
							... 
							
							
							
							llvm-svn: 74293 
							
						 
						
							2009-06-26 18:07:25 +00:00  
				
					
						
							
							
								 
						
							
								34f7ede9e7 
								
							 
						 
						
							
							
								
								ORN and BIC tests.  
							
							... 
							
							
							
							llvm-svn: 74289 
							
						 
						
							2009-06-26 16:20:06 +00:00  
				
					
						
							
							
								 
						
							
								0377f737ff 
								
							 
						 
						
							
							
								
								Currently there is a pattern for the thumb-2 MOV 16-bit immediate instruction. That instruction cannot write the flags so it should use T2I instead of T2sI.  
							
							... 
							
							
							
							Also, added a pattern for the thumb-2 MOV of shifted immediate since that can encode immediates not encodable by the 16-bit immediate.
llvm-svn: 74288 
							
						 
						
							2009-06-26 16:10:07 +00:00  
				
					
						
							
							
								 
						
							
								7779156b39 
								
							 
						 
						
							
							
								
								Fix tests: Count -> count.  
							
							... 
							
							
							
							llvm-svn: 74282 
							
						 
						
							2009-06-26 07:05:57 +00:00  
				
					
						
							
							
								 
						
							
								34c8c7414f 
								
							 
						 
						
							
							
								
								Fix a CodeGenDAGPatterns bug. Check if top level predicates match when it's looking for duplicates.  
							
							... 
							
							
							
							llvm-svn: 74276 
							
						 
						
							2009-06-26 05:59:16 +00:00  
				
					
						
							
							
								 
						
							
								07025e2c02 
								
							 
						 
						
							
							
								
								Fix spelling of 'count'  
							
							... 
							
							
							
							llvm-svn: 74249 
							
						 
						
							2009-06-26 01:33:02 +00:00  
				
					
						
							
							
								 
						
							
								97727a61f9 
								
							 
						 
						
							
							
								
								Select ADC, SBC, and RSC instead of the ADCS, SBCS, and RSCS when the carry bit def is not used.  
							
							... 
							
							
							
							llvm-svn: 74228 
							
						 
						
							2009-06-25 23:34:10 +00:00  
				
					
						
							
							
								 
						
							
								16f357cccf 
								
							 
						 
						
							
							
								
								Use MVN for ~t2_so_imm immediates.  
							
							... 
							
							
							
							llvm-svn: 74223 
							
						 
						
							2009-06-25 23:11:21 +00:00  
				
					
						
							
							
								 
						
							
								c7ea8df67e 
								
							 
						 
						
							
							
								
								ISD::ADDE / ISD::SUBE updates the carry bit so they should isle to ADCS and SBCS / RSCS.  
							
							... 
							
							
							
							llvm-svn: 74200 
							
						 
						
							2009-06-25 20:59:23 +00:00  
				
					
						
							
							
								 
						
							
								83f979a48b 
								
							 
						 
						
							
							
								
								Add Thumb2 pc relative add.  
							
							... 
							
							
							
							llvm-svn: 74141 
							
						 
						
							2009-06-24 23:47:58 +00:00  
				
					
						
							
							
								 
						
							
								ff1a4a7271 
								
							 
						 
						
							
							
								
								We should run these tests as well.  
							
							... 
							
							
							
							llvm-svn: 74121 
							
						 
						
							2009-06-24 21:36:26 +00:00  
				
					
						
							
							
								 
						
							
								d76d0aa68a 
								
							 
						 
						
							
							
								
								Move thumb and thumb2 tests into separate directories.  
							
							... 
							
							
							
							llvm-svn: 74068 
							
						 
						
							2009-06-24 06:36:07 +00:00