| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
(what matters is that it is added to the worklist),
it seems more logical to return it.
llvm-svn: 55606
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
attributes on functions, based on the result of
alias analysis. It's not hardwired to use
GlobalsModRef even though this is the only (AFAIK)
alias analysis that results in this pass actually
doing something. Enable as follows:
opt ... -globalsmodref-aa -markmodref ...
Advantages of this pass: (1) records the result
of globalsmodref in the bitcode, meaning it is
available for use by later passes (currently
the pass manager isn't smart enough to magically
make an advanced alias analysis available to all
later passes), which may expose more optimization
opportunities; (2) hopefully speeds up compilation
when code is optimized twice, for example when a
file is compiled to bitcode, then later LTO is done
on it: marking functions readonly/readnone when
producing the initial bitcode should speed up alias
analysis during LTO; (3) good for discovering that
globalsmodref doesn't work very well :)
Not currently turned on by default.
llvm-svn: 55604
|
|
|
|
| |
llvm-svn: 55601
|
|
|
|
| |
llvm-svn: 55599
|
|
|
|
| |
llvm-svn: 55598
|
|
|
|
| |
llvm-svn: 55597
|
|
|
|
| |
llvm-svn: 55596
|
|
|
|
| |
llvm-svn: 55594
|
|
|
|
| |
llvm-svn: 55593
|
|
|
|
| |
llvm-svn: 55591
|
|
|
|
| |
llvm-svn: 55590
|
|
|
|
| |
llvm-svn: 55588
|
|
|
|
|
|
|
|
| |
instructions in CellSPU as "Expand" so that they won't be generated. I added a
"FIXME" so that this hack can be addressed and reverted once ISD::ROTR is
supported in the .td files.
llvm-svn: 55582
|
|
|
|
|
|
| |
Dale, Could you please review this?
llvm-svn: 55581
|
|
|
|
| |
llvm-svn: 55578
|
|
|
|
| |
llvm-svn: 55577
|
|
|
|
| |
llvm-svn: 55576
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
// fold (or (shl x, (*ext y)), (srl x, (*ext (sub 32, y)))) ->
// (rotl x, y)
// fold (or (shl x, (*ext y)), (srl x, (*ext (sub 32, y)))) ->
// (rotr x, (sub 32, y))
Example: (x == 0xDEADBEEF and y == 4)
(x << 4) | (x >> 28)
=> 0xEADBEEF0 | 0x0000000D
=> 0xEADBEEFD
(rotl x, 4)
=> 0xEADBEEFD
(rotr x, 28)
=> 0xEADBEEFD
- Fix comment and code for second version. It wasn't using the rot* propertly.
// fold (or (shl x, (*ext (sub 32, y))), (srl x, (*ext r))) ->
// (rotr x, y)
// fold (or (shl x, (*ext (sub 32, y))), (srl x, (*ext r))) ->
// (rotl x, (sub 32, y))
(x << 28) | (x >> 4)
=> 0xD0000000 | 0x0DEADBEE
=> 0xDDEADBEE
(rotl x, 4)
=> 0xEADBEEFD
(rotr x, 28)
=> (0xEADBEEFD)
llvm-svn: 55575
|
|
|
|
| |
llvm-svn: 55574
|
|
|
|
| |
llvm-svn: 55571
|
|
|
|
|
|
| |
Based on patch by Giorgos Korfiatis.
llvm-svn: 55570
|
|
|
|
|
|
|
| |
Breakage was exposed in the Ocaml bindings tests after Chris
uncommented an assertion in r55084.
llvm-svn: 55566
|
|
|
|
| |
llvm-svn: 55565
|
|
|
|
|
|
| |
the implicit defs onto the remat'ed instruction.
llvm-svn: 55564
|
|
|
|
| |
llvm-svn: 55563
|
|
|
|
|
|
| |
various passes cannot handle remating these.
llvm-svn: 55562
|
|
|
|
|
|
| |
shift instructions 2nd operand (shift count) is limited to 0 to 31 (or 63 in the x86-64 case).
llvm-svn: 55558
|
|
|
|
|
|
|
|
|
|
|
| |
respect the pre-chosen vreg
assignment when selecting the def. This is the naive solution to the problem: insert a copy to the pre-chosen
vreg. Other solutions might be preferable, such as:
1) Passing the dest reg into FastEmit_. However, this would require the higher level code to know about reg classes, which they don't currently.
2) Selecting blocks in reverse postorder. This has some compile time cost for computing the order, and we'd need to measure its impact.
llvm-svn: 55555
|
|
|
|
| |
llvm-svn: 55554
|
|
|
|
|
|
| |
(safely this time).
llvm-svn: 55553
|
|
|
|
| |
llvm-svn: 55552
|
|
|
|
| |
llvm-svn: 55551
|
|
|
|
| |
llvm-svn: 55549
|
|
|
|
| |
llvm-svn: 55548
|
|
|
|
| |
llvm-svn: 55546
|
|
|
|
|
|
| |
physical registers.
llvm-svn: 55545
|
|
|
|
| |
llvm-svn: 55542
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
%4 = add ...
instead of:
add ... ; 4
This makes opt -print-cfg output actually usable and makes .ll files
generally easier to read. This fixes PR2480
llvm-svn: 55541
|
|
|
|
|
|
|
|
|
|
| |
nameless values, such as:
%3 = add i32 4, 2
This fixes the first half of PR2480
llvm-svn: 55539
|
|
|
|
| |
llvm-svn: 55533
|
|
|
|
|
|
| |
encode the opcode.
llvm-svn: 55531
|
|
|
|
| |
llvm-svn: 55530
|
|
|
|
| |
llvm-svn: 55528
|
|
|
|
| |
llvm-svn: 55521
|
|
|
|
|
|
| |
functionality changes.
llvm-svn: 55518
|
|
|
|
| |
llvm-svn: 55512
|
|
|
|
| |
llvm-svn: 55511
|
|
|
|
| |
llvm-svn: 55508
|
|
|
|
|
|
|
| |
whose darwin code was written after the ability to dynamically register frames,
we need to do special hacks to make things work.
llvm-svn: 55507
|
|
|
|
|
|
| |
Node to reflect semantics
llvm-svn: 55504
|