- Nov 23, 2011
-
-
Benjamin Kramer authored
Before: movabsq $4294967296, %rax ## encoding: [0x48,0xb8,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00] testq %rax, %rdi ## encoding: [0x48,0x85,0xf8] jne LBB0_2 ## encoding: [0x75,A] After: btq $32, %rdi ## encoding: [0x48,0x0f,0xba,0xe7,0x20] jb LBB0_2 ## encoding: [0x72,A] btq is usually slower than testq because it doesn't fuse with the jump, but here we're better off saving one register and a giant movabsq. llvm-svn: 145103
-
Elena Demikhovsky authored
VSHUFPS/VSHUFPD instructions while lowering VECTOR_SHUFFLE node. I check a commuted VSHUFP mask. The patch was reviewed by Bruno. llvm-svn: 145099
-
Jakob Stoklund Olesen authored
This was a bug in keeping track of the available domains when merging domain values. The wrong domain mask caused ExecutionDepsFix to try to move VANDPSYrr to the integer domain which is only available in AVX2. Also add an assertion to catch future attempts at emitting AVX2 instructions. llvm-svn: 145096
-
- Nov 22, 2011
-
-
Craig Topper authored
More fixes to the X86InstComments for shuffle instructions. In particular add AVX flavors of many instructions and fix the destination operand for some of the existing AVX entries. llvm-svn: 145063
-
Craig Topper authored
Fix shuffle decoding logic to handle UNPCKLPS/UNPCKLPD on 256-bit vectors correctly. Add support for decoding UNPCKHPS/UNPCKHPD for AVX 128-bit and 256-bit forms. llvm-svn: 145055
-
Craig Topper authored
Add methods for querying minimum SSE version along with AVX. Simplifies all the places that had to check a version of SSE and AVX. llvm-svn: 145053
-
- Nov 21, 2011
-
-
Craig Topper authored
llvm-svn: 145028
-
Craig Topper authored
llvm-svn: 145026
-
Craig Topper authored
Make LowerSIGN_EXTEND_INREG split 256-bit vectors when AVX1 is enabled and use AVX2 shifts when AVX2 is enabled. llvm-svn: 145022
-
- Nov 20, 2011
-
-
Craig Topper authored
Add code for lowering v32i8 shifts by a splat to AVX2 immediate shift instructions. Remove 256-bit splat handling from LowerShift as it was already handled by PerformShiftCombine. llvm-svn: 145005
-
- Nov 19, 2011
-
-
Craig Topper authored
llvm-svn: 145004
-
Craig Topper authored
Remove some of the special classes that worked around an old tablegen limitation of not being able to remove redundant bitconverts from patterns. llvm-svn: 145003
-
Craig Topper authored
llvm-svn: 144999
-
Craig Topper authored
Synthesize SSSE3/AVX 128-bit horizontal integer add/sub instructions from add/sub of appropriate shuffle vectors. llvm-svn: 144989
-
Craig Topper authored
llvm-svn: 144988
-
Craig Topper authored
llvm-svn: 144987
-
Craig Topper authored
llvm-svn: 144985
-
- Nov 18, 2011
-
-
Nadav Rotem authored
llvm-svn: 144967
-
- Nov 17, 2011
-
-
Craig Topper authored
Fix SSE/AVX integer comparison patterns to understand that all integer vector loads are promoted to i64 vector loads so patterns need a bitconvert. Also slightly simplify the AVX2 variable shift patterns by using the predefined bitconvert pattern fragments. llvm-svn: 144896
-
Craig Topper authored
llvm-svn: 144885
-
Eli Friedman authored
Turn on vzeroupper insertion on call boundaries for AVX; it works as far as I know, and I'd like to see wider testing. llvm-svn: 144867
-
- Nov 16, 2011
-
-
-
Pete Cooper authored
llvm-svn: 144811
-
Evan Cheng authored
and code model. This eliminates the need to pass OptLevel flag all over the place and makes it possible for any codegen pass to use this information. llvm-svn: 144788
-
Craig Topper authored
llvm-svn: 144784
-
Craig Topper authored
llvm-svn: 144777
-
- Nov 15, 2011
-
-
Nadav Rotem authored
llvm-svn: 144720
-
Pete Cooper authored
by later instructions. Only done for DEC64m right now. Fixes <rdar://problem/6172640> llvm-svn: 144705
-
Jay Foad authored
llvm-svn: 144631
-
Craig Topper authored
Fix PR11370 for real. Prevents converting 256-bit FP instruction to AVX2 256-bit integer instructions when AVX2 isn't enabled. llvm-svn: 144629
-
Craig Topper authored
Properly qualify AVX2 specific parts of execution dependency table. Also enable converting between 256-bit PS/PD operations when AVX1 is enabled. Fixes PR11370. llvm-svn: 144622
-
Jakob Stoklund Olesen authored
Two new TargetInstrInfo hooks lets the target tell ExecutionDepsFix about instructions with partial register updates causing false unwanted dependencies. The ExecutionDepsFix pass will break the false dependencies if the updated register was written in the previoius N instructions. The small loop added to sse-domains.ll runs twice as fast with dependency-breaking instructions inserted. llvm-svn: 144602
-
- Nov 14, 2011
-
-
-
Pete Cooper authored
Constant idx case is still done in tablegen but other cases are then expanded Fixes <rdar://problem/10435460> llvm-svn: 144557
-
Craig Topper authored
Add AVX2 version of instructions to load folding tables. Also add a bunch of missing SSE/AVX instructions. llvm-svn: 144525
-
Craig Topper authored
Add neverHasSideEffects, mayLoad, and mayStore to many patternless SSE/AVX instructions. Remove MMX check from LowerVECTOR_SHUFFLE since MMX vector types won't go through it anyway. llvm-svn: 144522
-
- Nov 13, 2011
-
-
Craig Topper authored
llvm-svn: 144502
-
- Nov 12, 2011
-
-
Craig Topper authored
Add more AVX2 shift lowering support. Move AVX2 variable shift to use patterns instead of custom lowering code. llvm-svn: 144457
-
Daniel Dunbar authored
build: Attempt to rectify inconsistencies between CMake and LLVMBuild versions of explicit dependencies. - The hope is that we have a tool/test to verify these are accurate (and tight) soon. llvm-svn: 144444
-
- Nov 11, 2011
-
-
Craig Topper authored
llvm-svn: 144380
-