- Sep 04, 2012
-
-
Preston Gurd authored
- CodeGenPrepare pass for identifying div/rem ops - Backend specifies the type mapping using addBypassSlowDivType - Enabled only for Intel Atom with O2 32-bit -> 8-bit - Replace IDIV with instructions which test its value and use DIVB if the value is positive and less than 256. - In the case when the quotient and remainder of a divide are used a DIV and a REM instruction will be present in the IR. In the non-Atom case they are both lowered to IDIVs and CSE removes the redundant IDIV instruction, using the quotient and remainder from the first IDIV. However, due to this optimization CSE is not able to eliminate redundant IDIV instructions because they are located in different basic blocks. This is overcome by calculating both the quotient (DIV) and remainder (REM) in each basic block that is inserted by the optimization and reusing the result values when a subsequent DIV or REM instruction uses the same operands. - Test cases check for the presents of the optimization when calculating either the quotient, remainder, or both. Patch by Tyler Nowicki! llvm-svn: 163150
-
- Aug 13, 2012
-
-
Manman Ren authored
Nehalem, Westmere and Sandy Bridge. AMD also has processor family 6. llvm-svn: 161763
-
- Aug 11, 2012
-
-
Manman Ren authored
FeatureFastUAMem for Nehalem, Westmere and Sandy Bridge. FeatureFastUAMem is already on if we pass in nehalem or westmere as a command argument. rdar: 7252306 llvm-svn: 161717
-
- Aug 07, 2012
-
-
Andrew Trick authored
This allows codegen passes to query properties like InstrItins->SchedModel->IssueWidth. It also ensure's that computeOperandLatency returns the X86 defaults for loads and "high latency ops". This should have no significant impact on existing schedulers because X86 defaults happen to be the same as global defaults. llvm-svn: 161370
-
- Aug 01, 2012
-
-
Chad Rosier authored
llvm-svn: 161122
-
- Jul 19, 2012
-
-
Preston Gurd authored
Atom buildbot will auto-detect Atom. llvm-svn: 160521
-
- Jul 18, 2012
-
-
Preston Gurd authored
when run on an Intel Atom processor. The failures have arisen due to changes elsewhere in the trunk over the past 8 weeks or so. These failures were not detected by the Atom buildbot because the CPU on the Atom buildbot was not being detected as an Atom CPU. The fix for this problem is in Host.cpp and X86Subtarget.cpp, but shall remain commented out until the current set of Atom test failures are fixed. Patch by Andy Zhang and Tyler Nowicki! llvm-svn: 160451
-
- Jun 03, 2012
-
-
Craig Topper authored
llvm-svn: 157903
-
- Jun 01, 2012
-
-
Craig Topper authored
llvm-svn: 157805
-
- May 31, 2012
-
-
Benjamin Kramer authored
It was renamed in gcc/gas a while ago and causes all kinds of confusion because it was named differently in llvm and clang. llvm-svn: 157745
-
Elena Demikhovsky authored
I disabled FMA3 autodetection, since the result may differ from expected for some benchmarks. I added tests for GodeGen and intrinsics. I did not change llvm.fma.f32/64 - it may be done later. llvm-svn: 157737
-
- May 02, 2012
-
-
Preston Gurd authored
Lincroft and Medfield. llvm-svn: 156025
-
- May 01, 2012
-
-
Craig Topper authored
llvm-svn: 155899
-
- Apr 26, 2012
-
-
Preston Gurd authored
Trivial change to set UseLeaForSP flag in addition to toggling the FeatureLeaForSP feature bit when llvm auto detects Intel Atom. Patch by Andy Zhang llvm-svn: 155655
-
Craig Topper authored
Enable detection of AVX and AVX2 support through CPUID. Add AVX/AVX2 to corei7-avx, core-avx-i, and core-avx2 cpu names. llvm-svn: 155618
-
- Apr 23, 2012
-
-
Preston Gurd authored
on X86 Atom. Some of our tests failed because the tail merging part of the BranchFolding pass was creating new basic blocks which did not contain live-in information. When the anti-dependency code in the Post-RA scheduler ran, it would sometimes rename the register containing the function return value because the fact that the return value was live-in to the subsequent block had been lost. To fix this, it is necessary to run the RegisterScavenging code in the BranchFolding pass. This patch makes sure that the register scavenging code is invoked in the X86 subtarget only when post-RA scheduling is being done. Post RA scheduling in the X86 subtarget is only done for Atom. This patch adds a new function to the TargetRegisterClass to control whether or not live-ins should be preserved during branch folding. This is necessary in order for the anti-dependency optimizations done during the PostRASchedulerList pass to work properly when doing Post-RA scheduling for the X86 in general and for the Intel Atom in particular. The patch adds and invokes the new function trackLivenessAfterRegAlloc() instead of using the existing requiresRegisterScavenging(). It changes BranchFolding.cpp to call trackLivenessAfterRegAlloc() instead of requiresRegisterScavenging(). It changes the all the targets that implemented requiresRegisterScavenging() to also implement trackLivenessAfterRegAlloc(). It adds an assertion in the Post RA scheduler to make sure that post RA liveness information is available when it is needed. It changes the X86 break-anti-dependencies test to use –mcpu=atom, in order to avoid running into the added assertion. Finally, this patch restores the use of anti-dependency checking (which was turned off temporarily for the 3.1 release) for Intel Atom in the Post RA scheduler. Patch by Andy Zhang! Thanks to Jakob and Anton for their reviews. llvm-svn: 155395
-
- Apr 17, 2012
-
-
Preston Gurd authored
during Post RA scheduling in X86, until the X86 target is changed to properly set up post RA liveness. llvm-svn: 154874
-
- Mar 27, 2012
-
-
Craig Topper authored
llvm-svn: 153502
-
- Feb 22, 2012
-
-
Chad Rosier authored
llvm-svn: 151169
-
- Feb 07, 2012
-
-
Evan Cheng authored
llvm-svn: 150008
-
- Feb 02, 2012
-
-
Andrew Trick authored
Adds an instruction itinerary to all x86 instructions, giving each a default latency of 1, using the InstrItinClass IIC_DEFAULT. Sets specific latencies for Atom for the instructions in files X86InstrCMovSetCC.td, X86InstrArithmetic.td, X86InstrControl.td, and X86InstrShiftRotate.td. The Atom latencies for the remainder of the x86 instructions will be set in subsequent patches. Adds a test to verify that the scheduler is working. Also changes the scheduling preference to "Hybrid" for i386 Atom, while leaving x86_64 as ILP. Patch by Preston Gurd! llvm-svn: 149558
-
- Jan 31, 2012
-
-
Evan Cheng authored
llvm-svn: 149294
-
- Jan 10, 2012
-
-
Joerg Sonnenberger authored
Add a test that checks the stack alignment of a simple function for Darwin, Linux and NetBSD for 32bit and 64bit mode. llvm-svn: 147888
-
- Jan 09, 2012
-
-
Craig Topper authored
Remove AVX hack in X86Subtarget. AVX/AVX2 are now treated as an SSE level. Predicate functions have been altered to maintain previous names and behavior. llvm-svn: 147770
-
Craig Topper authored
Don't disable MMX support when AVX is enabled. Fix predicates for MMX instructions that were added along with SSE instructions to check for AVX in addition to SSE level. llvm-svn: 147762
-
- Dec 29, 2011
-
-
Craig Topper authored
llvm-svn: 147348
-
- Dec 02, 2011
-
-
Nick Lewycky authored
change, now you need a TargetOptions object to create a TargetMachine. Clang patch to follow. One small functionality change in PTX. PTX had commented out the machine verifier parts in their copy of printAndVerify. That now calls the version in LLVMTargetMachine. Users of PTX who need verification disabled should rely on not passing the command-line flag to enable it. llvm-svn: 145714
-
Jan Sjödin authored
llvm-svn: 145682
-
- Oct 30, 2011
-
-
Craig Topper authored
llvm-svn: 143319
-
- Oct 18, 2011
-
-
David Meyer authored
llvm-svn: 142338
-
- Oct 17, 2011
-
-
Craig Topper authored
Don't use inline assembly in 64-bit Visual Studio. Unfortunately, this means that cpuid leaf 7 can't be queried on versions of Visual Studio earlier than VS 2008 SP1. Fixes PR11147. llvm-svn: 142177
-
- Oct 16, 2011
-
-
Craig Topper authored
llvm-svn: 142122
-
Craig Topper authored
Add X86 feature detection support for BMI instructions. Added new cpuid function for accessing leafs with sub leafs specified in ECX. Also added code to keep track of the max cpuid level supported in both basic and extended leaves and qualified the existing cpuid calls and the new call to leaf 7. llvm-svn: 142089
-
- Oct 14, 2011
-
-
Craig Topper authored
Add X86 TZCNT instruction and patterns to select it. Also added core-avx2 processor which is gcc's name for Haswell. llvm-svn: 141939
-
- Oct 11, 2011
-
-
Craig Topper authored
llvm-svn: 141651
-
- Oct 10, 2011
-
-
Craig Topper authored
llvm-svn: 141527
-
- Oct 09, 2011
-
-
Craig Topper authored
llvm-svn: 141505
-
- Oct 03, 2011
-
-
Craig Topper authored
Add support for MOVBE and RDRAND instructions for the assembler and disassembler. Includes feature flag checking, but no instrinsic support. Fixes PR10832, PR11026 and PR11027. llvm-svn: 141007
-
- Sep 07, 2011
-
-
Rafael Espindola authored
(not assert) early. llvm-svn: 139233
-
- Sep 05, 2011
-
-
Nick Lewycky authored
instructions are more aligned than the CPU requires, and adds some additional directives, to follow in future patches. Patch by David Meyer! llvm-svn: 139125
-