1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-28 14:32:51 +01:00
Commit Graph

6518 Commits

Author SHA1 Message Date
Eric Christopher
4f05c48718 Move GetConstantStringInfo to lib/Analysis. Remove
string output routine from Constant. Update all
callers. Change debug intrinsic api slightly to
accomodate move of routine, these now return values
instead of strings.

llvm-svn: 52748
2008-06-26 00:31:12 +00:00
Owen Anderson
68f11ecb86 Remember which MachineOperand we were processing, so we don't have to scan the list to find it again later.
This speeds up live intervals from 0.37s to 0.30s on instcombine.

llvm-svn: 52745
2008-06-25 23:39:39 +00:00
Duncan Sands
12c1bee452 Add support for expanding PPC 128 bit floats.
For this it is convenient to permit floats to
be used with EXTRACT_ELEMENT, so I tweaked
things to allow that.  I also added libcalls
for ppcf128 to i32 forms of FP_TO_XINT, since
they exist in libgcc and this case can certainly
occur (and does occur in the testsuite) - before
the i64 libcall was being used.  Also, the
XINT_TO_FP result seemed to be wrong when
the argument is an i128: the wrong fudge
factor was added (the i32 and i64 cases were
handled directly, but the i128 code fell
through to some generic softening code which
seemed to think it was i64 to f32!).  So I
fixed it by adding a fudge factor that I
found in my breakfast cereal.

llvm-svn: 52739
2008-06-25 20:24:48 +00:00
Chris Lattner
ef1aa7c9db Switch the PPC backend and target-independent JIT to use the libsystem
InvalidateInstructionCache method instead of calling through
a hook on the JIT.  This is a host feature, not a target feature.

llvm-svn: 52734
2008-06-25 17:18:44 +00:00
Chris Lattner
24c59453f6 Add a new InvalidateInstructionCache method to sys::Memory.
llvm-svn: 52731
2008-06-25 17:14:10 +00:00
Dan Gohman
404964dbc0 Remove the OrigVT member from AtomicSDNode, as it is redundant with
the base SDNode's VTList.

llvm-svn: 52722
2008-06-25 16:07:49 +00:00
Mon P Wang
7d89d61387 Added MemOperands to Atomic operations since Atomics touches memory.
Added abstract class MemSDNode for any Node that have an associated MemOperand
Changed atomic.lcs => atomic.cmp.swap, atomic.las => atomic.load.add, and
atomic.lss => atomic.load.sub

llvm-svn: 52706
2008-06-25 08:15:39 +00:00
Dan Gohman
7ee5cc0883 Make Allocate<T>() return a T* instead of a void*. And use
static_cast instead of reinterpret_cast.

llvm-svn: 52686
2008-06-24 17:49:26 +00:00
Dan Gohman
12c7695dcf Correct a comment.
llvm-svn: 52683
2008-06-24 17:46:48 +00:00
Chris Lattner
7fdc625548 Add support for building on solaris, working around namespace
polution problems from system headers.  Patch by Nathan Keynes!

llvm-svn: 52682
2008-06-24 17:44:42 +00:00
Dan Gohman
d1ec941698 Pass std::string by reference. Thanks Chris!
llvm-svn: 52678
2008-06-24 16:40:22 +00:00
Matthijs Kooijman
bb456f6b42 Rename a few variables to be more consistent.
llvm-svn: 52672
2008-06-24 09:14:10 +00:00
Owen Anderson
501d3ab521 Remove an incorrect comment.
llvm-svn: 52660
2008-06-24 00:15:10 +00:00
Owen Anderson
dffc50e90f Use InstrSlots::NUM rather than pre-dividing by four. Also, mark this const.
llvm-svn: 52659
2008-06-24 00:08:35 +00:00
Dan Gohman
13e2ffe637 Comment fixes, and make Schedule() pure virtual.
llvm-svn: 52658
2008-06-24 00:02:44 +00:00
Dan Gohman
490250e7f2 Add a clear() method to PriorityQueue.
llvm-svn: 52656
2008-06-23 23:47:46 +00:00
Owen Anderson
df17544cd3 Add getScaledIntervalSize, which gives a measure of the size of an interval that is independent of the scaling of
the function due to empty index slots.  This is suitable for use in backend heuristics that need to reason about the density
of an interval.

llvm-svn: 52652
2008-06-23 23:25:37 +00:00
Dan Gohman
512bf41c02 Simplify erase_one slightly. It's not necessary to preserve
the value of the element to be erased while the heap is
being updated.

llvm-svn: 52646
2008-06-23 21:46:21 +00:00
Dan Gohman
a989f4f916 Use StringMap instead of std::map<std::string, SDNode*>.
llvm-svn: 52641
2008-06-23 21:08:32 +00:00
Dan Gohman
54b67be86a Add methods to StringMap to erase entries by key.
llvm-svn: 52640
2008-06-23 21:07:03 +00:00
Evan Cheng
6e5a126667 Instead of adding an isSS field to LiveInterval to denote stack slot. Use top bit of 'reg' instead. If the top bit is set, than the LiveInterval represents a stack slot live interval.
llvm-svn: 52639
2008-06-23 21:03:19 +00:00
Wojciech Matyjewicz
1de28ac425 First step to fix PR2088. Implement routine to compute the
multiplicative inverse of a given number. Modify udivrem to allow input and 
output pairs of arguments to overlap. Patch is based on the work by Chandler
Carruth.

llvm-svn: 52638
2008-06-23 19:39:50 +00:00
Dan Gohman
b52f318a0c Remove two convenience constructors because they're now private, and the
private implementation doesn't really need the convenience.

llvm-svn: 52629
2008-06-23 16:48:17 +00:00
Dan Gohman
696e841b14 Remove an unnecessary cast.
llvm-svn: 52626
2008-06-23 16:38:10 +00:00
Dan Gohman
81c83d9a1d Use SCEVAddRecExpr::isAffine.
llvm-svn: 52614
2008-06-22 19:23:09 +00:00
Dan Gohman
311865bd24 Move a few more SCEVExpander methods out-of-line.
llvm-svn: 52612
2008-06-22 19:09:18 +00:00
Dan Gohman
3ae70927cf Reorder some fields in SDNode. This avoids padding,
reducings its size from 80 to 72 on 64-bit hosts.

llvm-svn: 52584
2008-06-21 19:26:15 +00:00
Dan Gohman
015a5ca374 Remove ScheduleDAG's SUnitMap altogether. Instead, use SDNode's NodeId
field, which is otherwise unused after instruction selection, as an index
into the SUnit array.

llvm-svn: 52583
2008-06-21 19:18:17 +00:00
Dan Gohman
4099d0bf27 Add a priority queue class, which is a wrapper around std::priority_queue
and provides fairly efficient removal of arbitrary elements. Switch
ScheduleDAGRRList from std::set to this new priority queue.

llvm-svn: 52582
2008-06-21 18:35:25 +00:00
Dan Gohman
3a5a96e045 Change ScheduleDAG's SUnitMap from DenseMap<SDNode*, vector<SUnit*> >
to DenseMap<SDNode*, SUnit*>, and adjust the way cloned SUnit nodes are
handled so that only the original node needs to be in the map.
This speeds up llc on 447.dealII.llvm.bc by about 2%.

llvm-svn: 52576
2008-06-21 15:52:51 +00:00
Evan Cheng
1d07cd32c2 Undo spill weight tweak. Need to investigate the performance regressions.
llvm-svn: 52572
2008-06-21 06:45:54 +00:00
Duncan Sands
57f1b4e23c Add some methods for querying the nature of a
store, like the methods for loads (and neaten
those up a bit while there).

llvm-svn: 52547
2008-06-20 18:34:30 +00:00
Dan Gohman
f62b13bc3d Add an allnodes_size method.
llvm-svn: 52541
2008-06-20 16:03:16 +00:00
Dan Gohman
d61d67b75c It's invalid to take the one-past-the-end address of a non-array
object.

llvm-svn: 52515
2008-06-20 00:49:21 +00:00
Owen Anderson
5eeafbc3f7 Add an idx_iterator to the insertvalue and extractvalue instructions.
llvm-svn: 52493
2008-06-19 17:15:57 +00:00
Dan Gohman
42e4ecff62 The inline keyword goes before the return type. This fixes a compiler warning.
llvm-svn: 52492
2008-06-19 16:16:06 +00:00
Evan Cheng
968679913e Minor spiller tweak to unfavor reload into load/store instructions.
llvm-svn: 52477
2008-06-19 01:16:17 +00:00
Dan Gohman
606a60ad68 Move SCEVExpander::visitAddExpr out-of-line.
llvm-svn: 52464
2008-06-18 16:37:11 +00:00
Dan Gohman
82f9df016e Move LSR's private isZero function to a public SCEV member
function, and make use of it in several places.

llvm-svn: 52463
2008-06-18 16:23:07 +00:00
Evan Cheng
e447be0532 Add MachineRegisterInfo::use_empty.
llvm-svn: 52451
2008-06-18 07:47:55 +00:00
Devang Patel
960d6ae6d1 Check empty dominance frontier.
llvm-svn: 52437
2008-06-18 02:12:09 +00:00
Dan Gohman
c190d65454 Auto-upgrade code for multiple-value return statements. This code
isn't actually called yet.

llvm-svn: 52435
2008-06-17 23:38:43 +00:00
Owen Anderson
79605db969 Add an insertBefore method for attaching previously unattached instructions,
such as those created by clone(), to a basic block.

llvm-svn: 52424
2008-06-17 18:29:27 +00:00
Owen Anderson
609a53ac86 Fix use of placement new to actually use an address.
llvm-svn: 52423
2008-06-17 18:07:43 +00:00
Anton Korobeynikov
5b04f6d658 Provide generic hooks for icache invalidation. Add PPC implementation.
Patch by Gary Benson!

llvm-svn: 52418
2008-06-17 17:30:05 +00:00
Matthijs Kooijman
44440c3722 Forgot to commit the ValueTracking header file along with r52396.
llvm-svn: 52401
2008-06-17 13:54:33 +00:00
Matthijs Kooijman
2fba6e78d6 80 column fixes.
llvm-svn: 52391
2008-06-17 08:26:32 +00:00
Chris Lattner
f461cca6b7 add a new -enable-value-prop flag for llcbeta, that enables propagation
of value info (sign/zero ext info) from one MBB to another.  This doesn't
handle much right now because of two limitations:

1) only handles zext/sext, not random bit propagation (no assert exists 
   for this)
2) doesn't handle phis.

llvm-svn: 52383
2008-06-17 06:09:18 +00:00
Evan Cheng
4e7b7b21a2 Horizontal-add instructions are not commutative.
llvm-svn: 52363
2008-06-16 21:16:24 +00:00
Gabor Greif
ae2be0f217 Move some documentation from the header file into ProgrammersManual. About to improve.
llvm-svn: 52360
2008-06-16 21:06:12 +00:00