b66d255595 
								
							 
						 
						
							
							
								
								X86Subtarget.h: Assume "x86_64-cygwin", though it has not been released yet, to appease test/CodeGen/X86 on cygwin.  
							
							... 
							
							
							
							llvm-svn: 135564 
							
						 
						
							2011-07-20 04:02:20 +00:00  
				
					
						
							
							
								 
						
							
								60fc0fca5c 
								
							 
						 
						
							
							
								
								Restore old behavior. Always auto-detect features unless cpu or features are specified.  
							
							... 
							
							
							
							llvm-svn: 134757 
							
						 
						
							2011-07-08 22:30:25 +00:00  
				
					
						
							
							
								 
						
							
								13bcc6c1c7 
								
							 
						 
						
							
							
								
								Add Mode64Bit feature and sink it down to MC layer.  
							
							... 
							
							
							
							llvm-svn: 134641 
							
						 
						
							2011-07-07 21:06:52 +00:00  
				
					
						
							
							
								 
						
							
								1a72add615 
								
							 
						 
						
							
							
								
								Compute feature bits at time of MCSubtargetInfo initialization.  
							
							... 
							
							
							
							llvm-svn: 134606 
							
						 
						
							2011-07-07 07:07:08 +00:00  
				
					
						
							
							
								 
						
							
								c9c090d7a5 
								
							 
						 
						
							
							
								
								Rename XXXGenSubtarget.inc to XXXGenSubtargetInfo.inc for consistency.  
							
							... 
							
							
							
							llvm-svn: 134281 
							
						 
						
							2011-07-01 22:36:09 +00:00  
				
					
						
							
							
								 
						
							
								0d639a28aa 
								
							 
						 
						
							
							
								
								Rename TargetSubtarget to TargetSubtargetInfo for consistency.  
							
							... 
							
							
							
							llvm-svn: 134259 
							
						 
						
							2011-07-01 21:01:15 +00:00  
				
					
						
							
							
								 
						
							
								54b68e3432 
								
							 
						 
						
							
							
								
								- Added MCSubtargetInfo to capture subtarget features and scheduling  
							
							... 
							
							
							
							itineraries.
- Refactor TargetSubtarget to be based on MCSubtargetInfo.
- Change tablegen generated subtarget info to initialize MCSubtargetInfo
  and hide more details from targets.
llvm-svn: 134257 
							
						 
						
							2011-07-01 20:45:01 +00:00  
				
					
						
							
							
								 
						
							
								fe6e405e8c 
								
							 
						 
						
							
							
								
								Fix the ridiculous SubtargetFeatures API where it implicitly expects CPU name to  
							
							... 
							
							
							
							be the first encoded as the first feature. It then uses the CPU name to look up
features / scheduling itineray even though clients know full well the CPU name
being used to query these properties.
The fix is to just have the clients explictly pass the CPU name!
llvm-svn: 134127 
							
						 
						
							2011-06-30 01:53:36 +00:00  
				
					
						
							
							
								 
						
							
								3a0c5e52ff 
								
							 
						 
						
							
							
								
								Remove TargetOptions.h dependency from X86Subtarget.  
							
							... 
							
							
							
							llvm-svn: 133726 
							
						 
						
							2011-06-23 17:54:54 +00:00  
				
					
						
							
							
								 
						
							
								2b9b0e3748 
								
							 
						 
						
							
							
								
								ADT/Triple: Move a variety of clients to using isOSDarwin() and isOSWindows()  
							
							... 
							
							
							
							predicates.
llvm-svn: 129816 
							
						 
						
							2011-04-19 21:14:45 +00:00  
				
					
						
							
							
								 
						
							
								100455a3c8 
								
							 
						 
						
							
							
								
								Target/X86: Eliminate uses of getDarwinVers().  
							
							... 
							
							
							
							llvm-svn: 129813 
							
						 
						
							2011-04-19 21:04:12 +00:00  
				
					
						
							
							
								 
						
							
								44b530369d 
								
							 
						 
						
							
							
								
								Target/X86: Add getTargetTriple() accessor.  
							
							... 
							
							
							
							llvm-svn: 129812 
							
						 
						
							2011-04-19 21:01:47 +00:00  
				
					
						
							
							
								 
						
							
								e8a93fe8f0 
								
							 
						 
						
							
							
								
								Stack alignment is 16 bytes on FreeBSD/i386 too.  
							
							... 
							
							
							
							llvm-svn: 126226 
							
						 
						
							2011-02-22 17:30:05 +00:00  
				
					
						
							
							
								 
						
							
								bda7175a43 
								
							 
						 
						
							
							
								
								The stack should be 16 byte aligned on 32 bit solaris.  Patch by Yuri.  
							
							... 
							
							
							
							llvm-svn: 126130 
							
						 
						
							2011-02-21 17:37:17 +00:00  
				
					
						
							
							
								 
						
							
								4c14a5cc2c 
								
							 
						 
						
							
							
								
								Triple::MinGW64 is deprecated and removed. We can use Triple::MinGW32 generally.  
							
							... 
							
							
							
							No one uses *-mingw64. mingw-w64 is represented as {i686|x86_64}-w64-mingw32. In llvm side, i686 and x64 can be treated as similar way.
llvm-svn: 125747 
							
						 
						
							2011-02-17 12:24:17 +00:00  
				
					
						
							
							
								 
						
							
								0544fe7287 
								
							 
						 
						
							
							
								
								Fix whitespace.  
							
							... 
							
							
							
							llvm-svn: 125746 
							
						 
						
							2011-02-17 12:23:50 +00:00  
				
					
						
							
							
								 
						
							
								d22a4a1fd6 
								
							 
						 
						
							
							
								
								Patches to build EFI with Clang/LLVM. By Carl Norum.  
							
							... 
							
							
							
							llvm-svn: 124639 
							
						 
						
							2011-02-01 01:14:13 +00:00  
				
					
						
							
							
								 
						
							
								8b08f5232b 
								
							 
						 
						
							
							
								
								Formalize the notion that AVX and SSE are non-overlapping extensions from the compiler's point of view.  Per email discussion, we either want to always use VEX-prefixed instructions or never use them, and are taking "HasAVX" to mean "Always use VEX".  Passing -mattr=-avx,+sse42 should serve to restore legacy SSE support when desirable.  
							
							... 
							
							
							
							llvm-svn: 121439 
							
						 
						
							2010-12-10 00:26:57 +00:00  
				
					
						
							
							
								 
						
							
								2f489236ab 
								
							 
						 
						
							
							
								
								Add patterns for the x86 popcnt instruction.  
							
							... 
							
							
							
							- Also adds a new POPCNT subtarget feature that is currently enabled if the target
  supports SSE4.2 (nehalem) or SSE4A (barcelona).
llvm-svn: 120917 
							
						 
						
							2010-12-04 20:32:23 +00:00  
				
					
						
							
							
								 
						
							
								66e08d43d2 
								
							 
						 
						
							
							
								
								Jim Asked us to move DataLayout on ARM back to the most specialized classes. Do  
							
							... 
							
							
							
							so and also change X86 for consistency.
Investigating if this can be improved a bit.
llvm-svn: 115469 
							
						 
						
							2010-10-03 18:59:45 +00:00  
				
					
						
							
							
								 
						
							
								ea639aa11f 
								
							 
						 
						
							
							
								
								X86Subtarget.h: Fix Cygwin's TD.  
							
							... 
							
							
							
							llvm-svn: 114297 
							
						 
						
							2010-09-18 19:50:42 +00:00  
				
					
						
							
							
								 
						
							
								a5a645559c 
								
							 
						 
						
							
							
								
								Properly emit __chkstk call instead of __alloca on non-mingw windows targets.  
							
							... 
							
							
							
							Patch by Cameron Esfahani!
llvm-svn: 112902 
							
						 
						
							2010-09-02 23:03:46 +00:00  
				
					
						
							
							
								 
						
							
								09dc24beac 
								
							 
						 
						
							
							
								
								Add x86 CLMUL (Carry-less multiplication) cpu feature  
							
							... 
							
							
							
							llvm-svn: 109206 
							
						 
						
							2010-07-23 01:17:51 +00:00  
				
					
						
							
							
								 
						
							
								d429846eca 
								
							 
						 
						
							
							
								
								Have the X86 backend use Triple instead of a string and some enums.  
							
							... 
							
							
							
							llvm-svn: 107625 
							
						 
						
							2010-07-05 19:26:33 +00:00  
				
					
						
							
							
								 
						
							
								dc53f1cb5c 
								
							 
						 
						
							
							
								
								FastISel doesn't yet handle callee-pop functions.  
							
							... 
							
							
							
							To support this, move IsCalleePop from X86ISelLowering to X86Subtarget.
llvm-svn: 104866 
							
						 
						
							2010-05-27 18:43:40 +00:00  
				
					
						
							
							
								 
						
							
								050df1b8de 
								
							 
						 
						
							
							
								
								Enable i16 to i32 promotion by default.  
							
							... 
							
							
							
							llvm-svn: 102493 
							
						 
						
							2010-04-28 08:30:49 +00:00  
				
					
						
							
							
								 
						
							
								9c8cd8c061 
								
							 
						 
						
							
							
								
								isel (i32 anyext i16) as insert_subreg when 16-bit ops are being promoted.  
							
							... 
							
							
							
							llvm-svn: 101979 
							
						 
						
							2010-04-21 01:47:12 +00:00  
				
					
						
							
							
								 
						
							
								2ef63183a5 
								
							 
						 
						
							
							
								
								Separate out the AES-NI instructions from the SSE4.2 instructions.  Add  
							
							... 
							
							
							
							a new subtarget option for AES and check for the support.  Add "westmere"
line of processors and add AES-NI support to the core i7.
Add a couple of TODOs for information I couldn't verify.
llvm-svn: 100231 
							
						 
						
							2010-04-02 21:54:27 +00:00  
				
					
						
							
							
								 
						
							
								738b0f9ec7 
								
							 
						 
						
							
							
								
								Nehalem unaligned memory access is fast.  
							
							... 
							
							
							
							llvm-svn: 100089 
							
						 
						
							2010-04-01 05:58:17 +00:00  
				
					
						
							
							
								 
						
							
								bf724b9ee0 
								
							 
						 
						
							
							
								
								Turning off post-ra scheduling for x86. It isn't a consistent win.  
							
							... 
							
							
							
							llvm-svn: 98810 
							
						 
						
							2010-03-18 06:55:42 +00:00  
				
					
						
							
							
								 
						
							
								a30d4ce194 
								
							 
						 
						
							
							
								
								add support for pentium class CPUs which do not have cmov,  
							
							... 
							
							
							
							PR4841.  Patch by Craig Smith!
llvm-svn: 98496 
							
						 
						
							2010-03-14 18:31:44 +00:00  
				
					
						
							
							
								 
						
							
								abd56bde0e 
								
							 
						 
						
							
							
								
								80-col violations/trailing whitespace.  
							
							... 
							
							
							
							llvm-svn: 97427 
							
						 
						
							2010-02-28 22:54:30 +00:00  
				
					
						
							
							
								 
						
							
								c3c357006e 
								
							 
						 
						
							
							
								
								Setup correct data layout to match gcc's expectations on mingw32.  
							
							... 
							
							
							
							llvm-svn: 95981 
							
						 
						
							2010-02-12 15:28:56 +00:00  
				
					
						
							
							
								 
						
							
								0067d6bbbe 
								
							 
						 
						
							
							
								
								Fix typo.  
							
							... 
							
							
							
							llvm-svn: 93235 
							
						 
						
							2010-01-12 08:30:46 +00:00  
				
					
						
							
							
								 
						
							
								fd75e12954 
								
							 
						 
						
							
							
								
								Tweak commit 91745, which changed target data for both Mingw and Cygwin,  
							
							... 
							
							
							
							to not touch Cygwin: the change caused llvm-gcc build failures due to
long double getting the wrong size.  Patch by Aaron Gray.
llvm-svn: 93234 
							
						 
						
							2010-01-12 08:21:07 +00:00  
				
					
						
							
							
								 
						
							
								206351a1ff 
								
							 
						 
						
							
							
								
								Implement a feature (-vector-unaligned-mem) to allow targets to  
							
							... 
							
							
							
							ignore alignment requirements for SIMD memory operands.  This
is useful on architectures like the AMD 10h that do not trap on
unaligned references if a status bit is twiddled at startup time.
llvm-svn: 93151 
							
						 
						
							2010-01-11 16:29:42 +00:00  
				
					
						
							
							
								 
						
							
								71d7eaa87e 
								
							 
						 
						
							
							
								
								Remove target attribute break-sse-dep. Instead, do not fold load into sse partial update instructions unless optimizing for size.  
							
							... 
							
							
							
							llvm-svn: 91910 
							
						 
						
							2009-12-22 17:47:23 +00:00  
				
					
						
							
							
								 
						
							
								148d87b0b0 
								
							 
						 
						
							
							
								
								Bump alignment requirements for windows targets to achieve compartibility with vcpp.  
							
							... 
							
							
							
							Based on patch by Michael Beck!
llvm-svn: 91745 
							
						 
						
							2009-12-19 02:04:23 +00:00  
				
					
						
							
							
								 
						
							
								4cf30b72bf 
								
							 
						 
						
							
							
								
								On recent Intel u-arch's, folding loads into some unary SSE instructions can  
							
							... 
							
							
							
							be non-optimal. To be precise, we should avoid folding loads if the instructions
only update part of the destination register, and the non-updated part is not
needed. e.g. cvtss2sd, sqrtss. Unfolding the load from these instructions breaks
the partial register dependency and it can improve performance. e.g.
movss (%rdi), %xmm0
cvtss2sd %xmm0, %xmm0
instead of
cvtss2sd (%rdi), %xmm0
An alternative method to break dependency is to clear the register first. e.g.
xorps %xmm0, %xmm0
cvtss2sd (%rdi), %xmm0
llvm-svn: 91672 
							
						 
						
							2009-12-18 07:40:29 +00:00  
				
					
						
							
							
								 
						
							
								7a6611793f 
								
							 
						 
						
							
							
								
								Target-independent support for TargetFlags on BlockAddress operands,  
							
							... 
							
							
							
							and support for blockaddresses in x86-32 PIC mode.
llvm-svn: 89506 
							
						 
						
							2009-11-20 23:18:13 +00:00  
				
					
						
							
							
								 
						
							
								b9fe5d5d02 
								
							 
						 
						
							
							
								
								Allow target to specify regclass for which antideps will only be broken along the critical path.  
							
							... 
							
							
							
							llvm-svn: 88682 
							
						 
						
							2009-11-13 19:52:48 +00:00  
				
					
						
							
							
								 
						
							
								0d412c2528 
								
							 
						 
						
							
							
								
								Fixed to address code review. No functional changes.  
							
							... 
							
							
							
							llvm-svn: 86634 
							
						 
						
							2009-11-10 00:48:55 +00:00  
				
					
						
							
							
								 
						
							
								cf89db135e 
								
							 
						 
						
							
							
								
								Allow targets to specify register classes whose member registers should not be renamed to break anti-dependencies.  
							
							... 
							
							
							
							llvm-svn: 86628 
							
						 
						
							2009-11-10 00:15:47 +00:00  
				
					
						
							
							
								 
						
							
								8714348afd 
								
							 
						 
						
							
							
								
								indicate what the native integer types for the target are.  
							
							... 
							
							
							
							Please verify.
llvm-svn: 86397 
							
						 
						
							2009-11-07 19:07:32 +00:00  
				
					
						
							
							
								 
						
							
								8b86efefec 
								
							 
						 
						
							
							
								
								X86 needs critical path anti-dependency breaking.  
							
							... 
							
							
							
							llvm-svn: 84931 
							
						 
						
							2009-10-23 05:57:35 +00:00  
				
					
						
							
							
								 
						
							
								02ad4cb32e 
								
							 
						 
						
							
							
								
								Allow the target to select the level of anti-dependence breaking that should be performed by the post-RA scheduler. The default is none.  
							
							... 
							
							
							
							llvm-svn: 84911 
							
						 
						
							2009-10-22 23:19:17 +00:00  
				
					
						
							
							
								 
						
							
								c436631a9c 
								
							 
						 
						
							
							
								
								Turn on post-alloc scheduling for x86.  
							
							... 
							
							
							
							llvm-svn: 84431 
							
						 
						
							2009-10-18 19:57:27 +00:00  
				
					
						
							
							
								 
						
							
								936d87b39d 
								
							 
						 
						
							
							
								
								Oops. I forgot to change the tests first. Disable post-alloc scheduling.  
							
							... 
							
							
							
							llvm-svn: 84425 
							
						 
						
							2009-10-18 18:31:31 +00:00  
				
					
						
							
							
								 
						
							
								0e9d9ca855 
								
							 
						 
						
							
							
								
								-Revert parts of 84326 and 84411. Distinquishing between fixed and non-fixed  
							
							... 
							
							
							
							stack slots and giving them different PseudoSourceValue's did not fix the
problem of post-alloc scheduling miscompiling llvm itself.
- Apply Dan's conservative workaround by assuming any non fixed stack slots can
alias other memory locations. This means a load from spill slot #1  cannot 
move above a store of spill slot #2 . 
- Enable post-alloc scheduling for x86 at optimization leverl Default and above.
llvm-svn: 84424 
							
						 
						
							2009-10-18 18:16:27 +00:00  
				
					
						
							
							
								 
						
							
								007ceb4603 
								
							 
						 
						
							
							
								
								Change createPostRAScheduler so it can be turned off at llc -O1.  
							
							... 
							
							
							
							llvm-svn: 84273 
							
						 
						
							2009-10-16 21:06:15 +00:00