oota-llvm.git
20 years agoAdd a new gccld -native-cbe option which causes gccld to generate native code
Chris Lattner [Tue, 6 Apr 2004 16:43:13 +0000 (16:43 +0000)]
Add a new gccld -native-cbe option which causes gccld to generate native code
for the application with the C backend instead of the native LLVM code generator

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12698 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoImprove codegen of long == and != comparisons against constants. Before,
Chris Lattner [Tue, 6 Apr 2004 16:02:27 +0000 (16:02 +0000)]
Improve codegen of long == and != comparisons against constants.  Before,
comparing a long against zero got us this:

        sub %ESP, 8
        mov DWORD PTR [%ESP + 4], %ESI
        mov DWORD PTR [%ESP], %EDI
        mov %EAX, DWORD PTR [%ESP + 12]
        mov %EDX, DWORD PTR [%ESP + 16]
        mov %ECX, 0
        mov %ESI, 0
        mov %EDI, %EAX
        xor %EDI, %ECX
        mov %ECX, %EDX
        xor %ECX, %ESI
        or %EDI, %ECX
        sete %CL
        test %CL, %CL
        je .LBB2 # PC rel: F

Now it gets us this:

        mov %EAX, DWORD PTR [%ESP + 4]
        mov %EDX, DWORD PTR [%ESP + 8]
        mov %ECX, %EAX
        or %ECX, %EDX
        sete %CL
        test %CL, %CL
        je .LBB2 # PC rel: F

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12696 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoUpdate docs a bit
Chris Lattner [Tue, 6 Apr 2004 15:22:35 +0000 (15:22 +0000)]
Update docs a bit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12695 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoRemove some options that don't really have anything to do with bugpoint
Chris Lattner [Tue, 6 Apr 2004 15:14:10 +0000 (15:14 +0000)]
Remove some options that don't really have anything to do with bugpoint

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12694 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoHandle various other important cases of multiplying a long constant immediate. For
Chris Lattner [Tue, 6 Apr 2004 04:55:43 +0000 (04:55 +0000)]
Handle various other important cases of multiplying a long constant immediate.  For
example, multiplying X*(1 + (1LL << 32)) now produces:

test:
        mov %ECX, DWORD PTR [%ESP + 4]
        mov %EDX, DWORD PTR [%ESP + 8]
        mov %EAX, %ECX
        add %EDX, %ECX
        ret

[[[Note to Alkis: why isn't linear scan generating this code??  This might be a
 problem with your intervals being too conservative:

test:
        mov %EAX, DWORD PTR [%ESP + 4]
        mov %EDX, DWORD PTR [%ESP + 8]
        add %EDX, %EAX
        ret

end note]]]

Whereas GCC produces this:

T:
        sub     %esp, 12
        mov     %edx, DWORD PTR [%esp+16]
        mov     DWORD PTR [%esp+8], %edi
        mov     %ecx, DWORD PTR [%esp+20]
        xor     %edi, %edi
        mov     DWORD PTR [%esp], %ebx
        mov     %ebx, %edi
        mov     %eax, %edx
        mov     DWORD PTR [%esp+4], %esi
        add     %ebx, %edx
        mov     %edi, DWORD PTR [%esp+8]
        lea     %edx, [%ecx+%ebx]
        mov     %esi, DWORD PTR [%esp+4]
        mov     %ebx, DWORD PTR [%esp]
        add     %esp, 12
        ret

I'm not sure example what GCC is smoking here, but it looks like it has just
confused itself with a bunch of stack slots or something.  The intel compiler
is better, but still not good:

T:
        movl      4(%esp), %edx                                 #2.11
        movl      8(%esp), %eax                                 #2.11
        lea       (%eax,%edx), %ecx                             #3.12
        movl      $1, %eax                                      #3.12
        mull      %edx                                          #3.12
        addl      %ecx, %edx                                    #3.12
        ret                                                     #3.12

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12693 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoEfficiently handle a long multiplication by a constant. For this testcase:
Chris Lattner [Tue, 6 Apr 2004 04:29:36 +0000 (04:29 +0000)]
Efficiently handle a long multiplication by a constant.  For this testcase:

long %test(long %X) {
        %Y = mul long %X, 123
        ret long %Y
}

we used to generate:

test:
        sub %ESP, 12
        mov DWORD PTR [%ESP + 8], %ESI
        mov DWORD PTR [%ESP + 4], %EDI
        mov DWORD PTR [%ESP], %EBX
        mov %ECX, DWORD PTR [%ESP + 16]
        mov %ESI, DWORD PTR [%ESP + 20]
        mov %EDI, 123
        mov %EBX, 0
        mov %EAX, %ECX
        mul %EDI
        imul %ESI, %EDI
        add %ESI, %EDX
        imul %ECX, %EBX
        add %ESI, %ECX
        mov %EDX, %ESI
        mov %EBX, DWORD PTR [%ESP]
        mov %EDI, DWORD PTR [%ESP + 4]
        mov %ESI, DWORD PTR [%ESP + 8]
        add %ESP, 12
        ret

Now we emit:
test:
        mov %EAX, DWORD PTR [%ESP + 4]
        mov %ECX, DWORD PTR [%ESP + 8]
        mov %EDX, 123
        mul %EDX
        imul %ECX, %ECX, 123
        add %ECX, %EDX
        mov %EDX, %ECX
        ret

Which, incidently, is substantially nicer than what GCC manages:
T:
        sub     %esp, 8
        mov     %eax, 123
        mov     DWORD PTR [%esp], %ebx
        mov     %ebx, DWORD PTR [%esp+16]
        mov     DWORD PTR [%esp+4], %esi
        mov     %esi, DWORD PTR [%esp+12]
        imul    %ecx, %ebx, 123
        mov     %ebx, DWORD PTR [%esp]
        mul     %esi
        mov     %esi, DWORD PTR [%esp+4]
        add     %esp, 8
        lea     %edx, [%ecx+%edx]
        ret

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12692 91177308-0d34-0410-b5e6-96231b3b80d8

20 years ago* Added link to newly written ExtendingLLVM.html document
Misha Brukman [Tue, 6 Apr 2004 04:22:43 +0000 (04:22 +0000)]
* Added link to newly written ExtendingLLVM.html document
* Eliminated extraneous space in the HTML

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12691 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoIncorporated Chris' comments.
Misha Brukman [Tue, 6 Apr 2004 04:17:51 +0000 (04:17 +0000)]
Incorporated Chris' comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12690 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAdded notes on extending LLVM with new instructions, intrinsics, types, etc.
Misha Brukman [Tue, 6 Apr 2004 03:53:49 +0000 (03:53 +0000)]
Added notes on extending LLVM with new instructions, intrinsics, types, etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12689 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoImprove code generation of long shifts by 32.
Chris Lattner [Tue, 6 Apr 2004 03:42:38 +0000 (03:42 +0000)]
Improve code generation of long shifts by 32.
On this testcase:

long %test(long %X) {
        %Y = shr long %X, ubyte 32
        ret long %Y
}

instead of:
t:
        mov %EAX, DWORD PTR [%ESP + 4]
        mov %EAX, DWORD PTR [%ESP + 8]
        sar %EAX, 0
        mov %EDX, 0
        ret

we now emit:
test:
        mov %EAX, DWORD PTR [%ESP + 4]
        mov %EAX, DWORD PTR [%ESP + 8]
        mov %EDX, 0
        ret

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12688 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoBugfixes: inc/dec don't set the carry flag!
Chris Lattner [Tue, 6 Apr 2004 03:36:57 +0000 (03:36 +0000)]
Bugfixes: inc/dec don't set the carry flag!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12687 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoImprove code for passing constant longs as arguments to function calls.
Chris Lattner [Tue, 6 Apr 2004 03:23:00 +0000 (03:23 +0000)]
Improve code for passing constant longs as arguments to function calls.
For example, on this instruction:

        call void %test(long 1234)

Instead of this:
        mov %EAX, 1234
        mov %ECX, 0
        mov DWORD PTR [%ESP], %EAX
        mov DWORD PTR [%ESP + 4], %ECX
        call test

We now emit this:
        mov DWORD PTR [%ESP], 1234
        mov DWORD PTR [%ESP + 4], 0
        call test

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12686 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoEmit more efficient 64-bit operations when the RHS is a constant, and one
Chris Lattner [Tue, 6 Apr 2004 03:15:53 +0000 (03:15 +0000)]
Emit more efficient 64-bit operations when the RHS is a constant, and one
of the words of the constant is zeros.  For example:
  Y = and long X, 1234

now generates:
  Yl = and Xl, 1234
  Yh = 0

instead of:
  Yl = and Xl, 1234
  Yh = and Xh, 0

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12685 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoFix typeo
Chris Lattner [Tue, 6 Apr 2004 02:13:25 +0000 (02:13 +0000)]
Fix typeo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12684 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAdd support for simple immediate handling to long instruction selection.
Chris Lattner [Tue, 6 Apr 2004 02:11:49 +0000 (02:11 +0000)]
Add support for simple immediate handling to long instruction selection.
This allows us to handle code like 'add long %X, 123456789012' more efficiently.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12683 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoThe sbb instructions really ARE sbb's, not adc's
Chris Lattner [Tue, 6 Apr 2004 02:02:11 +0000 (02:02 +0000)]
The sbb instructions really ARE sbb's, not adc's

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12682 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoImplement negation of longs efficiently. For this testcase:
Chris Lattner [Tue, 6 Apr 2004 01:48:06 +0000 (01:48 +0000)]
Implement negation of longs efficiently.  For this testcase:

long %test(long %X) {
        %Y = sub long 0, %X
        ret long %Y
}

We used to generate:

test:
        sub %ESP, 4
        mov DWORD PTR [%ESP], %ESI
        mov %ECX, DWORD PTR [%ESP + 8]
        mov %ESI, DWORD PTR [%ESP + 12]
        mov %EAX, 0
        mov %EDX, 0
        sub %EAX, %ECX
        sbb %EDX, %ESI
        mov %ESI, DWORD PTR [%ESP]
        add %ESP, 4
        ret

Now we generate:

test:
        mov %EAX, DWORD PTR [%ESP + 4]
        mov %EDX, DWORD PTR [%ESP + 8]
        neg %EAX
        adc %EDX, 0
        neg %EDX
        ret

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12681 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoMinor tweak to avoid an extra reg-reg copy that the register allocator has to eliminate
Chris Lattner [Tue, 6 Apr 2004 01:25:33 +0000 (01:25 +0000)]
Minor tweak to avoid an extra reg-reg copy that the register allocator has to eliminate

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12680 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoTwo changes:
Chris Lattner [Tue, 6 Apr 2004 01:21:00 +0000 (01:21 +0000)]
Two changes:
  * In promote32, if we can just promote a constant value, do so instead of
    promoting a constant dynamically.
  * In visitReturn inst, actually USE the promote32 argument that takes a
    Value*

The end result of this is that we now generate this:

test:
        mov %EAX, 0
        ret

instead of...

test:
        mov %AX, 0
        movzx %EAX, %AX
        ret

for:

ushort %test() {
        ret ushort 0
}

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12679 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoMerge the code generator miscompilation code into the optimizer miscompilation
Chris Lattner [Mon, 5 Apr 2004 22:58:16 +0000 (22:58 +0000)]
Merge the code generator miscompilation code into the optimizer miscompilation
code.  This "instantly" gives us loop-extractor power to assist with the
debugment of our nasty codegen issues.  :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12678 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoMake a method public
Chris Lattner [Mon, 5 Apr 2004 22:01:48 +0000 (22:01 +0000)]
Make a method public

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12677 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoMinor cleanups, remove some old debug code
Chris Lattner [Mon, 5 Apr 2004 21:37:55 +0000 (21:37 +0000)]
Minor cleanups, remove some old debug code

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12676 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoRefactor and genericize code
Chris Lattner [Mon, 5 Apr 2004 21:37:38 +0000 (21:37 +0000)]
Refactor and genericize code

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12675 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agolli no longer takes the -quiet option!
Chris Lattner [Mon, 5 Apr 2004 20:28:41 +0000 (20:28 +0000)]
lli no longer takes the -quiet option!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12674 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoDo not mangle intrinsics in any way!
Chris Lattner [Mon, 5 Apr 2004 20:17:53 +0000 (20:17 +0000)]
Do not mangle intrinsics in any way!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12673 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoMake full use of the Mangler interface to simplify code
Chris Lattner [Mon, 5 Apr 2004 19:31:02 +0000 (19:31 +0000)]
Make full use of the Mangler interface to simplify code

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12671 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoSparc don't got not "sqrtl", bum bum bum
Chris Lattner [Mon, 5 Apr 2004 19:05:15 +0000 (19:05 +0000)]
Sparc don't got not "sqrtl", bum bum bum

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12670 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoKill warnings during an optimized compile where assert() disappears.
Misha Brukman [Mon, 5 Apr 2004 19:00:46 +0000 (19:00 +0000)]
Kill warnings during an optimized compile where assert() disappears.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12669 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoFix PR312 and IndVarsSimplify/2004-04-05-InvokeCastCrash.llx
Chris Lattner [Mon, 5 Apr 2004 18:46:55 +0000 (18:46 +0000)]
Fix PR312 and IndVarsSimplify/2004-04-05-InvokeCastCrash.llx

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12668 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoNew testcase for PR312
Chris Lattner [Mon, 5 Apr 2004 18:46:33 +0000 (18:46 +0000)]
New testcase for PR312

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12667 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoFix a bug in yesterdays checkins which broke siod. siod is a great testcase! :)
Chris Lattner [Mon, 5 Apr 2004 16:02:41 +0000 (16:02 +0000)]
Fix a bug in yesterdays checkins which broke siod.  siod is a great testcase!  :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12659 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoFix InstCombine/2004-04-04-InstCombineReplaceAllUsesWith.ll
Chris Lattner [Mon, 5 Apr 2004 02:10:19 +0000 (02:10 +0000)]
Fix InstCombine/2004-04-04-InstCombineReplaceAllUsesWith.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12658 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoNew testcase that crashes the instcombine pass. Dominance properties have
Chris Lattner [Mon, 5 Apr 2004 02:01:32 +0000 (02:01 +0000)]
New testcase that crashes the instcombine pass.  Dominance properties have
no meaning if the code is not reachable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12657 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoPR82 is finally fixed!
Chris Lattner [Mon, 5 Apr 2004 01:43:08 +0000 (01:43 +0000)]
PR82 is finally fixed!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12656 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoMinor change
Chris Lattner [Mon, 5 Apr 2004 01:31:50 +0000 (01:31 +0000)]
Minor change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12655 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoUpdate getelementptr instruction description
Chris Lattner [Mon, 5 Apr 2004 01:30:49 +0000 (01:30 +0000)]
Update getelementptr instruction description

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12654 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoSupport getelementptr instructions which use uint's to index into structure
Chris Lattner [Mon, 5 Apr 2004 01:30:19 +0000 (01:30 +0000)]
Support getelementptr instructions which use uint's to index into structure
types and can have arbitrary 32- and 64-bit integer types indexing into
sequential types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12653 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoSupport getelementptr instructions which use uint's to index into structure
Chris Lattner [Mon, 5 Apr 2004 01:30:04 +0000 (01:30 +0000)]
Support getelementptr instructions which use uint's to index into structure
types and can have arbitrary 32- and 64-bit integer types indexing into
sequential types.

Auto-upgrade .ll files that use ubytes to index into structures to use uint's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12652 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoImplement support for a new LLVM 1.3 bytecode format, which uses uint's
Chris Lattner [Mon, 5 Apr 2004 01:27:26 +0000 (01:27 +0000)]
Implement support for a new LLVM 1.3 bytecode format, which uses uint's
to index into structure types and allows arbitrary 32- and 64-bit integer
types to index into sequential types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12651 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoBe more restrictive with the index types we allow for sequential types
Chris Lattner [Mon, 5 Apr 2004 01:25:21 +0000 (01:25 +0000)]
Be more restrictive with the index types we allow for sequential types

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12650 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoPR305 is now fixed
Chris Lattner [Mon, 5 Apr 2004 00:40:55 +0000 (00:40 +0000)]
PR305 is now fixed

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12649 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAdd ConstantExpr::get(Sign|Zero)Extend methods
Chris Lattner [Sun, 4 Apr 2004 23:20:30 +0000 (23:20 +0000)]
Add ConstantExpr::get(Sign|Zero)Extend methods

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12648 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoIn the perhaps not-to-distant future, we might support gep instructions that
Chris Lattner [Sun, 4 Apr 2004 20:44:05 +0000 (20:44 +0000)]
In the perhaps not-to-distant future, we might support gep instructions that
have non-long indices for sequential types.  In order to avoid trying to figure
out how the v9 backend works, we'll just hack it in the preselection pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12647 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAdjust to new interface
Chris Lattner [Sun, 4 Apr 2004 19:47:06 +0000 (19:47 +0000)]
Adjust to new interface

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12646 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoSupport iteration over constant instructions
Chris Lattner [Sun, 4 Apr 2004 19:46:54 +0000 (19:46 +0000)]
Support iteration over constant instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12645 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAdjust to new gep_type_iterator prototypes.
Chris Lattner [Sun, 4 Apr 2004 17:30:06 +0000 (17:30 +0000)]
Adjust to new gep_type_iterator prototypes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12644 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoRemove a bunch of cruft that was used to be backwards compatible with the last
Chris Lattner [Sat, 3 Apr 2004 23:43:42 +0000 (23:43 +0000)]
Remove a bunch of cruft that was used to be backwards compatible with the last
prerelease format for LLVM bytecode files.  Now we only are compatible with
LLVM 1.0+.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12643 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAllow for use of arbitrary iterator types...
Chris Lattner [Sat, 3 Apr 2004 23:29:11 +0000 (23:29 +0000)]
Allow for use of arbitrary iterator types...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12642 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoImplement test/Regression/Transforms/GCSE/undefined_load.ll
Chris Lattner [Sat, 3 Apr 2004 00:45:16 +0000 (00:45 +0000)]
Implement test/Regression/Transforms/GCSE/undefined_load.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12641 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoNew testcase
Chris Lattner [Sat, 3 Apr 2004 00:44:56 +0000 (00:44 +0000)]
New testcase

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12640 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAdd a break in the default case
Chris Lattner [Sat, 3 Apr 2004 00:43:03 +0000 (00:43 +0000)]
Add a break in the default case

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12639 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAdd autoconf support for isStandardOutAConsole ().
Brian Gaeke [Fri, 2 Apr 2004 21:26:04 +0000 (21:26 +0000)]
Add autoconf support for isStandardOutAConsole ().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12638 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoRegenerated using autoheader-2.57.
Brian Gaeke [Fri, 2 Apr 2004 21:26:03 +0000 (21:26 +0000)]
Regenerated using autoheader-2.57.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12637 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoRegenerated using autoconf-2.57.
Brian Gaeke [Fri, 2 Apr 2004 21:26:02 +0000 (21:26 +0000)]
Regenerated using autoconf-2.57.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12636 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agocheck for isatty function
Brian Gaeke [Fri, 2 Apr 2004 21:06:44 +0000 (21:06 +0000)]
check for isatty function

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12635 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoRemove obsolete analyses
Chris Lattner [Fri, 2 Apr 2004 20:56:33 +0000 (20:56 +0000)]
Remove obsolete analyses

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12634 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoRemove obsolete files
Chris Lattner [Fri, 2 Apr 2004 20:56:24 +0000 (20:56 +0000)]
Remove obsolete files

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12633 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAdd support for many of the MRegisterInfo callbacks.
Brian Gaeke [Fri, 2 Apr 2004 20:53:37 +0000 (20:53 +0000)]
Add support for many of the MRegisterInfo callbacks.
Eliminating call-frame pseudo instrs and frame indices are still stubs.
Flesh out the emitPrologue method based on better ABI knowledge.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12632 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAdd load, store, and NOP instructions.
Brian Gaeke [Fri, 2 Apr 2004 20:53:37 +0000 (20:53 +0000)]
Add load, store, and NOP instructions.
Fix up comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12631 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAdd support for printing pc-relative displacements of functions (as used in
Brian Gaeke [Fri, 2 Apr 2004 20:53:35 +0000 (20:53 +0000)]
Add support for printing pc-relative displacements of functions (as used in
the CALL instruction).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12630 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAdd support for call instructions (0-ary only for now).
Brian Gaeke [Fri, 2 Apr 2004 20:53:33 +0000 (20:53 +0000)]
Add support for call instructions (0-ary only for now).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12629 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agocleanup some long-dead code
Chris Lattner [Fri, 2 Apr 2004 20:46:26 +0000 (20:46 +0000)]
cleanup some long-dead code

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12628 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoIgnore configure produced files
Chris Lattner [Fri, 2 Apr 2004 20:34:30 +0000 (20:34 +0000)]
Ignore configure produced files

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12627 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoTweak libraries for scev changes
Chris Lattner [Fri, 2 Apr 2004 20:32:46 +0000 (20:32 +0000)]
Tweak libraries for scev changes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12625 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agonew testcase
Chris Lattner [Fri, 2 Apr 2004 20:27:47 +0000 (20:27 +0000)]
new testcase

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12624 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoComment out debugging printouts
Chris Lattner [Fri, 2 Apr 2004 20:26:46 +0000 (20:26 +0000)]
Comment out debugging printouts

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12623 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoNew testcases for the indvars pass
Chris Lattner [Fri, 2 Apr 2004 20:26:04 +0000 (20:26 +0000)]
New testcases for the indvars pass

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12622 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoTweak testcase to work with new indvars pass
Chris Lattner [Fri, 2 Apr 2004 20:25:26 +0000 (20:25 +0000)]
Tweak testcase to work with new indvars pass

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12621 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoRewrite the indvars pass to use the ScalarEvolution analysis.
Chris Lattner [Fri, 2 Apr 2004 20:24:31 +0000 (20:24 +0000)]
Rewrite the indvars pass to use the ScalarEvolution analysis.

This also implements some new features for the indvars pass, including
linear function test replacement, exit value substitution, and it works with
a much more general class of induction variables and loops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12620 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAdd a new analysis
Chris Lattner [Fri, 2 Apr 2004 20:23:17 +0000 (20:23 +0000)]
Add a new analysis

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12619 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoFix the obvious bug in my previous checkin
Chris Lattner [Fri, 2 Apr 2004 18:15:10 +0000 (18:15 +0000)]
Fix the obvious bug in my previous checkin

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12618 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoImplement Transforms/SimplifyCFG/return-merge.ll
Chris Lattner [Fri, 2 Apr 2004 18:13:43 +0000 (18:13 +0000)]
Implement Transforms/SimplifyCFG/return-merge.ll

This actually causes us to turn code like:

  return C ? A : B;

into a select instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12617 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoNew testcase
Chris Lattner [Fri, 2 Apr 2004 18:12:49 +0000 (18:12 +0000)]
New testcase

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12616 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoClean up code a bit.
Alkis Evlogimenos [Fri, 2 Apr 2004 18:11:32 +0000 (18:11 +0000)]
Clean up code a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12615 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoOnly strip symbols if emitting bytecode to the assembly file.
Brian Gaeke [Fri, 2 Apr 2004 17:52:40 +0000 (17:52 +0000)]
Only strip symbols if emitting bytecode to the assembly file.

Move lowerselect pass to come after preselection.  Move machine
code construction and stack slots pass to come right before instruction
selection. This is to help fix perlbmk.

Update comments.

Make the sequence of passes in addPassesToJITCompile look more like
the sequence of passes in addPassesToEmitAssembly, including support
for -print-machineinstrs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12614 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAdd support for constant select expressions. Clarify the assertion failure msg.
Brian Gaeke [Fri, 2 Apr 2004 17:52:29 +0000 (17:52 +0000)]
Add support for constant select expressions. Clarify the assertion failure msg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12613 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoMinor speedup
Chris Lattner [Fri, 2 Apr 2004 16:28:32 +0000 (16:28 +0000)]
Minor speedup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12612 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoFix type in comments
Alkis Evlogimenos [Fri, 2 Apr 2004 16:02:50 +0000 (16:02 +0000)]
Fix type in comments

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12611 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoFix type in instruction builder instantiation
Alkis Evlogimenos [Fri, 2 Apr 2004 15:51:03 +0000 (15:51 +0000)]
Fix type in instruction builder instantiation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12610 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoMake the verifier API more complete and useful.
Chris Lattner [Fri, 2 Apr 2004 15:45:08 +0000 (15:45 +0000)]
Make the verifier API more complete and useful.

Patch contributed by Reid Spencer

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12609 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoMake the verifier API more complete and useful
Chris Lattner [Fri, 2 Apr 2004 15:44:33 +0000 (15:44 +0000)]
Make the verifier API more complete and useful

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12608 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAdd more ADC and SBB variants
Alkis Evlogimenos [Fri, 2 Apr 2004 07:11:10 +0000 (07:11 +0000)]
Add more ADC and SBB variants

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12607 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agominor formatting change
Chris Lattner [Fri, 2 Apr 2004 06:32:45 +0000 (06:32 +0000)]
minor formatting change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12606 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoFix two pretty serious bugs:
Chris Lattner [Fri, 2 Apr 2004 06:32:17 +0000 (06:32 +0000)]
Fix two pretty serious bugs:
  1. Each time the loop extractor extracted a loop, we would leak a module.
  2. When we extracted a loop, we didn't add the new function to the list of
     miscompiled functions.  Thus if the bug was in a loop nest and we
     extracted it, we could actually *LOSE THE BUG*, which is very bad.

With these patches, bugpoint has successfully found a bug for me in a function
with several nested loops, and cut it down to just one of them. :) :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12605 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoFix a fairly nasty bug that prevented bugpoint from working quite right when
Chris Lattner [Fri, 2 Apr 2004 06:30:33 +0000 (06:30 +0000)]
Fix a fairly nasty bug that prevented bugpoint from working quite right when
hacking on programs with two functions that have the same name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12604 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoIf the program returns a non-zero exit value, don't leave files laying
Chris Lattner [Fri, 2 Apr 2004 05:33:06 +0000 (05:33 +0000)]
If the program returns a non-zero exit value, don't leave files laying
around

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12603 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoFix wonky header
Chris Lattner [Fri, 2 Apr 2004 05:06:57 +0000 (05:06 +0000)]
Fix wonky header
Address PR305: LLVM tools will happily spew bytecode onto your terminal

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12602 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAdd new function
Chris Lattner [Fri, 2 Apr 2004 05:04:12 +0000 (05:04 +0000)]
Add new function

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12601 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAdd new function, autoconf support required tho
Chris Lattner [Fri, 2 Apr 2004 05:04:03 +0000 (05:04 +0000)]
Add new function, autoconf support required tho

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12600 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoBug fixed
Chris Lattner [Thu, 1 Apr 2004 20:31:29 +0000 (20:31 +0000)]
Bug fixed

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12598 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoFix PR310 and TailDup/2004-04-01-DemoteRegToStack.llx
Chris Lattner [Thu, 1 Apr 2004 20:28:45 +0000 (20:28 +0000)]
Fix PR310 and TailDup/2004-04-01-DemoteRegToStack.llx

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12597 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoNew testcase for PR310
Chris Lattner [Thu, 1 Apr 2004 20:28:35 +0000 (20:28 +0000)]
New testcase for PR310

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12596 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoRemove some assertions that are now bogus with the last patch I put in
Chris Lattner [Thu, 1 Apr 2004 19:21:46 +0000 (19:21 +0000)]
Remove some assertions that are now bogus with the last patch I put in

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12595 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoBug fixed
Chris Lattner [Thu, 1 Apr 2004 19:09:49 +0000 (19:09 +0000)]
Bug fixed

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12593 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoFix PR306: Loop simplify incorrectly updates dominator information
Chris Lattner [Thu, 1 Apr 2004 19:06:07 +0000 (19:06 +0000)]
Fix PR306: Loop simplify incorrectly updates dominator information
Testcase: LoopSimplify/2004-04-01-IncorrectDomUpdate.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12592 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoNew testcase for PR306
Chris Lattner [Thu, 1 Apr 2004 19:05:54 +0000 (19:05 +0000)]
New testcase for PR306

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12591 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoFix grammar.
Misha Brukman [Thu, 1 Apr 2004 17:15:42 +0000 (17:15 +0000)]
Fix grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12590 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoAdd support for select constant expressions to the CBE, fixing SIOD
Chris Lattner [Thu, 1 Apr 2004 05:28:26 +0000 (05:28 +0000)]
Add support for select constant expressions to the CBE, fixing SIOD

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12589 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoSimplify code by using the more powerful BuildMI forms.
Chris Lattner [Thu, 1 Apr 2004 04:06:09 +0000 (04:06 +0000)]
Simplify code by using the more powerful BuildMI forms.
Implement a small optimization.  In test/Regression/CodeGen/X86/select.ll,
we now generate this for foldSel3:

foldSel3:
        mov %AL, BYTE PTR [%ESP + 4]
        fld DWORD PTR [%ESP + 8]
        fld DWORD PTR [%ESP + 12]
        mov %EAX, DWORD PTR [%ESP + 16]
        mov %ECX, DWORD PTR [%ESP + 20]
        cmp %EAX, %ECX
        fxch %ST(1)
        fcmovae %ST(0), %ST(1)
***     fstp %ST(1)
        ret

Instead of:

foldSel3:
        mov %AL, BYTE PTR [%ESP + 4]
        fld DWORD PTR [%ESP + 8]
        fld DWORD PTR [%ESP + 12]
        mov %EAX, DWORD PTR [%ESP + 16]
        mov %ECX, DWORD PTR [%ESP + 20]
        cmp %EAX, %ECX
        fxch %ST(1)
        fcmovae %ST(0), %ST(1)
***     fxch %ST(1)
***     fstp %ST(0)
        ret

In practice, this only effects code size: performance should be basically
unaffected.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12588 91177308-0d34-0410-b5e6-96231b3b80d8

20 years agoWrap at 80 cols
Chris Lattner [Thu, 1 Apr 2004 04:03:27 +0000 (04:03 +0000)]
Wrap at 80 cols

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12587 91177308-0d34-0410-b5e6-96231b3b80d8