- Feb 13, 2012
-
-
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
-
-
Nadav Rotem authored
This patch addresses the problem of poor code generation for the zext v8i8 -> v8i32 on AVX machines. The codegen often scalarizes ANY_EXTEND nodes. The DAGCombiner has two optimizations that can mitigate the problem. First, if all of the operands of a BUILD_VECTOR node are extracted from an ZEXT/ANYEXT nodes, then it is possible to create a new simplified BUILD_VECTOR which uses UNDEFS/ZERO values to eliminate the scalar ZEXT/ANYEXT nodes. Second, another dag combine optimization lowers BUILD_VECTOR into a shuffle vector instruction. In the case of zext v8i8->v8i32 on AVX, a value in an XMM register is to be shuffled into a wide YMM register. This patch modifes the second optimization and allows the creation of shuffle vectors even when the newly generated vector and the original vector from which we extract the values are of different types. llvm-svn: 150340
-
Benjamin Kramer authored
llvm-svn: 150332
-
Chandler Carruth authored
the process. Some of these are still a bit gross. Still, this cuts 80 some lines out of this ridiculous file. ;] llvm-svn: 150331
-
Craig Topper authored
llvm-svn: 150328
-
Eli Bendersky authored
to what's done for MachO and COFF. This allows advanced uses of the class to be implemented outside the Object library. In particular, the DyldELFObject subclass is now moved into its logical home - ExecutionEngine/RuntimeDyld. This patch was reviewed by Michael Spencer. llvm-svn: 150327
-
Nick Lewycky authored
that no optz'ns have run yet to convert invokes to calls. llvm-svn: 150326
-
Nick Lewycky authored
llvm-svn: 150324
-
Nick Lewycky authored
to TargetLibraryInfo and use one of them in GlobalOpt. llvm-svn: 150323
-
Nick Lewycky authored
few fixme's when TLI was added. llvm-svn: 150322
-
Craig Topper authored
llvm-svn: 150321
-
Nick Lewycky authored
doxy-style on local variables to not do so. Fix one 80-col violation. llvm-svn: 150320
-
Nick Lewycky authored
llvm-svn: 150319
-
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
-
Bill Wendling authored
Module flags are key-value pairs associated with the module. They include a 'behavior' value, indicating how module flags react when mergine two files. Normally, it's just the union of the two module flags. But if two module flags have the same key, then the resulting flags are dictated by the behaviors. Allowable behaviors are: Error Emits an error if two values disagree. Warning Emits a warning if two values disagree. Require Emits an error when the specified value is not present or doesn't have the specified value. It is an error for two (or more) llvm.module.flags with the same ID to have the Require behavior but different values. There may be multiple Require flags per ID. Override Uses the specified value if the two values disagree. It is an error for two (or more) llvm.module.flags with the same ID to have the Override behavior but different values. llvm-svn: 150300
-
Craig Topper authored
Remove some patterns for matching vector_shuffle instructions since vector_shuffles should be custom lowered before isel. llvm-svn: 150299
-
Andrew Trick authored
In case the MachineScheduling pass I'm working on doesn't work well for another target, they can completely override it. This also adds a hook immediately after the RegAlloc pass to cleanup immediately after vregs go away. We may want to fold it into the postRA hook later. llvm-svn: 150298
-
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
-
Jakob Stoklund Olesen authored
When using register masks, registers like %rip are clobbered by the register mask. LICM should still be able to hoist instructions reading %rip from a loop containing calls. llvm-svn: 150288
-
Jakob Stoklund Olesen authored
Again the goal is to produce identical assembly with register mask operands enabled. llvm-svn: 150287
-
Jakob Stoklund Olesen authored
llvm-svn: 150286
-
- 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
-
Jakob Stoklund Olesen authored
It can be necessary to detach a register mask pointer from its MachineOperand. This method is convenient for checking clobbered physregs on a detached bitmask pointer. llvm-svn: 150261
-
Jakob Stoklund Olesen authored
This makes global live range splitting behave identically with and without register mask operands. This is not necessarily the best way of using register masks for live range splitting. It would be more efficient to first split global live ranges around calls (i.e., register masks), and reserve the fine grained per-physreg interference guidance for global live ranges that do not cross calls. For now the goal is to produce identical assembly when enabling register masks. llvm-svn: 150259
-
Jakob Stoklund Olesen authored
llvm-svn: 150258
-
Jason W Kim authored
llvm-svn: 150251
-
Hal Finkel authored
This allows BBVectorize to check the "unknown instruction" list in the alias sets. This is important to prevent instruction fusing from reordering function calls. Resolves PR11920. llvm-svn: 150250
-
Hal Finkel authored
llvm-svn: 150249
-
Duncan Sands authored
don't assume it is a boolean. llvm-svn: 150247
-
Benjamin Kramer authored
Put instruction names into an indexed string table on the side, removing a pointer from MCInstrDesc. Make them accessible through MCInstrInfo. They are only used for debugging purposes so this doesn't have an impact on performance. X86MCTargetDesc.o goes from 630K to 461K on x86_64. llvm-svn: 150245
-
Andrew Trick authored
llvm-svn: 150233
-
Andrew Trick authored
llvm-svn: 150228
-