oota-llvm.git
17 years agoFix constant folding of fp->int bitcast for vectors.
Reid Spencer [Sat, 3 Mar 2007 08:32:46 +0000 (08:32 +0000)]
Fix constant folding of fp->int bitcast for vectors.

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

17 years agoAdd APIntVal as a possible GenericeValue.
Reid Spencer [Sat, 3 Mar 2007 07:36:44 +0000 (07:36 +0000)]
Add APIntVal as a possible GenericeValue.

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

17 years agoOnly propagate IsKill if the last use is a kill.
Evan Cheng [Sat, 3 Mar 2007 06:32:37 +0000 (06:32 +0000)]
Only propagate IsKill if the last use is a kill.

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

17 years agoImplement APInt support for the binary operators.
Reid Spencer [Sat, 3 Mar 2007 06:22:22 +0000 (06:22 +0000)]
Implement APInt support for the binary operators.
Move the getConstantExpr function towards the end of the file so we don't
need a dozen forward declarations.

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

17 years ago1. Have the ExecutionContext keep track of the APInt's allocated and
Reid Spencer [Sat, 3 Mar 2007 06:19:55 +0000 (06:19 +0000)]
1. Have the ExecutionContext keep track of the APInt's allocated and
   ensure they are cleaned up when the stack frame exits.
2. Move a function to the Execution.cpp file where it belongs.

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

17 years agohttp://llvm.org/bugs/show_bug.cgi?id=1237
Nate Begeman [Sat, 3 Mar 2007 06:18:18 +0000 (06:18 +0000)]
http://llvm.org/bugs/show_bug.cgi?id=1237

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

17 years agoImplement loading and storing of APInt values from memory.
Reid Spencer [Sat, 3 Mar 2007 06:18:03 +0000 (06:18 +0000)]
Implement loading and storing of APInt values from memory.

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

17 years agoMake getNumWords public so that those using getRawData stand a chance of
Reid Spencer [Sat, 3 Mar 2007 06:17:23 +0000 (06:17 +0000)]
Make getNumWords public so that those using getRawData stand a chance of
not reading beyond the end of the buffer returned.

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

17 years agoAdd names for some of the operators. This is needed for the macros in
Reid Spencer [Sat, 3 Mar 2007 05:37:23 +0000 (05:37 +0000)]
Add names for some of the operators. This is needed for the macros in
the Interpreter.

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

17 years agoEmit low/high immediate loads properly for Linux/PPC.
Nick Lewycky [Sat, 3 Mar 2007 05:29:51 +0000 (05:29 +0000)]
Emit low/high immediate loads properly for Linux/PPC.

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

17 years agomy recent change caused a failure in a bswap testcase, because it changed
Chris Lattner [Sat, 3 Mar 2007 05:27:34 +0000 (05:27 +0000)]
my recent change caused a failure in a bswap testcase, because it changed
the order that instcombine processed instructions in the testcase.  The end
result is that instcombine finished with:

define i16 @test1(i16 %a) {
        %tmp = zext i16 %a to i32               ; <i32> [#uses=2]
        %tmp21 = lshr i32 %tmp, 8               ; <i32> [#uses=1]
        %tmp5 = shl i32 %tmp, 8         ; <i32> [#uses=1]
        %tmp.upgrd.32 = or i32 %tmp21, %tmp5            ; <i32> [#uses=1]
        %tmp.upgrd.3 = trunc i32 %tmp.upgrd.32 to i16           ; <i16> [#uses=1]
        ret i16 %tmp.upgrd.3
}

which can't get matched as a bswap.

This patch makes instcombine more sophisticated about removing truncating
casts, allowing it to turn this into:

define i16 @test2(i16 %a) {
        %tmp211 = lshr i16 %a, 8
        %tmp52 = shl i16 %a, 8
        %tmp.upgrd.323 = or i16 %tmp211, %tmp52
        ret i16 %tmp.upgrd.323
}

which then matches as bswap.  This fixes bswap.ll and implements
InstCombine/cast2.ll:test[12].  This also implements cast elimination of
add/sub.

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

17 years agonew testcase: instcombine should remove all the casts.
Chris Lattner [Sat, 3 Mar 2007 05:24:06 +0000 (05:24 +0000)]
new testcase: instcombine should remove all the casts.

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

17 years agoTranslate bit operations to English.
Nick Lewycky [Sat, 3 Mar 2007 03:14:40 +0000 (03:14 +0000)]
Translate bit operations to English.

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

17 years agoinstcombine doesn't do CSE, simplify unrelated detail
Chris Lattner [Sat, 3 Mar 2007 02:27:02 +0000 (02:27 +0000)]
instcombine doesn't do CSE, simplify unrelated detail

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

17 years agoWatch out for cases like this:
Evan Cheng [Sat, 3 Mar 2007 02:18:00 +0000 (02:18 +0000)]
Watch out for cases like this:

entry (0x8b056f0, LLVM BB @0x8b01b30, ID#0):
Live Ins: %r0 %r1 %r2 %r3
        %reg1032 = tMOVrr %r3<kill>
        %reg1033 = tMOVri8 1
        %reg1034 = tMOVri8 0
        tCMPi8 %reg1029<kill>, 0
        tBcc mbb<entry,0x8b06a10>, 0
    Successors according to CFG: 0x8b06980 0x8b06a10

entry (0x8b06980, LLVM BB @0x8b01b30, ID#12):
    Predecessors according to CFG: 0x8b056f0
        %reg1036 = tMOVrr %reg1034<kill>
    Successors according to CFG: 0x8b06a10

entry (0x8b06a10, LLVM BB @0x8b01b30, ID#13):
    Predecessors according to CFG: 0x8b056f0 0x8b06980
        %reg1024<dead> = tMOVrr %reg1030<kill>
        ...

reg1030 and r1 have already been joined. When reg1024 and reg1030 are joined,
r1 live range from function entry to the tMOVrr instruction are dead. Eliminate
r1 from the livein set of the entry BB, not the BB where the copy is.

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

17 years agoadd a top-level iteration loop to instcombine. This means that it will never
Chris Lattner [Sat, 3 Mar 2007 02:04:50 +0000 (02:04 +0000)]
add a top-level iteration loop to instcombine.  This means that it will never
finish without combining something it is capable of.

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

17 years agoAPIntify this pass.
Reid Spencer [Sat, 3 Mar 2007 00:48:31 +0000 (00:48 +0000)]
APIntify this pass.

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

17 years agoAdd isPositive for symmetry with isNegative.
Reid Spencer [Sat, 3 Mar 2007 00:24:39 +0000 (00:24 +0000)]
Add isPositive for symmetry with isNegative.

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

17 years agoFinally get this patch right :)
Reid Spencer [Fri, 2 Mar 2007 23:51:25 +0000 (23:51 +0000)]
Finally get this patch right :)
Replace expensive getZExtValue() == 0 calls with isZero() calls.

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

17 years agoDang, I've done that twice now! Undo previous commit.
Reid Spencer [Fri, 2 Mar 2007 23:37:53 +0000 (23:37 +0000)]
Dang, I've done that twice now! Undo previous commit.

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

17 years agoUse more efficient test for one value in a ConstantInt.
Reid Spencer [Fri, 2 Mar 2007 23:35:28 +0000 (23:35 +0000)]
Use more efficient test for one value in a ConstantInt.

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

17 years agoGuard against huge loop trip counts in an APInt safe way.
Reid Spencer [Fri, 2 Mar 2007 23:31:34 +0000 (23:31 +0000)]
Guard against huge loop trip counts in an APInt safe way.

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

17 years agoX86-64 VACOPY needs custom expansion. va_list is a struct { i32, i32, i8*, i8* }.
Evan Cheng [Fri, 2 Mar 2007 23:16:35 +0000 (23:16 +0000)]
X86-64 VACOPY needs custom expansion. va_list is a struct { i32, i32, i8*, i8* }.

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

17 years agoMake sure debug code is not evaluated in non-debug case.
Reid Spencer [Fri, 2 Mar 2007 23:15:21 +0000 (23:15 +0000)]
Make sure debug code is not evaluated in non-debug case.

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

17 years ago1. Sort switch cases using APInt safe comparison.
Reid Spencer [Fri, 2 Mar 2007 23:05:28 +0000 (23:05 +0000)]
1. Sort switch cases using APInt safe comparison.
2. Make sure debug output of APInt values is safe for all bit widths.

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

17 years agoUse APInt safe isOne() method on ConstantInt instead of getZExtValue()==1
Reid Spencer [Fri, 2 Mar 2007 23:03:17 +0000 (23:03 +0000)]
Use APInt safe isOne() method on ConstantInt instead of getZExtValue()==1

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

17 years agoMake sorting of ConstantInt be APInt clean through use of ult function.
Reid Spencer [Fri, 2 Mar 2007 23:01:14 +0000 (23:01 +0000)]
Make sorting of ConstantInt be APInt clean through use of ult function.

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

17 years agoFix ashr for bitwidths > 64. This is now validated up to 1024 bits.
Reid Spencer [Fri, 2 Mar 2007 22:39:11 +0000 (22:39 +0000)]
Fix ashr for bitwidths > 64. This is now validated up to 1024 bits.

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

17 years agoFix uninitialized use of variable. Remove tabs and fix identation.
Anton Korobeynikov [Fri, 2 Mar 2007 22:19:41 +0000 (22:19 +0000)]
Fix uninitialized use of variable. Remove tabs and fix identation.

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

17 years agoSimplify things
Anton Korobeynikov [Fri, 2 Mar 2007 21:50:27 +0000 (21:50 +0000)]
Simplify things

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

17 years agoFix a significant algorithm problem with the instcombine worklist. removing
Chris Lattner [Fri, 2 Mar 2007 21:28:56 +0000 (21:28 +0000)]
Fix a significant algorithm problem with the instcombine worklist.  removing
a value from the worklist required scanning the entire worklist to remove all
entries.  We now use a combination map+vector to prevent duplicates from
happening and prevent the scan.  This speeds up instcombine on a large file
from the llvm-gcc bootstrap from 189.7s to 4.84s in a debug build and from
5.04s to 1.37s in a release build.

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

17 years agominor cleanup
Chris Lattner [Fri, 2 Mar 2007 19:59:19 +0000 (19:59 +0000)]
minor cleanup

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

17 years agoFix PR1234 by working around a compiler bug.
Chris Lattner [Fri, 2 Mar 2007 18:16:29 +0000 (18:16 +0000)]
Fix PR1234 by working around a compiler bug.

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

17 years agoMark dead def as unused.
Evan Cheng [Fri, 2 Mar 2007 10:43:16 +0000 (10:43 +0000)]
Mark dead def as unused.

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

17 years agoDead live-in detection bug.
Evan Cheng [Fri, 2 Mar 2007 10:41:15 +0000 (10:41 +0000)]
Dead live-in detection bug.

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

17 years agoAdd a new test case.
Evan Cheng [Fri, 2 Mar 2007 10:37:19 +0000 (10:37 +0000)]
Add a new test case.

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

17 years ago- Keep track all def and uses of stack slot available in register.
Evan Cheng [Fri, 2 Mar 2007 08:52:00 +0000 (08:52 +0000)]
- Keep track all def and uses of stack slot available in register.
- Available value use may be deleted (e.g. noop move).

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

17 years agotestcase for PR1233
Chris Lattner [Fri, 2 Mar 2007 07:29:59 +0000 (07:29 +0000)]
testcase for PR1233

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

17 years agoInvalidate last use of a reused register if the use is a deleted noop copy.
Evan Cheng [Fri, 2 Mar 2007 05:41:42 +0000 (05:41 +0000)]
Invalidate last use of a reused register if the use is a deleted noop copy.

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

17 years agoargument lowering should copy from the vreg shadows of live-in arguments
Chris Lattner [Fri, 2 Mar 2007 05:12:29 +0000 (05:12 +0000)]
argument lowering should copy from the vreg shadows of live-in arguments
passed in registers, not directly from the pregs themselves.

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

17 years agoadd a note
Chris Lattner [Fri, 2 Mar 2007 05:04:52 +0000 (05:04 +0000)]
add a note

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

17 years agoFix a typo.
Owen Anderson [Fri, 2 Mar 2007 05:03:07 +0000 (05:03 +0000)]
Fix a typo.

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

17 years agoUse a better algorithm for rounding sqrt results. Change the FIXME about
Reid Spencer [Fri, 2 Mar 2007 04:21:55 +0000 (04:21 +0000)]
Use a better algorithm for rounding sqrt results. Change the FIXME about
this to a NOTE: because pari/gp results start to get rounded incorrectly
after 192 bits of precision. APInt and pari/gp never differ by more than
1, but APInt is more accurate because it does not lose precision after 192
bits as does pari/gp.

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

17 years agoImplement unionWith.
Nick Lewycky [Fri, 2 Mar 2007 03:33:05 +0000 (03:33 +0000)]
Implement unionWith.

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

17 years agoswitch the inliner from being recursive to being iterative.
Chris Lattner [Fri, 2 Mar 2007 03:11:20 +0000 (03:11 +0000)]
switch the inliner from being recursive to being iterative.

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

17 years agoFix an unequal bitwidth issue.
Reid Spencer [Fri, 2 Mar 2007 02:59:25 +0000 (02:59 +0000)]
Fix an unequal bitwidth issue.

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

17 years agogrammaro
Chris Lattner [Fri, 2 Mar 2007 02:57:34 +0000 (02:57 +0000)]
grammaro

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

17 years agoMake it 64-bit safe.
Evan Cheng [Fri, 2 Mar 2007 02:31:37 +0000 (02:31 +0000)]
Make it 64-bit safe.

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

17 years agoAdd a FIXME
Reid Spencer [Fri, 2 Mar 2007 02:01:34 +0000 (02:01 +0000)]
Add a FIXME

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

17 years agoFix a typo.
Reid Spencer [Fri, 2 Mar 2007 01:31:31 +0000 (01:31 +0000)]
Fix a typo.

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

17 years agoFix a problem where shifting by 64-bits leads to incorrect results on PPC
Reid Spencer [Fri, 2 Mar 2007 01:19:42 +0000 (01:19 +0000)]
Fix a problem where shifting by 64-bits leads to incorrect results on PPC
but not on X86 becuase shift by word size is "undefined".

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

17 years agoeliminate unnecessary reset of SP in epilog on darwin
Dale Johannesen [Fri, 2 Mar 2007 01:17:17 +0000 (01:17 +0000)]
eliminate unnecessary reset of SP in epilog on darwin

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

17 years agoReverse a premature commital.
Reid Spencer [Fri, 2 Mar 2007 00:31:39 +0000 (00:31 +0000)]
Reverse a premature commital.

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

17 years agoPrefer non-virtual calls to ConstantInt::isZero over virtual calls to
Reid Spencer [Fri, 2 Mar 2007 00:28:52 +0000 (00:28 +0000)]
Prefer non-virtual calls to ConstantInt::isZero over virtual calls to
Constant::isNullValue() in situations where it is possible.

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

17 years agoAdd a non-virtual test for zero, isZero, and rename isUnitValue isOne.
Reid Spencer [Fri, 2 Mar 2007 00:27:06 +0000 (00:27 +0000)]
Add a non-virtual test for zero, isZero, and rename isUnitValue isOne.
These will be used in upcoming patches to avoid virtual function call when
the client knows it is a ConstantInt.

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

17 years agoAdd an abs() function to get the absolute value.
Reid Spencer [Thu, 1 Mar 2007 23:37:09 +0000 (23:37 +0000)]
Add an abs() function to get the absolute value.

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

17 years agoCombine two lines that can be.
Reid Spencer [Thu, 1 Mar 2007 23:30:25 +0000 (23:30 +0000)]
Combine two lines that can be.

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

17 years agoRemove virtual keyword from method that doesn't need to be virtual.
Reid Spencer [Thu, 1 Mar 2007 23:20:52 +0000 (23:20 +0000)]
Remove virtual keyword from method that doesn't need to be virtual.

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

17 years agoMake it possible to create an SCEVUnknown from an APInt as well as an int.
Reid Spencer [Thu, 1 Mar 2007 22:28:51 +0000 (22:28 +0000)]
Make it possible to create an SCEVUnknown from an APInt as well as an int.

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

17 years agoAlthough probably not necessary, guard against a potential assertion by
Reid Spencer [Thu, 1 Mar 2007 21:54:37 +0000 (21:54 +0000)]
Although probably not necessary, guard against a potential assertion by
using isNullValue() instead of getZExtValue() == 0.

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

17 years agoUse isUnitValue() instead of getZExtValue() == 1 which will prevent an
Reid Spencer [Thu, 1 Mar 2007 21:51:23 +0000 (21:51 +0000)]
Use isUnitValue() instead of getZExtValue() == 1 which will prevent an
assert if the ConstantInt's value is large.

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

17 years agoAdd an isUnitValue method for comparison against 1. This just follows a
Reid Spencer [Thu, 1 Mar 2007 21:50:41 +0000 (21:50 +0000)]
Add an isUnitValue method for comparison against 1. This just follows a
common pattern with isNullValue, isAllOnesValue, etc. It also helps to
prevent things like getZExtValue() == 1, which could assert for large
bitwidths.

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

17 years agoUse GCC intrinsics when available, and use smarter fallbacks when not.
Owen Anderson [Thu, 1 Mar 2007 21:16:30 +0000 (21:16 +0000)]
Use GCC intrinsics when available, and use smarter fallbacks when not.

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

17 years agoClarify the use of getValue/getSExtValue/getZExtValue and add the new
Reid Spencer [Thu, 1 Mar 2007 21:05:33 +0000 (21:05 +0000)]
Clarify the use of getValue/getSExtValue/getZExtValue and add the new
APInt constructor.

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

17 years agoUse APInt conversion to string so the result is correct regardless of the
Reid Spencer [Thu, 1 Mar 2007 21:00:32 +0000 (21:00 +0000)]
Use APInt conversion to string so the result is correct regardless of the
bit width of the ConstantInt being converted.

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

17 years agoMake output for ConstantInt construction correct for any bitwidth.
Reid Spencer [Thu, 1 Mar 2007 20:55:43 +0000 (20:55 +0000)]
Make output for ConstantInt construction correct for any bitwidth.

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

17 years agoUse the APInt versions of the bit-wise conversions of float/double to int
Reid Spencer [Thu, 1 Mar 2007 20:44:23 +0000 (20:44 +0000)]
Use the APInt versions of the bit-wise conversions of float/double to int
and back. While this is not strictly necessary, it does pave the way for
future changes in casting. It should now be possible to improve vector
casting to deal with un-equal fp/int sizes.

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

17 years agoAdd doubleToBits and floatToBits methods.
Reid Spencer [Thu, 1 Mar 2007 20:39:01 +0000 (20:39 +0000)]
Add doubleToBits and floatToBits methods.

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

17 years agoUse modern variable name. ConstantUnsignedInt is long since dead. No
Reid Spencer [Thu, 1 Mar 2007 20:27:41 +0000 (20:27 +0000)]
Use modern variable name. ConstantUnsignedInt is long since dead. No
functional change with this patch.

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

17 years agoEmit eh filter info.
Jim Laskey [Thu, 1 Mar 2007 20:26:43 +0000 (20:26 +0000)]
Emit eh filter info.

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

17 years agoCollect eh filter info.
Jim Laskey [Thu, 1 Mar 2007 20:25:32 +0000 (20:25 +0000)]
Collect eh filter info.

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

17 years agoUse a simpler constructor for ConstantInt.
Reid Spencer [Thu, 1 Mar 2007 20:25:31 +0000 (20:25 +0000)]
Use a simpler constructor for ConstantInt.

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

17 years agoLower eh filter intrinsic.
Jim Laskey [Thu, 1 Mar 2007 20:24:30 +0000 (20:24 +0000)]
Lower eh filter intrinsic.

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

17 years agoAdd eh filter intrinsic.
Jim Laskey [Thu, 1 Mar 2007 20:23:39 +0000 (20:23 +0000)]
Add eh filter intrinsic.

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

17 years agoAdd bitsToDouble and bitsToFloat methods for re-interpretation of bits as FP.
Reid Spencer [Thu, 1 Mar 2007 20:06:51 +0000 (20:06 +0000)]
Add bitsToDouble and bitsToFloat methods for re-interpretation of bits as FP.

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

17 years agoWrap a long line.
Reid Spencer [Thu, 1 Mar 2007 19:48:16 +0000 (19:48 +0000)]
Wrap a long line.

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

17 years agoAvoid a potential assert out if the loop increment is > 64 bits.
Reid Spencer [Thu, 1 Mar 2007 19:45:00 +0000 (19:45 +0000)]
Avoid a potential assert out if the loop increment is > 64 bits.

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

17 years agoRegenerate.
Reid Spencer [Thu, 1 Mar 2007 19:41:47 +0000 (19:41 +0000)]
Regenerate.

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

17 years agoThe 64-bit constructor for ConstantInt changes from int64_t to uint64_t.
Reid Spencer [Thu, 1 Mar 2007 19:33:52 +0000 (19:33 +0000)]
The 64-bit constructor for ConstantInt changes from int64_t to uint64_t.
This caused a warning for construction with -1. Avoid the warning by using
-1ULL instead.

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

17 years agoConstruct ConstantInt with simpler constructor.
Reid Spencer [Thu, 1 Mar 2007 19:32:33 +0000 (19:32 +0000)]
Construct ConstantInt with simpler constructor.

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

17 years agoUse a simpler constructor when constructing ConstantInt. Also, replace
Reid Spencer [Thu, 1 Mar 2007 19:32:01 +0000 (19:32 +0000)]
Use a simpler constructor when constructing ConstantInt. Also, replace
verbose code to sext/trunc or zext/trunc and APInt with new methods on
that class.

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

17 years agoUse a simpler constructor when constructing ConstantInst.
Reid Spencer [Thu, 1 Mar 2007 19:31:12 +0000 (19:31 +0000)]
Use a simpler constructor when constructing ConstantInst.

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

17 years agoDrop the ConstantInt(const Type&, const APInt&) constructor. It is
Reid Spencer [Thu, 1 Mar 2007 19:30:34 +0000 (19:30 +0000)]
Drop the ConstantInt(const Type&, const APInt&) constructor. It is
redundant and more verbose than the ConstantInt(const APInt&) constructor.

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

17 years agoMake the static table of results in sqrt const.
Reid Spencer [Thu, 1 Mar 2007 17:47:31 +0000 (17:47 +0000)]
Make the static table of results in sqrt const.

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

17 years agoFix last night's 445.gobmk breakage which was caused by comparison of
Reid Spencer [Thu, 1 Mar 2007 17:17:21 +0000 (17:17 +0000)]
Fix last night's 445.gobmk breakage which was caused by comparison of
APInt's of unequal bitwidth.

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

17 years agoAdd methods for bit width modification: sextOrTrunc, zextOrTrunc.
Reid Spencer [Thu, 1 Mar 2007 17:15:32 +0000 (17:15 +0000)]
Add methods for bit width modification: sextOrTrunc, zextOrTrunc.

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

17 years agoEnsure that fastcall'ed function is correctly mangled & stack is
Anton Korobeynikov [Thu, 1 Mar 2007 16:29:22 +0000 (16:29 +0000)]
Ensure that fastcall'ed function is correctly mangled & stack is
properly aligned

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

17 years agoImplemented the frameaddress intrinsic for PPC.
Nicolas Geoffray [Thu, 1 Mar 2007 13:11:38 +0000 (13:11 +0000)]
Implemented the frameaddress intrinsic for PPC.

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

17 years agoDelete register scavenger when done with it.
Evan Cheng [Thu, 1 Mar 2007 10:23:33 +0000 (10:23 +0000)]
Delete register scavenger when done with it.

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

17 years agoUse a spilled free callee-saved register as scratch register.
Evan Cheng [Thu, 1 Mar 2007 08:57:52 +0000 (08:57 +0000)]
Use a spilled free callee-saved register as scratch register.

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

17 years agoAdd a version of FindUnusedReg that restrict search to a specific set of registers.
Evan Cheng [Thu, 1 Mar 2007 08:56:24 +0000 (08:56 +0000)]
Add a version of FindUnusedReg that restrict search to a specific set of registers.

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

17 years ago- Track which callee-saved registers are spilled.
Evan Cheng [Thu, 1 Mar 2007 08:26:31 +0000 (08:26 +0000)]
- Track which callee-saved registers are spilled.
- Some code clean up.

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

17 years agoRemove the "isSigned" parameters from ConstantRange. It turns out they
Reid Spencer [Thu, 1 Mar 2007 07:54:15 +0000 (07:54 +0000)]
Remove the "isSigned" parameters from ConstantRange. It turns out they
are not needed as the results are the same with or without it.

Patch by Nicholas Lewycky.

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

17 years agoSwitch from std::vector<bool> to BitVector.
Evan Cheng [Thu, 1 Mar 2007 07:52:44 +0000 (07:52 +0000)]
Switch from std::vector<bool> to BitVector.

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

17 years agoAPIntify various computations in ScalarEvolution
Reid Spencer [Thu, 1 Mar 2007 07:25:48 +0000 (07:25 +0000)]
APIntify various computations in ScalarEvolution

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

17 years agoUse a real table in sqrt to shorten and quicken the code.
Reid Spencer [Thu, 1 Mar 2007 06:23:32 +0000 (06:23 +0000)]
Use a real table in sqrt to shorten and quicken the code.
Thanks for the idea Chris.

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

17 years agoGet rid of verboten <iostream> include.
Bill Wendling [Thu, 1 Mar 2007 06:05:39 +0000 (06:05 +0000)]
Get rid of verboten <iostream> include.

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

17 years agoUse the GCC built-in for PopulationCount when it's available, and use a faster
Owen Anderson [Thu, 1 Mar 2007 05:41:28 +0000 (05:41 +0000)]
Use the GCC built-in for PopulationCount when it's available, and use a faster
algorithm when it's not.  This should be particularly noticeable in the
64-bit case.

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

17 years agoAdd a square root function.
Reid Spencer [Thu, 1 Mar 2007 05:39:56 +0000 (05:39 +0000)]
Add a square root function.

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

17 years agoReduce #includage by taking a method out of line.
Reid Spencer [Thu, 1 Mar 2007 04:02:06 +0000 (04:02 +0000)]
Reduce #includage by taking a method out of line.

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