Alkis Evlogimenos
501e24b28a
Add peephole optimizations for ADD [MEM], IMM8 instructions.
...
llvm-svn: 11511
2004-02-16 23:50:18 +00:00
Alkis Evlogimenos
657876c656
Add two more variants of add. Update comments.
...
llvm-svn: 11510
2004-02-16 23:48:42 +00:00
Chris Lattner
d8cc48da34
Add some ADD instructions that take memory operands for Alkis
...
llvm-svn: 11502
2004-02-16 18:19:31 +00:00
Chris Lattner
336c99d138
Now that the lowerinvoke pass inserts calls to llvm.setjmp/llvm.longjmp, some
...
hacks can be banished. Also, this gives us the opportunity to emit special code
for the setjmp/longjmps which alows the elimination of one GCC warning for every
setjmp/longjmp site (which is often THOUSANDS in C++ programs). Yaay!
llvm-svn: 11484
2004-02-15 22:51:47 +00:00
Alkis Evlogimenos
84318d7bb6
Make dense maps keyed on physical registers smallerusing
...
MRegisterInfo::getNumRegs() instead of
MRegisterInfo::FirstVirtualRegister.
Also use MRegisterInfo::is{Physical,Virtual}Register where
appropriate.
llvm-svn: 11477
2004-02-15 21:37:17 +00:00
Chris Lattner
28131460da
Adjustments to support the new ConstantAggregateZero class
...
llvm-svn: 11474
2004-02-15 05:55:15 +00:00
Chris Lattner
99ed412516
Add support for the new ConstantAggregateZero class
...
llvm-svn: 11473
2004-02-15 05:54:27 +00:00
Chris Lattner
af97b8450d
Implement llvm.(frame|return)address(0) correctly. They are used by the LLVM JIT, among other
...
applications
llvm-svn: 11459
2004-02-15 01:04:03 +00:00
Alkis Evlogimenos
fc768e6db0
Fix problem in DEBUG code. I could be pointing past the end and
...
dereferencing it causes an assertion error.
llvm-svn: 11458
2004-02-15 00:46:41 +00:00
Chris Lattner
679c106ce3
Fix the 'have a framepointer' case, so that the frame pointer always points
...
to the old saved EBP.
llvm-svn: 11455
2004-02-15 00:15:37 +00:00
Alkis Evlogimenos
e8f9647831
Add back machine code deleter pass until we get a MachineCode pass
...
that will be responsible for the creation of MachineFunctions and will
be required by all MachineFunctionPass passes.
llvm-svn: 11453
2004-02-15 00:03:15 +00:00
Chris Lattner
cc5bf36481
Add support for the 'pop' instruction
...
llvm-svn: 11451
2004-02-14 21:06:02 +00:00
Chris Lattner
3246911460
There is no reason to align the stack pointer if there are no callees of this
...
function!
llvm-svn: 11450
2004-02-14 20:11:07 +00:00
Chris Lattner
f28479d600
The prologue/epilogue related method calls have no reason to return a value,
...
make them return void.
This allows us to avoid some costly MBB.size() calls
llvm-svn: 11448
2004-02-14 19:49:54 +00:00
Chris Lattner
1248c8a7f7
finegrainify namespacification, fix 80col prob
...
llvm-svn: 11445
2004-02-14 06:00:36 +00:00
Chris Lattner
c87772961e
Urg, right. These need an input value...
...
llvm-svn: 11443
2004-02-14 04:47:23 +00:00
Chris Lattner
69b716e81c
Codegen llvm.memset into rep stos[bwd]. Simplify code for llvm.memcpy
...
llvm-svn: 11442
2004-02-14 04:46:05 +00:00
Chris Lattner
6890963e48
add 'rep stos[bwd]' instructions
...
llvm-svn: 11441
2004-02-14 04:45:37 +00:00
Chris Lattner
b8ecb673d1
Add support for the returnaddress and frameaddress intrinsics
...
llvm-svn: 11433
2004-02-14 02:55:36 +00:00
Alkis Evlogimenos
a31a767307
Use newly added next() and prior() utility functions.
...
llvm-svn: 11430
2004-02-14 01:18:34 +00:00
Chris Lattner
83c5c942ca
Use intrinsic lowering like the rest of the backends. Get rid of crufty hacky
...
code that worked around problems in the mangler
llvm-svn: 11426
2004-02-14 00:31:10 +00:00
Chris Lattner
bc565b2a6c
There is no need to emit a shift if the size is constant, which is common
...
llvm-svn: 11420
2004-02-13 23:36:47 +00:00
Chris Lattner
3681a0bd3f
Moved directory, update makefile
...
llvm-svn: 11417
2004-02-13 23:31:12 +00:00
Chris Lattner
9301df3932
CBackend now lives here
...
llvm-svn: 11415
2004-02-13 23:29:20 +00:00
Alkis Evlogimenos
6d6ab846af
Remove getAllocatedRegNum(). Use getReg() instead.
...
llvm-svn: 11393
2004-02-13 21:01:20 +00:00
Chris Lattner
da61b0ab20
Squish warning
...
llvm-svn: 11375
2004-02-13 16:14:50 +00:00
Chris Lattner
d1c4f4c833
Add support for the rep movs[bwd] instructions, and emit them when code
...
generating the llvm.memcpy intrinsic.
llvm-svn: 11351
2004-02-12 17:53:22 +00:00
Alkis Evlogimenos
94cab18bdc
Change interface so that we can add to the end of a basic block
...
without getting an assertion from ilist that we are dereferencing
ilist<T>::end().
llvm-svn: 11345
2004-02-12 08:11:04 +00:00
Brian Gaeke
7d1652ca5c
Remove this MachineOpCodeFlags assertion - its test can never be false.
...
llvm-svn: 11342
2004-02-12 04:01:07 +00:00
Alkis Evlogimenos
b755d35fd2
Change MachineBasicBlock's vector of MachineInstr pointers into an
...
ilist of MachineInstr objects. This allows constant time removal and
insertion of MachineInstr instances from anywhere in each
MachineBasicBlock. It also allows for constant time splicing of
MachineInstrs into or out of MachineBasicBlocks.
llvm-svn: 11340
2004-02-12 02:27:10 +00:00
Brian Gaeke
116a667130
MachineInstr::getOpCode() --> getOpcode() in SPARC back-end.
...
llvm-svn: 11335
2004-02-11 20:47:34 +00:00
Chris Lattner
2a50f8218a
s/getOpCode/getOpcode
...
llvm-svn: 11332
2004-02-11 19:26:28 +00:00
Alkis Evlogimenos
fb5edb0b49
Increase constness.
...
llvm-svn: 11322
2004-02-11 17:55:09 +00:00
Alkis Evlogimenos
4b4342e865
Remove assert as the only integer registers on the sparc are physical.
...
llvm-svn: 11317
2004-02-11 06:04:51 +00:00
Alkis Evlogimenos
30c37082ae
Fix previous broken commit. A MachineOperand may have opType ==
...
MO_VirtualRegister but if the register number is one of a physical
register is it considered as a physical register.
llvm-svn: 11315
2004-02-11 05:55:00 +00:00
Alkis Evlogimenos
d2edafbc32
Remove assert as it is meaningless. MachineOperands can be tagged as
...
MO_VirtualRegister but actually be representing a physical register.
llvm-svn: 11310
2004-02-11 04:52:30 +00:00
Chris Lattner
ea85b486f1
Expose the "Other" value type to tablegen targets
...
llvm-svn: 11304
2004-02-11 03:08:45 +00:00
Chris Lattner
db2c8941a5
Add #include
...
llvm-svn: 11285
2004-02-10 21:18:55 +00:00
Chris Lattner
d64519766e
Stop using this method
...
llvm-svn: 11282
2004-02-10 21:12:06 +00:00
Chris Lattner
c9f1da7374
Remove uses of MachineOperand::isVirtualRegister
...
llvm-svn: 11281
2004-02-10 20:55:47 +00:00
Chris Lattner
0d6d4075e3
Remvoe use of MO.isVirtualRegister(), turn an assertion into an assert()
...
llvm-svn: 11280
2004-02-10 20:47:24 +00:00
Chris Lattner
6fb75586ba
Remove use of isPhysicalRegister
...
llvm-svn: 11277
2004-02-10 20:35:42 +00:00
Chris Lattner
d58b38eeca
Don't use MachineOperator::is(Phys|Virt)Register
...
llvm-svn: 11276
2004-02-10 20:31:28 +00:00
Chris Lattner
421302bc54
Tighten up checks
...
llvm-svn: 11274
2004-02-10 20:25:13 +00:00
Chris Lattner
a62e6a4952
Fix PR228: [sparc] Boolean constants are emitted as true and false
...
I will observe that the concept of using WriteAsOperand is completely broken,
but then we all knew that, didn't we?
llvm-svn: 11255
2004-02-10 05:16:44 +00:00
Misha Brukman
ac167832e7
Doxygenify comments.
...
llvm-svn: 11252
2004-02-09 23:18:42 +00:00
John Criswell
c1fa74809a
Fix PR#226: When emitting padding, always emit it as bytes. Bytes can be
...
placed into any alignment situation.
llvm-svn: 11247
2004-02-09 22:15:33 +00:00
Chris Lattner
16690fad3d
Adjust to the changed StructType interface. In particular, getElementTypes() is gone.
...
llvm-svn: 11228
2004-02-09 04:37:31 +00:00
Chris Lattner
8e4aa43710
Add a new (hidden) option that is useful for profiling.
...
llvm-svn: 11218
2004-02-09 01:47:10 +00:00
Alkis Evlogimenos
676e5b8997
Modify the two address instruction pass to remove the duplicate
...
operand of the instruction and thus simplify the register allocation.
llvm-svn: 11124
2004-02-04 22:17:40 +00:00