Commit Graph

28200 Commits

Author SHA1 Message Date
Reid Spencer 6ad23bdf9d Upgrade to version 7 bytecode format.
llvm-svn: 32143
2006-12-03 04:40:09 +00:00
Reid Spencer 6521b7a1c9 Regenerate.
llvm-svn: 32142
2006-12-03 03:16:48 +00:00
Reid Spencer bc17466558 Add a needed #include.
llvm-svn: 32141
2006-12-03 03:15:23 +00:00
Reid Spencer 690d437920 Regenerate.
llvm-svn: 32140
2006-12-02 22:14:11 +00:00
Reid Spencer 9a8b3173cc Implement upgrade of setcc instruction to icmp/fcmp, but don't enable it
yet.

llvm-svn: 32139
2006-12-02 22:09:27 +00:00
Reid Spencer 39bfeeeceb Make sure this file gets upgraded with llvm-upgrade
llvm-svn: 32138
2006-12-02 20:42:32 +00:00
Reid Spencer e812408695 Upgrade intrinsic function calls manually.
llvm-svn: 32137
2006-12-02 20:41:53 +00:00
Reid Spencer 6faf0cbf13 These files need llvm-upgrade.
llvm-svn: 32136
2006-12-02 20:40:30 +00:00
Reid Spencer 4ee2f08386 Rearrange code so that llvm-upgrade doesn't break the optimization this
test is trying to verify.

llvm-svn: 32135
2006-12-02 20:39:25 +00:00
Reid Spencer 19738b0b5a Upgrade intrinsic function calls
llvm-svn: 32134
2006-12-02 20:38:37 +00:00
Reid Spencer ed3471a8cc Run llvm-upgrade on this test and/or upgrade intrinsic function calls.
llvm-svn: 32133
2006-12-02 20:38:10 +00:00
Reid Spencer fc0618e2db Remove tests for checking bytecode upgrade. Bytecode upgrade is being
replaced in 2.0 with assembly upgrade via the llvm-upgrade tool.

llvm-svn: 32132
2006-12-02 20:35:50 +00:00
Reid Spencer c58764b57b Upgrade old intrinsic function calls manually.
llvm-svn: 32131
2006-12-02 20:34:57 +00:00
Reid Spencer 107b4b79c4 Use llvm-upgrade these tests as they all use old assembly.
llvm-svn: 32130
2006-12-02 20:34:08 +00:00
Reid Spencer 7d4eb03ceb Remove old intrinsic declarations and usage.
llvm-svn: 32129
2006-12-02 20:30:20 +00:00
Reid Spencer 1290f03fa3 Regenerate.
llvm-svn: 32128
2006-12-02 20:21:22 +00:00
Reid Spencer 2017e84f9a Support several new upgrades:
div -> fdiv/udiv/sdiv
  rem -> frem/urem/srem
  except -> unwind
  uninitialized -> external
as well as tracking the element type of pointers, packed, and array.

llvm-svn: 32127
2006-12-02 20:19:56 +00:00
Reid Spencer 9d91281573 Remove a redundant RUN: line.
llvm-svn: 32126
2006-12-02 17:49:38 +00:00
Reid Spencer 797cb85015 Add llvm-upgrade documentation.
llvm-svn: 32125
2006-12-02 16:36:48 +00:00
Reid Spencer 963bdf3885 Document the llvm-upgrade tool.
llvm-svn: 32124
2006-12-02 16:35:42 +00:00
Reid Spencer 8100d27982 Prevent a GEP from getting upgraded to avoid resulting test failure.
llvm-svn: 32123
2006-12-02 16:25:20 +00:00
Reid Spencer 7f327637b1 Regenerate.
llvm-svn: 32122
2006-12-02 16:19:52 +00:00
Reid Spencer 3a81da78a1 Implement the GEP upgrade for non-constant unsigned indices
llvm-svn: 32121
2006-12-02 16:19:28 +00:00
Reid Spencer 74fb4359a9 Keep lists of values so they can be examined.
llvm-svn: 32120
2006-12-02 15:16:01 +00:00
Reid Spencer 8b0cb8cf03 Update this test to use llvm-update.
llvm-svn: 32117
2006-12-02 05:02:46 +00:00
Reid Spencer f7e9f43e21 Build llvm-update now.
llvm-svn: 32116
2006-12-02 04:46:36 +00:00
Reid Spencer d0e30dc5be Use the llvm-upgrade program to upgrade llvm assembly.
llvm-svn: 32115
2006-12-02 04:23:10 +00:00
Reid Spencer bc7daea442 Add support for global types and type resolution. Fix several minor
formatting and spacing bugs. This is sufficient for llvm-upgrade to
correctly upgrade all of llvm/test.

llvm-svn: 32114
2006-12-02 04:11:07 +00:00
Jeff Cohen cc08c83186 Unbreak VC++ build.
llvm-svn: 32113
2006-12-02 02:22:01 +00:00
Chris Lattner 7a002fec1f disable transformations that are invalid for fp vectors. This fixes
Transforms/InstCombine/2006-12-01-BadFPVectorXform.ll

llvm-svn: 32112
2006-12-02 00:13:08 +00:00
Chris Lattner 72239930e0 new testcase
llvm-svn: 32111
2006-12-02 00:12:32 +00:00
Chris Lattner 4d9fc5e896 Switch analysis groups to be unregistered when llvm_shutdown is called.
llvm-svn: 32110
2006-12-01 23:46:50 +00:00
Reid Spencer 114c808702 Handle upgrade of fp -> ptr cast with fp -> int -> ptr
llvm-svn: 32109
2006-12-01 23:40:53 +00:00
Chris Lattner 1b368a0cf6 Start moving pass registration over to using the ManagedStatic mechanism.
This fixes issues where passes get unregistered before llvm_shutdown is
called, and is generally cleaner and simpler.  Analysis groups up next.

llvm-svn: 32108
2006-12-01 23:27:45 +00:00
Evan Cheng 8e94078483 Match TargetInstrInfo changes.
llvm-svn: 32107
2006-12-01 22:57:41 +00:00
Reid Spencer 8a95b0bf21 Don't convert {} into []!
llvm-svn: 32106
2006-12-01 22:42:01 +00:00
Chris Lattner d321248d96 pass cfgonly up the ctor instead of calling an explicit method.
llvm-svn: 32105
2006-12-01 22:36:43 +00:00
Reid Spencer 7956c3647b Allow the new cast instructions.
llvm-svn: 32104
2006-12-01 22:34:43 +00:00
Reid Spencer c3f57a2f8b Upgrade shr to ashr and lshr
llvm-svn: 32103
2006-12-01 22:26:37 +00:00
Chris Lattner 23d540538d move 'cfgonly' pass tracking into PassInfo, instead of handling it with
yet-another global data structure.

llvm-svn: 32102
2006-12-01 22:21:11 +00:00
Chris Lattner 33fff0398a remove 'target constructor' support.
llvm-svn: 32100
2006-12-01 22:00:50 +00:00
Chris Lattner 571dd5778f target constructors are never used
llvm-svn: 32099
2006-12-01 21:59:37 +00:00
Evan Cheng 67fc141db5 Match TargetInstrInfo changes.
llvm-svn: 32098
2006-12-01 21:52:58 +00:00
Evan Cheng 07fc107e90 convertToThreeAddress() is now responsible for updating live info as well as inserting the new MI's.
llvm-svn: 32097
2006-12-01 21:52:41 +00:00
Reid Spencer f05199113c Don't treat numeric (untyped) constants as a ConstInfo, just pass the
string and let ConstVal add the type.

llvm-svn: 32096
2006-12-01 21:52:30 +00:00
Evan Cheng 2f89f04e5f Typo
llvm-svn: 32095
2006-12-01 21:50:17 +00:00
Evan Cheng dcd052e11a - Add getOperandConstraint() to TargetInstrDescriptor.
- convertToThreeAddress() change to allow single two-address MI to be converted
  into one or more 3-address MIs.

llvm-svn: 32094
2006-12-01 21:46:55 +00:00
Chris Lattner 3a279ecc65 fix incorrectly translated testcase
llvm-svn: 32093
2006-12-01 21:38:02 +00:00
Reid Spencer 7e798cc0ae First version of llvm-upgrade that can correctly upgrade all of
test/Feature

llvm-svn: 32092
2006-12-01 21:10:07 +00:00
Evan Cheng 022030a425 Add weak reference directive.
llvm-svn: 32091
2006-12-01 20:47:11 +00:00
Reid Spencer 16353d6583 valgrind clean version of llvm-upgrade
llvm-svn: 32090
2006-12-01 20:36:40 +00:00
Reid Spencer 2daa57894f First version of llvm-upgrade that can correctly upgrade a large test
case.

llvm-svn: 32089
2006-12-01 20:26:20 +00:00
Chris Lattner 70359e75bf Remove dead methods
llvm-svn: 32088
2006-12-01 20:14:47 +00:00
Chris Lattner defd8470aa These should be rewritten to fold without using the 'Rules' mechanism, but
until this happens at least make sext from bool and sitofp from bool do the
right thing.

llvm-svn: 32087
2006-12-01 19:50:54 +00:00
Chris Lattner 6dde72735e test1 is miscompiled
llvm-svn: 32086
2006-12-01 19:50:04 +00:00
Jim Laskey b0862be332 wrong spot
llvm-svn: 32084
2006-12-01 19:39:32 +00:00
Jim Laskey ba0f15c676 Test for float varargs.
llvm-svn: 32083
2006-12-01 19:29:20 +00:00
Chris Lattner 710ebaf377 this logic is broken for trunc to bool, replace the folding logic for trunc
completely, as it is trivial.  We should probably do this for the rest of the
cast operations.  This fixes ConstProp/2006-12-01-TruncBoolBug.ll.

llvm-svn: 32081
2006-12-01 19:22:41 +00:00
Chris Lattner f16661c3c6 add a new ConstantIntegral::get method. Simplify the implementation of
ConstantInt::get

llvm-svn: 32080
2006-12-01 19:20:02 +00:00
Chris Lattner 635ed246d7 new 'cast' miscompilation, reduced from perlbmk by Evan
llvm-svn: 32079
2006-12-01 19:02:56 +00:00
Chris Lattner e6b2c29c27 enable this now that codegen support is in place
llvm-svn: 32076
2006-12-01 18:04:08 +00:00
Evan Cheng b689d32b20 Copy and paste error. An initialized global cannot be a weak reference.
llvm-svn: 32075
2006-12-01 17:39:22 +00:00
Jim Laskey 1b0bc794e6 1. In ppc64 mode we need only use one GPR.
2. Float values need to be promoted to double when they are vararg.

llvm-svn: 32074
2006-12-01 16:30:47 +00:00
Jim Laskey 311622f912 ExternalWeak case in wrong location.
llvm-svn: 32073
2006-12-01 14:37:39 +00:00
Evan Cheng 80361a9297 This test is meant for X86 CPU which does not support SSE2.
llvm-svn: 32072
2006-12-01 10:17:36 +00:00
Evan Cheng 845bd6e096 Fix 2005-05-08-FPStackifierPHI.ll failure.
llvm-svn: 32071
2006-12-01 10:11:51 +00:00
Evan Cheng 3fe5331483 Add a extern weak test case.
llvm-svn: 32070
2006-12-01 09:18:20 +00:00
Evan Cheng 5fb2c76d59 A initialized global variable cannot be extern weak. However, if a global value's initializer is itself a external weak symbol, emit the weak reference.
llvm-svn: 32069
2006-12-01 09:13:26 +00:00
Evan Cheng fa54c0b6fb Darwin PPC external weak linkage support.
llvm-svn: 32068
2006-12-01 07:56:37 +00:00
Evan Cheng 5b020349f2 Minor code clean up.
llvm-svn: 32067
2006-12-01 07:38:23 +00:00
Evan Cheng db66456285 Fix indentation.
llvm-svn: 32066
2006-12-01 07:17:00 +00:00
Evan Cheng 6476a3b4ba Darwin X86 external weak linkage support.
llvm-svn: 32065
2006-12-01 07:15:24 +00:00
Chris Lattner 8bbf5e20cc new testcase to verify external weak continues to work
llvm-svn: 32064
2006-12-01 07:14:26 +00:00
Chris Lattner 18f6fe36ce new testcase for PR1027
llvm-svn: 32063
2006-12-01 06:34:56 +00:00
Chris Lattner d1d5693149 Fix a typo introduced by the cast patch that horribly broke a lot of vector
code.  Testcase here: Transforms/ConstProp/2006-11-30-vector-cast.ll

llvm-svn: 32062
2006-12-01 05:55:25 +00:00
Chris Lattner 5145977cd8 new testcase
llvm-svn: 32061
2006-12-01 05:54:48 +00:00
Reid Spencer 6f05d73938 Don't fold "ptrtoint GV to bool" since this should be doing a truncate not
a comparison against zero. Instead fold setne(GV,null) and seteq(GV,null)
to ConstantBool::True or ConstantBool::False, respectively.

llvm-svn: 32060
2006-12-01 03:56:30 +00:00
Reid Spencer 30477cd88e Define the HAVE_PTHREAD symbol.
llvm-svn: 32059
2006-12-01 03:46:01 +00:00
Reid Spencer 6c0676d4e6 The InstCombine hack has been removed, no need to XFAIL this any more.
llvm-svn: 32058
2006-12-01 01:50:45 +00:00
Chris Lattner 09ed0ff2ac Fix the CodeGen/PowerPC/vec_constants.ll regression.
llvm-svn: 32057
2006-12-01 01:45:39 +00:00
Nick Lewycky f0371198ec Remove extra header.
llvm-svn: 32056
2006-12-01 01:05:14 +00:00
Nick Lewycky e5a8617778 Fix opt -o option. Don't pass a pointer to an auto variable which is going
away before it's needed, and don't try to delete that pointer!

llvm-svn: 32055
2006-12-01 00:43:14 +00:00
Reid Spencer d43999259b For PR1019:
Add HAVE_PTHREAD to makefiles with support from configure and use it to
determine whether to build examples/ParallelJIT.
Patch by Anton Korobeynikov.

llvm-svn: 32054
2006-12-01 00:37:14 +00:00
Reid Spencer d5e19444a7 Regenerate.
llvm-svn: 32053
2006-12-01 00:33:46 +00:00
Anton Korobeynikov 12c94949e0 Introducing external weak linkage. Darwin codegen should be added later.
llvm-svn: 32052
2006-12-01 00:25:12 +00:00
Reid Spencer ad05ee9f39 Remove 4 FIXMEs to hack around cast-to-bool problems which no longer exist.
llvm-svn: 32051
2006-11-30 23:13:36 +00:00
Anton Korobeynikov 6dbdfe2baa Factor out GVRequiresExtraLoad() from .h to .cpp
llvm-svn: 32048
2006-11-30 22:42:55 +00:00
Evan Cheng 6104a1aa9e Add X86-64 load / store codegen tests.
llvm-svn: 32047
2006-11-30 22:07:00 +00:00
Evan Cheng ae1cd75af7 - Use a different wrapper node for RIP-relative GV, etc.
- Proper support for both small static and PIC modes under X86-64
- Some (non-optimal) support for medium modes.

llvm-svn: 32046
2006-11-30 21:55:46 +00:00
Jim Laskey f52337299a better check for version
llvm-svn: 32045
2006-11-30 18:29:23 +00:00
Chris Lattner c8978c5272 make it clear that this is always a zext
llvm-svn: 32044
2006-11-30 17:35:08 +00:00
Chris Lattner 3ede00b376 One more bugfix, 3 cases of making casts explicit.
llvm-svn: 32043
2006-11-30 17:32:29 +00:00
Chris Lattner 0390b9e6bb Fix a bug in globalopt due to the recent cast patch.
llvm-svn: 32042
2006-11-30 17:26:08 +00:00
Reid Spencer 3867383db0 Allow llvm-upgrade to read from stdin. Configure the lexer for reading
from C++ std::istream.

llvm-svn: 32041
2006-11-30 16:50:26 +00:00
Jim Laskey b12ab5fadb Add compile unit size test
llvm-svn: 32040
2006-11-30 15:36:44 +00:00
Jim Laskey e6f6890438 Correct comment
llvm-svn: 32039
2006-11-30 15:31:49 +00:00
Jim Laskey 030b840234 Pubnames test
llvm-svn: 32038
2006-11-30 15:25:59 +00:00
Jim Laskey 4d98e2e79d Update docs
llvm-svn: 32037
2006-11-30 14:36:22 +00:00
Jim Laskey b5b14060a8 Change global descriptor names to provide name, full name and linkage name.
llvm-svn: 32036
2006-11-30 14:35:45 +00:00
Jim Laskey aa2843ad4a Temp fix to deal gdb issue.
llvm-svn: 32035
2006-11-30 11:09:42 +00:00
Evan Cheng aafeaef8c8 MachineInstr::setOpcode -> MachineInstr::setInstrDescriptor
llvm-svn: 32034
2006-11-30 07:12:03 +00:00
Evan Cheng fef6400f01 Remove the ugly SPARCV9 TargetInstrDescriptors hack.
llvm-svn: 32033
2006-11-30 07:10:43 +00:00
Evan Cheng 3c3ce98530 - MachineInstr now keeps a ptr to TargetInstrDescriptor instead of Opcode.
- Remove the ugly TargetInstrDescriptors hack.

llvm-svn: 32032
2006-11-30 07:08:44 +00:00
Reid Spencer 120b380bb5 Ignore generated files.
llvm-svn: 32031
2006-11-30 06:37:43 +00:00
Reid Spencer 8e60eec519 Initial, non-functional, version of llvm-upgrade. This version just echos
its input. Committed for safekeeping purposes. Don't use this yet.

llvm-svn: 32030
2006-11-30 06:36:44 +00:00
Evan Cheng 983ac81fb0 New LSR test case.
llvm-svn: 32029
2006-11-29 23:48:37 +00:00
Evan Cheng 7a9238c84d In PIC mode, GV not requiring an extra load can be used as address immediate.
llvm-svn: 32028
2006-11-29 23:48:14 +00:00
Evan Cheng 8c84c7cd0d Clean up.
llvm-svn: 32027
2006-11-29 23:46:27 +00:00
Evan Cheng 0b1692216d Fix for PR1018 - Better support for X86-64 Linux in small code model.
llvm-svn: 32026
2006-11-29 23:19:46 +00:00
Reid Spencer 70c3dd4eff Get the delegation right for InstVisitor.
llvm-svn: 32025
2006-11-29 21:37:00 +00:00
Chris Lattner 2f648fc55d Fix bug codegen'ing FP constant vectors with integer splats. Make sure the
created intrinsics have the right integer types.  This fixes
PowerPC/2006-11-29-AltivecFPSplat.ll

llvm-svn: 32024
2006-11-29 19:58:49 +00:00
Chris Lattner c386b40714 new testcase
llvm-svn: 32023
2006-11-29 19:57:55 +00:00
Evan Cheng a743fada65 Avoid inifinite looping if READCYCLECOUNTER isn't custom lowered.
llvm-svn: 32022
2006-11-29 19:13:47 +00:00
Jim Laskey 01b74b6f7b Eliminate unnecessary scopes.
llvm-svn: 32020
2006-11-29 16:55:57 +00:00
Jim Laskey 152671f0bf Offset for load of 32-bit arg in 64-bit world was incorrect.
llvm-svn: 32019
2006-11-29 13:37:09 +00:00
Evan Cheng e2e0a33e6c Add x86-64 llvm.readcyclecounter test.
llvm-svn: 32018
2006-11-29 08:29:59 +00:00
Evan Cheng 28a9e9b230 Custom lower READCYCLECOUNTER for x86-64.
llvm-svn: 32017
2006-11-29 08:28:13 +00:00
Evan Cheng 6973993e9c Allow target to custom lower READCYCLECOUNTER (when it doesn't have to be expanded).
llvm-svn: 32016
2006-11-29 08:26:18 +00:00
Evan Cheng c24ce795a3 Fix test.
llvm-svn: 32015
2006-11-29 08:22:59 +00:00
Bill Wendling 7ec1a5befa Oops! didn't mean to put this in there yet.
llvm-svn: 32014
2006-11-29 07:31:23 +00:00
Chris Lattner 0d67dde00a done
llvm-svn: 32013
2006-11-29 07:21:46 +00:00
Chris Lattner aeddf5f077 new bswap idiom
llvm-svn: 32012
2006-11-29 07:21:08 +00:00
Chris Lattner 960acb008b implement cast.ll:test35. With this, we recognize:
unsigned short swp(unsigned short a) {
       return ((a & 0xff00) >> 8 | (a & 0x00ff) << 8);
}

as an idiom for bswap.

llvm-svn: 32011
2006-11-29 07:18:39 +00:00
Chris Lattner 19d72c9f4f new testcase
llvm-svn: 32010
2006-11-29 07:17:32 +00:00
Chris Lattner d747f015ff Teach instcombine to turn trunc(srl x, c) -> srl (trunc(x), c) when safe.
This implements InstCombine/cast.ll:test34.  It fires hundreds of times on
176.gcc.

llvm-svn: 32009
2006-11-29 07:04:07 +00:00
Chris Lattner 544dfa013c new testcase
llvm-svn: 32008
2006-11-29 07:03:00 +00:00
Chris Lattner 7b34c1391a This fails on mainline.
llvm-svn: 32007
2006-11-29 05:19:32 +00:00
Chris Lattner a7942b7bbd Implement Regression/Transforms/InstCombine/bswap-fold.ll,
folding   seteq (bswap(x)), c -> seteq(x,bswap(c))

llvm-svn: 32006
2006-11-29 05:02:16 +00:00
Chris Lattner e7f83dcf4b new testcase, bswaps should be eliminated.
llvm-svn: 32005
2006-11-29 05:00:14 +00:00
Evan Cheng 8facb43593 16-byte stack alignment for X86-64 ELF. Patch by Dan Gohman.
llvm-svn: 32004
2006-11-29 02:00:40 +00:00
Evan Cheng feba507a97 Fix for PR1023 by Dan Gohman.
llvm-svn: 32003
2006-11-29 01:58:12 +00:00
Evan Cheng 79ca238966 Add test cases for PR1022, 1023.
llvm-svn: 32002
2006-11-29 01:57:06 +00:00
Chris Lattner 38084725a2 Upgrade the ugly darwin 64-bit bswap idiom (bswap %eax / bswap %edx /
xchgl %eax, %edx) to llvm.bswap.i64.  This compiles:

long long test2(long long A) {
  return _OSSwapInt64(A);
}

to:

_test2:
        movl 8(%esp), %eax
        movl 4(%esp), %edx
        bswapl %eax
        bswapl %edx
        ret

instead of:

_test2:
        movl 8(%esp), %edx
        movl 4(%esp), %eax
        bswap   %eax
        bswap   %edx
        xchgl   %eax, %edx
        ret

GCC manages (with -fomit-frame-pointer) the uglier:

_test2:
        subl    $4, %esp
        movl    8(%esp), %eax
        movl    12(%esp), %edx
        bswap   %eax
        bswap   %edx
        xchgl   %eax, %edx
        addl    $4, %esp
        ret

llvm-svn: 32001
2006-11-29 01:48:01 +00:00
Evan Cheng 6e12a052ff Fix for PR1022 (folding loads of static initializers) by Dan Gohman.
llvm-svn: 32000
2006-11-29 01:38:07 +00:00
Chris Lattner 0fc6ae0c3d Trivially lower 'bswap $0' into llvm.bswap. This fixes hexxagon with the
JIT on darwin/x86, which has htonl implemented as inline asm.

llvm-svn: 31999
2006-11-29 01:14:06 +00:00
Bill Wendling 18739dc03f WTF? These weird newlines got in there...
llvm-svn: 31998
2006-11-29 01:14:00 +00:00
Chris Lattner 90f4238c38 add a hook to allow targets to hack on inline asms to lower them to llvm
when they want to.

llvm-svn: 31997
2006-11-29 01:12:32 +00:00
Reid Spencer a736fdf216 Join a split line.
llvm-svn: 31996
2006-11-29 01:11:01 +00:00
Bill Wendling 5c3966aa68 Converted to using llvm streams instead of <iostream>s
llvm-svn: 31992
2006-11-29 00:39:47 +00:00
Bill Wendling afd54eb8b6 Replacing std::iostreams with llvm iostreams. Some of these changes involve
adding a temporary wrapper around the ostream to make it friendly to
functions expecting an LLVM stream. This should be fixed in the future.

llvm-svn: 31990
2006-11-29 00:19:40 +00:00
Bill Wendling a531ac291c Convert to using llvm streams instead of iostreams.
llvm-svn: 31989
2006-11-28 23:33:06 +00:00
Bill Wendling a38b3e15be Support for llvm_ostreams.
llvm-svn: 31988
2006-11-28 23:31:42 +00:00
Andrew Lenharth 904ca9c688 gcc doesn't like an empty colbber list
llvm-svn: 31987
2006-11-28 23:07:32 +00:00
Bill Wendling be6ce9d1c7 Use ostream instead of iostream
llvm-svn: 31986
2006-11-28 22:49:32 +00:00
Bill Wendling 787b77320f Use llvm streams instead of <iostream>
llvm-svn: 31985
2006-11-28 22:48:48 +00:00
Bill Wendling 6c1740f31f Removed #include <iostream> and used llvm streams
llvm-svn: 31984
2006-11-28 22:47:12 +00:00
Bill Wendling 597d451fea Removed some of the iostream #includes. Moved towards converting to using
llvm streams

llvm-svn: 31983
2006-11-28 22:46:12 +00:00
Bill Wendling a60d8edfc9 Support for llvm streams.
llvm-svn: 31982
2006-11-28 22:45:17 +00:00
Chris Lattner 228bcd3802 Add a helper function
llvm-svn: 31981
2006-11-28 22:32:35 +00:00
Andrew Lenharth f52ae7ec72 Identities are default now
llvm-svn: 31980
2006-11-28 22:28:08 +00:00
Andrew Lenharth 8b59fd03c2 Make identity default, and fix PR1020
llvm-svn: 31979
2006-11-28 22:25:32 +00:00
Bill Wendling f89955be1b Added a temporary hack to get the llvm-streams to work for future checkins.
llvm-svn: 31978
2006-11-28 22:21:29 +00:00
Reid Spencer 116ad83aa0 Undo the last patch until 253.perlbmk passes with these changes.
llvm-svn: 31977
2006-11-28 20:23:51 +00:00
Evan Cheng 69b1825488 New entries.
llvm-svn: 31976
2006-11-28 19:59:25 +00:00
Andrew Lenharth 7f739d5bdd update comments
llvm-svn: 31975
2006-11-28 19:56:02 +00:00
Andrew Lenharth 212f15fa8a Get the asminfo for the target most closely matching the module and use that for inline asm
llvm-svn: 31974
2006-11-28 19:53:36 +00:00
Andrew Lenharth 2675e23a7e X86 asm -> gcc asm translation table (incomplete)
llvm-svn: 31973
2006-11-28 19:52:49 +00:00
Andrew Lenharth ff35b449a0 Add per-target support for asm translation in the cbe
llvm-svn: 31972
2006-11-28 19:52:20 +00:00
Jim Laskey 40182179b6 Remove debug code.
llvm-svn: 31970
2006-11-28 18:27:02 +00:00
Jim Laskey ec05b046c7 Prime text sections to improve branch locality in large object files.
llvm-svn: 31969
2006-11-28 18:21:52 +00:00
Jim Laskey f4e2e009d9 32-bit int space was not accounted for properly in lowerCall.
llvm-svn: 31966
2006-11-28 14:53:52 +00:00
Reid Spencer 55f1fbee2e Regenerate.
llvm-svn: 31965
2006-11-28 07:29:44 +00:00
Reid Spencer d47017990b Implement signedness caching for values, value lists, constants and
constant lists. This is just an internal change to the parser in
preparation for some backwards compatibility code that is to follow.
This will allow things like "uint 4000000000" to retain the unsignedness
of the integer constant as the value moves through the parser. In the
future, all integer types will be signless but parsing "uint" and friends
will be retained for backwards compatibility.

llvm-svn: 31964
2006-11-28 07:28:14 +00:00
Reid Spencer 59fe2d89ae Remove 4 FIXME's from the CAST patch now that the back end is correctly
producing code for "trunc to bool". This passes all tests on Linux.

llvm-svn: 31963
2006-11-28 07:23:01 +00:00
Reid Spencer d077fe70e9 Add an -append-exit-code option to bugpoint. This will cause bugpoint to
append "exit <retcode>" to the end of the output file. This is used by
the nightly tester to make bugpoint match the output generated by the
RunSafely.sh script so it doesn't find false positives.

llvm-svn: 31960
2006-11-28 07:04:10 +00:00
Reid Spencer 21052cd48f Fix a typo.
llvm-svn: 31959
2006-11-28 06:14:06 +00:00
Bill Wendling bc0d5f8bcb Put the #include for a module first.
llvm-svn: 31958
2006-11-28 03:31:29 +00:00
Evan Cheng b2a6b0dbad Clean up.
llvm-svn: 31957
2006-11-28 02:25:34 +00:00
Evan Cheng db8f19fb90 Fix indentation.
llvm-svn: 31956
2006-11-28 02:22:51 +00:00
Bill Wendling dfc91897df Changed to using LLVM streams.
llvm-svn: 31955
2006-11-28 02:09:03 +00:00
Bill Wendling 3f6f0fd028 Changed to using llvm streams.
llvm-svn: 31954
2006-11-28 02:08:17 +00:00
Bill Wendling cd2f1a897f Added helper function to transition to using llvm streams.
llvm-svn: 31953
2006-11-28 02:07:29 +00:00
Evan Cheng 8ddbdc70b7 Fix JIT encoding bugs for shift / rotate by one ops.
llvm-svn: 31952
2006-11-28 01:28:00 +00:00
Chris Lattner e88ff3a961 testcase for pr1016
llvm-svn: 31951
2006-11-28 01:26:37 +00:00
Chris Lattner 3abb63651b Fix PR1016
llvm-svn: 31950
2006-11-28 01:03:30 +00:00
Bill Wendling 5834fdb371 Removed #include <iostream> and replaced streams with llvm streams.
llvm-svn: 31949
2006-11-27 23:54:50 +00:00
Andrew Lenharth e8c64aba11 Preliminary support for inline asm in the cbe. The target specific ugliness
is still in Writer, but issolated to a single function. This might be split
into something in each target directory.  This is sufficient to get through
archie and an strcpy impl on linux-x86.

Module level asm is not handled.

llvm-svn: 31948
2006-11-27 23:50:49 +00:00
Evan Cheng 20350c4025 Change MachineInstr ctor's to take a TargetInstrDescriptor reference instead
of opcode and number of operands.

llvm-svn: 31947
2006-11-27 23:37:22 +00:00
Chris Lattner 5230e9175a remove dead tag
llvm-svn: 31944
2006-11-27 21:53:28 +00:00
Chris Lattner 5d5916b4d1 Fix the dag combiner bug corresponding to PR1014.
llvm-svn: 31943
2006-11-27 21:50:02 +00:00
Chris Lattner f36cc15a84 this doesn't pass with CVS HEAD.
llvm-svn: 31942
2006-11-27 20:01:48 +00:00
Chris Lattner 8e9a7b73d9 Fix PR1014 and InstCombine/2006-11-27-XorBug.ll.
llvm-svn: 31941
2006-11-27 19:55:07 +00:00
Reid Spencer 5fb4da8c5d Add 3 more test cases for ptrtoint, fptoui and fptosi
llvm-svn: 31940
2006-11-27 19:54:23 +00:00
Chris Lattner 2c2e34b2c4 testcase for PR1014
llvm-svn: 31939
2006-11-27 19:47:22 +00:00
Reid Spencer 16eaffe595 When truncating to bool, it is necessary to & with 1 for all casts that
can result in a bool. Previously PtrToInt, FPToUI and FPToSI were missing
this operation.

llvm-svn: 31938
2006-11-27 18:51:06 +00:00
Bill Wendling f790e9de2c Protect against null streams.
llvm-svn: 31937
2006-11-27 10:45:49 +00:00
Bill Wendling 7339b8dbfd Removed #include <iostream> and replaced with llvm_* streams.
llvm-svn: 31936
2006-11-27 10:09:12 +00:00
Reid Spencer 141519fbc0 Alter these tests to ensure they match a "test $1, X" X86 instruction that
is now generated by the LLVM backend for "trunc to bool" instructions.

llvm-svn: 31935
2006-11-27 05:08:03 +00:00
Reid Spencer b3281892d9 Add a test to ensure a bitcast/and/trunc combination eliminates the bitcast.
llvm-svn: 31934
2006-11-27 05:06:58 +00:00
Chris Lattner 3da631f29a For better or worse, load from i1 is assumed to be zero extended. Do not
form a load from i1 from larger loads that may not be zext'd.

llvm-svn: 31933
2006-11-27 04:40:53 +00:00
Chris Lattner db18938355 If a brcond condition is promoted, make sure to zero extend it, even if not
expanded into BR_CC.

llvm-svn: 31932
2006-11-27 04:39:56 +00:00
Reid Spencer 6c38f0bb07 For PR950:
The long awaited CAST patch. This introduces 12 new instructions into LLVM
to replace the cast instruction. Corresponding changes throughout LLVM are
provided. This passes llvm-test, llvm/test, and SPEC CPUINT2000 with the
exception of 175.vpr which fails only on a slight floating point output
difference.

llvm-svn: 31931
2006-11-27 01:05:10 +00:00
Reid Spencer afbc00bc38 Don't use bitcast yet!
llvm-svn: 31930
2006-11-26 21:22:01 +00:00
Reid Spencer 2dd1741565 Make this test case easier to read. No functional changes.
llvm-svn: 31929
2006-11-26 18:27:09 +00:00
Bill Wendling 3750ae25a0 Removed #include <iostream> and replace with llvm_* streams.
llvm-svn: 31927
2006-11-26 10:52:51 +00:00
Bill Wendling a88968b9c4 Add method that will take a function pointer so that it can handle things
like "llvm_cerr << std::flush";

llvm-svn: 31926
2006-11-26 10:51:51 +00:00
Bill Wendling 4ae401074c Remove #include <iostream> and use llvm_* streams instead.
llvm-svn: 31925
2006-11-26 10:17:54 +00:00
Bill Wendling 8f13b5c43e Replace #include <iostream> with llvm_* streams.
llvm-svn: 31924
2006-11-26 10:02:32 +00:00
Bill Wendling 5dbf43c983 Removed #include <iostream> and replaced with llvm_* streams.
llvm-svn: 31923
2006-11-26 09:46:52 +00:00
Bill Wendling a7459ca813 Removed #include <iostream> and used the llvm_cerr/DOUT streams instead.
llvm-svn: 31922
2006-11-26 09:17:06 +00:00
Duraid Madina 24cdf575e7 fix storing bools to mem and unordered FP ops
llvm-svn: 31920
2006-11-26 04:34:26 +00:00
Reid Spencer aa5c220665 Make the absolute/relative tolerance information easier to read/understand.
llvm-svn: 31908
2006-11-25 08:38:44 +00:00
Reid Spencer 6968c497de Add newline at end of file.
llvm-svn: 31902
2006-11-25 05:41:02 +00:00
Reid Spencer 6984a15600 Only show the first few lines of difference.
llvm-svn: 31901
2006-11-25 04:07:06 +00:00
Reid Spencer 17782030cf Add an option to enable lli (interpreter mode) testing.
llvm-svn: 31899
2006-11-24 20:34:16 +00:00
Reid Spencer 3c3324c7fa Fix some typos.
llvm-svn: 31897
2006-11-23 16:45:52 +00:00
Reid Spencer 0e43e15fc9 Promote GEP ubyte indices to uint. Backwards compatibility for 1.2 and
older features will be dropped soon and these test cases must not rely
on the upgrade capability.

llvm-svn: 31896
2006-11-23 15:14:52 +00:00
Nick Lewycky 09b7e4d3ab Update to new predicate simplifier VRP design. Fixes PR966 and PR967.
Remove predicate simplifier from default gcc3 pipeline. New design is too
slow to enable by default.
Add new testcases for problems encountered in development.

llvm-svn: 31895
2006-11-22 23:49:16 +00:00
Reid Spencer fff57ce9cd Stop early if there is no mis-optimization.
llvm-svn: 31893
2006-11-22 03:46:45 +00:00
John Criswell 4666c085f3 Documented the --disable-compression option in gccld and gccas.
llvm-svn: 31892
2006-11-21 22:53:12 +00:00
John Criswell dffef2d2f5 Added the --disable-compression option which controls whether the
generated bytecode uses compression.

llvm-svn: 31891
2006-11-21 22:50:24 +00:00
Chris Lattner ec45a4c88c This xform is handled by FoldOpIntoPhi in visitCastInst in a more elegant way.
llvm-svn: 31889
2006-11-21 17:05:13 +00:00
Anton Korobeynikov 5b96cdebb0 Refactored *GVRequiresExtraLoad() to Subtarget method.
llvm-svn: 31887
2006-11-21 00:01:06 +00:00
Jim Laskey efcaa4a8f5 Test for PR1013.
llvm-svn: 31886
2006-11-20 21:58:02 +00:00
Chris Lattner e06180bab8 new testcase
llvm-svn: 31885
2006-11-20 21:20:57 +00:00
Chris Lattner ec5dbccdcf in ppc64-mode, don't allocate the 32-bit version of r13 either.
llvm-svn: 31884
2006-11-20 20:48:05 +00:00
Jim Laskey d7f53cdaec Global label not handled correctly.
llvm-svn: 31883
2006-11-20 20:29:06 +00:00
Chris Lattner ac36360348 r13 is the thread pointer on darwin/ppc64, don't allocate it.
llvm-svn: 31882
2006-11-20 19:33:51 +00:00
Chris Lattner 1f96052d41 Fix PR1005
llvm-svn: 31881
2006-11-20 18:57:02 +00:00
Chris Lattner 55b8683d24 Fix PR1001, patch by Nikhil Patil!
llvm-svn: 31880
2006-11-20 18:54:33 +00:00
Chris Lattner 3e96211bc8 Fix codegen for x86-64 on systems (like ppc or i386) that don't have 64-bit
features autodetected.  This fixes PR1010 and Regression/CodeGen/X86/xmm-r64.ll
on non-x86-64 hosts.

llvm-svn: 31879
2006-11-20 18:16:05 +00:00
Chris Lattner 3676a994ca Fix PR1011 and CodeGen/Generic/2006-11-20-DAGCombineCrash.ll
llvm-svn: 31878
2006-11-20 18:05:46 +00:00
Chris Lattner bffbec4482 Testcase for PR1011
llvm-svn: 31877
2006-11-20 18:05:26 +00:00
Chris Lattner 539df43e4b setOperand should not zap the operand list or add implicit operands to an
instruction.  Doing so breaks the FP stackifier, the alpha branch selector
the sparc fpmover.

This fixes PR1012 and CodeGen/X86/fp-stack-compare.ll

llvm-svn: 31876
2006-11-20 17:57:22 +00:00
Chris Lattner 2ae1230764 Testcase for pr1012
llvm-svn: 31875
2006-11-20 17:55:30 +00:00
Anton Korobeynikov 37d080b11d We should perform extra load for dllimported calls
llvm-svn: 31874
2006-11-20 10:46:14 +00:00
Tanya Lattner 84252caf72 Fixed typo
llvm-svn: 31871
2006-11-20 06:07:10 +00:00
Tanya Lattner da2d1e2319 Adding 1.9 release and removing references to cfrontend
llvm-svn: 31870
2006-11-20 06:04:46 +00:00
Tanya Lattner b0babee602 Changing cfrontend dir to llvm-gcc3.4 as the example.
llvm-svn: 31869
2006-11-20 05:52:06 +00:00
Reid Spencer d9436b6837 For PR950:
First in a series of patches to convert SetCondInst into ICmpInst and
FCmpInst using only two opcodes and having the instructions contain their
predicate value. Nothing uses these classes yet. More patches to follow.

llvm-svn: 31867
2006-11-20 01:22:35 +00:00
Reid Spencer 9f4448a26e For PR950:
Retain the signedness of the old integer types in a new TypeInfo structure
so that it can be used in the grammar to implement auto-upgrade of things
that depended on signedness of types. This doesn't implement any new
functionality in the AsmParser, its just plumbing for future changes.

llvm-svn: 31866
2006-11-19 23:07:00 +00:00
Reid Spencer f69acf3e26 Corrections from review.
llvm-svn: 31865
2006-11-19 03:00:14 +00:00
Chris Lattner ea017f66f7 Don't transform in another bad case: if the block is empty, it should be
simplified before we do this xform so that our cost model is accurate.

llvm-svn: 31864
2006-11-18 22:25:39 +00:00
Chris Lattner 56ec81ff73 Fix another case we *don't* want to do this xform.
llvm-svn: 31861
2006-11-18 21:56:39 +00:00
Reid Spencer e008326b86 Update a reference to the old setcc instruction.
llvm-svn: 31860
2006-11-18 21:55:45 +00:00
Reid Spencer c828a0e3fe For PR950:
Documentation preview of the upcoming icmp and fcmp instructions that
will replace the various setcc instructions.

llvm-svn: 31859
2006-11-18 21:50:54 +00:00
Chris Lattner 995a0175df MachineInstr includes this
llvm-svn: 31858
2006-11-18 21:48:05 +00:00
Chris Lattner ace542fa6c Implement operator<< for machine basic blocks to make it easier to dump them.
llvm-svn: 31857
2006-11-18 21:47:36 +00:00
Chris Lattner 7acdc17fe4 make the previous change more aggressive, moving any block with no fallthrough.
This speeds up yacr2 by 7% on a core2.

llvm-svn: 31856
2006-11-18 21:30:35 +00:00
Chris Lattner 47ce26158f Minor code layout tweak: if we have something like this:
if (cond) goto BB2
BB1:
    ...
    return;
BB2:
   ...

Move BB1 to the end of the function so that the code falls through in the
non-return case.  This has the effect of moving assert (and other no-return
call) bodies and return blocks out of loops.

llvm-svn: 31855
2006-11-18 20:47:54 +00:00
Chris Lattner 95adf8f1da Do not convert massive blocks on phi nodes into select statements. Instead
only do these transformations if there are a small number of phi's.
This speeds up Ptrdist/ks from 2.35s to 2.19s on my mac pro.

llvm-svn: 31853
2006-11-18 19:19:36 +00:00
Chris Lattner bfbc7ace7d converting massive blocks of phis into selects like this is silly.
llvm-svn: 31852
2006-11-18 19:17:52 +00:00
Reid Spencer 4924c53b5e Make the awk filter print out which files its eliminating.
llvm-svn: 31851
2006-11-18 18:30:18 +00:00
Reid Spencer 2ca613bcad This is a utility for preparing patches against LLVM. It runs cvs diff with
the correct options, places the patch content in order that makes sense for
review, and filters cruft out of the patch (like diffs in *.cvs files). It
produces both a NAME.patch.raw (unfiltered) and NAME.patch (filtered) file.

llvm-svn: 31850
2006-11-18 18:02:30 +00:00
Reid Spencer 170ff02764 Provide a list of gccld optimization switches.
llvm-svn: 31849
2006-11-18 17:14:09 +00:00
Reid Spencer e7c6fcdbf3 Fix bugs in this. What was I thinking??? :)
llvm-svn: 31848
2006-11-18 08:06:17 +00:00
Anton Korobeynikov e7cbbfcb30 Movind newly-intorudced dll* linkage stuff & windows CC to "supported"
list

llvm-svn: 31847
2006-11-18 08:04:48 +00:00
Chris Lattner ef22b57922 fix bug
llvm-svn: 31846
2006-11-18 07:52:10 +00:00
Chris Lattner b81f10efaa first draft of 1.9 release notes
llvm-svn: 31845
2006-11-18 07:51:14 +00:00
Reid Spencer d8bd8def37 Fail even if opt doesn't print anything.
llvm-svn: 31844
2006-11-18 06:08:21 +00:00
Reid Spencer 178afb1f9c Add a simple test to make sure getModRefInfo is 1/2 way sane.
llvm-svn: 31842
2006-11-18 05:52:18 +00:00
Reid Spencer ceeed00be7 Have ConstantExprs upgrade opcodes the same way as instructions.
llvm-svn: 31841
2006-11-18 04:37:19 +00:00
Chris Lattner 2cca385fbb on ppc64, float arguments take 8-byte stack slots not 4-byte stack slots.
Also, valist should create a pointer RC reg class value, not a GPRC value.

llvm-svn: 31840
2006-11-18 01:57:19 +00:00
Chris Lattner 572e238c14 make sure to safe LR8 in the right stack slot for PPC64
llvm-svn: 31839
2006-11-18 01:34:43 +00:00
Chris Lattner 9ca15c8914 Pretty print 'rldicr r2, r2, 2, 61' as 'sldi r2, r2, 2'.
llvm-svn: 31838
2006-11-18 01:23:56 +00:00
Chris Lattner 542dfd5510 Rewrite the branch selector to be correct in the face of large functions.
The algorithm it used before wasn't 100% correct, we now use an iterative
expansion model.  This fixes assembler errors when compiling 403.gcc with
tail merging enabled.

Change the way the branch selector works overall: Now, the isel generates
PPC::BCC instructions (as it used to) directly, and these BCC instructions
are emitted to the output or jitted directly if branches don't need
expansion.  Only if branches need expansion are instructions rewritten
and created.  This should make branch select faster, and eliminates the
Bxx instructions from the .td file.

llvm-svn: 31837
2006-11-18 00:32:03 +00:00
Chris Lattner 33fc1d45e5 add encoding for BCC, after finally wrestling strange ppc/tblgen endianness
issues to the ground.

llvm-svn: 31836
2006-11-17 23:53:28 +00:00
Chris Lattner be9377a1e3 convert PPC::BCC to use the 'pred' operand instead of separate predicate
value and CR reg #.  This requires swapping the order of these everywhere
that touches BCC and requires us to write custom matching logic for
PPCcondbranch :(

llvm-svn: 31835
2006-11-17 22:37:34 +00:00
Chris Lattner e0263794f4 rename PPC::COND_BRANCH to PPC::BCC
llvm-svn: 31834
2006-11-17 22:14:47 +00:00
Chris Lattner 8c6a41ea12 start using PPC predicates more consistently.
llvm-svn: 31833
2006-11-17 22:10:59 +00:00
Evan Cheng 9e8093ae20 For unsigned 8-bit division. Use movzbw to set the lower 8 bits of AX while
clearing the upper 8-bits instead of issuing two instructions. This also
eliminates the need to target the AH register which can be problematic on
x86-64.

llvm-svn: 31832
2006-11-17 22:10:14 +00:00
Jim Laskey de5fa025ab Hopefully a good crack at making debugging work on intel -disable-fp-elim.
llvm-svn: 31830
2006-11-17 21:19:15 +00:00
Evan Cheng bae950131c Add a x86-64 test case: movb %sil, %ah is illegal.
llvm-svn: 31829
2006-11-17 20:41:55 +00:00
Jim Laskey 73106b5e2a Assert unhandled case.
llvm-svn: 31828
2006-11-17 18:49:39 +00:00
Jim Laskey 716f64c30b Case sensitive not.
llvm-svn: 31827
2006-11-17 18:00:39 +00:00
Jim Laskey 63228b3450 Check for MaxAlign.
llvm-svn: 31826
2006-11-17 17:19:49 +00:00
Jim Laskey 6684f2f0a7 Tests to verify PowerPC ABI.
llvm-svn: 31825
2006-11-17 16:54:21 +00:00
Jim Laskey 1823346b3e 1. Ignore the -disable-fp-elim when the routine is a leaf.
2. Offsets on 64-bit stores are still in bytes.

llvm-svn: 31824
2006-11-17 16:09:31 +00:00
Jim Laskey 91542a4f2d Typo. Fix the nightly tests.
llvm-svn: 31823
2006-11-17 14:06:41 +00:00
Jim Laskey da0add3fd0 Fixing the ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1 build.
llvm-svn: 31822
2006-11-17 13:07:55 +00:00
Bill Wendling 0d630c33b2 Need <iostream> for the time being.
llvm-svn: 31821
2006-11-17 10:09:22 +00:00
Bill Wendling 605795ea8c Need iostream to be included for the time being.
llvm-svn: 31820
2006-11-17 10:05:07 +00:00
Bill Wendling 9594f3a196 Moved definition of llvm_ostream wrappers to the Streams.cpp file.
llvm-svn: 31819
2006-11-17 09:54:47 +00:00
Bill Wendling 7d9eb5dd33 Used llvm_ostream instead of std::ostream objects. This will reduce use
of the icky <iostream> class.

llvm-svn: 31818
2006-11-17 09:52:49 +00:00
Bill Wendling 3315869498 Added wrappers for the std::cerr/std::cout objects. The wrappers will
soon replace all uses of those objects.

llvm-svn: 31817
2006-11-17 09:51:22 +00:00
Bill Wendling 9b04e3b875 Needed <iostream> for now.
llvm-svn: 31816
2006-11-17 09:44:28 +00:00
Bill Wendling 4479c92da5 Needs the iostream include.
llvm-svn: 31815
2006-11-17 09:38:03 +00:00
Bill Wendling 6a462f1e99 Removed iostream #includes. Replaced std::cerr with DOUT.
llvm-svn: 31814
2006-11-17 08:03:48 +00:00
Bill Wendling c8e81b8d48 Removed even more std::cerr and #include <iostream> things.
llvm-svn: 31813
2006-11-17 07:52:03 +00:00
Bill Wendling 4b1a04ac62 Replaced DEBUG(std::cerr with DOUT.
llvm-svn: 31812
2006-11-17 07:36:54 +00:00
Bill Wendling fc9063e9cd Replace DEBUG(std::cerr with DOUT. Removed some iostream #includes.
llvm-svn: 31811
2006-11-17 07:33:59 +00:00
Bill Wendling 3216551491 Removed unneeded <iostream> #include.
llvm-svn: 31810
2006-11-17 07:10:51 +00:00
Chris Lattner 21eba2da26 If an indvar with a variable stride is used by the exit condition, go ahead
and handle it like constant stride vars.  This fixes some bad codegen in
variable stride cases.  For example, it compiles this:

void foo(int k, int i) {
  for (k=i+i; k <= 8192; k+=i)
    flags2[k] = 0;
}

to:

LBB1_1: #bb.preheader
        movl %eax, %ecx
        addl %ecx, %ecx
        movl L_flags2$non_lazy_ptr, %edx
LBB1_2: #bb
        movb $0, (%edx,%ecx)
        addl %eax, %ecx
        cmpl $8192, %ecx
        jle LBB1_2      #bb
LBB1_5: #return
        ret

or (if the array is local and we are in dynamic-nonpic or static mode):

LBB3_2: #bb
        movb $0, _flags2(%ecx)
        addl %eax, %ecx
        cmpl $8192, %ecx
        jle LBB3_2      #bb

and:

        lis r2, ha16(L_flags2$non_lazy_ptr)
        lwz r2, lo16(L_flags2$non_lazy_ptr)(r2)
        slwi r3, r4, 1
LBB1_2: ;bb
        li r5, 0
        add r6, r4, r3
        stbx r5, r2, r3
        cmpwi cr0, r6, 8192
        bgt cr0, LBB1_5 ;return

instead of:

        leal (%eax,%eax,2), %ecx
        movl %eax, %edx
        addl %edx, %edx
        addl L_flags2$non_lazy_ptr, %edx
        xorl %esi, %esi
LBB1_2: #bb
        movb $0, (%edx,%esi)
        movl %eax, %edi
        addl %esi, %edi
        addl %ecx, %esi
        cmpl $8192, %esi
        jg LBB1_5       #return

and:

        lis r2, ha16(L_flags2$non_lazy_ptr)
        lwz r2, lo16(L_flags2$non_lazy_ptr)(r2)
        mulli r3, r4, 3
        slwi r5, r4, 1
        li r6, 0
        add r2, r2, r5
LBB1_2: ;bb
        li r5, 0
        add r7, r3, r6
        stbx r5, r2, r6
        add r6, r4, r6
        cmpwi cr0, r7, 8192
        ble cr0, LBB1_2 ;bb

This speeds up Benchmarks/Shootout/sieve from 8.533s to 6.464s and
implements LoopStrengthReduce/var_stride_used_by_compare.ll

llvm-svn: 31809
2006-11-17 06:17:33 +00:00
Chris Lattner 0727eeaeac New testcase.
llvm-svn: 31808
2006-11-17 06:09:49 +00:00
Reid Spencer 4b8067f37b Undo removal of the runtime libraries. While this may have been a bit
premature, these libraries will be going away for the 2.0 release. Other
arrangements for profiling, gc, etc. should be made in the next few months.

llvm-svn: 31807
2006-11-17 03:32:33 +00:00
Bill Wendling 9d46fcd59c More removal of std::cerr and DEBUG, replacing with DOUT instead.
llvm-svn: 31806
2006-11-17 02:09:07 +00:00
Chris Lattner 3b7261b18e implement a todo: change a map into a vector
llvm-svn: 31805
2006-11-17 01:52:23 +00:00
Evan Cheng 71adba6dce Add opcode to TargetInstrDescriptor.
llvm-svn: 31804
2006-11-17 01:46:27 +00:00
Bill Wendling ca6f6a43e0 #ifndef NDEBUG the "if (Stream) ..." stuff.
llvm-svn: 31803
2006-11-17 01:43:48 +00:00
Evan Cheng 84dd67e08a Add opcode to TargetInstrDescriptor.
llvm-svn: 31802
2006-11-17 01:36:01 +00:00
Bill Wendling fc01016c75 Adjusted the // comments so that doxygen picks them up.
llvm-svn: 31801
2006-11-17 01:13:12 +00:00
Bill Wendling d108b9a60d Replace std::cerr uses of the "DEBUG" macro with "DOUT" instead. Removes
a #include of iostream.

llvm-svn: 31800
2006-11-17 00:50:36 +00:00
Chris Lattner be1a4d80b3 fix typo
llvm-svn: 31799
2006-11-17 00:49:36 +00:00
Bill Wendling d7fda04420 Added "DOUT" macro. This is used as a replacement for the std::cerr
stream. It centralizes the use of std::cerr so that static c'tor/d'tors
aren't scattered around all over the place. The way to use it is like this:

       DOUT << "This is a status line: " << Var << "\n";

If "-debug" is specified, it will print. Otherwise, it'll not print. If
NDEBUG is defined, the DOUT does nothing.

llvm-svn: 31798
2006-11-17 00:49:12 +00:00
Chris Lattner a715288b40 implicit_def_vrrc doesn't generate code.
llvm-svn: 31797
2006-11-16 23:49:52 +00:00
Evan Cheng 538e9cafae New test case.
llvm-svn: 31796
2006-11-16 23:38:21 +00:00
Evan Cheng 572dc9cb4e Correct instructions for moving data between GR64 and SSE registers; also correct load i64 / store i64 from v2i64.
llvm-svn: 31795
2006-11-16 23:33:25 +00:00
Evan Cheng 7ae482c52a Fix a potential bug: MOVPDI2DI, etc. are not copy instructions.
llvm-svn: 31794
2006-11-16 23:22:26 +00:00
Reid Spencer 3f97d03f86 In LLVM 2.0 we won't use the runtime libraries as llvm-gcc3 support will
be dropped. This patch pertains to removing the runtime directory from LLVM.

llvm-svn: 31793
2006-11-16 23:17:27 +00:00
Jim Laskey 48850c10c0 This is a general clean up of the PowerPC ABI. Address several problems and
bugs including making sure that the TOS links back to the previous frame,
that the maximum call frame size is not included twice when using frame
pointers, no longer growing the frame on calls, double storing of SP and
a cleaner/faster dynamic alloca.

llvm-svn: 31792
2006-11-16 22:43:37 +00:00