1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-29 23:12:55 +01:00
Commit Graph

468 Commits

Author SHA1 Message Date
Chris Lattner
2b66656dd9 Switch constant pool printing over to use the Shared AsmPrinter version
llvm-svn: 24765
2005-12-17 07:11:43 +00:00
Chris Lattner
9fcfd38a6d Use the shared AsmPrinter code for some basic stuff. No functionality
change except for fewer .section directives emitted

llvm-svn: 24764
2005-12-17 07:04:29 +00:00
Chris Lattner
cf47f48fe0 Convert the remaining instructions over, branches and calls. Fix a couple
minor bugs

llvm-svn: 24762
2005-12-17 06:54:41 +00:00
Chris Lattner
b3456f1885 convert FP instructions to use an asmstring and operand list, allowing FP
programs to work on V8 again

llvm-svn: 24761
2005-12-17 06:32:52 +00:00
Chris Lattner
2c9fd95c73 add some notes
llvm-svn: 24745
2005-12-16 07:20:53 +00:00
Chris Lattner
86914b7f4e Add a couple more instrs
llvm-svn: 24744
2005-12-16 07:18:48 +00:00
Chris Lattner
29c644f929 remove some dead code
llvm-svn: 24743
2005-12-16 07:16:02 +00:00
Chris Lattner
a7ead87ba4 asmprint pseudo instrs
llvm-svn: 24742
2005-12-16 07:13:26 +00:00
Chris Lattner
16896ce1ed Autogenerate asmprinter for F3_2 instructions
llvm-svn: 24741
2005-12-16 07:10:02 +00:00
Chris Lattner
b9b7b057d6 Switch F3_1 instructions over to use AsmStrings
llvm-svn: 24740
2005-12-16 06:52:00 +00:00
Chris Lattner
8fd4bf0ac7 Plug in basic hooks for an autogenerated asm printer to fill in.
llvm-svn: 24739
2005-12-16 06:34:17 +00:00
Chris Lattner
60e5e47904 Add operand info for F3_[12] instructions, getting V8 back to basic functionality.
With this, Regression/CodeGen/SparcV8/basictest.ll now passes.  Lets hear it
for regression tests :)

llvm-svn: 24738
2005-12-16 06:25:42 +00:00
Chris Lattner
44de5f7807 Remove JIT support, which doesn't work.
llvm-svn: 24736
2005-12-16 06:06:07 +00:00
Chris Lattner
a795cdbfcd add some simple operand info
llvm-svn: 24735
2005-12-16 06:02:58 +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
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
Chris Lattner
74537db62e remove reference to this pass
llvm-svn: 24088
2005-10-29 05:28:34 +00:00
Chris Lattner
d470882fb7 do not wrap this whole file in namespace llvm
llvm-svn: 23962
2005-10-24 06:38:35 +00:00
Chris Lattner
86ac518282 Make this build with GCC 4.1, patch contributed by Vladimir A. Merzliakov!
llvm-svn: 23956
2005-10-24 04:51:35 +00:00
Chris Lattner
e3014fa504 This file is entirely ifdef'd out
llvm-svn: 23882
2005-10-22 19:37:08 +00:00
Chris Lattner
e4feaa3bea silence some warnings
llvm-svn: 23637
2005-10-05 17:15:09 +00:00
Chris Lattner
a1266f8ed5 Pass extra regclasses into spilling code
llvm-svn: 23537
2005-09-30 01:29:42 +00:00
Chris Lattner
b56110ff54 This has been moved to the target-indep code
llvm-svn: 23333
2005-09-13 19:32:18 +00:00
Chris Lattner
1f7f2544fc ignore generated files
llvm-svn: 23263
2005-09-07 23:47:44 +00:00
Jim Laskey
f32ef9a37f 1. Use SubtargetFeatures in llc/lli.
2. Propagate feature "string" to all targets.

3. Implement use of SubtargetFeatures in PowerPCTargetSubtarget.

llvm-svn: 23192
2005-09-01 21:38:21 +00:00
Chris Lattner
2ac3fd08d2 Split RegisterClass 'Methods' into MethodProtos and MethodBodies
llvm-svn: 22929
2005-08-19 19:13:20 +00:00
Chris Lattner
15d2e8a253 Fix code that assumes the register info will be dumped into a target
namespace instead of the reg class namespace.  Update getRegClassForType()
to use modified names due to tblgen change.

llvm-svn: 22923
2005-08-19 18:50:11 +00:00
Chris Lattner
47005fe346 put reg classes in namespaces
llvm-svn: 22922
2005-08-19 18:49:22 +00:00
Jim Laskey
062df4865a Promote dependency for MathExtras.h out of Constants.h.
llvm-svn: 22839
2005-08-17 20:04:34 +00:00
Jim Laskey
61e3d7bca5 Culling out use of unions for converting FP to bits and vice versa.
llvm-svn: 22838
2005-08-17 19:34:49 +00:00
Nate Begeman
f6b6378f23 Implement BR_CC and BRTWOWAY_CC. This allows the removal of a rather nasty
fixme from the PowerPC backend.  Emit slightly better code for legalizing
select_cc.

llvm-svn: 22805
2005-08-16 19:49:35 +00:00
Jeff Cohen
bd51ec7461 Eliminate all remaining tabs and trailing spaces.
llvm-svn: 22523
2005-07-27 06:12:32 +00:00
Chris Lattner
ffaf40a143 Change *EXTLOAD to use an VTSDNode operand instead of being an MVTSDNode.
This is the last MVTSDNode.

This allows us to eliminate a bunch of special case code for handling
MVTSDNodes.

Also, remove some uses of dyn_cast that should really be cast (which is
cheaper in a release build).

llvm-svn: 22368
2005-07-10 01:56:13 +00:00
Chris Lattner
273b81e0c0 Change TRUNCSTORE to use a VTSDNode operand instead of being an MVTSTDNode
llvm-svn: 22366
2005-07-10 00:29:18 +00:00
Andrew Lenharth
d1dbc8ab27 some call work
llvm-svn: 22303
2005-06-27 23:59:51 +00:00
Chris Lattner
06282f51cf Refactor the addPassesToEmitAssembly interface into a addPassesToEmitFile
interface.

llvm-svn: 22282
2005-06-25 02:48:37 +00:00
Andrew Lenharth
a9214fec08 core changes for varargs
llvm-svn: 22254
2005-06-18 18:34:52 +00:00
Andrew Lenharth
0bb2dab54a A start at a Sparc V8 Pattern ISel. Anyone want to implement the calling
convention? ;)

llvm-svn: 22247
2005-06-17 16:52:12 +00:00
Misha Brukman
49fe7aa1d6 Wrap long lines
llvm-svn: 22125
2005-05-18 20:37:33 +00:00
Misha Brukman
b3e2f08638 Convert tabs to spaces
llvm-svn: 21457
2005-04-22 18:06:01 +00:00
Misha Brukman
1fef885677 Remove trailing whitespace
llvm-svn: 21425
2005-04-21 23:30:14 +00:00
Chris Lattner
4b688a1c70 This mega patch converts us from using Function::a{iterator|begin|end} to
using Function::arg_{iterator|begin|end}.  Likewise Module::g* -> Module::global_*.

This patch is contributed by Gabor Greif, thanks!

llvm-svn: 20597
2005-03-15 04:54:21 +00:00
Chris Lattner
ccd0d44133 Substantially improve the code generated by non-folded setcc instructions.
In particular, instead of compiling this:

bool %test(int %A, int %B) {
  %C = setlt int %A, %B
  ret bool %C
}

to this:

test:
        save %sp, -96, %sp
        subcc %i0, %i1, %g0
        bl .LBBtest_1   !
        nop
        ba .LBBtest_2   !
        nop
.LBBtest_1:     !
        or %g0, 1, %i0
        ba .LBBtest_3   !
        nop
.LBBtest_2:     !
        or %g0, 0, %i0
        ba .LBBtest_3   !
        nop
.LBBtest_3:     !
        restore %g0, %g0, %g0
        retl
        nop

We now compile it to this:

test:
        save %sp, -96, %sp
        subcc %i0, %i1, %g0
        or %g0, 1, %i0
        bl .LBBtest_2   !
        nop
.LBBtest_1:     !
        or %g0, %g0, %i0
.LBBtest_2:     !
        restore %g0, %g0, %g0
        retl
        nop

llvm-svn: 19213
2005-01-01 16:06:57 +00:00
Chris Lattner
5f28e9fafc Remove unused #include
llvm-svn: 19021
2004-12-17 19:07:04 +00:00
Brian Gaeke
1b6a79c6d5 The mystery of Olden/tsp solved, and more opportunities for speedup.
llvm-svn: 18932
2004-12-14 09:10:10 +00:00
Brian Gaeke
83dcf14697 Get rid of shifts by zero in most cases.
llvm-svn: 18931
2004-12-14 08:21:02 +00:00
Chris Lattner
3fe2a6aa6a Add some notes
llvm-svn: 18911
2004-12-13 20:13:10 +00:00
Brian Gaeke
aa9f3851f7 Add V8 SPEC status.
llvm-svn: 18844
2004-12-13 00:27:35 +00:00
Chris Lattner
6131b06f73 Use the target triple to pick this target.
llvm-svn: 18830
2004-12-12 17:40:28 +00:00
Brian Gaeke
757a3aa9b9 Complete the list of MultiSource failures.
llvm-svn: 18826
2004-12-12 08:22:11 +00:00
Brian Gaeke
a440424596 hbd should be working now.
llvm-svn: 18824
2004-12-12 07:42:59 +00:00
Brian Gaeke
ee60e35a28 Finally enable the setcc-branch folding code.
Also, fix a bug where ubyte 255 would sometimes be output as -1. This
was afflicting hbd.

llvm-svn: 18823
2004-12-12 07:42:58 +00:00
Brian Gaeke
09c4a78ece Add (currently disabled) code for canFoldSetCC
llvm-svn: 18820
2004-12-12 06:22:30 +00:00
Brian Gaeke
55c163e41e Add stubs for setcc-branch folding support.
llvm-svn: 18818
2004-12-12 06:01:26 +00:00
Brian Gaeke
5d213ad8c3 Print llvm code one function at a time.
llvm-svn: 18805
2004-12-11 22:17:07 +00:00
Brian Gaeke
80831ad19a JIT should print LLVM each function before selecting instructions for it.
llvm-svn: 18803
2004-12-11 18:41:09 +00:00
Brian Gaeke
220fb4f8cd Bools are *also* not ints. Sigh. Furthermore, most of the TargetMachine
ctor parameters can be defaulted.

Print the transformed llvm code input to the instruction selector
when -print-machineinstrs is on, just like V9.

llvm-svn: 18794
2004-12-11 05:19:04 +00:00
Brian Gaeke
24ea5d3dd7 Look for many more moves to fold (previously, we only
*or g0, x      add g0, x          recognized * as a move)
 or  x, g0     add  x, g0
 or  0, x      add  0, x
 or  x, 0      add  x, 0

llvm-svn: 18793
2004-12-11 05:19:03 +00:00
Brian Gaeke
948a8145bf Make GEPs not suck so much:
* Don't emit the Index * ElementSize multiply if Index is a constant.
* Use a shift, not a multiply, if ElementSize is 1/2/4/8.
* If ElementSize fits in the immediate field of SMUL, then put it there.

Fix a bug where struct offsets might be truncated (ConstantSInt::get is
now used instead of ConstantInt::get).

llvm-svn: 18792
2004-12-11 05:19:02 +00:00
Brian Gaeke
e0643b792b Update lists of failing benchmarks, including info on which
ones are failing in cbe.

llvm-svn: 18791
2004-12-11 05:19:01 +00:00
Brian Gaeke
dc916ae40f Move -lowerselect later in the chain; some select instructions were
slipping through into the instruction selector, which can't deal with
them yet.

llvm-svn: 18758
2004-12-10 08:39:30 +00:00
Brian Gaeke
7ec3883e1a Add the rest of the multiply instructions.
llvm-svn: 18757
2004-12-10 08:39:29 +00:00
Brian Gaeke
2a9ecc433f Support binary operations with immediates for <= cInt.
llvm-svn: 18756
2004-12-10 08:39:28 +00:00
Brian Gaeke
45f3af8d88 Update lists of failing benchmarks (except C++...something is the
matter with my sparcv8 libstdc++.a) and to-do list.

llvm-svn: 18755
2004-12-10 08:39:27 +00:00
Brian Gaeke
5c8cefdf9a Adjust paths: Sparc/V8 --> SparcV8
llvm-svn: 18737
2004-12-10 04:48:57 +00:00
Brian Gaeke
262fe40da0 Make this file self-contained.
llvm-svn: 18736
2004-12-10 04:46:30 +00:00
Brian Gaeke
ef7289195a Update list of failing MultiSource benchmarks. It works out to +5 -5, but I
think some of these might be the CFE's fault; a rebuild should come soon.

llvm-svn: 18735
2004-12-10 04:42:46 +00:00
Brian Gaeke
999a5ba9ba When FpMOVDs appeared in pairs, we were mistakenly skipping over the latter of
each pair. I think this fixes that.

One of these days, I swear I'm going to get the hang of C++ iterators.
Really.

llvm-svn: 18734
2004-12-10 04:42:45 +00:00
Brian Gaeke
a196f80d71 We're continuing to make progress on MultiSource.
llvm-svn: 18714
2004-12-09 18:54:31 +00:00
Brian Gaeke
706a0c3988 Bytes and shorts are aligned differently from words.
llvm-svn: 18713
2004-12-09 18:51:02 +00:00
Brian Gaeke
43cb9ee8a4 Fix asm-printing directives (how did we not see this before...apparently,
everything was an int!)

llvm-svn: 18712
2004-12-09 18:51:01 +00:00
Brian Gaeke
cabac53133 This code rotted - change it to call abort() until someone wants
to rewrite this to use relocations.

llvm-svn: 18453
2004-12-03 06:57:14 +00:00
Brian Gaeke
289f3d3cc4 Update list of failing benchmarks.
llvm-svn: 18384
2004-11-30 08:15:44 +00:00
Brian Gaeke
2d52bbf6eb If we're about to emit something like:
%f0 = fmovs %f0
  %f1 = fmovs %f1

then just delete the FpMOVD pseudo-instruction instead.  Also, add
statistics and debug printouts.

llvm-svn: 18383
2004-11-30 08:15:15 +00:00
Brian Gaeke
8d69439f39 Update list of failing benchmarks.
llvm-svn: 18202
2004-11-24 04:07:42 +00:00
Brian Gaeke
3bb57935a7 Fix bug in emitGEPOperation with large struct-member offsets.
llvm-svn: 18201
2004-11-24 04:07:33 +00:00
Brian Gaeke
ce245ef743 Support shr long/ulong.
llvm-svn: 18173
2004-11-23 21:10:50 +00:00
Brian Gaeke
29093f7ec7 Support printing ConstantAggregateZeros.
llvm-svn: 18172
2004-11-23 21:10:49 +00:00
Brian Gaeke
371faf708f Update failing SingleSource test-case list.
llvm-svn: 18171
2004-11-23 21:10:48 +00:00
Brian Gaeke
b63c34a9f9 pseudocode for 64-bit lshr.
llvm-svn: 18154
2004-11-23 08:14:09 +00:00
Brian Gaeke
398eb11ede Add more known-failing tests.
llvm-svn: 18149
2004-11-23 06:39:50 +00:00
Brian Gaeke
218b5b5c65 Add the rest of the logical instructions.
llvm-svn: 18148
2004-11-23 06:39:37 +00:00
Brian Gaeke
c0c0b053e6 Add stub method for long shift codegen.
llvm-svn: 18100
2004-11-22 08:02:06 +00:00
Brian Gaeke
e9a2261d3b Update to-do list.
llvm-svn: 18099
2004-11-22 08:02:05 +00:00
Brian Gaeke
52bb1a0073 Implement setcc on longs.
llvm-svn: 18088
2004-11-21 08:11:28 +00:00
Brian Gaeke
3904c8ffec Add all the rest of the ADD and SUB variants, some of which are important for
64-bit support.

llvm-svn: 18087
2004-11-21 07:13:17 +00:00
Brian Gaeke
cb0a971f8f Support add, sub, mul, div, rem on longs/ulongs (latter 3 by emitting libcalls).
Add a big comment containing my notes on how to do setcc for longs/ulongs.

llvm-svn: 18086
2004-11-21 07:13:16 +00:00
Brian Gaeke
3b6aeefea6 Update to-do list.
llvm-svn: 18085
2004-11-21 07:13:15 +00:00
Brian Gaeke
e07eb993d6 Fix extraStack calculation -- I think in fact it might be getting a bit *too*
much stack, but that's better than not enough, which leads to miscompilations.

Fix FP vaarg.

llvm-svn: 18079
2004-11-21 03:35:22 +00:00
Brian Gaeke
75580d2a09 Update list of failing benchmarks & to-do list.
llvm-svn: 18078
2004-11-21 03:35:21 +00:00
Brian Gaeke
1805f32d5f Support most cases of vaarg (except double).
llvm-svn: 18055
2004-11-20 22:50:42 +00:00
Brian Gaeke
e989dc883f Update failing test cases & to-do list.
llvm-svn: 18054
2004-11-20 22:50:41 +00:00
Brian Gaeke
c72d2a96dc Implement vacopy and vanext.
llvm-svn: 18031
2004-11-20 03:32:12 +00:00
Misha Brukman
35c8db23b6 Revert the patch that adds Function* for each 64-bit libc div/mul/rem that we
want to do; instead, we can use MachineInstr::addExternalSymbol(char*, bool) and
thus we don't have to modify the Module as we are code generating for it

llvm-svn: 18025
2004-11-20 00:10:20 +00:00
Misha Brukman
9430a3fcb4 Fix grammar
llvm-svn: 18023
2004-11-19 23:09:40 +00:00
Misha Brukman
87bfc8b09c Add protoypes for 64-bit long/ulong div, mul, and rem functions
llvm-svn: 18019
2004-11-19 22:14:35 +00:00
Misha Brukman
dd7ba48322 Handle GhostLinkage case for completeness (should not be seen by the asm writer)
llvm-svn: 18015
2004-11-19 21:49:19 +00:00
Brian Gaeke
89f96e4c7c Add VANext and VAArg stubs.
llvm-svn: 18012
2004-11-19 21:08:18 +00:00
Brian Gaeke
6224830c11 Implement va_start.
llvm-svn: 18011
2004-11-19 20:57:24 +00:00
Brian Gaeke
e88367016a First part of varargs support: getting all varargs which could possibly
be in registers into memory.

llvm-svn: 18006
2004-11-19 20:31:08 +00:00
Brian Gaeke
9c9427b62b va_end can safely be codegen'd to nothing on v8.
llvm-svn: 18004
2004-11-19 19:21:34 +00:00
Brian Gaeke
7027432624 A very sorry stub implementation of varargs intrinsics...
llvm-svn: 18003
2004-11-19 18:53:59 +00:00
Brian Gaeke
42b684e550 Update list of expected test failures.
llvm-svn: 18002
2004-11-19 18:48:29 +00:00
Brian Gaeke
5de5da7603 Fix bug in casting to long/ulong.
llvm-svn: 18001
2004-11-19 18:48:10 +00:00
Brian Gaeke
23969d8817 Rewrite LoadArgumentsToVirtualRegs, making it match almost exactly how
visitCallInst works.  Support cast of byte/short/int to long.

llvm-svn: 17949
2004-11-18 07:43:33 +00:00
Brian Gaeke
b01ef957b9 Update current expected failures list - expand it to include all of
SingleSource. Update to-do list (open-coding refers to binary operations on
longs, not to passing them into functions, which we already support.)

llvm-svn: 17948
2004-11-18 07:43:32 +00:00
Brian Gaeke
77ddfa2495 Allocate fewer registers and tighten up alignment restrictions.
llvm-svn: 17929
2004-11-18 00:25:20 +00:00
Brian Gaeke
cc4074987b Update to-do list.
llvm-svn: 17927
2004-11-17 22:33:55 +00:00
Brian Gaeke
0963d035c6 Update list of failing SingleSource Benchmarks
llvm-svn: 17926
2004-11-17 22:33:28 +00:00
Brian Gaeke
70a111317a We were (somehow) getting the wrong branch opcode for setcc float instrs.
llvm-svn: 17925
2004-11-17 22:06:56 +00:00
Brian Gaeke
c68a1fb6b9 Update list of failing benchmarks
llvm-svn: 17895
2004-11-16 07:32:58 +00:00
Brian Gaeke
effc63fac5 Correct the implicit-defs information for indirect and direct calls.
You can't have implicit defs that overlap explicit defs, or implicit
defs that alias one another.

llvm-svn: 17894
2004-11-16 07:32:09 +00:00
Brian Gaeke
56da74bd11 Update list of failing Benchmarks.
llvm-svn: 17823
2004-11-15 05:57:26 +00:00
Brian Gaeke
075be51e61 Expand Defs to encompass all the possibly-call-clobbered regs.
llvm-svn: 17822
2004-11-15 05:56:53 +00:00
Brian Gaeke
f9ec4c8ee2 Fix problem with insertion point for ADJCALLSTACKDOWN.
llvm-svn: 17733
2004-11-14 06:32:08 +00:00
Brian Gaeke
0e77dab4e8 Update lists of failing unit tests.
Exclude bigfib, so that we effectively exclude all C++ benchmarks.
Update to-do list: mention va_start.

llvm-svn: 17732
2004-11-14 06:32:07 +00:00
Brian Gaeke
ab60855423 Fix NotTest - round up extraStack to the nearest doubleword, if it is
not zero.

llvm-svn: 17728
2004-11-14 05:19:00 +00:00
Brian Gaeke
79f5f96a60 Update failing Benchmarks; point out that I'm skipping Shootout-C++.
llvm-svn: 17725
2004-11-14 04:43:12 +00:00
Brian Gaeke
505a9ee73d Update expected UnitTests failures.
llvm-svn: 17723
2004-11-14 03:22:08 +00:00
Brian Gaeke
1b3d701769 Rewrite outgoing arg handling to handle more weird corner cases.
llvm-svn: 17722
2004-11-14 03:22:07 +00:00
Brian Gaeke
294af88a7a Support UndefValue emission.
llvm-svn: 17721
2004-11-14 03:22:05 +00:00
Brian Gaeke
85e7df8097 Handle "call" operands of type long/ulong passed in registers.
llvm-svn: 17464
2004-11-04 00:27:04 +00:00
Brian Gaeke
c66a1d540b Change name of target lib to conform to new naming scheme.
llvm-svn: 17347
2004-10-29 21:57:16 +00:00
Brian Gaeke
db07ac46f0 Remove dependency on MRegisterInfo::getRegClass
llvm-svn: 17346
2004-10-29 21:42:27 +00:00
Misha Brukman
2493cb2a2a Adjust rules for building .inc files due to Reid's changes of Makefile.rules
llvm-svn: 17169
2004-10-22 22:16:24 +00:00
Misha Brukman
9113553178 * Add baseline structural JIT code, but disable the JIT to allow llvm-gcc builds
- Support added for functions, basic blocks, constant pool, constants,
    registers, and some basic support for globals, all untested
* Turn assert()s into abort()s so that unimplemented functions fail in release

llvm-svn: 17143
2004-10-19 19:49:42 +00:00
Chris Lattner
bb5b3f0b2f Add support for unreachable and undef
llvm-svn: 17074
2004-10-17 02:42:42 +00:00
Misha Brukman
e05e5f0655 The field is called imm22', not simply imm'
llvm-svn: 17003
2004-10-14 22:33:32 +00:00
Misha Brukman
4932cb0e94 Synthetic instructions RET and RETL need to have all 3 parameters specified
llvm-svn: 17002
2004-10-14 22:32:49 +00:00
Misha Brukman
7b29a7bc80 Class F2_1 already inherits the imm22 field from class F2
llvm-svn: 17001
2004-10-14 22:32:24 +00:00
Misha Brukman
4e691d2adb Generate the SparcV8 code emitter from .td files
llvm-svn: 17000
2004-10-14 21:57:19 +00:00
Misha Brukman
5bc4009783 * In the F3_1 class, default asi to 0 because it's not currently used
* In the F3_3 class, remove mention of asi because it's not part of the format

llvm-svn: 16999
2004-10-14 21:53:39 +00:00
Brian Gaeke
ce6dcb0713 Add FSTOI, FDTOI (fp to integer cast) instructions.
llvm-svn: 16996
2004-10-14 19:39:35 +00:00
Brian Gaeke
ba65401a4d Rewrite emitCastOperation, refactoring parts of it into emitIntegerCast, and
adding emitFPToIntegerCast.

llvm-svn: 16995
2004-10-14 19:39:34 +00:00
Brian Gaeke
31fa12ece7 Add list of libc procedures we'll use, at some point.
Update list of currently failing tests.
ADJCALLSTACK* support is done.

llvm-svn: 16994
2004-10-14 19:39:33 +00:00
Brian Gaeke
26b353ebd6 Fix assertion failure when calling or returning from a function which
returns 'bool' type.

llvm-svn: 16884
2004-10-10 20:34:17 +00:00
Brian Gaeke
3af0547680 Implement eliminateCallFramePseudoInstr().
Wrap a long comment line.

llvm-svn: 16883
2004-10-10 19:57:21 +00:00
Brian Gaeke
b6239cd5ed Model calls as *both* using *and* killing O0..O5, because callees use the
argument values passed in (so they're not dead until *after* the call),
and callees are free to modify those registers.

llvm-svn: 16882
2004-10-10 19:57:20 +00:00
Brian Gaeke
245a073aa6 Fix whitespace and wrap some long lines.
Deal with allocating stack space for outgoing args and copying them into the
correct stack slots (at least, we can copy <=32-bit int args).
We now correctly generate ADJCALLSTACK* instructions.

llvm-svn: 16881
2004-10-10 19:57:18 +00:00
Brian Gaeke
ba13791a01 update according to tonight's info
llvm-svn: 16866
2004-10-09 05:58:27 +00:00
Brian Gaeke
3abdd11420 Implement getModuleMatchQuality and getJITMatchQuality so that v8 will be the
default 32/BE target on sparc hosts, and ppc will continue to be the default
on other hosts.

llvm-svn: 16865
2004-10-09 05:57:01 +00:00
Brian Gaeke
c667e351ed I think this will handle double args.
llvm-svn: 16618
2004-09-30 19:44:32 +00:00
Brian Gaeke
0d4d060dbd Mark the instructions that have delay slots with the hasDelaySlot flag.
Add some comments.

llvm-svn: 16611
2004-09-30 04:04:48 +00:00
Brian Gaeke
738005408e Use TargetMachine::hasDelaySlot() instead of our old switch statement
to find instrs that have delay slots.

llvm-svn: 16610
2004-09-30 04:04:47 +00:00
Brian Gaeke
ee2dab29f9 Update list of shootout programs that should be working.
llvm-svn: 16595
2004-09-29 20:45:06 +00:00
Brian Gaeke
d4c38d8c4b Tell the target description that calls clobber registers O0...O5.
llvm-svn: 16594
2004-09-29 20:45:05 +00:00
Brian Gaeke
5bca3b8e5f FITOD is spelled "fitod", not "fitos". Ouch.
llvm-svn: 16591
2004-09-29 19:59:07 +00:00
Brian Gaeke
e9aabee09d Don't use .quad to output double constants. The assembler must have a bug or
something, because the wrong bit patterns get output.

llvm-svn: 16590
2004-09-29 19:59:06 +00:00
Brian Gaeke
b8237dfbb9 Recognize FpMOVD as a move.
llvm-svn: 16586
2004-09-29 16:45:47 +00:00
Brian Gaeke
25154c9580 add results
llvm-svn: 16579
2004-09-29 03:48:55 +00:00
Brian Gaeke
bad755c1d1 Simplify copyConstantToRegister() for longs, using a pair of recursive calls.
Copy constant-pool entries' addresses into registers before loading out of them,
to avoid errors from the assembler.
Handle loading call args past the 6th one off the stack.
Add IMPLICIT_DEF pseudo-instrs for double and long arguments passed in register
pairs.
Use FpMOVD to copy doubles around instead of the horrible store-load thing we
were doing before.
Handle 'ret double' and 'ret long'.
Fix a bug in handling 'and/or/xor long'.

llvm-svn: 16577
2004-09-29 03:34:41 +00:00
Brian Gaeke
279e98a3b4 Fix bug recognizing moves: isMoveInstr should only treat ORs with %g0 as
moves, not all ORs.

llvm-svn: 16576
2004-09-29 03:28:15 +00:00
Brian Gaeke
86aaed6a34 Use FpMOVD pseudo-instruction to move doubles around.
llvm-svn: 16575
2004-09-29 03:27:30 +00:00
Brian Gaeke
02c3d2f588 Add new FpMOVD pseudo-instruction, used to move doubles around.
llvm-svn: 16574
2004-09-29 03:27:29 +00:00
Brian Gaeke
42a0b9a05c Fix double and long alignment.
Call the FPMover pass after register allocation.

llvm-svn: 16573
2004-09-29 03:26:27 +00:00
Brian Gaeke
ab7ac780bb Put quotes around argument to .section directive.
llvm-svn: 16572
2004-09-29 03:25:40 +00:00
Brian Gaeke
8d39e108a5 Add createSparcV8FPMoverPass().
llvm-svn: 16571
2004-09-29 03:25:39 +00:00
Brian Gaeke
81597f52ff Pass which converts FpMOVD (double move pseudoinstructions) to pairs
of FMOVS instrs.

llvm-svn: 16570
2004-09-29 03:24:34 +00:00
Misha Brukman
88a1e0aba4 SparcV8 int regs are not only 32-bits in width, but they are 32-bit aligned!
llvm-svn: 16526
2004-09-27 18:22:18 +00:00
Misha Brukman
84e238e5ed Fix the copy-pasto that Brian noticed: V8 int regs are 32-bits wide, not 64.
llvm-svn: 16518
2004-09-26 21:07:43 +00:00
Misha Brukman
a59d95f2ed Use the V8/V9 shared register file description
llvm-svn: 16485
2004-09-22 21:48:50 +00:00
Misha Brukman
72c0988b77 Combine the F2 and F3 instruction classes into one file for simplicity
llvm-svn: 16484
2004-09-22 21:38:42 +00:00
Misha Brukman
5290581b39 Fix file header path
llvm-svn: 16483
2004-09-22 21:29:12 +00:00
Misha Brukman
3f8390a72f Prettify formatting of the file, adjust paths to making V8 a subdir of Sparc
llvm-svn: 16482
2004-09-22 20:09:29 +00:00
Misha Brukman
f8a2aee058 V8 is now a subdirectory of Sparc; adjust paths accordingly
llvm-svn: 16481
2004-09-22 20:08:52 +00:00
Chris Lattner
3cfb801817 Changes to make this work with Jason's patch. I checked this by hand, but
would appreciate if others would also look at this to make sure I didn't
botch something obvious

llvm-svn: 16312
2004-09-13 21:32:03 +00:00
Misha Brukman
587a924177 Renamed file to SparcV8ISelSimple.cpp
llvm-svn: 16267
2004-09-10 18:51:12 +00:00
Brian Gaeke
3229885493 This file does not need <iostream>, I think.
llvm-svn: 16245
2004-09-08 04:10:52 +00:00
Brian Gaeke
79802222d1 Back to compiling land for v8
llvm-svn: 16138
2004-09-02 02:37:43 +00:00
Chris Lattner
484126d8f8 Convert bytes to bits in alignment
llvm-svn: 15971
2004-08-21 20:09:46 +00:00
Chris Lattner
59e19bf141 V8 never used the instrselectorgenerator
llvm-svn: 15791
2004-08-15 23:07:40 +00:00
Chris Lattner
555a585fd8 Code insertion methods now return void instead of an int.
llvm-svn: 15780
2004-08-15 22:15:11 +00:00
Chris Lattner
e58190f5f6 These methods no longer take a TargetRegisterClass* operand.
llvm-svn: 15774
2004-08-15 21:56:44 +00:00
Chris Lattner
dd041ad575 Update to no longer take MF as an argument
llvm-svn: 15748
2004-08-14 22:57:22 +00:00
Misha Brukman
65afbbca70 Remove ClassPrefix variable as it's no longer used.
llvm-svn: 15586
2004-08-09 19:13:29 +00:00
Misha Brukman
4ebd3108a2 The (future) SparcV8 JIT would do well to have a class prefix.
llvm-svn: 15583
2004-08-09 18:13:09 +00:00
Brian Gaeke
fc1529b335 Update the To-Do list according to my notes + assertions
llvm-svn: 15535
2004-08-06 04:38:13 +00:00
Chris Lattner
f499378d6e getValues is gone
llvm-svn: 15494
2004-08-04 17:27:27 +00:00
Chris Lattner
c21741420c I'm pretty sure that ba is branch always, which is a barrier. Brg should
check this :)

llvm-svn: 15357
2004-07-31 02:24:37 +00:00
Chris Lattner
5196d002f9 I think that V8 should coallesce registers, don't you?
llvm-svn: 15192
2004-07-25 06:19:04 +00:00
Chris Lattner
b56b3b5eeb CPR fixes
llvm-svn: 14960
2004-07-18 07:26:17 +00:00
Brian Gaeke
b2af4f47b6 Add a class for pseudo-instructions. Use it.
Add IMPLICIT_USE and IMPLICIT_DEF, a la X86.

llvm-svn: 14884
2004-07-16 10:32:10 +00:00
Brian Gaeke
ec53196516 Add what will eventually be the TSFlags. Big switch(opcode) statements are bad.
llvm-svn: 14883
2004-07-16 10:31:59 +00:00
Brian Gaeke
0d262c839f Add special handling for pseudo-instructions (print them as comments).
llvm-svn: 14882
2004-07-16 10:31:47 +00:00
Brian Gaeke
11c7052fb5 Add to-do list.
llvm-svn: 14881
2004-07-16 10:31:36 +00:00
Brian Gaeke
53dc31efcd Do IMPLICIT_DEFs on incoming args' hard regs, to avoid confusing the regalloc.
Support single-fp incoming args.
Support single-fp outgoing args ('call' operands).
Support double-fp return values.

llvm-svn: 14880
2004-07-16 10:31:25 +00:00
Chris Lattner
6331eb6bbe Delete the allocate*TargetMachine function, which is now dead .
The shared command line options are now in a header that makes sense.

llvm-svn: 14756
2004-07-11 04:17:10 +00:00
Chris Lattner
b67e3b01bc Make these format a bit nicer
llvm-svn: 14747
2004-07-11 03:27:42 +00:00
Chris Lattner
2ada866a78 Auto-registrate target
llvm-svn: 14745
2004-07-11 02:48:49 +00:00
Brian Gaeke
0601002727 Support setcc on fp values.
llvm-svn: 14687
2004-07-08 09:08:35 +00:00
Brian Gaeke
23d171a9ed Add floating-point branches and compares. Compares don't complete
until the next cycle, and there's no interlock, so they effectively
have a delay slot.

llvm-svn: 14686
2004-07-08 09:08:22 +00:00
Brian Gaeke
99a4b4ecc6 Fix bug where SwitchSection would fail to change to ".bss" successfully.
llvm-svn: 14685
2004-07-08 08:08:23 +00:00
Brian Gaeke
79c41545a7 Fix bug involving bool arguments to binary operators.
Fix typo in comment.

llvm-svn: 14684
2004-07-08 08:08:10 +00:00
Brian Gaeke
2de292734d Fix bug in copying long constants to register pairs. We were getting
the top and bottom halves backwards...how embarrassing.
Support 'cast long to long' and other similar no-op casts to long.
Support 'ret long'.

llvm-svn: 14683
2004-07-08 07:52:13 +00:00
Brian Gaeke
04176a23a7 Support 'ret float'
llvm-svn: 14681
2004-07-08 07:22:27 +00:00
Chris Lattner
8d61e9ad98 Add #includes
llvm-svn: 14625
2004-07-04 17:19:21 +00:00
Chris Lattner
c83e510819 Fix potential problems with unreachable basic blocks.
Also, while noone's looking, add support for constant expressions.  Wait,
I said not to look!

llvm-svn: 14566
2004-07-02 05:49:11 +00:00
Misha Brukman
a691e0bff7 Fix indentation to be 2 spaces.
llvm-svn: 14512
2004-06-30 22:11:03 +00:00
Misha Brukman
010e07078b visitSetCondInst() takes a parameter of type `SetCondInst'
llvm-svn: 14508
2004-06-30 21:47:40 +00:00
Brian Gaeke
92bba4c696 Allow saving and restoring of double and float registers.
Allow copying of float registers.

llvm-svn: 14445
2004-06-27 22:59:56 +00:00