Commit Graph

30058 Commits

Author SHA1 Message Date
Reid Spencer 74cf82e522 Fix countLeadingZeros to actually return the correct number.
Fix toString to correctly return "0" for zero valued APInts over 128 bits.

llvm-svn: 34459
2007-02-21 00:29:48 +00:00
Reid Spencer 7a6a8d5116 Make long addition and subtraction work. Speed things up by using internal
functions more.

llvm-svn: 34458
2007-02-20 23:40:25 +00:00
Evan Cheng 71b8723f07 This cast broke lots of tests.
llvm-svn: 34457
2007-02-20 21:30:56 +00:00
Dan Gohman 8c8597c4d9 Fix typos in comments.
llvm-svn: 34456
2007-02-20 20:52:03 +00:00
Reid Spencer 4bb430c4b4 Clean up variable names in operator*.
Attempt #3 for getting a portable INFINITY value.

llvm-svn: 34454
2007-02-20 20:42:10 +00:00
Reid Spencer a83af6e1fc Use INFINITY macro from math.h instead of constructing hex floating point
constants (avoids warnings).

llvm-svn: 34452
2007-02-20 18:29:12 +00:00
Reid Spencer fb77b2ba13 First version that can process arith.cpp test case up to 1024 bits:
1. Ensure pVal is set to 0 in each constructor.
2. Fix roundToDouble to make correct calculations and not read beyond the
   end of allocated memory.
3. Implement Knuth's "classical algorithm" for division from scratch and
   eliminate buffer overflows and uninitialized mememory reads. Document
   it properly too.
4. Implement a wrapper function for KnuthDiv which handles the 64-bit to
   32-bit conversion and back. It also implement short division for the
   n == 1 case that Knuth's algorithm can't handle.
5. Simplify the logic of udiv and urem a little, make them exit early, and
   have them use the "divide" wrapper function to perform the division
   or remainder operation.
6. Move the toString function to the end of the file, closer to where
   the division functions are located.

Note: division is still broken for some > 64 bit values, but at least it
      doesn't crash any more.
llvm-svn: 34449
2007-02-20 08:51:03 +00:00
Reid Spencer 1bed091776 Add an internal convenience method for division that urem and udiv use.
llvm-svn: 34448
2007-02-20 08:43:42 +00:00
Chris Lattner 2db2c526a5 eliminate some dead friends.
llvm-svn: 34447
2007-02-20 07:18:01 +00:00
Chris Lattner c6ee77d1b0 switch ConstantFP's from ValueMap to DenseMap, which is much faster to query
and is more memory efficient.

llvm-svn: 34446
2007-02-20 07:17:17 +00:00
Chris Lattner a80bf0b2a6 cleanup ConstantInt to use a single DenseMap for uniquing instead of the
heavy-weight ValueMap class.  This reduces mem usage bc reading kc++ by 29K,
even though it only creates 2955 constant ints!

llvm-svn: 34445
2007-02-20 06:39:57 +00:00
Chris Lattner 4510c99a57 Not all managedstatics need object pointers.
llvm-svn: 34444
2007-02-20 06:18:57 +00:00
Chris Lattner 281735098a Make ConstantInt::getTrue/getFalse be llvm_shutdown safe.
llvm-svn: 34443
2007-02-20 06:11:36 +00:00
Chris Lattner 94524b335f add a way to register an arbitrary cleanup function.
llvm-svn: 34442
2007-02-20 06:08:37 +00:00
Chris Lattner 5db2f47364 Clean up the internals of the ConstantInt machinery
llvm-svn: 34441
2007-02-20 05:55:46 +00:00
Chris Lattner dbcb0d3ffe simplify some code that was not llvm_shutdown safe
llvm-svn: 34440
2007-02-20 05:46:39 +00:00
Chris Lattner c35fe713ff remove reoptimizer-specific passes
llvm-svn: 34439
2007-02-20 05:31:49 +00:00
Chris Lattner 3f9accd62d remove some dead passes and stuff specific to the reoptimizer.
llvm-svn: 34438
2007-02-20 05:31:35 +00:00
Chris Lattner ffbe511d9e remove some passes
llvm-svn: 34437
2007-02-20 05:31:04 +00:00
Chris Lattner 62b2842b6f remove dead method
llvm-svn: 34436
2007-02-20 05:29:47 +00:00
Evan Cheng 61cd0914ed Dead code.
llvm-svn: 34435
2007-02-20 01:29:10 +00:00
Evan Cheng b68a774fd9 How the heck did I forget patterns for llvm.x86.sse2.cmp.sd?
llvm-svn: 34434
2007-02-20 00:39:09 +00:00
Reid Spencer 50c723ae72 Add a section on the target datalayout syntax and describe the defaults
and rules used by LLVM to construct the target's layout rules.

llvm-svn: 34433
2007-02-19 23:54:10 +00:00
Reid Spencer b6d01caf22 Simplify some code by moving variable declarations into the only block that
uses them.

llvm-svn: 34432
2007-02-19 23:30:10 +00:00
Reid Spencer 421bad0dc5 Implement support for non-standard integer bit widths of any size. The
rules alignment is to pick the alignment that corresponds to the smallest
specified alignment that is larger than the bit width of the type or the
largest specified integer alignment if none are larger than the bitwidth
of the type. For the byte size, the size returned is the next larger
multiple of the alignment for that type (using the above rule). This patch
also changes bit widths from "short" to "uint32_t" to ensure there are
enough bits to specify any bit width that LLVM can handle (currently 2^23);
16-bits isn't enough.

llvm-svn: 34431
2007-02-19 22:35:00 +00:00
Evan Cheng 0c99b096c5 Added test case for PR1207.
llvm-svn: 34429
2007-02-19 21:53:59 +00:00
Evan Cheng f7ed82da10 Re-apply my liveintervalanalysis changes. Now with PR1207 fixes.
llvm-svn: 34428
2007-02-19 21:49:54 +00:00
Evan Cheng d5cfe7d004 Fix test case.
llvm-svn: 34427
2007-02-19 21:47:02 +00:00
Chris Lattner 8982e3b063 this passes now
llvm-svn: 34426
2007-02-19 20:20:04 +00:00
Chris Lattner b5d703018b llvm-gcc issue fixed, revert reversal :)
llvm-svn: 34425
2007-02-19 20:01:23 +00:00
Chris Lattner 86358635e5 remove warning
llvm-svn: 34424
2007-02-19 19:46:17 +00:00
Evan Cheng 0a02f82767 Temporarily reverting the patch. It's breaking llvm-gcc build.
llvm-svn: 34423
2007-02-19 19:23:41 +00:00
Reid Spencer 887ae70af5 Add a FIXME for unwritten code.
llvm-svn: 34422
2007-02-19 19:00:29 +00:00
Bill Wendling 0ae16357ca Corrected typo.
llvm-svn: 34421
2007-02-19 18:32:40 +00:00
Reid Spencer 68812c7024 Some minor tweaks and grammar cleanup.
llvm-svn: 34420
2007-02-19 17:38:38 +00:00
Chris Lattner 4669b0bf54 remove dead methods
llvm-svn: 34419
2007-02-19 07:44:24 +00:00
Chris Lattner 86e36db1bf remove use of deprecated apis
llvm-svn: 34418
2007-02-19 07:41:31 +00:00
Chris Lattner b5f6d0c15a eliminate use of deprecated apis
llvm-svn: 34417
2007-02-19 07:34:47 +00:00
Chris Lattner 80b65db862 remove use of deprecated api
llvm-svn: 34416
2007-02-19 07:34:02 +00:00
Chris Lattner 544a633656 add alternate version of constant ctors that don't take a vector. For now
this offers no performance advantage.

llvm-svn: 34415
2007-02-19 07:23:24 +00:00
Chris Lattner 8d033d1163 fix validation
llvm-svn: 34414
2007-02-19 06:57:46 +00:00
Chris Lattner 78914c3d5e more wording changes and some minor additions
llvm-svn: 34413
2007-02-19 06:57:16 +00:00
Chris Lattner f54ba986b2 add the definite article
llvm-svn: 34412
2007-02-19 06:24:23 +00:00
Chris Lattner 83967801fd rename section to Copyright, License, and Patents
llvm-svn: 34411
2007-02-19 06:19:16 +00:00
Chris Lattner 30ff8f8b20 wording changes
llvm-svn: 34410
2007-02-19 06:15:33 +00:00
Chris Lattner a65670e2e5 add strong words about patents
llvm-svn: 34409
2007-02-19 06:13:50 +00:00
Chris Lattner 76fa27f757 incremental changes to own section, protosection on patents
llvm-svn: 34408
2007-02-19 06:05:58 +00:00
Chris Lattner 4d67b16416 fix TOC, clarify bullet in incremental dev
llvm-svn: 34407
2007-02-19 05:59:30 +00:00
Chris Lattner a333819d63 refactor the top-level 'patches' section into a subsection of General Policies.
Much of its content is now in other parts of the doc, and this brings it up
immediately after 'stay informed' and right before 'code reviews'.

llvm-svn: 34406
2007-02-19 05:57:29 +00:00
Chris Lattner 10f1514b07 minor changes
llvm-svn: 34405
2007-02-19 05:49:11 +00:00