- May 04, 2012
-
-
Justin Holewinski authored
This patch adds a new NVPTX back-end to LLVM which supports code generation for NVIDIA PTX 3.0. This back-end will (eventually) replace the current PTX back-end, while maintaining compatibility with it. The new target machines are: nvptx (old ptx32) => 32-bit PTX nvptx64 (old ptx64) => 64-bit PTX The sources are based on the internal NVIDIA NVPTX back-end, and contain more functionality than the current PTX back-end currently provides. NV_CONTRIB llvm-svn: 156196
-
Sebastian Pop authored
Added missing CMN case in Thumb2SizeReduction pass so that LLVM emits 16-bits encoding of CMN instructions. llvm-svn: 156195
-
Preston Gurd authored
llvm-svn: 156194
-
Matt Beaumont-Gay authored
llvm-svn: 156189
-
Chandler Carruth authored
of the CodeExtractor utility. This allows speculatively computing input and output sets to measure the likely size impact of the code extraction. These sets cannot be reused sadly -- we mutate the function prior to forming the final sets used by the actual extraction. The interface has been revamped slightly to make it easier to use correctly by making the interface const and sinking the computation of the number of exit blocks into the full extraction function and away from the rest of this logic which just computed two output parameters. llvm-svn: 156168
-
Chandler Carruth authored
blocks, assert that this doesn't happen. We don't want to bother trying to support this call pattern as it isn't necessary. llvm-svn: 156167
-
Chandler Carruth authored
detect an in-eligible block rather than just breaking out of the loop. llvm-svn: 156166
-
Chandler Carruth authored
of the extractor itself. llvm-svn: 156164
-
Chandler Carruth authored
and expose it as a utility class rather than as free function wrappers. The simple free-function interface works well for the bugpoint-specific pass's uses of code extraction, but in an upcoming patch for more advanced code extraction, they simply don't expose a rich enough interface. I need to expose various stages of the process of doing the code extraction and query information to decide whether or not to actually complete the extraction or give up. Rather than build up a new predicate model and pass that into these functions, just take the class that was actually implementing the functions and lift it up into a proper interface that can be used to perform code extraction. The interface is cleaned up and re-documented to work better in a header. It also is now setup to accept the blocks to be extracted in the constructor rather than in a method. In passing this essentially reverts my previous commit here exposing a block-level query for eligibility of extraction. That is no longer necessary with the more rich interface as clients can query the extraction object for eligibility directly. This will reduce the number of walks of the input basic block sequence by quite a bit which is useful if this enters the normal optimization pipeline. llvm-svn: 156163
-
Hans Wennborg authored
This moves the logic for selecting a TLS model to a single place, instead of the previous three (ARM, Mips, and X86 which already uses this function). llvm-svn: 156162
-
Craig Topper authored
llvm-svn: 156159
-
Craig Topper authored
llvm-svn: 156158
-
Craig Topper authored
llvm-svn: 156157
-
Craig Topper authored
llvm-svn: 156156
-
Bill Wendling authored
Also combine the code in the 'assert' statement. llvm-svn: 156155
-
Craig Topper authored
llvm-svn: 156154
-
Jakob Stoklund Olesen authored
This information in now computed by TableGen. llvm-svn: 156152
-
Jakob Stoklund Olesen authored
The masks returned by SuperRegClassIterator are computed automatically by TableGen. This is better than depending on the manually specified SuperRegClasses. llvm-svn: 156147
-
Jakob Stoklund Olesen authored
The TargetLowering construction needs to use a valid TargetRegisterInfo instance. llvm-svn: 156146
-
Jakob Stoklund Olesen authored
This iterator class provides a more abstract interface to the (Idx, Mask) lists of super-registers for a register class. The layout of the tables shouldn't be exposed to clients. llvm-svn: 156144
-
Chandler Carruth authored
minor behavior changes with this, but nothing I have seen evidence of in the wild or expect to be meaningful. The real goal is unifying our logic and simplifying the interfaces. A summary of the changes follows: - Make 'callIsSmall' actually accept a callsite so it can handle intrinsics, and simplify callers appropriately. - Nuke a completely bogus declaration of 'callIsSmall' that was still lurking in InlineCost.h... No idea how this got missed. - Teach the 'isInstructionFree' about the various more intelligent 'free' heuristics that got added to the inline cost analysis during review and testing. This mostly surrounds int->ptr and ptr->int casts. - Switch most of the interesting parts of the inline cost analysis that were essentially computing 'is this instruction free?' to use the code metrics routine instead. This way we won't keep duplicating logic. All of this is motivated by the desire to allow other passes to compute a roughly equivalent 'cost' metric for a particular basic block as the inline cost analysis. Sadly, re-using the same analysis for both is really messy because only the actual inline cost analysis is ever going to go to the contortions required for simplification, SROA analysis, etc. llvm-svn: 156140
-
Jakob Stoklund Olesen authored
TargetRegisterClass now gives access to the necessary tables. llvm-svn: 156122
-
Kevin Enderby authored
for the assembler and disassembler. Which were not being set/read correctly for offsets greater than 22 bits in some cases. Changes to lib/Target/ARM/ARMAsmBackend.cpp from Gideon Myles! llvm-svn: 156118
-
Chandler Carruth authored
extraction into a public interface. Also clean it up and apply it more consistently such that we check for landing pads *anywhere* in the extracted code, not just in single-block extraction. This will be used to guide decisions in passes that are planning to eventually perform a round of code extraction. llvm-svn: 156114
-
Nuno Lopes authored
fix a few typos found by Chad in my previous commit llvm-svn: 156110
-
- May 03, 2012
-
-
Sirish Pande authored
This patch creates and optimizes packets as per Hexagon ISA rules. llvm-svn: 156109
-
Nuno Lopes authored
llvm-svn: 156102
-
Silviu Baranga authored
llvm-svn: 156077
-
Sirish Pande authored
This adds new instructions for Hexagon V4 architecture. llvm-svn: 156071
-
Nuno Lopes authored
replace 'break's with 'return 0' in visitCallInst code for objectsize, since there is no need to fallback to visitCallSite. This gives a 0.9% in a test case llvm-svn: 156069
-
Craig Topper authored
llvm-svn: 156060
-
Craig Topper authored
Fix 256-bit vpshuflw and vpshufhw immediate encoding to handle undefs in the lower half correctly. Missed in r155982. llvm-svn: 156059
-
Evan Cheng authored
to catch cases like: %reg1024<def> = MOV r1 %reg1025<def> = MOV r0 %reg1026<def> = ADD %reg1024, %reg1025 r0 = MOV %reg1026 By commuting ADD, it let coalescer eliminate all of the copies. However, there was a bug in the heuristics where it ended up commuting the ADD in: %reg1024<def> = MOV r0 %reg1025<def> = MOV 0 %reg1026<def> = ADD %reg1024, %reg1025 r0 = MOV %reg1026 That did no benefit but rather ensure the last MOV would not be coalesced. rdar://11355268 llvm-svn: 156048
-
Andrew Trick authored
The ensures that virtual registers always belong to an allocatable class. If your target attempts to create a vreg for an operand that has no allocatable register subclass, you will crash quickly. This ensures that targets define register classes as intended. llvm-svn: 156046
-
Bill Wendling authored
llvm-svn: 156034
-
Owen Anderson authored
Teach DAGCombine the same multiply-by-1.0 folding trick when doing FMAs, just like it now knows for FMULs. llvm-svn: 156029
-
Preston Gurd authored
For Intel Atom, use ILP scheduling always, instead of ILP for 64 bit and Hybrid for 32 bit, since benchmarks show ILP scheduling is better most of the time. llvm-svn: 156028
-
- May 02, 2012
-
-
Preston Gurd authored
Lincroft and Medfield. llvm-svn: 156025
-
Owen Anderson authored
llvm-svn: 156023
-
Jim Grosbach authored
llvm-svn: 156019
-