- Feb 16, 2012
-
-
Akira Hatanaka authored
llvm-svn: 150706
-
Lang Hames authored
llvm-svn: 150655
-
Lang Hames authored
llvm-svn: 150654
-
Jakob Stoklund Olesen authored
Call instructions no longer have a list of 43 call-clobbered registers. Instead, they get a single register mask operand with a bit vector of call-preserved registers. This saves a lot of memory, 42 x 32 bytes = 1344 bytes per call instruction, and it speeds up building call instructions because those 43 imp-def operands no longer need to be added to use-def lists. (And removed and shifted and re-added for every explicit call operand). Passes like LiveVariables, LiveIntervals, RAGreedy, PEI, and BranchFolding are significantly faster because they can deal with call clobbers in bulk. Overall, clang -O2 is between 0% and 8% faster, uniformly distributed depending on call density in the compiled code. Debug builds using clang -O0 are 0% - 3% faster. I have verified that this patch doesn't change the assembly generated for the LLVM nightly test suite when building with -disable-copyprop and -disable-branch-fold. Branch folding behaves slightly differently in a few cases because call instructions have different hash values now. Copy propagation flushes its data structures when it crosses a register mask operand. This causes it to leave a few dead copies behind, on the order of 20 instruction across the entire nightly test suite, including SPEC. Fixing this properly would require the pass to use different data structures. llvm-svn: 150638
-
- Feb 15, 2012
-
-
Sirish Pande authored
llvm-svn: 150606
-
Eric Christopher authored
This reverts commit 1656806a944bbd23e98c6e578810fe02495ab741. llvm-svn: 150605
-
Eric Christopher authored
as it's breaking the build. This reverts commit 11241abca5e2a313412fed594bb9d9fa2a2057fb. llvm-svn: 150604
-
Sirish Pande authored
llvm-svn: 150603
-
Sirish Pande authored
llvm-svn: 150601
-
Chad Rosier authored
llvm-svn: 150591
-
Bill Wendling authored
The c'tor list is stored as a list of 'void ()*'s, so all of the functions are bitcast to that. However, the dyn_cast doesn't automagically look through bitcasts. Do that for it. <rdar://problem/10813350> llvm-svn: 150572
-
Andrew Trick authored
Added TargetPassConfig::disablePass/substitutePass as a general mechanism to override specific passes. llvm-svn: 150562
-
Chad Rosier authored
llvm-svn: 150538
-
Pete Cooper authored
Stop custom lowering forr x86 DEC64m from happening if the load in the lowered sequence has more than 1 user llvm-svn: 150537
-
Chad Rosier authored
llvm-svn: 150536
-
- Feb 14, 2012
-
-
Chad Rosier authored
llvm-svn: 150520
-
Craig Topper authored
Move old movl vector_shuffle patterns. Not needed anymore since vector_shuffles shouldn't reach isel. llvm-svn: 150462
-
Lang Hames authored
llvm-svn: 150447
-
Lang Hames authored
llvm-svn: 150444
-
Bill Wendling authored
marking them as "live-in" into a BB ruins some invariants that the back-end tries to maintain. llvm-svn: 150437
-
Lang Hames authored
llvm-svn: 150433
-
- Feb 13, 2012
-
-
Craig Topper authored
llvm-svn: 150365
-
Ahmed Charles authored
- Use unsigned literals when the desired result is unsigned. This mostly allows unsigned/signed mismatch warnings to be less noisy even if they aren't on by default. - Remove misplaced llvm_unreachable. - Add static to a declaration of a function on MSVC x86 only. - Change some instances of calling a static function through a variable to simply calling that function while removing the unused variable. llvm-svn: 150364
-
Craig Topper authored
Remove more vector_shuffle patterns for unpack. These should be target specific nodes when they get to isel. llvm-svn: 150363
-
Craig Topper authored
llvm-svn: 150362
-
Craig Topper authored
Update CanXFormVExtractWithShuffleIntoLoad to ensure bitcasts of loads only have one use. Matches DAGCombiner and prevents vector_shuffles from reaching isel. llvm-svn: 150360
-
NAKAMURA Takumi authored
It caused 3 failures on pre-penryn and non-x86(generic) hosts. llvm-svn: 150357
-
Pete Cooper authored
If the DEC node had more than one user, it was doing this lowering but leaving the original DEC node around and so decrementing twice. Fixes PR11964. llvm-svn: 150356
-
- Feb 12, 2012
-
-
Craig Topper authored
llvm-svn: 150328
-
Nick Lewycky authored
to TargetLibraryInfo and use one of them in GlobalOpt. llvm-svn: 150323
-
Craig Topper authored
llvm-svn: 150321
-
Craig Topper authored
llvm-svn: 150314
-
- Feb 11, 2012
-
-
Anton Korobeynikov authored
Patch by Kai Nacke! llvm-svn: 150307
-
Benjamin Kramer authored
llvm-svn: 150305
-
Benjamin Kramer authored
llvm-svn: 150304
-
Benjamin Kramer authored
This requires some gymnastics to make it available for C code. Remove the names from the disassembler tables, making them relocation free. llvm-svn: 150303
-
Craig Topper authored
Remove some patterns for matching vector_shuffle instructions since vector_shuffles should be custom lowered before isel. llvm-svn: 150299
-
Craig Topper authored
Fix shuffle lowering code to stop creating temporary DAG nodes to do shuffle mask checks on. This seemed to be confusing things such that vector_shuffle ops to got through to iselection. This is another step towards removing the vector_shuffle handling patterns from isel. llvm-svn: 150296
-
- Feb 10, 2012
-
-
Jim Grosbach authored
Now that the clang driver passes the CPU and feature information to the backend when processing assembly files (150273), this isn't necessary. llvm-svn: 150274
-
Jason W Kim authored
llvm-svn: 150251
-