Commit Graph

3355 Commits

Author SHA1 Message Date
Brian Gaeke
4658ba13a8 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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18793 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-11 05:19:03 +00:00
Brian Gaeke
4f70b63ebc 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).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18792 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-11 05:19:02 +00:00
Brian Gaeke
9d6ffb47b4 Update lists of failing benchmarks, including info on which
ones are failing in cbe.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18791 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-11 05:19:01 +00:00
Brian Gaeke
5aefa8a6fe Move -lowerselect later in the chain; some select instructions were
slipping through into the instruction selector, which can't deal with
them yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18758 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-10 08:39:30 +00:00
Brian Gaeke
c2e5f3635a Add the rest of the multiply instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18757 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-10 08:39:29 +00:00
Brian Gaeke
1f42181f99 Support binary operations with immediates for <= cInt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18756 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-10 08:39:28 +00:00
Brian Gaeke
2b314430f7 Update lists of failing benchmarks (except C++...something is the
matter with my sparcv8 libstdc++.a) and to-do list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18755 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-10 08:39:27 +00:00
Brian Gaeke
ce63005ac1 Emit correct prototype for __builtin_alloca on V8.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18745 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-10 05:44:45 +00:00
Brian Gaeke
f4540a6b9a Add SparcV8 target back into the build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18738 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-10 04:54:21 +00:00
Brian Gaeke
57600548c7 Adjust paths: Sparc/V8 --> SparcV8
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18737 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-10 04:48:57 +00:00
Brian Gaeke
8fe429d0c2 Make this file self-contained.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18736 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-10 04:46:30 +00:00
Brian Gaeke
09d8d67066 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18735 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-10 04:42:46 +00:00
Brian Gaeke
8ee6a2fb16 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18734 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-10 04:42:45 +00:00
Brian Gaeke
3616f91b71 We're continuing to make progress on MultiSource.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18714 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-09 18:54:31 +00:00
Brian Gaeke
20503bd958 Bytes and shorts are aligned differently from words.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18713 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-09 18:51:02 +00:00
Brian Gaeke
3bf960ccac Fix asm-printing directives (how did we not see this before...apparently,
everything was an int!)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18712 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-09 18:51:01 +00:00
Chris Lattner
3150e2de93 Move lower intrinsics before FP constant emission, in case
intrinsic lowering ever introduces constants.

Rename local symbols before printing function bodies, fixing 255.vortex
with the CBE!!!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18534 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-05 06:49:44 +00:00
Chris Lattner
cc16a8e73b Fix test/Regression/CodeGen/CBackend/2004-12-03-ExternStatics.ll and
PR472


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18459 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-03 17:19:10 +00:00
Brian Gaeke
1d65645582 This code rotted - change it to call abort() until someone wants
to rewrite this to use relocations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18453 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-03 06:57:14 +00:00
Tanya Lattner
f3fa55f979 When writing kernel, save the branches til the end. They are still put in the "right place" in the schedule, but sometimes when folding to make a kernel instructions are added between branches. This is wrong. To avoid this, we handle branches special.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18450 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-03 05:25:22 +00:00
Chris Lattner
223d4c4b3a Fix a regression caused by the previous patch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18449 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-03 05:13:15 +00:00
Chris Lattner
ad7919836f The stripping pass as we know it is about to disappear
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18436 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-02 21:05:01 +00:00
John Criswell
ced06b73ec Reverting revision 1.209.
Including alloca.h on Solaris brings in the prototype of strftime(), which
breaks compilation of CBE generated code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18435 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-02 19:02:49 +00:00
Chris Lattner
45de191b0b Spill/restore X86 floating point stack registers with 64-bits of precision
instead of 80-bits of precision.  This fixes PR467.

This change speeds up fldry on X86 with LLC from 7.32s on apoc to 4.68s.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18433 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-02 18:17:31 +00:00
Chris Lattner
3986924e0b Consider 64-bit registers to be FP as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18432 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-02 17:57:21 +00:00
Tanya Lattner
ad7654f7c4 Reworked branch adding in prologue. Added check for infinite loops which are not modulo scheduled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18419 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-02 07:22:15 +00:00
Tanya Lattner
9855b84469 Reverting this patch:
http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20041122/021428.html

It broke Mutlisource/Applications/obsequi


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18407 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-01 18:27:03 +00:00
Chris Lattner
527efc6742 Initial support for packed types, contributed by Morten Ofstad
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18406 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-01 17:14:28 +00:00
Chris Lattner
40e7c35a2f Do not let GCC emit a warning for INT64_MIN
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18398 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-30 21:33:58 +00:00
Brian Gaeke
33ce43e8a8 Sparcs behave better if we use <alloca.h> and avoid messing with __builtin_alloca.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18397 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-30 21:27:01 +00:00
Brian Gaeke
cb7a76283b Update list of failing benchmarks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18384 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-30 08:15:44 +00:00
Brian Gaeke
9e0b9028c7 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18383 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-30 08:15:15 +00:00
Chris Lattner
0284628e8e Fix several bugs in 'op x, imm' handling. Foremost is that we now emit
addi r3, r3, -1
instead of
   addi r3, r3, 1

for 'sub int X, 1'.

Secondarily, this fixes several cases where we could crash given an unsigned
constant.  And fixes a couple of minor missed optimization cases, such as
xor X, ~0U -> not X


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18379 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-30 07:30:20 +00:00
Chris Lattner
35f2bbe8c6 Fix CodeGen/PowerPC/2004-11-30-shr-var-crash.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18376 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-30 06:40:04 +00:00
Chris Lattner
e74ed0d53b Fix test/Regression/CodeGen/PowerPC/2004-11-29-ShrCrash.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18374 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-30 06:36:11 +00:00
Chris Lattner
7747040410 Fix test/Regression/CodeGen/PowerPC/2004-11-30-shift-crash.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18371 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-30 06:29:10 +00:00
Chris Lattner
ee8c9ad8d2 Remove extraneous namespacification. In particular, don't define llvm::llvm::createInternalGlobalMapperPass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18365 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-30 00:22:59 +00:00
Chris Lattner
928b47ae2e Revamp long/ulong comparisons to use a much more efficient sequence (thanks
to Brian and the Sun compiler for pointing out that the obvious works :)

This also enables folding all long comparisons into setcc and branch
instructions: before we could only do == and !=

For example, for:
void test(unsigned long long A, unsigned long long B) {
   if (A < B) foo();
 }

We now generate:

test:
        subl $4, %esp
        movl %esi, (%esp)
        movl 8(%esp), %eax
        movl 12(%esp), %ecx
        movl 16(%esp), %edx
        movl 20(%esp), %esi
        subl %edx, %eax
        sbbl %esi, %ecx
        jae .LBBtest_2  # UnifiedReturnBlock
.LBBtest_1:     # then
        call foo
        movl (%esp), %esi
        addl $4, %esp
        ret
.LBBtest_2:     # UnifiedReturnBlock
        movl (%esp), %esi
        addl $4, %esp
        ret

Instead of:

test:
        subl $12, %esp
        movl %esi, 8(%esp)
        movl %ebx, 4(%esp)
        movl 16(%esp), %eax
        movl 20(%esp), %ecx
        movl 24(%esp), %edx
        movl 28(%esp), %esi
        cmpl %edx, %eax
        setb %al
        cmpl %esi, %ecx
        setb %bl
        cmove %ax, %bx
        testb %bl, %bl
        je .LBBtest_2   # UnifiedReturnBlock
.LBBtest_1:     # then
        call foo
        movl 4(%esp), %ebx
        movl 8(%esp), %esi
        addl $12, %esp
        ret
.LBBtest_2:     # UnifiedReturnBlock
        movl 4(%esp), %ebx
        movl 8(%esp), %esi
        addl $12, %esp
        ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18330 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-29 05:55:24 +00:00
Tanya Lattner
58fe2f0734 Reworked branching so we don't handle BAs specially. It just updates the branchTO regardless of what type of branch it is.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18322 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-29 04:39:47 +00:00
Tanya Lattner
28e5eabf65 Fixed bug where instructions in the kernel were not ordered right to preserve dependencies in a cycle.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18314 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-28 23:36:15 +00:00
Chris Lattner
9d0087e043 The LLVM bool type shall have 1 byte alignment on PPC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18311 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-28 21:16:45 +00:00
Nate Begeman
3330e08888 Remove the ISel->AsmPrinter link via the TargetMachine that was put in
place to help bring up the PowerPC back end on Darwin.  This code is no
longer serves any purpose now that the AsmPrinter does the right thing
all the time printing GlobalValues.  --Cruft.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18267 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-27 04:45:11 +00:00
Chris Lattner
15ee8adb00 There is no reason to store <x,x>, just store <x>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18263 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-26 20:25:17 +00:00
Nate Begeman
d4c8bea47f Enable optimization suggested by Chris Lattner to not emit reloc stubs for
static global variables whose addresses are taken.  This allows us to
convert the following code for taking the address of a static function foo

        addis r2, r30, ha16(Ll1__2E_foo_2$non_lazy_ptr-"L00001$pb")
        lwz r3, lo16(Ll1__2E_foo_2$non_lazy_ptr-"L00001$pb")(r2)

which also includes linker stub code emitted at the end of the .s file not
shown here, and replace it with this:

        addis r2, r30, ha16(l1__2E_foo_2-"L00001$pb")
        la r3, lo16(l1__2E_foo_2-"L00001$pb")(r2)

which in addition to not needing linker help, also has no load instruction.
For those not up on PowerPC mnemonics, la is shorthand for add immediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18239 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 07:09:01 +00:00
Chris Lattner
fde839b4ff Fix the build on non ppc machines
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18235 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 06:14:45 +00:00
Chris Lattner
2a0c0dff0b The JIT works enough
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18228 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 04:14:54 +00:00
Chris Lattner
5cbf3bc202 Fix encoding of fsel, fixing olden/power, McCat/bisort and several others.
All of Olden passes now! :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18227 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 04:11:07 +00:00
Chris Lattner
a1ab451392 Fix encoding of fneg instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18226 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 03:53:44 +00:00
Chris Lattner
cd61ec837f Fix encoding of swari, fixing several programs, including Olden/mst
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18225 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 03:40:20 +00:00
Chris Lattner
b752a97ca4 There is not a 1-1 mappign between llvm blocks and PPC blocks, do not use
LLVM blocks as the keys for the branch rewriter.  This fixes treeadd and
many other programs with the JIT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18223 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-25 00:33:57 +00:00
Chris Lattner
5efb75daed * Rename existing relocations to be more specific
* Add relocations for refernces to non-lazy darwin stubs and implement
  them correctly.

With this change, we can correctly references external globals, and now
all but two UnitTests and all but 1 Regression/C tests pass.

More importantly, bugpoint-jit will start giving us useful testcases,
instead of always telling us that references to external globals don't
work :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18222 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 22:30:08 +00:00
Nate Begeman
53e4aa57c6 Add the same optimization that we do loading from fixed alloca slots to
storing to fixed alloca slots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18221 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 21:53:14 +00:00
Chris Lattner
73278080c8 Write CompilationCallback as an explicit assembly stub to avoid getting GCC's
prolog.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18220 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 21:01:46 +00:00
Chris Lattner
892afa9556 When rewriting the original call instruction, make sure to rewrite it to
call the right address.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18213 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 18:00:02 +00:00
Chris Lattner
fb887e010d Force the intregs ptr into R2 and the FPregs ptr into R3. This fixes a really
obscure problem where we were doing:

lmw     r3,0(r9)

which is undefined on PPC.  Now we do:

lmw     r3,0(r2)

by force, not relying on the GCC register allocator for luck :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18212 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 17:42:55 +00:00
Brian Gaeke
e4ed742588 Update list of failing benchmarks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18202 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 04:07:42 +00:00
Brian Gaeke
31e575901f Fix bug in emitGEPOperation with large struct-member offsets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18201 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 04:07:33 +00:00
Chris Lattner
69efbdd4f3 Fix a few more tests by encoding the extsb and other XForm11 instructions
correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18200 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 03:52:02 +00:00
Chris Lattner
2f5091ac2a Fix the encoding of ORi and other DForm4 instructions. This brings us to
36/42 SingleSource/UnitTests passing!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18199 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 02:15:41 +00:00
Chris Lattner
00a8c01999 Loads are relocatable too
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18198 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 02:03:44 +00:00
Chris Lattner
b765ff1219 Calls do not need a MovPCtoLR instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18197 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 02:00:06 +00:00
Chris Lattner
b9f26da5dd Get constant pools working. This fixes even more programs, allowing us to
pass 24/42 in UnitTests (up from 20).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18196 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 01:56:12 +00:00
Tanya Lattner
a6ec8f5548 Forced branches to be first to be scheduled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18195 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 01:49:10 +00:00
Chris Lattner
8599d385a2 Rewrite branches more closely to correct. This makes more stuff pass, and
stops the infinite loops!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18194 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 01:35:12 +00:00
Chris Lattner
310a752872 Branch instructions explicitly represent CRx in them. bEcause of this, encode
them explicitly as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18193 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 01:15:19 +00:00
Nate Begeman
3b78e3b6a9 Fix encoding of bctrl, and remove some unused instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18192 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-24 00:16:37 +00:00
Chris Lattner
6f407893e2 Fix encoding of blr and bctr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18178 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 22:06:24 +00:00
Nate Begeman
65b7f3ed2a Use the correct register class as a constaint to gcc's inline assembly, so
that we don't end up trying to use r0 as a base register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18176 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 21:37:22 +00:00
Nate Begeman
ca6d0f53ff Save/Restore arg regs and nonvolatile regs the compiler might use during
CompilationCallback


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18175 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 21:34:18 +00:00
Chris Lattner
5afa9af81b Fix the encoding of OR, AND and many other instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18174 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 21:17:35 +00:00
Brian Gaeke
88108b8cfa Support shr long/ulong.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18173 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 21:10:50 +00:00
Brian Gaeke
4dd043f090 Support printing ConstantAggregateZeros.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18172 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 21:10:49 +00:00
Brian Gaeke
8a0c4fd0c6 Update failing SingleSource test-case list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18171 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 21:10:48 +00:00
Chris Lattner
d162032013 Remove argtype and argcount magic, which was used by the old asmprinter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18170 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 20:41:34 +00:00
Chris Lattner
583e32b653 Get rid of flags that are dead
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18169 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 20:37:41 +00:00
Chris Lattner
89d60de90e Fix encoding of rlwinm?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18165 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 19:23:32 +00:00
Chris Lattner
943f45208c Fix encodings
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18164 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 19:23:18 +00:00
Chris Lattner
9ba12359e3 Enumerate CR registers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18162 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 18:59:59 +00:00
Chris Lattner
d9d06b3af1 Initial implementation of exiting CompilationCallback
This should save all argument registers on entry and restore on exit, despite
that, simple things seem to work!!!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18161 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 18:49:46 +00:00
Chris Lattner
22cd028eef This method is dead
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18160 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 18:47:55 +00:00
Chris Lattner
05ad23711e Remove this method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18159 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 18:47:42 +00:00
Chris Lattner
adbcc1025e Squelch a bogus warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18157 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 15:57:01 +00:00
Chris Lattner
d7fa35c6d2 Squelch a bogus warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18156 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 15:56:38 +00:00
Nate Begeman
dd30751654 Don't return value from void function. This is only temporary anyway while
the JIT is made to work!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18155 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 10:04:49 +00:00
Brian Gaeke
fbe558c993 pseudocode for 64-bit lshr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18154 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 08:14:09 +00:00
Chris Lattner
7598bbac66 Fix a minor bug
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18153 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 06:56:31 +00:00
Chris Lattner
c9a6b1f4f6 Be really paranoid about not breaking stuff yet
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18152 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 06:56:18 +00:00
Chris Lattner
e61198b323 Implement the first hunk of CompilationCallback. The pieces missing are the
ones noted, which require funny PPC specific inline assembly.

If some angel felt the desire to help me, I think this is that last bit missing
for JIT support (however, generic code emitter might night work right with
the constant pool yet).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18151 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 06:55:05 +00:00
Brian Gaeke
2041d0ca12 Add more known-failing tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18149 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 06:39:50 +00:00
Brian Gaeke
82a4795850 Add the rest of the logical instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18148 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 06:39:37 +00:00
Chris Lattner
7c83dc2714 Implement the stub needed to get into compilation callback.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18147 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 06:27:02 +00:00
Chris Lattner
64729d064a Simplify code a bit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18146 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 06:05:44 +00:00
Chris Lattner
9b3d989cb7 Initial implementation of the JIT interfaces. Relocation is done and stubs
for external functions work.  CompilationCallback has not been written, and
stubs for internal functions are not generated yet.  This means you can call
printf and exit, and use global variables, but cannot call functions local to
a module yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18145 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 06:02:06 +00:00
Chris Lattner
e94c517bb5 Emit relocations for the global variable using instructions. This gets us
LA, LOADHiAddr, CALLpcrel, and MovePCtoLR working, though the constant pool
probably is not right.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18144 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:59:53 +00:00
Chris Lattner
163393732a Implement all of the methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18142 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:57:57 +00:00
Chris Lattner
42edd31209 Initial checkin of the 32-bit PPC relocation types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18141 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:57:38 +00:00
Chris Lattner
e4fce6f19c Move JITInfo from PPCTM to PPC32TM
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18140 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:56:40 +00:00
Chris Lattner
942d7b5a68 Do not provide the non-specialized PowerPCJITInfo object, it is pretty useless.
Instead, let derived classes provide specialized ones.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18139 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:55:38 +00:00
Chris Lattner
6540c6c344 LA is really addi. Be consistent with operand ordering to avoid confusing the code emitter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18138 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:54:25 +00:00
Tanya Lattner
e9cf6b9278 Changed the CreateCodeToLoadConst function to preserve SSA form. This basically means adding extra tmp instructions for intermediate values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18137 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 04:22:29 +00:00
Chris Lattner
f2190b39d0 Remove some dead code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18136 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 23:07:22 +00:00
Chris Lattner
dd99885da3 Comment out a couple of unused instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18135 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 23:07:01 +00:00
Chris Lattner
90b1b457ef Do not push two return addresses on the stack when we call external functions who have their addresses taken. This fixes test-call.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18134 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 22:25:30 +00:00
Chris Lattner
213c969c92 Disable this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18130 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 21:51:40 +00:00
Chris Lattner
99b394db15 This chunk of code needs to be rewritten
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18127 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 21:45:54 +00:00
Chris Lattner
2eeda6ed8f Remove some dead vars and some useless namespacification
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18126 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 21:42:40 +00:00
Chris Lattner
befc374904 Implement a disgusting hack to work around broken machine code emission of
the RDCCR instruction.  This fixes a bunch of programs with the JIT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18124 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 21:25:10 +00:00
Tanya Lattner
e1df212fb3 Fixed a bug where I was trying to ModuloSchedule a loop with no instructions but a terminator.
Fixed a bug in the schedule generation that was always using the start cycle.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18123 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 20:41:24 +00:00
Chris Lattner
54a4d6a3cd Remove JIT-specific code from the code emitter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18122 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 20:25:10 +00:00
Chris Lattner
dee0c4b000 New methods implemented
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18121 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 20:24:42 +00:00
Chris Lattner
534ac45604 Implement the Sparc JIT interfaces, including relocation support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18120 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 20:24:27 +00:00
Brian Gaeke
9ffcf9fddd Add stub method for long shift codegen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18100 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 08:02:06 +00:00
Brian Gaeke
6f0b77221c Update to-do list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18099 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 08:02:05 +00:00
Chris Lattner
5fd738f0a6 Initial checkin of the V9 relocation types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18095 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 00:40:51 +00:00
Brian Gaeke
c7b4f1033f Implement setcc on longs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18088 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 08:11:28 +00:00
Brian Gaeke
4351857d78 Add all the rest of the ADD and SUB variants, some of which are important for
64-bit support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18087 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 07:13:17 +00:00
Brian Gaeke
5f91de2b38 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18086 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 07:13:16 +00:00
Brian Gaeke
b10fc0343f Update to-do list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18085 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 07:13:15 +00:00
Nate Begeman
486ebfd704 Fix Shootout-C++/wc, which was broken by my recent changes to emit fewer
reg-reg copies.  The necessary conditions for this bug are a GEP that is
used outside the basic block in which it is defined, whose components
other than the pointer are all constant zero, and where the use is
selected before the definition (backwards branch to successsor block).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18084 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 05:14:06 +00:00
Chris Lattner
88f9386cfe There is no reason to emit function stubs for direct calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18082 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 03:46:06 +00:00
Brian Gaeke
79fe833411 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18079 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 03:35:22 +00:00
Brian Gaeke
e1e2899e96 Update list of failing benchmarks & to-do list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18078 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 03:35:21 +00:00
Chris Lattner
7fc3824835 ignore generated files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18073 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 00:01:54 +00:00
Chris Lattner
cdc79e3763 ignore generated files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18072 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 00:00:54 +00:00
Chris Lattner
e72e445ed5 Remove all JIT specific code and switch the code generator over to emitting
relocations for global references.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18068 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:55:15 +00:00
Chris Lattner
7ddde32ead Implement the X86 JIT interfaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18067 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:54:33 +00:00
Chris Lattner
8dad013038 Describe the X86 target-specific relocations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18066 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:54:19 +00:00
Chris Lattner
89d64e262c We implement these interfaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18065 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:53:56 +00:00
Chris Lattner
3bf285a676 Adjust to changed interfaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18064 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:53:26 +00:00
Brian Gaeke
b95cbee930 Support most cases of vaarg (except double).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18055 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 22:50:42 +00:00
Brian Gaeke
087f0858ef Update failing test cases & to-do list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18054 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 22:50:41 +00:00
Chris Lattner
f6f0989754 This method was never implemented
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18039 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 04:19:47 +00:00
Chris Lattner
1deb74d7ee Remove this method, it's not clear how it could be implemented indep of 32 or 64-bit mode
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18038 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 04:17:17 +00:00
Chris Lattner
b443bc0da7 getJITStubForFunction is optional and unimplemented, just remove it for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18037 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 04:15:38 +00:00
Chris Lattner
a8b0fa5172 getJITStubForFunction is optional and unimplemented, just remove it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18036 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 04:14:44 +00:00
Brian Gaeke
e6e7e3aadd Implement vacopy and vanext.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18031 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 03:32:12 +00:00
Misha Brukman
1dc555c0d3 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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18025 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 00:10:20 +00:00
Tanya Lattner
def5745314 Made modsched hidden and changed so it matches the style of other options.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18024 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 23:34:33 +00:00
Misha Brukman
d42b167e61 Fix grammar
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18023 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 23:09:40 +00:00
Misha Brukman
d159aafc26 Add protoypes for 64-bit long/ulong div, mul, and rem functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18019 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 22:14:35 +00:00
Misha Brukman
c29e6a4f16 Fix file comment header
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18018 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 22:09:21 +00:00
Misha Brukman
c11c44f55b Handle GhostLinkage case for completeness (should not be seen by the asm writer)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18015 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 21:49:19 +00:00
Brian Gaeke
b6c409a13d Add VANext and VAArg stubs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18012 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 21:08:18 +00:00
Brian Gaeke
d90282db12 Implement va_start.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18011 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 20:57:24 +00:00
Chris Lattner
3104db054a Dont' forget to switch back to decimal output
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18010 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 20:57:07 +00:00
Brian Gaeke
4e459c465e First part of varargs support: getting all varargs which could possibly
be in registers into memory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18006 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 20:31:08 +00:00
Brian Gaeke
2f95ed65e0 va_end can safely be codegen'd to nothing on v8.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18004 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 19:21:34 +00:00
Brian Gaeke
9e672a2d1b A very sorry stub implementation of varargs intrinsics...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18003 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 18:53:59 +00:00
Brian Gaeke
507bc71820 Update list of expected test failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18002 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 18:48:29 +00:00
Brian Gaeke
a54df2503b Fix bug in casting to long/ulong.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18001 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 18:48:10 +00:00