Misha Brukman
a6e58b3cfb
No need to generate a lazy-linking stub for internal functions, they can be
...
resolved by the static linker.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14467 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-28 18:03:37 +00:00
Misha Brukman
9c661c8e26
Do not set the `link' bit when branching to the first BB of a function, as it
...
will cause an infinite loop. The link bit is only used for calling functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14466 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-28 17:57:40 +00:00
Misha Brukman
bb4a90820c
Fix spacing around function arguments.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14463 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-28 15:53:27 +00:00
Brian Gaeke
6bd5551763
Allow saving and restoring of double and float registers.
...
Allow copying of float registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14445 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-27 22:59:56 +00:00
Brian Gaeke
c53105c749
Add FITOS, FITOD, and F{ADD,SUB,MUL,DIV}{S,D}.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14444 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-27 22:53:56 +00:00
Brian Gaeke
8a0ae9e9ca
Support printing constant pool indices.
...
If we see an "unknown operand", abort so it's easier to fix it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14441 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-27 22:50:44 +00:00
Brian Gaeke
ec3227fe39
Trim whitespace.
...
Support cast of ints (and narrower) to float and double.
Support cast double to double (using load and store).
Abort if we see a CallInst or SetCondInst with long/fp args, instead
of producing bad code.
Support add, sub, mul, div of float and double.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14440 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-27 22:47:33 +00:00
Chris Lattner
ea104df2b1
This class is no longer an annotation
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14437 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-27 18:50:49 +00:00
Chris Lattner
4aa5b2affb
Add a map of MachineCodeForInstruction objects to MachineFunctionInfo
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14436 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-27 18:50:30 +00:00
Chris Lattner
159286d60d
Make it obvious that this file is bad bad bad
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14432 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-27 18:21:20 +00:00
Chris Lattner
098648af6a
There is no reason to print ValueType here
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14425 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-26 19:36:34 +00:00
Misha Brukman
34fa8714a4
Allow debugging machine instrs (by printout) before/after isel and regalloc
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14416 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-25 19:57:47 +00:00
Misha Brukman
c6cc10f48f
Combine several if stmts with returns into an if-then-elseif-else chain.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14414 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-25 19:24:52 +00:00
Misha Brukman
d47bbf7ce5
Do not move any values into registers for a void return (there isn't anything).
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14413 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-25 19:04:27 +00:00
Misha Brukman
1cbb3ee75f
Convert tabs to spaces.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14412 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-25 18:45:07 +00:00
Misha Brukman
972569a22f
Fix opcode: no immediate in an `or r1, r2, r3' (all registers) instr.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14411 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-25 18:36:53 +00:00
Misha Brukman
2bf183c092
* Be consistent about MachineBB labels and references to them in instr stream
...
* Use MachineBB's built-in numbering system instead of reinventing one
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14408 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-25 15:42:10 +00:00
Misha Brukman
22e12076e9
* Initialize the entire array statically, not member-at-a-time
...
* Remove x86-specific comment re: intel vs. at&t assembly syntax
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14406 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-25 15:11:34 +00:00
Misha Brukman
9ecf3bf708
Fix bug in previous checkin.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14405 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-25 14:57:19 +00:00
Misha Brukman
911afde4ae
* Wrap long lines
...
* Replace silent fall-through FIXME comments with an error to cerr and an abort
* No need to set size of statically initialized arrays
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14404 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-25 14:50:41 +00:00
Misha Brukman
179d97cfa3
Excise X86-specific comments.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14403 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-25 14:13:26 +00:00
Tanya Lattner
b140762a45
Made a fix so that you can print out MachineInstrs that belong to a MachineBasicBlock that is not yet attached to a MachineFunction. This change includes changing the third operand (TargetMachine) to a pointer for the MachineInstr::print function.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14389 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-25 00:13:11 +00:00
Misha Brukman
75afe1f904
Add option to print out machine code before register allocation.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14387 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 23:55:01 +00:00
Misha Brukman
f3e50bea06
Use DEBUG() guard for printing out debug info.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14386 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 23:54:05 +00:00
Misha Brukman
e327e49913
Add a `break' in the switch/case statement between the int/fp sections.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14385 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 23:53:24 +00:00
Misha Brukman
7f484a5fff
* Lowercase the register names
...
* Parenthesize assert() expressions correctly
* Fix spacing around for() and if() statements
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14384 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 23:51:00 +00:00
Misha Brukman
f54ef97abc
* LowercaseString moved to StringExtras.h
...
* Wrap long line to 80 cols
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14382 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 23:38:20 +00:00
Misha Brukman
ca428df792
* Tabs to spaces
...
* Send an error message to std::cerr before abort()ing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14381 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 23:19:36 +00:00
Misha Brukman
46fd00aec6
* Tabs to spaces
...
* Remove unnecessary parens, braces, clean up code layout
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14379 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 23:04:11 +00:00
Misha Brukman
fadb82f920
Unindent some more code to be consistent.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14377 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 22:00:15 +00:00
Misha Brukman
1916bf9427
Unindent some code, it only needs 2 spaces.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14376 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 21:56:15 +00:00
Misha Brukman
98649d1796
In emitting code for a GEP instr, iterate over GEPTypes because there is one
...
more operand in GEPOps than there are types in GEPTypes: the pointer that is the
first operand of the GEP instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14375 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 21:54:47 +00:00
Brian Gaeke
57ff2e3ee7
Add FSTOD and FDTOS conversion instructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14372 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 21:22:09 +00:00
Brian Gaeke
495a0974f4
Support cast float to float, cast double to float, and cast float to double.
...
(It's not yet clear how to copy doubles from register to register.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14371 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 21:22:08 +00:00
Misha Brukman
05794498d9
* Order #includes
...
* Use the DEBUG() guard for debug printouts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14367 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 17:31:42 +00:00
Brian Gaeke
60c73e4f23
Make the double-fp pseudo registers be "NamedRegs".
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14366 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 09:23:21 +00:00
Brian Gaeke
13dc433df3
Fix a dyn_cast in copyConstantToRegister which should have been a cast.
...
Compactify the code that emits copies of constant ints into registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14365 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 09:17:47 +00:00
Brian Gaeke
be81e82afc
The long integer pseudo-regs are history. So long, we hardly knew ye.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14364 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 08:55:21 +00:00
Brian Gaeke
c7fd0f4675
Use correct add*Imm form in more BuildMI calls.
...
Fix bug in emitGEPOperation where we weren't passing MBB, IP to getReg.
(hey, wouldn't a constant expression lowering pass be cool? huh huhuhuh)
Fix bug in emitGEPOperation where we might try to OR a constant into a
register which was too big to fit in the immediate field.
Support and, or, xor of longs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14363 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 08:55:09 +00:00
Brian Gaeke
af0492ea52
Rename the load and store opcodes. The non-fp ones only have one
...
variant worth worrying about; the fp ones have two.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14362 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 07:37:12 +00:00
Brian Gaeke
e7f9e0b539
Rename the load and store opcodes. The non-fp ones only have one
...
variant worth worrying about; the fp ones have two.
Add fp stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14361 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 07:36:59 +00:00
Brian Gaeke
4473303453
Rename the load and store opcodes. The non-fp ones only have one
...
variant worth worrying about; the fp ones have two.
Stub out the case analysis of int-to-fp casts (no code yet).
I think the number of operands passed to BuildMI for loads was wrong.
Support load and store of float and double.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14360 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 07:36:48 +00:00
Brian Gaeke
7548a540f7
Strange as it may sound, we'll not use LDD/STD to store longs. For reasons of
...
representational consistency, we want to address the halves of each 64-bit value
separately.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14356 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 06:44:57 +00:00
Brian Gaeke
00e514ea6a
Support constant cast expressions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14355 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24 06:33:00 +00:00
Brian Gaeke
a846b729e4
Make the most commonly preselected instructions add to the names of the
...
instructions they augment, instead of replacing them. It's good for debugging,
and it's OK for the sparcv9 backend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14353 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-23 21:41:32 +00:00
Brian Gaeke
f54d912e32
Add pseudo-registers and register class for 64-bit integer values.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14332 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-22 20:14:41 +00:00
Misha Brukman
0280aa9795
Order #includes as per style guide.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14305 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21 21:54:40 +00:00
Misha Brukman
f90e402af8
Direct declaration of namespace-ified globals does not work, must enclose
...
them with a namespace declaration.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14303 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21 21:44:12 +00:00
Misha Brukman
53594deff4
Specify variables' namespace directly instead of using an enclosing namespace.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14302 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21 21:21:49 +00:00
Misha Brukman
e67d5fb6fd
Move implemented interface header up to the top.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14301 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21 21:20:23 +00:00
Misha Brukman
3d357441bf
Spell out `NoFramePointerElim'.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14300 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21 21:18:48 +00:00
Misha Brukman
66d6ee4247
Spell out `NoFramePointerElim' for readability.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14299 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21 21:17:44 +00:00
Misha Brukman
83eaa0b567
Use the common `NoFPElim' setting instead of our own.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14298 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21 21:10:24 +00:00
Misha Brukman
0fb5a66760
Implement `NoFPElim' in a target-agnostic fashion so it can be shared.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14297 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21 21:08:45 +00:00
Misha Brukman
2fec9905aa
* Make indentation consistent at 2 chars
...
* Doxygenify function comments
* Wrap code at 80 cols
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14295 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21 20:22:03 +00:00
Misha Brukman
1e32f79d20
This file is no longer applicable.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14294 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21 20:17:41 +00:00
Misha Brukman
8c9f520b33
llvm/IntrinsicLowering.h => llvm/CodeGen/IntrinsicLowering.h
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14292 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21 18:30:31 +00:00
Misha Brukman
a2916ce49a
Intrinsic::isnan has gone away, support for it commented out.
...
Intrinsic::isunordered has arrived, and we just use the standard lowering
pass for it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14290 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21 17:58:36 +00:00
Misha Brukman
422791fa0b
Convert tabs to spaces.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14289 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21 17:41:12 +00:00
Misha Brukman
358829f151
Type::getPrimitiveID() -> getTypeID()
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14288 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21 17:25:55 +00:00
Misha Brukman
d71bd56caa
Type::getPrimitiveID() -> getTypeID()
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14287 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21 17:19:08 +00:00
Misha Brukman
5dfe3a9c3b
Initial revision
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14283 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21 16:55:25 +00:00
Chris Lattner
3048373748
Move the IntrinsicLowering header into the CodeGen directory, as per PR346
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14266 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-20 07:49:54 +00:00
Brian Gaeke
9d2427c074
.zero doesn't work in the Solaris assembler.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14231 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 08:59:16 +00:00
Brian Gaeke
a3c57624c0
Get rid of selects the easy way
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14230 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 08:46:15 +00:00
Brian Gaeke
cfaf22445c
Make visitAllocaInst() look more like its X86 counterpart.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14229 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 08:45:52 +00:00
Brian Gaeke
4f217fdd10
Mess around with allocation order. In particular, I think we ought to be
...
using the local & in regs first because they are not clobbered by calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14228 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 08:19:08 +00:00
Brian Gaeke
fbaae01269
JMPL has a delay slot.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14227 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 08:18:54 +00:00
Brian Gaeke
0735920173
Clean up the commented-out F3_3 stuff.
...
Replace it with a working class for FP instrs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14226 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 06:28:21 +00:00
Brian Gaeke
f89cc655ab
Fix jmpl.
...
Add some FP moves.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14225 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 06:28:10 +00:00
Brian Gaeke
ceb224148e
Support printing base+offset pairs where the offset is a register.
...
Use this for printing the jmpl indirect-call instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14224 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 06:27:59 +00:00
Brian Gaeke
9d67ea0b61
Support intrinsic calls (although no particular intrinsics are supported yet).
...
Support indirect calls.
Support returning a float value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14223 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 06:27:48 +00:00
Brian Gaeke
562d5b0f6d
Add load instructions for floating-point registers.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14217 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 05:19:27 +00:00
Brian Gaeke
c93a75223d
Support alloca instructions.
...
Support copying floating-point constants to registers.
Add assertion to visitCallInst to abort if we hit a NULL calledFunction, for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14216 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 05:19:16 +00:00
Chris Lattner
667ea024b5
Codegen sub C, X a little bit better for register pressure. Instead of
...
mov REG, C
sub REG, X
generate:
neg X
add X, C
which uses one less reg
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14213 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 00:50:37 +00:00
Chris Lattner
a6f9fe6dbc
Fold setcc instructions into select and branches that are not in the same BB as
...
the setcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14212 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 00:29:22 +00:00
Brian Gaeke
6713d988a4
Make storeRegToStackSlot slightly shorter.
...
Make copyRegToReg return 1 instead of -1.
Edit a comment in emitPrologue().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14211 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 22:34:48 +00:00
Brian Gaeke
070bb4a8da
Set the isBranch and isTerminator flags on branch instructions correctly.
...
Add a FIXME about the (currently unused) JMPL instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14210 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 22:34:29 +00:00
Brian Gaeke
8308d04dbc
Emit stores correctly; don't fail an assertion.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14209 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 22:34:19 +00:00
Brian Gaeke
6c868a4c17
Support generating machine instructions for Phi nodes (based on x86, but with
...
modifications for 1 LLVM BB --> many MBBs).
Fix store operand order: make it always be Base, Offset, SrcReg (think
"[ Base + Offset ] = SrcReg").
Rewrite visitBranchInst() to be even dumber (but working) -- give up on
the branch fallthrough trick, for the time being.
Make visitSetCondInst() work.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14208 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 22:34:08 +00:00
Brian Gaeke
fc7fa31211
Recognize more branches.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14207 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 22:33:57 +00:00
Chris Lattner
ccd9796a46
Do not fold loads into instructions if it is used more than once. In particular
...
we do not want to fold the load in cases like this:
X = load
= add A, X
= add B, X
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14204 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 22:15:25 +00:00
Brian Gaeke
09c1309814
Use addGlobalAddress and addMBB for call & branch targets instead of addPCDisp.
...
Abort if we see a PCRelativeDisp MachineOperand, to be safe. This matches
the X86 backend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14202 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 19:39:23 +00:00
Chris Lattner
f70c22b019
Rename Type::PrimitiveID to TypeId and ::getPrimitiveID() to ::getTypeID()
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14201 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 18:19:28 +00:00
Chris Lattner
4adf066f99
Remove support for llvm.isnan. Alkis wins :)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14189 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-15 21:48:07 +00:00
Chris Lattner
dc5724478e
Add basic support for the isunordered intrinsic. The isnan stuff still needs to go
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14185 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-15 21:36:44 +00:00
Brian Gaeke
d6a1053745
Fix thinko in visitor... ShiftInsts should currently be delegated
...
to visitBinaryOperator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14182 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-15 21:09:46 +00:00
Brian Gaeke
f405280acb
I think we'll use the standard lowering passes for now.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14179 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-15 20:37:12 +00:00
Brian Gaeke
e14e338724
Fix bug generating code for void call instructions: don't call
...
getReg() on void value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14178 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-15 20:06:32 +00:00
Brian Gaeke
5eb64744d0
Squash a warning from the Solaris assembler by aligning the stack
...
on a double-word boundary instead of a single-word boundary.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14177 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-15 19:53:10 +00:00
Brian Gaeke
446ae11d7c
Allow special-casing of operand printing based on opcode. Print
...
non-register, non-immed. arguments to SETHI and OR using %hi() and
%lo() respectively.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14176 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-15 19:52:59 +00:00
Brian Gaeke
9df92825e1
Support constant GEP expressions.
...
Support copying long constants to register pairs.
Support copying ConstantPointerNulls and ConstantPointerRefs to registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14175 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-15 19:16:07 +00:00
Misha Brukman
5478c7a18a
Add file comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14172 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-14 15:13:59 +00:00
Brian Gaeke
f3210d2c53
Make -print-machineinstrs even stronger. You get to see the final code after
...
peepholing, and make it work the same way in the JIT as in LLC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14170 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-14 05:05:45 +00:00
Chris Lattner
01cdb1b367
By far, one of the most common uses of isnan is to make 'isunordered'
...
comparisons. In an 'isunordered' predicate, which looks like this at
the LLVM level:
%a = call bool %llvm.isnan(double %X)
%b = call bool %llvm.isnan(double %Y)
%COM = or bool %a, %b
We used to generate this code:
fxch %ST(1)
fucomip %ST(0), %ST(0)
setp %AL
fucomip %ST(0), %ST(0)
setp %AH
or %AL, %AH
With this patch, we generate this code:
fucomip %ST(0), %ST(1)
fstp %ST(0)
setp %AL
Which should make alkis happy. Tested as X86/compare_folding.llx:test1
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14148 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 05:33:49 +00:00
Chris Lattner
57790422ca
Fix bug in previous checkin
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14146 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 05:22:44 +00:00
Chris Lattner
899dbdcdb0
No really, these are dead now
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14145 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 04:50:14 +00:00
Chris Lattner
0ca2c8e02c
Now that compare instructions aren't lumped in with the other twoargfp instructions,
...
we can get rid of the FpUCOM/FpUCOMi pseudo instructions, which makes stuff simpler
and faster.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14144 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 04:49:02 +00:00
Chris Lattner
ab8deccb82
Introduce a new FP instruction type to separate the compare cases from the
...
twoarg cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14143 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 04:41:24 +00:00
Chris Lattner
b4fe76cbb5
Add direct support for the isnan intrinsic, implementing test/Regression/CodeGen/X86/isnan.llx
...
testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14141 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 04:31:10 +00:00