| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
| 
| 
|  | 
Part of rdar://6880388 and rdar://11766377
llvm-svn: 159590
 | 
| | 
| 
| 
| 
|  | 
Contributer: Sasa Stankovic 
llvm-svn: 159574
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
This is still a work in progress but I believe it is currently good enough
to fix PR13122 "Need unit test driver for codegen IR passes".  For example,
you can run llc with -stop-after=loop-reduce to have it dump out the IR after
running LSR.  Serializing machine-level IR is not yet supported but we have
some patches in progress for that.
The plan is to serialize the IR to a YAML file, containing separate sections
for the LLVM IR, machine-level IR, and whatever other info is needed.  Chad
suggested that we stash the stop-after pass in the YAML file and use that
instead of the start-after option to figure out where to restart the
compilation.  I think that's a great idea, but since it's not implemented yet
I put the -start-after option into this patch for testing purposes.
llvm-svn: 159570
 | 
| | 
| 
| 
|  | 
llvm-svn: 159569
 | 
| | 
| 
| 
| 
| 
| 
|  | 
This makes it possible to just use a zero value to represent "no pass", so
the phony NoPassID global variable is no longer needed.
llvm-svn: 159568
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
This is a preliminary step toward having TargetPassConfig be able to
start and stop the compilation at specified passes for unit testing
and debugging.  No functionality change.
llvm-svn: 159567
 | 
| | 
| 
| 
| 
| 
|  | 
My last checkin was apparently not the branch I intended. It was missing one change (added by chandlerc), and contained a spurious change.
llvm-svn: 159548
 | 
| | 
| 
| 
|  | 
llvm-svn: 159546
 | 
| | 
| 
| 
| 
| 
| 
|  | 
register does not have multiple definitions. Modified TwoAddressInstructionPass
to use getUniqueVRegDef instead of getVRegDef.
llvm-svn: 159545
 | 
| | 
| 
| 
| 
| 
|  | 
Reapplies r159406 with minor cleanup. The regressions appear to have been spurious.
llvm-svn: 159541
 | 
| | 
| 
| 
| 
| 
|  | 
Patch by Matt Fischer!
llvm-svn: 159538
 | 
| | 
| 
| 
| 
| 
|  | 
nodes in unwind BB
llvm-svn: 159534
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
- Changed isSingleNumber method behaviour. Now this flag is calculated on demand.
IntegersSubsetMapping
  - Optimized diff operation.
  - Replaced type of Items field from std::list with std::map.
  - Added new methods:
    bool isOverlapped(self &RHS)
    void add(self& RHS, SuccessorClass *S)
    void detachCase(self& NewMapping, SuccessorClass *Succ)
    void removeCase(SuccessorClass *Succ)
    SuccessorClass *findSuccessor(const IntTy& Val)
    const IntTy* getCaseSingleNumber(SuccessorClass *Succ)
IntegersSubsetTest
  - DiffTest: Added checks for successors.
SimplifyCFG
  Updated SwitchInst usage (now it is case-ragnes compatible) for
    - SimplifyEqualityComparisonWithOnlyPredecessor
    - FoldValueComparisonIntoPredecessors
llvm-svn: 159527
 | 
| | 
| 
| 
|  | 
llvm-svn: 159522
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
parser:
1) DIContext is now able to return function name for a given instruction address (besides file/line info).
2) llvm-dwarfdump accepts flag --functions that prints the function name (if address is specified by --address flag).
3) test case that checks the basic functionality of llvm-dwarfdump added
llvm-svn: 159512
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
implicit_def, the other instruction can be anything, including instructions
that define multiple values. Be careful about that and don't assume what operand
0 is.
Fixes pr13249.
llvm-svn: 159509
 | 
| | 
| 
| 
| 
| 
|  | 
instruction on AVX2.
llvm-svn: 159504
 | 
| | 
| 
| 
| 
| 
|  | 
SelectAtomic64. Also catch cases where SelectAtomic64 fails.
llvm-svn: 159503
 | 
| | 
| 
| 
|  | 
llvm-svn: 159502
 | 
| | 
| 
| 
| 
| 
|  | 
value for the last argument.
llvm-svn: 159501
 | 
| | 
| 
| 
| 
| 
|  | 
code. Reduces code size a bit.
llvm-svn: 159500
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
ValueHandle keys.
No functionality change.
llvm-svn: 159497
 | 
| | 
| 
| 
|  | 
llvm-svn: 159491
 | 
| | 
| 
| 
| 
| 
|  | 
a reduced testcase, but this fixes pr13209.
llvm-svn: 159479
 | 
| | 
| 
| 
| 
| 
|  | 
this point
llvm-svn: 159471
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Use getUniqueVRegDef.
Replace a loop with existing interfaces: modifiesRegister and readsRegister.
Factor out code into inline functions and simplify the code.
llvm-svn: 159470
 | 
| | 
| 
| 
| 
| 
|  | 
instructions with two register operands.
llvm-svn: 159465
 | 
| | 
| 
| 
| 
| 
| 
|  | 
When a local virtual register is made global, make sure to clear any
existing kill flags.
llvm-svn: 159461
 | 
| | 
| 
| 
| 
| 
| 
|  | 
This would previously get reported as the misleading "Virtual register
def doesn't dominate all uses."
llvm-svn: 159460
 | 
| | 
| 
| 
| 
| 
|  | 
This happens when codegenprepare is invoked via opt.
llvm-svn: 159457
 | 
| | 
| 
| 
| 
| 
|  | 
This comes in handy during peephole optimization.
llvm-svn: 159453
 | 
| | 
| 
| 
| 
| 
|  | 
really happening.  No intended functionality change.
llvm-svn: 159451
 | 
| | 
| 
| 
| 
| 
|  | 
recognize invoke, and shouldnt at this point, since the rest of LLVM codebase doesnt expect invoke of intrinsics
llvm-svn: 159441
 | 
| | 
| 
| 
| 
| 
|  | 
not ready to handle invokes. instcombine will take care of this.
llvm-svn: 159440
 | 
| | 
| 
| 
|  | 
llvm-svn: 159433
 | 
| | 
| 
| 
| 
| 
| 
|  | 
the optimizers producing a multiply expression with more multiplications than
the original (!).
llvm-svn: 159426
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
This was always part of the VMCore library out of necessity -- it deals
entirely in the IR. The .cpp file in fact was already part of the VMCore
library. This is just a mechanical move.
I've tried to go through and re-apply the coding standard's preferred
header sort, but at 40-ish files, I may have gotten some wrong. Please
let me know if so.
I'll be committing the corresponding updates to Clang and Polly, and
Duncan has DragonEgg.
Thanks to Bill and Eric for giving the green light for this bit of cleanup.
llvm-svn: 159421
 | 
| | 
| 
| 
|  | 
llvm-svn: 159417
 | 
| | 
| 
| 
| 
| 
| 
|  | 
(a.k.a. MDNodes). The module doesn't belong in Analysis. Move it to the VMCore
instead.
llvm-svn: 159414
 | 
| | 
| 
| 
| 
| 
|  | 
This reverts commit r159406. I noticed a performance regression so I'll back out for now.
llvm-svn: 159411
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
Before this patch in pic 32 bit code we would add the global base register
and not load from that address. This is a really old bug, but before the
introduction of the tls attributes we would never select initial exec for
pic code.
llvm-svn: 159409
 | 
| | 
| 
| 
|  | 
llvm-svn: 159408
 | 
| | 
| 
| 
|  | 
llvm-svn: 159407
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
The TargetInstrInfo::getNumMicroOps API does not change, but soon it
will be used by MachineScheduler. Now each subtarget can specify the
number of micro-ops per itinerary class. For ARM, this is currently
always dynamic (-1), because it is used for load/store multiple which
depends on the number of register operands.
Zero is now a valid number of micro-ops. This can be used for
nop pseudo-instructions or instructions that the hardware can squash
during dispatch.
llvm-svn: 159406
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Corrected type for index of llvm.x86.avx2.gather.d.pd.256
  from 256-bit to 128-bit.
Corrected types for src|dst|mask of llvm.x86.avx2.gather.q.ps.256
  from 256-bit to 128-bit.
Support the following intrinsics:
  llvm.x86.avx2.gather.d.q, llvm.x86.avx2.gather.q.q
  llvm.x86.avx2.gather.d.q.256, llvm.x86.avx2.gather.q.q.256
  llvm.x86.avx2.gather.d.d, llvm.x86.avx2.gather.q.d
  llvm.x86.avx2.gather.d.d.256, llvm.x86.avx2.gather.q.d.256
llvm-svn: 159402
 | 
| | 
| 
| 
| 
| 
|  | 
the assert reported in PR13228!
llvm-svn: 159393
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
invoked
While at it, merge 2 tests and FileCheckize them
llvm-svn: 159388
 | 
| | 
| 
| 
|  | 
llvm-svn: 159385
 | 
| | 
| 
| 
|  | 
llvm-svn: 159384
 | 
| | 
| 
| 
| 
| 
|  | 
CodeGen to ignore calls to it
llvm-svn: 159383
 |