Nate Begeman
aecebc076b
Add the necessary support to the ISel to allow targets to codegen the new
...
alignment information appropriately. Includes code for PowerPC to support
fixed-size allocas with alignment larger than the stack. Support for
arbitrarily aligned dynamic allocas coming soon.
llvm-svn: 24224
2005-11-06 09:00:38 +00:00
Chris Lattner
d88f347ba5
minor clarity changes, no functionality difference.
...
llvm-svn: 24223
2005-11-06 08:23:17 +00:00
Chris Lattner
e86e4acf28
don't misencode CC#'s
...
llvm-svn: 24219
2005-11-06 07:46:13 +00:00
Chris Lattner
6c8657e621
encode/decode function alignment in bc files
...
llvm-svn: 24218
2005-11-06 07:43:39 +00:00
Chris Lattner
b456fb372d
Read/write global variable alignments if present
...
llvm-svn: 24216
2005-11-06 07:11:04 +00:00
Chris Lattner
6991a6f23f
print alignment info for globals and functions
...
llvm-svn: 24212
2005-11-06 06:48:53 +00:00
Chris Lattner
96d1807bfc
regenerate
...
llvm-svn: 24211
2005-11-06 06:46:53 +00:00
Chris Lattner
8cda8020c7
Allow globals to have an alignment specified. Switch to using isPowerOf2_32
...
at Jim's request for the checking code.
llvm-svn: 24210
2005-11-06 06:46:28 +00:00
Chris Lattner
f98cdabb75
regenerate
...
llvm-svn: 24208
2005-11-06 06:34:34 +00:00
Chris Lattner
e09addd94b
factor optional alignment
...
llvm-svn: 24207
2005-11-06 06:34:12 +00:00
Duraid Madina
cf11aefc91
ask for 16-byte aligned jmpbufs. This should unbreak C++ on IA64 (and
...
a bunch of other things) but is currently ignored by the code
generator.
llvm-svn: 24206
2005-11-06 04:29:30 +00:00
Chris Lattner
76a2afc0d3
Write/read allocation instruction alignment info to .bc files.
...
llvm-svn: 24203
2005-11-05 22:08:14 +00:00
Chris Lattner
c6ef0112c0
verify that alignments are always a power of 2
...
llvm-svn: 24200
2005-11-05 21:57:54 +00:00
Chris Lattner
a0d532c757
regenerate
...
llvm-svn: 24199
2005-11-05 21:54:23 +00:00
Chris Lattner
f2e7f355a0
Verify that alignment amounts are a power of 2
...
llvm-svn: 24198
2005-11-05 21:54:03 +00:00
Chris Lattner
8eee9a6234
fix printing the alignment directive
...
llvm-svn: 24197
2005-11-05 21:20:34 +00:00
Nate Begeman
f299b9fb03
Add support alignment of allocation instructions.
...
Add support for specifying alignment and size of setjmp jmpbufs.
No targets currently do anything with this information, nor is it presrved
in the bytecode representation. That's coming up next.
llvm-svn: 24196
2005-11-05 09:21:28 +00:00
Chris Lattner
dc19995e25
add a case Nate sent me
...
llvm-svn: 24195
2005-11-05 08:57:56 +00:00
Chris Lattner
0bd3e3230c
Implement Transforms/TailCallElim/return-undef.ll, a trivial case
...
that has been sitting in my inbox since May 18. :)
llvm-svn: 24194
2005-11-05 08:21:11 +00:00
Chris Lattner
4352c050d1
Turn sdiv into udiv if both operands have a clear sign bit. This occurs
...
a few times in crafty:
OLD: %tmp.36 = div int %tmp.35, 8 ; <int> [#uses=1]
NEW: %tmp.36 = div uint %tmp.35, 8 ; <uint> [#uses=0]
OLD: %tmp.19 = div int %tmp.18, 8 ; <int> [#uses=1]
NEW: %tmp.19 = div uint %tmp.18, 8 ; <uint> [#uses=0]
OLD: %tmp.117 = div int %tmp.116, 8 ; <int> [#uses=1]
NEW: %tmp.117 = div uint %tmp.116, 8 ; <uint> [#uses=0]
OLD: %tmp.92 = div int %tmp.91, 8 ; <int> [#uses=1]
NEW: %tmp.92 = div uint %tmp.91, 8 ; <uint> [#uses=0]
Which all turn into shrs.
llvm-svn: 24190
2005-11-05 07:40:31 +00:00
Chris Lattner
297e545d4b
Turn srem -> urem when neither input has their sign bit set. This triggers
...
8 times in vortex, allowing the srems to be turned into shrs:
OLD: %tmp.104 = rem int %tmp.5.i37, 16 ; <int> [#uses=1]
NEW: %tmp.104 = rem uint %tmp.5.i37, 16 ; <uint> [#uses=0]
OLD: %tmp.98 = rem int %tmp.5.i24, 16 ; <int> [#uses=1]
NEW: %tmp.98 = rem uint %tmp.5.i24, 16 ; <uint> [#uses=0]
OLD: %tmp.91 = rem int %tmp.5.i19, 8 ; <int> [#uses=1]
NEW: %tmp.91 = rem uint %tmp.5.i19, 8 ; <uint> [#uses=0]
OLD: %tmp.88 = rem int %tmp.5.i14, 8 ; <int> [#uses=1]
NEW: %tmp.88 = rem uint %tmp.5.i14, 8 ; <uint> [#uses=0]
OLD: %tmp.85 = rem int %tmp.5.i9, 1024 ; <int> [#uses=2]
NEW: %tmp.85 = rem uint %tmp.5.i9, 1024 ; <uint> [#uses=0]
OLD: %tmp.82 = rem int %tmp.5.i, 512 ; <int> [#uses=2]
NEW: %tmp.82 = rem uint %tmp.5.i1, 512 ; <uint> [#uses=0]
OLD: %tmp.48.i = rem int %tmp.5.i.i161, 4 ; <int> [#uses=1]
NEW: %tmp.48.i = rem uint %tmp.5.i.i161, 4 ; <uint> [#uses=0]
OLD: %tmp.20.i2 = rem int %tmp.5.i.i, 4 ; <int> [#uses=1]
NEW: %tmp.20.i2 = rem uint %tmp.5.i.i, 4 ; <uint> [#uses=0]
it also occurs 9 times in gcc, but with odd constant divisors (1009 and 61)
so the payoff isn't as great.
llvm-svn: 24189
2005-11-05 07:28:37 +00:00
Jim Laskey
5a3005b7d0
Fix logic bug in finding retry slot in tally.
...
llvm-svn: 24188
2005-11-05 00:01:25 +00:00
Jim Laskey
305647f84e
Fix a warning
...
llvm-svn: 24187
2005-11-04 18:26:02 +00:00
Duraid Madina
c2c2e353ee
oops, forgot to load GP for indirect calls, though the old code now commented
...
out failed (e.g. methcall) - now the code compiles, though it's not quite
right just yet (tm) ;)
would fix this but it's 3am! :O
llvm-svn: 24186
2005-11-04 17:55:53 +00:00
Duraid Madina
e8456a9175
kill redundant SP/GP/RP save/restores across calls
...
llvm-svn: 24183
2005-11-04 10:01:10 +00:00
Duraid Madina
1c632094d4
add support for loading bools
...
llvm-svn: 24182
2005-11-04 09:59:06 +00:00
Jim Laskey
670144ec9e
Scheduling now uses itinerary data.
...
llvm-svn: 24180
2005-11-04 04:05:35 +00:00
Duraid Madina
f5824e4fa3
fun with predicates! (add TRUNC i64->i1, AND i1 i1, fix XOR i1 i1)
...
llvm-svn: 24175
2005-11-04 00:57:56 +00:00
Duraid Madina
4adb8143ce
add pattern to load constant 0 into a predicate reg
...
llvm-svn: 24164
2005-11-03 10:09:32 +00:00
Chris Lattner
cfb7edb4ed
Fix a bug that prevented this pattern from matching
...
llvm-svn: 24161
2005-11-03 05:45:34 +00:00
Nate Begeman
d6ddce1ced
Fix a crash that Andrew noticed, and add a pair of braces to unfconfuse
...
XCode's indenting.
llvm-svn: 24159
2005-11-02 18:42:59 +00:00
Andrew Lenharth
9a32a77e33
make this 64 bit clean, fixed test30 of /Regression/Transforms/InstCombine/add.ll
...
llvm-svn: 24158
2005-11-02 18:35:40 +00:00
Chris Lattner
776c711246
Fix a QOI issue noticed by Markus F.X.J. Oberhumer.
...
This fixes PR641
llvm-svn: 24154
2005-11-02 17:42:58 +00:00
Duraid Madina
7975eea64d
"fix" support for FP constants (this code asserts in the scheduler,
...
though)
llvm-svn: 24152
2005-11-02 07:32:59 +00:00
Duraid Madina
e89d6f5197
add F0 and F1 to the FP register class
...
llvm-svn: 24151
2005-11-02 07:30:39 +00:00
Chris Lattner
04749a46a0
This works now
...
llvm-svn: 24150
2005-11-02 06:49:37 +00:00
Duraid Madina
94dd783c92
add support for SELECT to TargetSelectionDAG.td, add support for
...
selecting ints to IA64, and a few other ia64 bits and pieces
llvm-svn: 24147
2005-11-02 02:37:18 +00:00
Duraid Madina
b743794294
add support for loading FP constants +0.0 and +1.0 to the dag isel,
...
stop pretending -0.0 and -1.0 are machine constants
llvm-svn: 24146
2005-11-02 02:35:04 +00:00
Chris Lattner
7b5cc7c0e4
Fix a source of undefined behavior when dealing with 64-bit types. This
...
may fix PR652. Thanks to Andrew for tracking down the problem.
llvm-svn: 24145
2005-11-02 01:47:04 +00:00
Jim Laskey
4cb1e29b27
Allow itineraries to be passed through the Target Machine.
...
llvm-svn: 24139
2005-11-01 20:06:59 +00:00
Duraid Madina
28dbc1f9d0
heh, scheduling was easy?
...
need to send chris, jim and sampo a box of fish each
llvm-svn: 24135
2005-11-01 05:49:08 +00:00
Duraid Madina
6314b5fc35
FORTRAN!!! :( and other similarly unfortunate things mean that on ia64
...
one sometimes needs to pass FP args in both FP *and* integer registers.
llvm-svn: 24134
2005-11-01 05:46:16 +00:00
Duraid Madina
7f2a0b1290
so tablegen was thinking I might want to convert FPs to predicates.
...
clever little tablegen!
llvm-svn: 24133
2005-11-01 03:32:15 +00:00
Duraid Madina
c754478fbe
add support for int->FP and FP->int ops, and add ia64 patterns for these
...
llvm-svn: 24132
2005-11-01 03:07:25 +00:00
Duraid Madina
ba4b2d2a1b
add zeroextend predicate->integer
...
llvm-svn: 24131
2005-11-01 01:29:55 +00:00
Chris Lattner
dd58fcaf6b
Add a flag to enable a darwin linker optimization
...
llvm-svn: 24130
2005-11-01 00:12:36 +00:00
Chris Lattner
906dc8d0e5
Make constant pool entries use private labels. This is important when you're
...
not compiling a whole program at a time :)
llvm-svn: 24129
2005-10-31 22:12:06 +00:00
Chris Lattner
fd80437e76
Fix an iterator invalidation problem in code used by the -strip pass
...
llvm-svn: 24124
2005-10-31 18:42:37 +00:00
Chris Lattner
f8e14244c3
Limit the search depth of MaskedValueIsZero to 6 instructions, to avoid
...
bad cases. This fixes Markus's second testcase in PR639, and should
seal it for good.
llvm-svn: 24123
2005-10-31 18:35:52 +00:00
Jim Laskey
8a0072ec92
1. Embed and not inherit vector for NodeGroup.
...
2. Iterate operands and not uses (performance.)
3. Some long pending comment changes.
llvm-svn: 24119
2005-10-31 12:49:09 +00:00