| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
| 
| 
|  | 
consistency with setExceptionPointerRegister(...).
llvm-svn: 150460
 | 
| | 
| 
| 
|  | 
llvm-svn: 150457
 | 
| | 
| 
| 
|  | 
llvm-svn: 150449
 | 
| | 
| 
| 
|  | 
llvm-svn: 150447
 | 
| | 
| 
| 
|  | 
llvm-svn: 150444
 | 
| | 
| 
| 
| 
| 
|  | 
This folds a simple loop tail into a loop latch. It covers the common (in fortran) case of postincrement loops. It's a "free" way to expose this type of loop to downstream loop optimizations that bail out on non-canonical loops (getLoopLatch is a heavily used check).
llvm-svn: 150439
 | 
| | 
| 
| 
|  | 
llvm-svn: 150438
 | 
| | 
| 
| 
| 
| 
| 
|  | 
marking them as "live-in" into a BB ruins some invariants that the back-end
tries to maintain.
llvm-svn: 150437
 | 
| | 
| 
| 
|  | 
llvm-svn: 150436
 | 
| | 
| 
| 
|  | 
llvm-svn: 150433
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
The scheduler will sometimes check the implicit-def list on instructions
to properly handle pre-colored DAG edges.
Also check any register mask operands for physreg clobbers.
llvm-svn: 150428
 | 
| | 
| 
| 
|  | 
llvm-svn: 150425
 | 
| | 
| 
| 
| 
| 
| 
|  | 
(but not of) a block pointer do not cause the block pointer to
escape. This fixes rdar://10803830.
llvm-svn: 150424
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Clang patch (flags) will follow shortly.
The run-time library will also follow, but not immediately.
llvm-svn: 150423
 | 
| | 
| 
| 
|  | 
llvm-svn: 150411
 | 
| | 
| 
| 
|  | 
llvm-svn: 150404
 | 
| | 
| 
| 
| 
| 
|  | 
generate a shuffle node from two vectors of different types.
llvm-svn: 150383
 | 
| | 
| 
| 
| 
| 
|  | 
copy/paste fiasco.
llvm-svn: 150369
 | 
| | 
| 
| 
|  | 
llvm-svn: 150365
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
- 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
 | 
| | 
| 
| 
| 
| 
|  | 
specific nodes when they get to isel.
llvm-svn: 150363
 | 
| | 
| 
| 
|  | 
llvm-svn: 150362
 | 
| | 
| 
| 
| 
| 
|  | 
have one use. Matches DAGCombiner and prevents vector_shuffles from reaching isel.
llvm-svn: 150360
 | 
| | 
| 
| 
| 
| 
|  | 
It caused 3 failures on pre-penryn and non-x86(generic) hosts.
llvm-svn: 150357
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
|  | 
llvm-svn: 150332
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
the process. Some of these are still a bit gross.
Still, this cuts 80 some lines out of this ridiculous file. ;]
llvm-svn: 150331
 | 
| | 
| 
| 
|  | 
llvm-svn: 150328
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
|  | 
that no optz'ns have run yet to convert invokes to calls.
llvm-svn: 150326
 | 
| | 
| 
| 
|  | 
llvm-svn: 150324
 | 
| | 
| 
| 
| 
| 
|  | 
to TargetLibraryInfo and use one of them in GlobalOpt.
llvm-svn: 150323
 | 
| | 
| 
| 
| 
| 
|  | 
few fixme's when TLI was added.
llvm-svn: 150322
 | 
| | 
| 
| 
|  | 
llvm-svn: 150321
 | 
| | 
| 
| 
| 
| 
|  | 
doxy-style on local variables to not do so. Fix one 80-col violation.
llvm-svn: 150320
 | 
| | 
| 
| 
|  | 
llvm-svn: 150319
 | 
| | 
| 
| 
|  | 
llvm-svn: 150314
 | 
| | 
| 
| 
| 
| 
|  | 
Patch by Kai Nacke!
llvm-svn: 150307
 | 
| | 
| 
| 
|  | 
llvm-svn: 150305
 | 
| | 
| 
| 
|  | 
llvm-svn: 150304
 | 
| | 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
|  | 
vector_shuffles should be custom lowered before isel.
llvm-svn: 150299
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Again the goal is to produce identical assembly with register mask
operands enabled.
llvm-svn: 150287
 | 
| | 
| 
| 
|  | 
llvm-svn: 150286
 | 
| | 
| 
| 
| 
| 
| 
|  | 
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
 |