Commit Graph

17260 Commits

Author SHA1 Message Date
Chris Lattner
ec285706ae Adjust to changes in the User class. Introduce a new UnaryInstruction
class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19887 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:32:51 +00:00
Chris Lattner
519ccafc18 Adjust to user changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19886 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:32:00 +00:00
Chris Lattner
454928eda4 Many changes to cope with the User.h changes. Instructions now generally
directly embed their operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19885 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:31:36 +00:00
Chris Lattner
b8d5b1211f Adjust to User.h changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19884 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:30:52 +00:00
Chris Lattner
f718e70c7e Instead of storing operands as std::vector<Use>, just maintain a pointer
and num operands in the User class.  this allows us to embed the operands
directly in the subclasses if possible.  For example, for binary operators
we store the two operands in the derived class.

The has several effects:
  1. it improves locality because the operands and instruction are together
  2. it makes accesses to operands faster (one less load) if you access them
     through the derived class pointer.  For example this:

Value *GetBinaryOperatorOp(BinaryOperator *I, int i) {
  return I->getOperand(i);
}

Was compiled to:

_Z19GetBinaryOperatorOpPN4llvm14BinaryOperatorEi:
        movl    4(%esp), %edx
        movl    8(%esp), %eax
        sall    $4, %eax
        movl    24(%edx), %ecx
        addl    %ecx, %eax
        movl    (%eax), %eax
        ret

and is now compiled to:

_Z19GetBinaryOperatorOpPN4llvm14BinaryOperatorEi:
        movl    8(%esp), %eax
        movl    4(%esp), %edx
        sall    $4, %eax
        addl    %edx, %eax
        movl    44(%eax), %eax
        ret

Accesses through "Instruction*" are unmodified.

   3. This reduces memory consumption (by about 3%) by eliminating 1 word of
      vector overhead and a malloc header on a seperate object.
   4. This speeds up gccas about 10% (both debug and release builds) on
      large things (such as 176.gcc).  For example, it takes a debug build
      from 172.9 -> 155.6s and a release gccas from 67.7 -> 61.8s


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19883 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:29:39 +00:00
Andrew Lenharth
cc1b16faed fix ExprMap, partially teach about add long
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19882 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 23:17:54 +00:00
Chris Lattner
f4aa3351de Fix a nasty thinko in my previous commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19881 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 23:17:27 +00:00
Chris Lattner
99939d39c9 Alpha doesn't have a native f32 extload instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19880 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 22:58:25 +00:00
Chris Lattner
e76ad6de40 implement legalization of truncates whose results and sources need to be
truncated, e.g. (truncate:i8 something:i16) on a 32 or 64-bit RISC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19879 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 22:52:50 +00:00
Chris Lattner
e560521f1a Get alpha working with memset/memcpy/memmove
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19878 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 22:29:18 +00:00
Reid Spencer
f8f5740a37 Fix some typos in the Makefile.rules.
Patch contributed by Vladimer Merzliakov.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19877 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 19:52:32 +00:00
Chris Lattner
05dd08fb0a Hrm, who knows what 'uint' is, but it seems to work sometimes? Wierd.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19876 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 19:37:35 +00:00
Chris Lattner
ad5fec12a0 * add some DEBUG statements
* Properly compile this:

struct a {};
int test() {
  struct a b[2];
  if (&b[0] != &b[1])
    abort ();
  return 0;
}

to 'return 0', not abort().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19875 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 19:32:01 +00:00
Chris Lattner
ce04a6d7f6 Fix ConstProp/2005-01-28-SetCCGEP.ll: indexing over zero sized elements does
not change the address.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19874 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 19:09:51 +00:00
Chris Lattner
2fac727fb0 New testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19873 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 19:08:32 +00:00
Chris Lattner
aa5bcb526b Add some initial documentation for the SelectionDAG based instruction selectors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19872 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 17:22:53 +00:00
Chris Lattner
e6585ab601 Do not clean up if the MappedFile was never used or if the client already
closed the file.  This unbreaks the build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19871 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 16:08:23 +00:00
Andrew Lenharth
6b9870abce fix ExprMap and constant check in setcc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19870 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 14:06:46 +00:00
Jeff Cohen
a5ba89421e Get VC++ compiling again
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19869 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 07:29:32 +00:00
Reid Spencer
be4922a28a Convert some old C-style casts to C++ style.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19868 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 07:22:20 +00:00
Andrew Lenharth
40831c5e0e move FP into it's own select
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19867 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 06:57:18 +00:00
Chris Lattner
13c184de29 CopyFromReg produces two values. Make sure that we remember that both are
legalized, and actually return the correct result when we legalize the chain first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19866 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 06:27:38 +00:00
Chris Lattner
1fe848ed2e These passes are no more.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19865 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 06:13:52 +00:00
Chris Lattner
9cb992ab72 Remove this code as it is currently completely broken and unmaintained.
If needed, this can be resurrected from CVS.

Note that several of the interfaces (e.g. the IPModRef ones) are supersumed
by generic AliasAnalysis interfaces that have been written since this code
was developed (and they are not DSA specific).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19864 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 06:12:46 +00:00
Jeff Cohen
d19d89a04c Properly close mapped files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19863 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 01:17:07 +00:00
Misha Brukman
097b763ebf Mark -parallel pass as `experimental'
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19858 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-27 17:59:51 +00:00
Andrew Lenharth
04c868ef50 stack frame fix and zero FP reg fix
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19857 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-27 08:31:19 +00:00
Andrew Lenharth
10b400705d Floating point instructions like Floating point registers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19856 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-27 07:58:15 +00:00
Andrew Lenharth
d2bb960d8c int to float conversion and another setcc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19855 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-27 07:50:35 +00:00
Misha Brukman
1bae291cb9 Fix grammar
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19854 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-27 06:46:38 +00:00
Andrew Lenharth
3d65d31e20 teach isel about comparison with constants and zero extending bits
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19853 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-27 03:49:45 +00:00
Jeff Cohen
9437bb6d27 Fix some Path bugs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19852 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-27 03:49:03 +00:00
Andrew Lenharth
7e57bd518e perhaps this will let me have calls again
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19851 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-27 01:22:48 +00:00
Andrew Lenharth
c0d502e20f minor bug fix
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19850 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-27 00:52:26 +00:00
Andrew Lenharth
51d3ab4ad4 minor bug fix
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19849 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-27 00:51:05 +00:00
Andrew Lenharth
98a32d09f3 added instructions for fp to int to fp moves
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19848 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-26 23:56:48 +00:00
Andrew Lenharth
3e98fde96b initial fp support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19847 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-26 21:54:09 +00:00
Chris Lattner
9b5cb04a0a xfail this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19846 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-26 07:09:44 +00:00
Chris Lattner
c74b5a16c4 XFAIL this for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19845 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-26 07:08:42 +00:00
Andrew Lenharth
fc16691925 hum, writing on one machine, testing on another...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19844 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-26 02:53:56 +00:00
Andrew Lenharth
0298118cbb add some operations, fix others. should compile several more tests now
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19843 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-26 01:24:38 +00:00
Chris Lattner
3576c84baf We can fold promoted and non-promoted loads into divs also!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19835 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-25 20:35:10 +00:00
Chris Lattner
44129b5b68 Fold promoted loads into binary ops for FP, allowing us to generate m32 forms
of FP ops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19834 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-25 20:03:11 +00:00
Andrew Lenharth
d279b4157a problems with bools, and their work arounds
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19833 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-25 19:58:40 +00:00
Alkis Evlogimenos
193904a663 Add a dependency to the trace library so that it gets pulled in
automatically.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19828 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-25 16:23:57 +00:00
Reid Spencer
9846a345d5 Document the --load option.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19822 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-25 05:04:49 +00:00
Andrew Lenharth
2f8fb77297 more load choices, better add with imm
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19821 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-25 00:35:34 +00:00
Chris Lattner
851b534b89 Make -ds-aa more useful, allowing it to be updated as xforms hack on the program.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19818 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-24 20:00:14 +00:00
Chris Lattner
d5af7c4df6 Add some methods.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19817 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-24 19:55:34 +00:00
Andrew Lenharth
2d6f022a98 Clean ups, and taught the instruction selector about immediate forms
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19816 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-24 19:44:07 +00:00