1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 20:12:56 +02:00
Commit Graph

273 Commits

Author SHA1 Message Date
Jim Laskey
8688957c53 Translate llvm target registers to dwarf register numbers properly.
llvm-svn: 27180
2006-03-27 20:18:45 +00:00
Chris Lattner
e199d55073 #include Intrinsics.h into all dag isels
llvm-svn: 27109
2006-03-25 06:47:10 +00:00
Jim Laskey
1716e53341 Add dwarf register numbering to register data.
llvm-svn: 27081
2006-03-24 21:15:58 +00:00
Jim Laskey
cec9c18c62 Add support to locate local variables in frames (early version.)
llvm-svn: 26994
2006-03-23 18:12:57 +00:00
Chris Lattner
89e0790edb Eliminate IntrinsicLowering from TargetMachine.
Make the CBE and V9 backends create their own, since they're the only ones that use it.

llvm-svn: 26974
2006-03-23 05:43:16 +00:00
Nate Begeman
42736d46b2 Remove BRTWOWAY*
Make the PPC backend not dependent on BRTWOWAY_CC and make the branch
selector smarter about the code it generates, fixing a case in the
readme.

llvm-svn: 26814
2006-03-17 01:40:33 +00:00
Evan Cheng
7ec94f2ff7 Added getTargetLowering() to TargetMachine. Refactored targets to support this.
llvm-svn: 26742
2006-03-13 23:20:37 +00:00
Chris Lattner
125881e75b Add support for 'special' llvm globals like debug info and static ctors/dtors.
llvm-svn: 26628
2006-03-09 06:14:35 +00:00
Duraid Madina
a3c5cd22e1 doo de doo
llvm-svn: 26614
2006-03-08 06:18:46 +00:00
Chris Lattner
6b0947c277 Copysign needs to be expanded everywhere. Note that Alpha and IA64 should
implement copysign as a native op if they have it.

llvm-svn: 26541
2006-03-05 05:08:37 +00:00
Duraid Madina
3fcb00a53f distinguish between objects and register names, now we can have stuff
with names like "f84", "in6" etc etc.

this should fix one or two tests

llvm-svn: 26232
2006-02-16 13:12:57 +00:00
Chris Lattner
599b432345 Switch targets over to using SelectionDAG::getCALLSEQ_START to create
CALLSEQ_START nodes.

llvm-svn: 26143
2006-02-13 09:00:43 +00:00
Duraid Madina
81b9a8f8f7 fix storing booleans (grawp missed this one)
llvm-svn: 26120
2006-02-11 07:33:17 +00:00
Duraid Madina
a514d8d8a6 now short immediates will get matched (previously constants were all
triggering movl 64bit imm fat instructions)

llvm-svn: 26119
2006-02-11 07:32:15 +00:00
Evan Cheng
6bd0f9c4ba Match getTargetNode() changes (now return SDNode* instead of SDOperand).
llvm-svn: 26085
2006-02-09 07:17:49 +00:00
Evan Cheng
521e5a1bfe Change Select() from
SDOperand Select(SDOperand N);
to
void Select(SDOperand &Result, SDOperand N);

llvm-svn: 26067
2006-02-09 00:37:58 +00:00
Evan Cheng
fb902782e8 Use SelectRoot() as entry of any tblgen based isel.
llvm-svn: 25997
2006-02-05 06:46:41 +00:00
Nate Begeman
0be60963bd Fix some of the stuff in the PPC README file, and clean up legalization
of the SELECT_CC, BR_CC, and BRTWOWAY_CC nodes.

llvm-svn: 25875
2006-02-01 07:19:44 +00:00
Evan Cheng
f115c17f23 Allow the specification of explicit alignments for constant pool entries.
llvm-svn: 25855
2006-01-31 22:23:14 +00:00
Chris Lattner
5f0a3df176 Targets all now request ConstantFP to be legalized into TargetConstantFP.
'fpimm' in .td files is now TargetConstantFP.

llvm-svn: 25771
2006-01-29 06:26:08 +00:00
Nate Begeman
87c2c0e66b Implement Promote for VAARG, and allow it to be custom promoted for people
who don't want the default behavior (Alpha).

llvm-svn: 25726
2006-01-28 03:14:31 +00:00
Chris Lattner
d467a681e9 Remove some dead code
llvm-svn: 25719
2006-01-28 00:02:51 +00:00
Nate Begeman
d2c6fbef4a Remove TLI.LowerReturnTo, and just let targets custom lower ISD::RET for
the same functionality.  This addresses another piece of bug 680.  Next,
on to fixing Alpha VAARG, which I broke last time.

llvm-svn: 25696
2006-01-27 21:09:22 +00:00
Chris Lattner
20d4194a0d PHI and INLINEASM are now built-in instructions provided by Target.td
llvm-svn: 25674
2006-01-27 01:46:15 +00:00
Duraid Madina
f868d1777b fix stack corruption! Previously, 16-byte whole-FP-register stores were
being treated as needing only 8 bytes (though they were 16 byte aligned.)

This should fix a bunch of tests - anyone have any comments, though?

  - in Target.td , SpillSize and SpillAlignment seem dead - is this what
    Size and Alignment do now?
  - in CodeGenRegisters.h/CodeGenTarget.cpp , DeclaredSpillSize and
    DeclaredSpillAlignment seem dead.
  - there are a bunch of comments here and there that don't clearly
    distinguish between 'size' and 'spillsize' etc. hmm.

llvm-svn: 25644
2006-01-26 09:45:03 +00:00
Duraid Madina
13335846a8 some hoovering
llvm-svn: 25643
2006-01-26 09:08:31 +00:00
Evan Cheng
7da6daadc7 Set SchedulingForLatency to be the default scheduling preference for all.
llvm-svn: 25607
2006-01-25 18:52:42 +00:00
Nate Begeman
c29fac7fce First part of bug 680:
Remove TLI.LowerVA* and replace it with SDNodes that are lowered the same
way as everything else.

llvm-svn: 25606
2006-01-25 18:21:52 +00:00
Evan Cheng
c368fb710f Default scheduling preference is SchedulingForLatency.
llvm-svn: 25603
2006-01-25 09:15:54 +00:00
Duraid Madina
7d51a9b8e3 add bundling! well not really, for now it's just stop-insertion.
llvm-svn: 25593
2006-01-25 02:23:38 +00:00
Duraid Madina
fa9095ff95 die, die!! r15, you are not callee-saved
llvm-svn: 25527
2006-01-23 06:11:45 +00:00
Duraid Madina
43e8616515 fix register corruption! (my god.) r15 is a scratch reg, using that as
a frame pointer is a pretty doofus thing to do. use r5 instead, and
mark it callee-saved, coz that's what it is!

llvm-svn: 25526
2006-01-23 06:08:46 +00:00
Chris Lattner
aafc339b4e Add explicit #includes of <iostream>
llvm-svn: 25515
2006-01-22 23:41:00 +00:00
Duraid Madina
019bfb760c insignificant, but next up is proper stack frame layout!
llvm-svn: 25497
2006-01-21 14:27:19 +00:00
Duraid Madina
2715941e86 remove RET hack, add proper support for rets (watching out for ret voids)
llvm-svn: 25486
2006-01-20 20:24:31 +00:00
Duraid Madina
94bace229d fix sext breakage: now we correctly deal with functions that return
int vs uint

llvm-svn: 25478
2006-01-20 16:10:05 +00:00
Duraid Madina
b18a42fd3a fix storing bools! eek!
llvm-svn: 25476
2006-01-20 03:40:25 +00:00
Duraid Madina
069b517767 fix boolean XOR (which fixes up comparisons..)
llvm-svn: 25462
2006-01-19 15:18:56 +00:00
Duraid Madina
4b75614c9c BOOM!
llvm-svn: 25460
2006-01-19 14:14:11 +00:00
Duraid Madina
08771721f9 click click
llvm-svn: 25459
2006-01-19 14:13:11 +00:00
Duraid Madina
1946b2ff30 fix calls that return f32
llvm-svn: 25455
2006-01-19 08:31:51 +00:00
Duraid Madina
c667c360e3 oops, this shouldn't have gotten in
llvm-svn: 25388
2006-01-17 03:09:48 +00:00
Duraid Madina
365cb4f82d use proper (82-bit) spills/fills when spilling FP regs, so that
divides don't get broken. this fixes obsequi, smg2000, and probably
a bunch of other stuff (tm)

llvm-svn: 25385
2006-01-17 02:04:52 +00:00
Duraid Madina
f9cc57d93b fixing divides
llvm-svn: 25383
2006-01-17 01:19:49 +00:00
Duraid Madina
d359468147 fixing divides: FP should now be 100%, and integers are fine too
unless you try to div/mod 0 by anything, in which case you will
get some cute number, and not 0, which is bad.

llvm-svn: 25358
2006-01-16 14:33:04 +00:00
Duraid Madina
12da32f440 fix division! again!! pattern isel, prepare to die.
llvm-svn: 25353
2006-01-16 06:33:38 +00:00
Duraid Madina
eb89d7a5d1 explain that r12 is the stack pointer reg
llvm-svn: 25336
2006-01-15 09:45:23 +00:00
Chris Lattner
be7efab5dc Cleanup IA64ISD, tell the graph drawer what the symbolic names for the enums are.
llvm-svn: 25324
2006-01-14 22:27:21 +00:00
Nate Begeman
85b2dc0c4e bswap implementation
llvm-svn: 25312
2006-01-14 03:14:10 +00:00
Duraid Madina
e8b42dc96d don't be a doofus - this fixes storing bools
llvm-svn: 25274
2006-01-13 10:28:25 +00:00
Chris Lattner
ea59d9a498 new nodes
llvm-svn: 25271
2006-01-13 02:40:58 +00:00
Duraid Madina
f6131d02a9 sabre's (correct) fix means these guys need to be flagged as well (else
the scheduler will complain)

llvm-svn: 25241
2006-01-12 03:28:40 +00:00
Chris Lattner
2514d94ca3 Fix an itanium call lowering bug for duraid
llvm-svn: 25235
2006-01-12 01:33:08 +00:00
Nate Begeman
2b45fdffcb Missed a spot.
llvm-svn: 25233
2006-01-11 23:20:28 +00:00
Nate Begeman
cff96008ac Add bswap, rotl, and rotr nodes
Add dag combiner code to recognize rotl, rotr
Add ppc code to match rotl

Targets should add rotl/rotr patterns if they have them

llvm-svn: 25222
2006-01-11 21:21:00 +00:00
Chris Lattner
f9e32005dd tblgen does this now
llvm-svn: 25220
2006-01-11 19:53:22 +00:00
Duraid Madina
52e3f53ea5 cleanup GETFD
llvm-svn: 25198
2006-01-11 03:50:40 +00:00
Duraid Madina
3246f5317b this just might work
llvm-svn: 25195
2006-01-11 01:38:07 +00:00
Duraid Madina
242414e621 add support for selecting bools
FIXME: this is commented out because it makes tblgen go a bit fruity
llvm-svn: 25193
2006-01-11 01:21:12 +00:00
Chris Lattner
6a671ed26f silence a bogus warning
llvm-svn: 25185
2006-01-10 19:45:18 +00:00
Duraid Madina
e2986589aa heh, 'sif it'd be a legalizer bug.
llvm-svn: 25172
2006-01-10 05:26:01 +00:00
Duraid Madina
7034571679 support functions that return bool (this "should" work but doesn't,
*maybe* due to a legalizer bug.)

llvm-svn: 25171
2006-01-10 05:08:25 +00:00
Chris Lattner
88239024ca silence a bogus gcc warning
llvm-svn: 25129
2006-01-06 17:56:38 +00:00
Jim Laskey
41b3ee3c4f Had expand logic backward.
llvm-svn: 25105
2006-01-05 01:47:43 +00:00
Jim Laskey
5eddaee9f3 Added initial support for DEBUG_LABEL allowing debug specific labels to be
inserted in the code.

llvm-svn: 25104
2006-01-05 01:25:28 +00:00
Duraid Madina
2ea271c8bf nasty paste-o, calls passing more than 8 arguments along were having
args >8 put into the wrong place

llvm-svn: 25027
2005-12-27 10:17:03 +00:00
Evan Cheng
231b11ba87 Added field noResults to Instruction.
Currently tblgen cannot tell which operands in the operand list are results so
it assumes the first one is a result. This is bad. Ideally we would fix this
by separating results from inputs, e.g. (res R32:$dst),
(ops R32:$src1, R32:$src2). But that's a more distruptive change. Adding
'let noResults = 1' is the workaround to tell tblgen that the instruction does
not produces a result. It works for now since tblgen does not support
instructions which produce multiple results.

llvm-svn: 25017
2005-12-26 09:11:45 +00:00
Duraid Madina
303d3f1f96 unbreak calls, a few more tests should run. Tomorrow: bugpoint!
llvm-svn: 25010
2005-12-25 14:09:08 +00:00
Duraid Madina
00fbe7a7e4 we don't feed our call instructions extra operands
llvm-svn: 25009
2005-12-25 14:07:01 +00:00
Chris Lattner
73f38507d9 remove dead code
llvm-svn: 24965
2005-12-22 21:16:08 +00:00
Duraid Madina
e009e40008 this is a hack, which may or may not hang around. In short:
whimper out of doing things the Right Way, and hack up a generic
'BRCALL' instruction, that gets generated when calls are lowered.
This gets selected by hand in the DAG isel, where it gets turned
into real (i.e. in tablegen) br.call instructions.

BUG: this dies on void calls, but seems to work otherwise?
llvm-svn: 24952
2005-12-22 13:29:14 +00:00
Duraid Madina
325c2cc07b we can't do this directly in lowering, so we need this case
llvm-svn: 24951
2005-12-22 07:14:45 +00:00
Duraid Madina
bf2a5de0d5 oops, back this out
llvm-svn: 24950
2005-12-22 07:13:51 +00:00
Duraid Madina
d87738a097 we can't all have brains now, can we
llvm-svn: 24948
2005-12-22 06:41:39 +00:00
Duraid Madina
b43dc0ff5b this should take care of calls to varadic functions, but it doesn.,t
BUG: calling printf(string, float) will load the float into the wrong
register, completely forget about loading the string, etce

llvm-svn: 24947
2005-12-22 06:39:57 +00:00
Duraid Madina
d1c9d5ae4d we need to emit the getf.d instruction in lowering, so add it
to IA64ISD

llvm-svn: 24946
2005-12-22 06:38:38 +00:00
Duraid Madina
47cd4eeab0 I shoulda done this a *long* time ago (tm): implement calls properly,
i.e. r1/r12/rp are saved/restored regardless of scheduling/luck

TODO: calls to external symbols, indirect (function descriptor) calls,
      performance (we're being paranoid right now)

BUG: the code for handling calls to vararg functions breaks if FP
args are passed (this will make printf() go haywire so a bunch of
tests will fail)

BUG: this seems to trigger some legalize nastiness
llvm-svn: 24942
2005-12-22 04:07:40 +00:00
Duraid Madina
22eb8a3fb4 kill SelectCALL() in the DAG isel, we handle this in lowering now, like
SPARCv8. (we copy sparcv8's workaround for tablegen not being nice about
ISD::CALL/TAILCALL)

llvm-svn: 24941
2005-12-22 03:58:17 +00:00
Duraid Madina
2c940da498 update tablegen files - nothing to see here
llvm-svn: 24939
2005-12-22 03:56:03 +00:00
Jim Laskey
d82881490c Disengage DEBUG_LOC from non-PPC targets.
llvm-svn: 24919
2005-12-21 20:51:37 +00:00
Chris Lattner
487742bf85 Add some explicit type casts so that tblgen knows the type of the shiftamount, which is not necessarily the same as the type being shifted.
llvm-svn: 24595
2005-12-05 02:34:29 +00:00
Chris Lattner
b86aeb6db6 IA64 doesn't support the LOCATION node, and for some reason the ISelPattern
stuff isn't using ISelLowering.cpp

llvm-svn: 24567
2005-12-01 18:19:53 +00:00
Nate Begeman
811a41a87c Support multiple ValueTypes per RegisterClass, needed for upcoming vector
work.  This change has no effect on generated code.

llvm-svn: 24563
2005-12-01 04:51:06 +00:00
Chris Lattner
a7d31504f9 Pay attn to the node returned by SelectNodeTo
llvm-svn: 24551
2005-11-30 23:02:08 +00:00
Nate Begeman
84be54b731 No longer track value types for asm printer operands, and remove them as
an argument to every operand printing function.  Requires some slight
tweaks to x86, the only user.

llvm-svn: 24541
2005-11-30 18:54:35 +00:00
Chris Lattner
47feb1ecbb No targets support line number info yet.
llvm-svn: 24513
2005-11-29 06:16:21 +00:00
Duraid Madina
9c2283e7c7 add support for dynamic_stackalloc to the dag isel (thanks andrew ;)
next up: support argument passing in memory, not just registers

llvm-svn: 24490
2005-11-25 07:49:25 +00:00
Duraid Madina
5fe9d39b8d add support for div/rem to the dag->dag isel. yay.
llvm-svn: 24472
2005-11-21 14:14:54 +00:00
Chris Lattner
f4b9a79b79 Eliminate unneeded intermediate class. Move doFinalizeMethod to bottom of
file.

llvm-svn: 24470
2005-11-21 08:40:17 +00:00
Chris Lattner
b24983c574 Start using shared asmprinter Constant Pool emitter, use shorter cpi names.
llvm-svn: 24469
2005-11-21 08:38:26 +00:00
Chris Lattner
3e2c6c1d15 Adjust to capitalized AsmPrinter method names
llvm-svn: 24456
2005-11-21 07:51:23 +00:00
Chris Lattner
a0905b348a Use PrivateGlobalPrefix for basic block labels
llvm-svn: 24452
2005-11-21 07:39:22 +00:00
Chris Lattner
b273e59ae8 Start using SwitchSection, allowing globals and functions to be emitted
to specific sections.  Delete some dead functions copied from the X86 backend.

llvm-svn: 24449
2005-11-21 07:26:04 +00:00
Chris Lattner
e5d0064a9d Rename SwitchSection -> switchSection to avoid conflicting with a future
change.

llvm-svn: 24443
2005-11-21 06:55:27 +00:00
Chris Lattner
07ea769304 Start using PrivateGlobalPrefix correctly
llvm-svn: 24442
2005-11-21 06:51:52 +00:00
Duraid Madina
a60348b6b2 add FP select. next up - divide!
llvm-svn: 24346
2005-11-14 01:17:30 +00:00
Chris Lattner
3fdc97d460 Add a new option to indicate we want the code generator to emit code quickly,not spending tons of time microoptimizing it. This is useful for an -O0style of build.
llvm-svn: 24233
2005-11-08 02:11:51 +00:00
Duraid Madina
fb806bb309 add support for storing and returning bools
llvm-svn: 24228
2005-11-07 03:11:02 +00:00
Duraid Madina
f0469f0376 just some random hacking - calls (particularly indirect) need a lot of
love (especially with -sched=simple)

llvm-svn: 24225
2005-11-06 13:43:30 +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