Commit Graph

9281 Commits

Author SHA1 Message Date
Andrew Lenharth
7b2a5270b7 added fp extend and removed a forgotten assert in more than 6 arg support (should break somewhere else now :) ) and fix an incorrect asm sequence for indirect calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19938 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-30 20:42:36 +00:00
Chris Lattner
e2752ddefc This code is really unreachable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19934 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-30 16:33:46 +00:00
Chris Lattner
d7b59d0181 Fix warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19933 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-30 16:32:48 +00:00
Andrew Lenharth
684f229895 support for larger calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19932 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-30 00:35:27 +00:00
Chris Lattner
bca81448ac Improve conformance with the Misha spelling benchmark suite
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19930 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-30 00:09:23 +00:00
Tanya Lattner
5c3fa1ec79 Make this work on systems where size_t == unsigned and where they are not
the same.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19929 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 23:29:55 +00:00
Tanya Lattner
445cdd3aad Make this work on systems where size_t is not the same as unsigned.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19928 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 23:08:01 +00:00
Chris Lattner
ea622d53e2 Unbreak the build :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19926 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 19:27:28 +00:00
Chris Lattner
9d5d7598db adjust to ilist changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19924 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 18:41:25 +00:00
Chris Lattner
3cf8e6857e Adjust to ilist changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19923 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 18:41:12 +00:00
Chris Lattner
5ae3571f75 This file was schizophrenic when it came to representing sizes. In some
cases it represented them as 'unsigned's, which are not enough for 64-bit
hosts.  In other cases, it represented them as uint64_t's, which are
inefficient for 32-bit hosts.

This patch unifies all of the sizes to use size_t instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19918 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 17:17:18 +00:00
Chris Lattner
8c2cb42f08 After reading in a bc file, trim the resultant buffer down to what we
really need.  This reduces 4M of memory consumption reading 176.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19916 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 17:05:56 +00:00
Chris Lattner
52b8752780 Finegrainify namespacification
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19915 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 16:53:02 +00:00
Andrew Lenharth
2c59435ca5 first step towards a correct and complete stack. also add some forms for things that were getting stuck in the nightly tester.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19914 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 15:42:07 +00:00
Chris Lattner
3725c12b26 Due to previous simplifications, we can simplify the data structures being
used here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19913 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 07:04:10 +00:00
Chris Lattner
ee379a16ee Properly handle volatile.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19912 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 06:42:34 +00:00
Chris Lattner
4f16bd7a74 Remove some useless map operations. Loads/stores that are in the same
BB as the load are not included in the Cand* sets at all.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19911 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 06:39:25 +00:00
Chris Lattner
15774df4d3 Before doing expensive global analysis, check to make sure the pointer is
not invalidated on entry and on exit of the block.  This fixes some N^2
behavior in common cases, and speeds up gcc another 5% to 22.35s.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19910 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 06:31:53 +00:00
Chris Lattner
e212d62a34 Minor simplification/speedup. Replaces a set lookup with a pointer comparison.
This speeds up 176.gcc from 25.73s to 23.48s, which is 9.5%


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19907 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 06:20:55 +00:00
Chris Lattner
e233b8c64b Eliminate generality that is not buying us anything. In particular, this
will cause us to miss cases where the input pointer to a load could be value
numbered to another load.  Something like this:


  %X = load int* %P1
  %Y = load int* %P2

Those are obviously the same if P1/P2 are the same.  The code this patch
removes attempts to handle that.  However, since GCSE iterates, this doesn't
actually buy us anything: GCSE will first replace P1 or P2 with the other
one, then the load can be value numbered as equal.

Removing this code speeds up gcse a lot.  On 176.gcc in debug mode, this
speeds up gcse from 29.08s -> 25.73s, a 13% savings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19906 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 06:11:16 +00:00
Chris Lattner
2652da6af9 If we see:
%A = alloca int
  %V = load int* %A

value number %V to undef, not 0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19905 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 05:57:01 +00:00
Chris Lattner
6cfbd62680 Memory used is a delta between memuse at the start of the time and the
memuse at the end, thus it is signed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19904 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 05:21:16 +00:00
Chris Lattner
1f377fcaad Make sure that we always grow a multiple of 2 operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19902 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 01:05:12 +00:00
Chris Lattner
5551706b0f Adjust to changes in instruction interfaces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19900 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:39:08 +00:00
Chris Lattner
667fdaef9f Switchinst takes a hint for the number of cases it will have.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19899 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:38:45 +00:00
Chris Lattner
378805969e switchinst ctor now takes a hint for the number of cases that it will have.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19898 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:38:26 +00:00
Chris Lattner
5598aa0328 Adjust Valuehandle to hold its operand directly in it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19897 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:37:36 +00:00
Chris Lattner
23ba420550 Finegrainify namespacification.
Adjust TmpInstruction to work with the new User model.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19896 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:36:59 +00:00
Chris Lattner
3d80f90394 add namespace qualifier
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19895 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:36:38 +00:00
Chris Lattner
cad28bd3a0 Adjust to changes in User class and minor changes in instruction ctors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19894 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:36:19 +00:00
Chris Lattner
ce1df9e9e8 Adjust to slight changes in instruction interfaces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19893 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:35:55 +00:00
Chris Lattner
96d83f63cd Adjust to changes in User class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19892 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:35:33 +00:00
Chris Lattner
b12261ac69 Merge InstrTypes.cpp into this file
Adjust to changes in the User class, operand handling is very different.
PHI node and switch statements must handle explicit resizing of operand
lists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19891 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:35:16 +00:00
Chris Lattner
e467147b30 Adjust to changes in User class. Aggregate constants now must explicitly
manage their operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19890 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:34:39 +00:00
Chris Lattner
265287f714 This file is now merged into Instructions.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19889 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-29 00:33:32 +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
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
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
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
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
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
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
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
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
Andrew Lenharth
a7246caf8f Alpha JIT prune
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19815 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-24 18:48:22 +00:00
Andrew Lenharth
886470efec include prune and JIT prune
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19814 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-24 18:45:41 +00:00
Andrew Lenharth
01269524ce Pruned includes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19813 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-24 18:37:48 +00:00
Chris Lattner
bb4dca3286 Fix a spurious warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19799 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-24 01:40:18 +00:00
Chris Lattner
0a07883694 Silence a warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19798 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 23:20:06 +00:00
Chris Lattner
fed5577066 Silence optimized warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19797 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 23:19:44 +00:00
Chris Lattner
42e25b387f Allow the FP stackifier to completely ignore functions that do not use FP at
all.  This should speed up the X86 backend fairly significantly on integer
codes.  Now if only we didn't have to compute livevar still... ;-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19796 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 23:13:59 +00:00
Chris Lattner
3563015b0d Simplify/speedup the PEI by not having to scan for uses of the callee saved
registers.  This information is computed directly by the register allocator
now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19795 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 23:13:12 +00:00
Chris Lattner
786116337e Update physregsused info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19793 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 22:55:45 +00:00
Chris Lattner
0648b16c48 Update this pass to set PhysRegsUsed info in MachineFunction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19792 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 22:51:56 +00:00
Chris Lattner
b0f31bf19b Update these register allocators to set the PhysRegUsed info in MachineFunction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19791 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 22:45:13 +00:00
Chris Lattner
ce9c41e77a Add support for the PhysRegsUsed array.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19789 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 22:13:58 +00:00
Chris Lattner
92b9fcea7b Speed this up a bit by making ModifiedRegs a vector<char> not vector<bool>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19787 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 21:45:01 +00:00
Chris Lattner
ad1e302723 Get rid of a several dozen more and instructions in specint.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19786 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 20:26:55 +00:00
Chris Lattner
da7e70e058 Fix crash comparing empty file against nonempty file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19782 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 06:02:40 +00:00
Chris Lattner
9c32d3b798 Adjust to changes in SelectionDAG interfaces
The first half of correct chain insertion for libcalls. This is not enough
to fix Fhourstones yet though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19781 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 04:42:50 +00:00
Chris Lattner
b48da39536 Remove the 3 HACK HACK HACKs I put in before, fixing them properly with
the new TLI that is available.

Implement support for handling out of range shifts.  This allows us to
compile this code (a 64-bit rotate):

unsigned long long f3(unsigned long long x) {
  return (x << 32) | (x >> (64-32));
}

into this:

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

GCC produces this:

$ gcc t.c -masm=intel -O3 -S -o - -fomit-frame-pointer
..
f3:
        push    %ebx
        mov     %ebx, DWORD PTR [%esp+12]
        mov     %ecx, DWORD PTR [%esp+8]
        mov     %eax, %ebx
        mov     %edx, %ecx
        pop     %ebx
        ret

The Simple ISEL produces (eww gross):

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19780 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 04:39:44 +00:00
Chris Lattner
ac9dc08c7f Adjust to changes in SelectionDAG interface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19779 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 04:36:26 +00:00
Chris Lattner
1fefef1b27 Build Alpha by default.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19777 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 04:34:46 +00:00
Reid Spencer
a8411a698e Fix alloca support for Cygwin. On cygwin its __alloca not __builtin_alloca
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19776 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 04:32:47 +00:00
Reid Spencer
5dc81f63d1 Support Cygwin assembly generation. The cygwin version of Gnu ASsembler
doesn't support certain directives and symbols on cygwin are prefixed with
an underscore. This patch makes the necessary adjustments to the output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19775 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 03:52:14 +00:00
Chris Lattner
cc1b90b0e7 Make DiffFilesWithTolerance take sys::Path's instead of std::strings
Delete dead functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19771 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 03:31:02 +00:00
Chris Lattner
c95b5604e0 Fix a bug in previous checkin
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19769 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 03:19:13 +00:00
Chris Lattner
4454253923 Add a new method, refactored out of fpcmp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19766 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-23 03:13:43 +00:00
Andrew Lenharth
304d0f3076 Let me introduce you to the early stages of the llvm backend for the alpha processor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19764 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-22 23:41:55 +00:00
Chris Lattner
68cd65ea68 Get this to work for 64-bit systems.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19763 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-22 23:04:37 +00:00
Jeff Cohen
5fb6ed4ae6 Use binary mode for reading/writing bytecode files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19751 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-22 17:36:17 +00:00
Jeff Cohen
c690cc0465 Fix destroyDirectory bug
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19746 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-22 16:28:33 +00:00
Chris Lattner
5037a15910 Implicitly defined registers can clobber callee saved registers too!
This fixes the return-address-not-being-saved problem in the Alpha backend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19741 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-22 00:49:16 +00:00
Chris Lattner
7cd50cf286 More bugfixes for IA64 shifts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19739 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-22 00:33:03 +00:00
Chris Lattner
27ff112948 Fix problems with non-x86 targets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19738 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-22 00:31:52 +00:00
Chris Lattner
a7306db5f7 Add a nasty hack to fix Alpha/IA64 multiplies by a power of two.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19737 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-22 00:20:42 +00:00
Chris Lattner
9bb86f46e1 Remove unneeded line.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19736 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-21 23:43:12 +00:00