- 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 25, 2012
-
-
Craig Topper authored
Use vector_shuffles instead of target specific unpack nodes for AVX ZERO_EXTEND/ANY_EXTEND combine. These will be converted to target specific nodes during lowering. This is more consistent with other code. llvm-svn: 155537
-
- Apr 24, 2012
-
-
Nadav Rotem authored
Remove the v2f64 patterns because it does not match any vbroadcast instruction. llvm-svn: 155461
-
Nadav Rotem authored
immediate. We can't use it here because the shuffle code does not check that the lower part of the word is identical to the upper part. llvm-svn: 155440
-
Nadav Rotem authored
using the pattern (vbroadcast (i32load src)). In some cases, after we generate this pattern new users are added to the load node, which prevent the selection of the blend pattern. This commit provides fallback patterns which perform in-vector broadcast (using in-vector vbroadcast in AVX2 and pshufd on AVX1). llvm-svn: 155437
-
Craig Topper authored
llvm-svn: 155429
-
Craig Topper authored
llvm-svn: 155428
-
- Apr 23, 2012
-
-
Nadav Rotem authored
Optimize the vector UINT_TO_FP, SINT_TO_FP and FP_TO_SINT operations where the integer type is i8 (commonly used in graphics). llvm-svn: 155397
-
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
-
Craig Topper authored
Use MVT instead of EVT through all of LowerVECTOR_SHUFFLEtoBlend and not just the switch. Saves a little bit of binary size. llvm-svn: 155339
-
Craig Topper authored
Make getZeroVector and getOnesVector more alike as far as how they detect 128-bit versus 256-bit vectors. Be explicit about both sizes and use llvm_unreachable. Similar changes to getLegalSplat. llvm-svn: 155337
-
Craig Topper authored
llvm-svn: 155336
-
Craig Topper authored
Tidy up spacing in LowerVECTOR_SHUFFLEtoBlend. Remove code that checks if shuffle operand has a different type than the the shuffle result since it can never happen. llvm-svn: 155333
-
Craig Topper authored
llvm-svn: 155332
-
Craig Topper authored
llvm-svn: 155331
-
Craig Topper authored
llvm-svn: 155330
-
- Apr 22, 2012
-
-
Craig Topper authored
Make Extract128BitVector and Insert128BitVector take an unsigned instead of an ConstantNode SDValue. getConstant was almost always called just before only to have the functions take it apart and build a new ConstantSDNode. llvm-svn: 155325
-
Craig Topper authored
llvm-svn: 155321
-
Craig Topper authored
Make calls to getVectorShuffle more consistent. Use shuffle VT for calls to getUNDEF instead of requerying. Use &Mask[0] instead of Mask.data(). llvm-svn: 155320
-
Craig Topper authored
llvm-svn: 155319
-
Craig Topper authored
Simplify code by converting multiple places that were manually concatenating 128-bit vectors to use either CONCAT_VECTORS or a helper function. CONCAT_VECTORS will itself be lowered to the same pattern as before. The helper function is needed for concats of BUILD_VECTORs since getNode(CONCAT_VECTORS) will just return a large BUILD_VECTOR and we may be trying to lower large BUILD_VECTORS when this occurs. llvm-svn: 155318
-
Elena Demikhovsky authored
llvm-svn: 155309
-
- Apr 21, 2012
-
-
Craig Topper authored
llvm-svn: 155294
-
Craig Topper authored
llvm-svn: 155291
-
- Apr 20, 2012
-
-
Craig Topper authored
Convert some uses of XXXRegisterClass to &XXXRegClass. No functional change since they are equivalent. llvm-svn: 155186
-
- Apr 19, 2012
-
-
Kevin Enderby authored
symbolicated. These have and operand type of TYPE_RELv which was not handled as isBranch in translateImmediate() in X86Disassembler.cpp. rdar://11268426 llvm-svn: 155074
-
- Apr 18, 2012
-
-
Craig Topper authored
llvm-svn: 154985
-
- Apr 17, 2012
-
-
Craig Topper authored
llvm-svn: 154907
-
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
-
- Apr 16, 2012
-
-
Richard Smith authored
llvm-svn: 154845
-
Craig Topper authored
llvm-svn: 154801
-
Craig Topper authored
Change type profile for vpermv back to using operand type for the mask argument to match intrinsic behavior. Add a bitcast to the lowering code to convert mask from v8i32 to v8f32 for vpermps. llvm-svn: 154798
-
Craig Topper authored
Flip the arguments when converting vpermd/vpermps intrinsics into instructions. The intrinsic has the mask as the last operand, but the instruction has it as the second. llvm-svn: 154797
-
Craig Topper authored
llvm-svn: 154782
-
Craig Topper authored
llvm-svn: 154781
-
Craig Topper authored
Spacing fixes and 80 column fixes. Use 0 instead of 0x80 for undef indices in vpermps/vpermd. Hardware only looks at lower 3-bits. llvm-svn: 154780
-
Craig Topper authored
llvm-svn: 154778
-
- Apr 15, 2012
-
-
Nadav Rotem authored
Use non-vex instructions for SSE4. llvm-svn: 154770
-
Elena Demikhovsky authored
llvm-svn: 154761
-