Commit Graph

66182 Commits

Author SHA1 Message Date
Wesley Peck 1851090515 Making the e_machine configurable by the target backend in ELFObjectWriter.
llvm-svn: 117099
2010-10-22 15:52:49 +00:00
NAKAMURA Takumi 1530487cb1 lli: On Cygwin-1.5, lli crashes at invoking destructors in atexit handler.
llvm-svn: 117095
2010-10-22 14:53:59 +00:00
Peter Collingbourne a92b66ec47 Standardise all build-mode affecting {EN,DIS}ABLE_* make options to
test equality to 1, and fix/update documentation to reflect this

llvm-svn: 117094
2010-10-22 12:54:34 +00:00
NAKAMURA Takumi c7e0dcf13f test/Makefile: Force lit -j1 on Cygwin.
lit -jN causes crash on Cygwin's python.

llvm-svn: 117093
2010-10-22 09:40:37 +00:00
Michael J. Spencer f572e3fc4c Rename LLVM_IS_TARGET_BIG_ENDIAN to LLVM_IS_HOST_BIG_ENDIAN to reflect what it actually means.
llvm-svn: 117092
2010-10-22 08:47:28 +00:00
Andrew Trick edd006c1c3 Reverting r117031 to cleanup valgrind errors.
It doesn't look like anything is wrong with the checkin,
but the new test cases expose a mem bug in AsmParser.

llvm-svn: 117087
2010-10-22 03:58:29 +00:00
Eric Christopher 93bbe6599f Add some basic ret instruction support to arm fast-isel.
llvm-svn: 117085
2010-10-22 01:28:00 +00:00
Sean Callanan 9f6c622f88 Fixed handling of immediate operand sizes, which
weren't properly reflecting the OperandSize attribute
of the instruction leading to improper decoding of
certain instructions with the 66H prefix.  Also added
a test case for this.

llvm-svn: 117084
2010-10-22 01:24:11 +00:00
NAKAMURA Takumi 3f688b92a9 Win32/Signals.inc: DontRemoveFileOnSignal(): Please acquire the CriticalSection.
It choked BugPoint on Mingw.

llvm-svn: 117083
2010-10-22 01:23:50 +00:00
Jim Grosbach e2ec62e252 ARM binary encoding for some of the multiply instructions.
llvm-svn: 117080
2010-10-21 22:52:30 +00:00
Stuart Hastings cdc55bc680 Test case for r117075. Radar 6635085.
llvm-svn: 117079
2010-10-21 22:43:32 +00:00
Owen Anderson 28418de7ee Add tests for NEON encoding of vmull.
llvm-svn: 117077
2010-10-21 22:19:53 +00:00
Jim Grosbach a97becfaac ARM binary encodings for MVN variants.
llvm-svn: 117076
2010-10-21 22:19:32 +00:00
Owen Anderson 22c940c9ab Add tests for NEON encoding of vqdmulh and vqrdmulh.
llvm-svn: 117074
2010-10-21 22:05:33 +00:00
Jim Grosbach 90600d3329 Trailing whitespace.
llvm-svn: 117073
2010-10-21 22:04:05 +00:00
Jim Grosbach 5edb03ee57 ARM Binary encoding information for BFC/BFI instructions.
llvm-svn: 117072
2010-10-21 22:03:21 +00:00
Dan Gohman 8512270dbc Add some more documentation.
llvm-svn: 117070
2010-10-21 21:55:35 +00:00
Owen Anderson eff79f13a6 Add tests for NEON vmul encoding.
llvm-svn: 117069
2010-10-21 21:51:58 +00:00
Eric Christopher 2f8637d393 These don't need to be virtual.
llvm-svn: 117068
2010-10-21 21:47:51 +00:00
Owen Anderson 6e1cf114f9 Rename this test to better reflect its contents.
llvm-svn: 117067
2010-10-21 21:40:15 +00:00
Tobias Grosser 5f038210cf Fix type in passes.
llvm-svn: 117065
2010-10-21 21:16:03 +00:00
Owen Anderson c47913acd2 Add tests for NEON encodings of vaddhn and vraddhn.
llvm-svn: 117064
2010-10-21 20:56:57 +00:00
Michael J. Spencer 31041a9967 Fix Warnings.
llvm-svn: 117062
2010-10-21 20:49:38 +00:00
Michael J. Spencer 0e36e0340a X86: Base _fltused on the FunctionType of the called value instead of the potentially null "CalledFunction". Thanks Duncan!
This is needed for indirect calls.

llvm-svn: 117061
2010-10-21 20:49:23 +00:00
Owen Anderson 2bfa8ed045 Move the encoding logic for Q registers into getMachineOpValue().
llvm-svn: 117060
2010-10-21 20:49:13 +00:00
Owen Anderson d8be664273 Add tests for NEON encodings of vqadd, which was already correctly encoded.
llvm-svn: 117059
2010-10-21 20:42:04 +00:00
Mikhail Glushenkov f64d93df79 Trailing whitespace.
llvm-svn: 117058
2010-10-21 20:40:39 +00:00
Michael J. Spencer b550b66543 Support: Add Endian.h
llvm-svn: 117057
2010-10-21 20:28:21 +00:00
Owen Anderson 9e44cf2bb2 ARM encodes Q registers as 2xregno (i.e. the number of the D register that corresponds to the lower
half of the Q register), rather than with just regno.  This allows us to unify the encodings for
a lot of different NEON instrucitons that differ only in whether they have Q or D register operands.

llvm-svn: 117056
2010-10-21 20:21:49 +00:00
Eric Christopher b353e4f579 Handle storing args to the stack for calls.
llvm-svn: 117055
2010-10-21 20:09:54 +00:00
Wesley Peck a7f6150c14 Adding initial AsmParser implementation for the MBlaze backend. It is
mostly based on the ARM AsmParser at this time and is not particularly
functional.

Changed the MBlaze data layout from:
    "E-p:32:32-i8:8:8-i16:16:16-i64:32:32-f64:32:32-v64:32:32-v128:32:32-n32"
to:
    "E-p:32:32:32-i8:8:8-i16:16:16"
because the MicroBlaze doesn't have i64, f64, v64, or v128 data types.

Cleaned up the MBlaze source code:
    1. The floating point register class has been removed. The
       MicroBlaze does not have floating point registers. Floating
       point values are simply stored in integer registers.
    2. Renaming the CPURegs register class to GPR to reflect the
       standard naming.
    3. Removing a lot of stale code from AsmPrinter after
       the conversion to InstPrinter.
    4. Simplified sign extended loads by marking them as
       expanded in ISelLowering.

llvm-svn: 117054
2010-10-21 19:48:38 +00:00
Dan Gohman 12c9e0cf1c Explain what "constant" means here.
llvm-svn: 117053
2010-10-21 19:45:09 +00:00
Eric Christopher 73bc5b0f86 More load/store refactoring, call reg+offset simplification from within
the emitter to handle the addresses. Only simplify the offset if we need
to - also fix bug where in addrmode 5 we weren't dividing the offset by
4, which showed up due to not always lowering.

llvm-svn: 117051
2010-10-21 19:40:30 +00:00
Jim Grosbach d37f0715b1 trailing whitespace
llvm-svn: 117050
2010-10-21 19:38:40 +00:00
Dan Gohman 104f1812ce Update comments.
llvm-svn: 117048
2010-10-21 19:01:22 +00:00
Owen Anderson 6b7e401049 Add correct NEON encodings for vhadd and vrhadd.
llvm-svn: 117047
2010-10-21 18:55:04 +00:00
Jakob Stoklund Olesen f4bbe50fc3 Don't include the destination interval in the union when computing
Parent - union(Y, ...). Doh.

llvm-svn: 117042
2010-10-21 18:47:08 +00:00
Jakob Stoklund Olesen 7c9d584ebc Permit landing pad successor blocks when verifying basic blocks that end in an
unconditional branch.

llvm-svn: 117041
2010-10-21 18:47:06 +00:00
Owen Anderson 9561084188 Add correct encodings for NEON vaddw.s* and vaddw.u*.
llvm-svn: 117040
2010-10-21 18:20:25 +00:00
Owen Anderson 15c97706e8 Provide correct NEON encodings for vaddl.u* and vaddl.s*.
llvm-svn: 117039
2010-10-21 18:09:17 +00:00
Rafael Espindola 8ba86f801d Do not recurse into symbol refs that have a variant kind. This prevents us
from losing the variant when producing a relocation on an alias.

llvm-svn: 117037
2010-10-21 18:00:20 +00:00
Kevin Enderby 0138a05557 More tweaks to X86 instructions to allow the 'w' suffix in places it makes
sense, when the instruction takes the 16-bit ax register or m16 memory
location.  These changes to llvm-mc matches what the darwin assembler allows
for these instructions.  Also added the missing flex (without the wait prefix)
and ud2a as an alias to ud2 (still to add ud2b).

llvm-svn: 117031
2010-10-21 17:16:46 +00:00
Duncan Sands 4c5c858d78 AlignLoc is never used for anything - zap it (gcc-4.6 warning).
llvm-svn: 117025
2010-10-21 16:07:10 +00:00
Duncan Sands b014abf3ef The return value of this call is not used, so no point
in assigning it to a variable (gcc-4.6 warning).

llvm-svn: 117024
2010-10-21 16:06:28 +00:00
Duncan Sands 94da154558 RetOp is not actually used for anything useful (though
it looks like maybe it was supposed to be used in the
test...), so zap it (gcc-4.6 warning).

llvm-svn: 117023
2010-10-21 16:05:44 +00:00
Duncan Sands 2f16b91ce0 The variable liTRC is not used for anything useful, zap it
(gcc-4.6 warning).

llvm-svn: 117022
2010-10-21 16:04:43 +00:00
Duncan Sands ee4eb2bad1 Remove some variables that are never really used
(gcc-4.6 warns about these).

llvm-svn: 117021
2010-10-21 16:03:28 +00:00
Duncan Sands 1f0d37e892 Add parentheses to pacify gcc, which warns otherwise.
llvm-svn: 117020
2010-10-21 16:02:12 +00:00
Duncan Sands a11e9827b1 Argh, completely forgot to add this to the release notes!
Better late than never, right?

llvm-svn: 117009
2010-10-21 14:40:02 +00:00
Duncan Sands abc7901e4e Fix the cleanup process of exception information in JIT. Now JIT
deregisters registered by it FDE structures allowing consecutive
JIT runs to succeed.  Patch by Yuri.  Fixes PR8285.

llvm-svn: 117004
2010-10-21 08:57:29 +00:00
Bill Wendling 2a7d269a2b Fix whitespace.
llvm-svn: 117002
2010-10-21 06:25:08 +00:00
Wesley Peck f7ecd9e8bb Removing stale AsmPrinter directory from MicroBlaze backend.
llvm-svn: 116998
2010-10-21 05:05:06 +00:00
Oscar Fuentes 3e79a47a7a Deleted lib/Target/MBlaze/AsmPrinter/CMakeLists.txt. This way the
CMake build does not try to build that library, which collides with
MBlaze/InstPrinter.

llvm-svn: 116997
2010-10-21 05:01:26 +00:00
Wesley Peck c16f77fb27 Recommit 116986 with capitalization typo fixed.
llvm-svn: 116993
2010-10-21 03:57:26 +00:00
Andrew Trick f4ebec03e0 putback r116983 and fix simple-fp-encoding.ll tests
llvm-svn: 116992
2010-10-21 03:40:16 +00:00
Wesley Peck 078db00f1d Reverting the commit 116986. It was breaking the build on llvm-x86_64-linux though it
compiles on OS X. I'll ensure that it builds on a linux machine before committing
again.

llvm-svn: 116991
2010-10-21 03:34:22 +00:00
Owen Anderson 9e00f27e14 Revert r116983, which is breaking all the buildbots.
llvm-svn: 116987
2010-10-21 03:11:16 +00:00
Wesley Peck f608ac4db9 Major update of the MicroBlaze backend. The new features are:
1. A delay slot filler that searches for valid instructions
       to fill the delay slot with. Previously NOPs would always
       be inserted into delay slots.
    2. Support for MC based instruction printer added.
    3. Support for MC based machine code generation and ELF
       file generation. ELF file generation does not yet
       completely work as much of the ELF support infrastructure
       is still x86/x86-64 specific.
    4. General clean up of the MBlaze backend code. Much of the
       tablegen code has been cleanup and simplified.

Bug Fixes:
    1. Removed duplicate periods from subtarget feature descriptions.
    2. Many of the instructions had bad machine code information
       in the tablegen files. Much of this has been fixed.

llvm-svn: 116986
2010-10-21 03:09:55 +00:00
Wesley Peck 612703a831 Adding the EM_MBLAZE value to the machine architectures enumeration to
support future ELF file generation by the MBlaze backend.

llvm-svn: 116985
2010-10-21 02:52:59 +00:00
Michael J. Spencer f509c6ca27 X86: Add alloca probing to dynamic alloca on Windows. Fixes PR8424.
llvm-svn: 116984
2010-10-21 01:41:01 +00:00
Evan Cheng 15c2ac90ec Add missing scheduling itineraries for transfers between core registers and VFP registers.
llvm-svn: 116983
2010-10-21 01:12:00 +00:00
Owen Anderson 6083502848 Implement correct encodings for NEON vadd, both integer and floating point.
llvm-svn: 116981
2010-10-21 00:48:00 +00:00
Michael J. Spencer 83ce5f181f CodeGen-Windows: Only emit _fltused if a VarArg function is called with floating point args.
This should be the minimum set of functions that could possibly need it.

llvm-svn: 116978
2010-10-21 00:08:21 +00:00
Eric Christopher 4ac3ed0219 Custom lower f64 args passed in integer registers.
llvm-svn: 116977
2010-10-21 00:01:47 +00:00
Michael J. Spencer 9cafc872ab Fix Whitespace.
llvm-svn: 116972
2010-10-20 23:40:27 +00:00
Bill Wendling a65f914bb0 Add encoding for moving a value between two ARM core registers and a doublework
extension register.

llvm-svn: 116970
2010-10-20 23:37:40 +00:00
Jakob Stoklund Olesen a3b61d32d8 Remember to keep track of rematted values.
llvm-svn: 116962
2010-10-20 22:50:42 +00:00
Bill Wendling 058190507b Add encodings for movement between ARM core registers and single-precision
registers.

llvm-svn: 116961
2010-10-20 22:44:54 +00:00
Dan Gohman 1b85604130 Memdep says that an instruction clobbers itself
when it means there is no specific clobber instruction.

llvm-svn: 116960
2010-10-20 22:37:41 +00:00
Owen Anderson 80b8817c9d Attempt to fix valgrind complaining about (benign) leaks in pass registration by having PassRegistry
delete PassInfo objects that were created using new-style initialization.

llvm-svn: 116959
2010-10-20 22:22:30 +00:00
Dan Gohman a2ab75bc8d Factor out the main aliasing check into a separate function.
llvm-svn: 116958
2010-10-20 22:11:14 +00:00
Dan Gohman 55a028680c Add some comments.
llvm-svn: 116957
2010-10-20 22:04:02 +00:00
Evan Cheng 87066f0677 More accurate estimate / tracking of register pressure.
- Initial register pressure in the loop should be all the live defs into the
  loop. Not just those from loop preheader which is often empty.
- When an instruction is hoisted, update register pressure from loop preheader
  to the original BB.
- Treat only use of a virtual register as kill since the code is still SSA.

llvm-svn: 116956
2010-10-20 22:03:58 +00:00
Dale Johannesen ff37675c72 Fix crash introduced in 116852. 8573915.
llvm-svn: 116955
2010-10-20 22:03:37 +00:00
Dan Gohman 2549d0cf64 Fix comments; the type graph is currently a tree, not a DAG.
llvm-svn: 116954
2010-10-20 22:02:58 +00:00
Jason W Kim ef3ba55e52 Cut unneeded global variable.
llvm-svn: 116953
2010-10-20 22:01:39 +00:00
Jakob Stoklund Olesen 2edaa2fb24 Move some of the InlineSpiller rematerialization code into LiveRangeEdit.
llvm-svn: 116951
2010-10-20 22:00:51 +00:00
Dale Johannesen 320a553319 Remove Synthesizable from the Type system; as MMX vector
types are no longer Legal on X86, we don't need it.
No functional change.  8499854.

llvm-svn: 116947
2010-10-20 21:32:10 +00:00
Jakob Stoklund Olesen 9b131a004f When SimpleRegisterCoalescing is trimming kill flags on a physical register
operand, also check if subregisters are killed.

Add <imp-def> operands for subregisters that remain alive after a super register
is killed.

I don't have a testcase for this that reproduces on trunk. <rdar://problem/8441758>

llvm-svn: 116940
2010-10-20 18:45:55 +00:00
Rafael Espindola 89f6613e76 Handle _GLOBAL_OFFSET_TABLE_ correctly.
llvm-svn: 116932
2010-10-20 16:46:08 +00:00
Michael J. Spencer dc47d592e7 Use C++03...
llvm-svn: 116927
2010-10-20 16:00:45 +00:00
Michael J. Spencer 9748310eab System-Win32/Path: Fix incorrect assumption in isValid.
A recent commit to clang exposed a bug in the Win32 Path code. This is a
minimal fix for it.

llvm-svn: 116925
2010-10-20 15:23:58 +00:00
Chandler Carruth ee8c0051d3 Add a comment about ATTRIBUTE_UNUSED to avoid further confusion over when to
use it.

llvm-svn: 116920
2010-10-20 08:44:27 +00:00
Chandler Carruth 1898262a33 Remove remaining uses of ATTRIBUTE_UNUSED on variables, and delete three
#includes in the process.

llvm-svn: 116919
2010-10-20 08:27:02 +00:00
Eric Christopher af719ef86b Fix a TODO by removing some unnecesary copies.
llvm-svn: 116915
2010-10-20 08:02:24 +00:00
Rafael Espindola a8a74ece08 Record sysbols created by aliases. Fixes PR8414.
llvm-svn: 116910
2010-10-20 04:57:22 +00:00
NAKAMURA Takumi ffea0abe81 Add ATTRIBUTE_UNUSED for -Asserts.
llvm-svn: 116909
2010-10-20 04:05:29 +00:00
Tobias Grosser 23c8341c3d Add RegionPass support.
A RegionPass is executed like a LoopPass but on the regions detected by the
RegionInfo pass instead of the loops detected by the LoopInfo pass.

llvm-svn: 116905
2010-10-20 01:54:44 +00:00
Douglas Gregor 48b4568718 Fix CMake build
llvm-svn: 116903
2010-10-20 01:36:56 +00:00
Anders Carlsson 83123a47ce Add a way to emit StringSwitch of clang attribute spellings.
llvm-svn: 116899
2010-10-20 01:21:53 +00:00
Jim Grosbach 723159ef77 Fix backwards conditional.
llvm-svn: 116897
2010-10-20 01:10:01 +00:00
Dan Gohman a94cc6dfe8 Make CodeGen TBAA-aware.
llvm-svn: 116890
2010-10-20 00:31:05 +00:00
Jim Grosbach cb6fc2b2de Add dynamic realignment when rematerializing the base register.
llvm-svn: 116886
2010-10-20 00:02:50 +00:00
Jim Grosbach f99ee7cd91 Nuke a commented out bit that got missed a while back.
llvm-svn: 116883
2010-10-19 23:48:47 +00:00
Jim Grosbach 3ee5cbde3d Spelling typo fix. s/incput/input/. Thanks, Bob!
llvm-svn: 116880
2010-10-19 23:39:23 +00:00
Jim Grosbach bbdc5d2ef9 Add a pre-dispatch SjLj EH hook on the unwind edge for targets to do any
setup they require. Use this for ARM/Darwin to rematerialize the base
pointer from the frame pointer when required. rdar://8564268

llvm-svn: 116879
2010-10-19 23:27:08 +00:00
Dan Gohman da85ed8541 Move NoAA out of BasicAliasAnalysis.cpp into its own file, now that
it doesn't have a special relationship with BasicAliasAnalysis
anymore.

llvm-svn: 116876
2010-10-19 23:09:08 +00:00
Dan Gohman f372cf869b Reapply r116831 and r116839, converting AliasAnalysis to use
uint64_t, plus fixes for places I missed before.

llvm-svn: 116875
2010-10-19 22:54:46 +00:00
Douglas Gregor 21afc3b012 Extend StringRef's edit-distance algorithm to permit an upper bound on the allowed edit distance
llvm-svn: 116867
2010-10-19 22:13:48 +00:00
Jim Grosbach 3ed6338ff2 Update comments to remove obsolete references.
llvm-svn: 116863
2010-10-19 21:34:47 +00:00
Dan Gohman b4aa503501 Revert r116831 and r116839, which are breaking selfhost builds.
llvm-svn: 116858
2010-10-19 21:06:16 +00:00
Jakob Stoklund Olesen a4941690cc Shrink MachineOperand from 40 to 32 bytes on 64-bit hosts.
Pull an unsigned out of the Contents union such that it has the same size as two
pointers and no padding.

Arrange members such that the Contents union and all pointers can be 8-byte
aligned without padding.

This speeds up code generation by 0.8% on a 64-bit host. 32-bit hosts should be
unaffected.

llvm-svn: 116857
2010-10-19 20:56:32 +00:00
Owen Anderson a4fefc1949 Passes do not need to recursively initialize passes that they preserve, if
they do not also require them.  This allows us to reduce inter-pass linkage
dependencies.

llvm-svn: 116854
2010-10-19 20:08:44 +00:00
Dale Johannesen 710a2d9d46 Enable using vdup for vector constants which are splat of
integers by default, and remove the controlling flag, now
that LICM will hoist such vdup's.  8003375.

llvm-svn: 116852
2010-10-19 20:00:17 +00:00
Owen Anderson 2328599708 Remove extraneous slash.
llvm-svn: 116851
2010-10-19 19:54:48 +00:00
Rafael Espindola ee8d15157a Small cleanups and fixes in preparation for fixing _GLOBAL_OFFSET_TABLE_.
llvm-svn: 116848
2010-10-19 19:31:37 +00:00
Evan Cheng 63c7608c34 Re-enable register pressure aware machine licm with fixes. Hoist() may have
erased the instruction during LICM so UpdateRegPressureAfter() should not
reference it afterwards.

llvm-svn: 116845
2010-10-19 18:58:51 +00:00
Dan Gohman 896ac62346 Oops, check in all the files for converting AliasAnalysis to
use uint64_t.

llvm-svn: 116839
2010-10-19 18:08:27 +00:00
Michael J. Spencer 58efb6d19b unittests: Use the correct defines and global variables when building on CMake.
llvm-svn: 116834
2010-10-19 18:04:19 +00:00
Michael J. Spencer 713460114d Fix VC2010 build.
llvm-svn: 116833
2010-10-19 18:04:06 +00:00
Owen Anderson 5dd1e0de70 Factor out the call-once implementation into its own macro.
llvm-svn: 116832
2010-10-19 18:02:06 +00:00
Dan Gohman f4c5fe73be Change AliasAnalysis and its clients to use uint64_t instead of unsigned
for representing object sizes, for consistency with other parts of LLVM.

llvm-svn: 116831
2010-10-19 18:00:02 +00:00
Jason W Kim e8b3711ae9 Fixing r116753 r116756 r116777
The failures in r116753 r116756 were caused by a python issue -
Python likes to append 'L' suffix to stringified numbers if the number
is larger than a machine int. Unfortunately, this causes a divergence of
behavior between 32 and 64 bit python versions.

I re-crafted elf-dump/common_dump to take care of these issues by:

1. always printing 0x (makes for easy sed/regex)
2. always print fixed length (exactly 2 + numBits/4 digits long)
   by mod ((2^numBits) - 1)
3. left-padded with '0'

There is a residual common routine that is also used by
macho-dump (dataToHex) , so I left the 'section_data' test values alone.

llvm-svn: 116823
2010-10-19 17:39:10 +00:00
Owen Anderson 6c18d1aac0 Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which
must be called in the pass's constructor.  This function uses static dependency declarations to recursively initialize
the pass's dependencies.

Clients that only create passes through the createFooPass() APIs will require no changes.  Clients that want to use the
CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h
before parsing commandline arguments.

I have tested this with all standard configurations of clang and llvm-gcc on Darwin.  It is possible that there are problems
with the static dependencies that will only be visible with non-standard options.  If you encounter any crash in pass
registration/creation, please send the testcase to me directly.

llvm-svn: 116820
2010-10-19 17:21:58 +00:00
Daniel Dunbar 418204e523 Revert r116781 "- Add a hook for target to determine whether an instruction def
is", which breaks some nightly tests.

llvm-svn: 116816
2010-10-19 17:14:24 +00:00
Dan Gohman 14fe8cf238 Consistently use AliasAnalysis::UnknownSize instead of hardcoding ~0u.
llvm-svn: 116815
2010-10-19 17:06:23 +00:00
Mikhail Glushenkov 2072db24ed GlobalOpt: EvaluateFunction() must not evaluate stores to weak_odr globals.
Fixes PR8389.

llvm-svn: 116812
2010-10-19 16:47:23 +00:00
Mikhail Glushenkov 245916496b Trailing whitespace.
llvm-svn: 116811
2010-10-19 16:47:15 +00:00
Che-Liang Chiou 18d3e435cb Add test case mov.ll for PTX device function
llvm-svn: 116806
2010-10-19 13:21:51 +00:00
Che-Liang Chiou 05046a177d Add lower argument and return of device function
llvm-svn: 116805
2010-10-19 13:14:40 +00:00
Bill Wendling 5391eb61fb Fix spelling.
llvm-svn: 116804
2010-10-19 10:18:23 +00:00
Chandler Carruth ffae4a66fa First step to allowing the resource directory of Clang to be adjusted for
strange packaging environments. The primary result of this is to expose
a (normally empty) CLANG_RESOURCE_DIR string in the autoconf and CMake builds.
This will in turn be used by a subsequent commit to Clang.

Regenerated configure and config.h.in thanks to Nick. =D

llvm-svn: 116802
2010-10-19 08:21:25 +00:00
Michael J. Spencer 3e64de9504 X86: Add MS-CRT libcalls.
llvm-svn: 116801
2010-10-19 07:32:52 +00:00
Michael J. Spencer 8b382e7e10 Fix Whitespace.
llvm-svn: 116800
2010-10-19 07:32:42 +00:00
NAKAMURA Takumi 392f084f46 lib/CodeGen/TargetLoweringObjectFileImpl.cpp: Tweak to emit ".{section}${name}" instead of ".{section}$linkonce_{name}" for linkonce sections.
It seems GNU ld/PECOFF relies on section names, linking with g++'s libstdc++.a would fail.

llvm-svn: 116791
2010-10-19 03:24:42 +00:00
Andrew Trick 2006bbef7d Fix for machine licm assert: RCCost <= RegPressure[RCId]
in MultiSource/Benchmarks/VersaBench/beamformer/beamformer.
SmallSet.insert returns true if the element is inserted.

llvm-svn: 116790
2010-10-19 02:50:50 +00:00
Rafael Espindola e73bc89093 Fix PR8300 by remembering to keep the bitcast in all cases.
llvm-svn: 116788
2010-10-19 02:02:57 +00:00
NAKAMURA Takumi 898fbd82a5 lib/System/Win32/ThreadLocal.inc: Suppress "unused" warning on -Asserts.
llvm-svn: 116785
2010-10-19 01:22:01 +00:00
NAKAMURA Takumi fe84f39adb lib/Support/raw_ostream.cpp: Fix Cygwin's build.
setmode is provided by io.h on Cygwin.

llvm-svn: 116784
2010-10-19 01:21:55 +00:00
Evan Cheng 8249dfe6ce - Add a hook for target to determine whether an instruction def is
"long latency" enough to hoist even if it may increase spilling. Reloading
  a value from spill slot is often cheaper than performing an expensive
  computation in the loop. For X86, that means machine LICM will hoist
  SQRT, DIV, etc. ARM will be somewhat aggressive with VFP and NEON
  instructions.
- Enable register pressure aware machine LICM by default.

llvm-svn: 116781
2010-10-19 00:55:07 +00:00
Chandler Carruth a960cb7181 Move the definition of this to the source file to anchor the vtable.
llvm-svn: 116779
2010-10-19 00:37:30 +00:00
Eric Christopher eac5e381cc Speculatively revert 116753 and 116756 to attempt to fix the bots.
llvm-svn: 116777
2010-10-19 00:19:49 +00:00
Bob Wilson b6d61dc291 Support alignment for NEON vld-lane and vst-lane instructions.
llvm-svn: 116776
2010-10-19 00:16:32 +00:00
Kevin Enderby 49843c0162 Added a few tweaks to the Intel Descriptor-table support instructions to allow
word forms and suffixed versions to match the darwin assembler in 32-bit and
64-bit modes.  This is again for use just with assembly source for llvm-mc .

llvm-svn: 116773
2010-10-19 00:01:44 +00:00
Jim Grosbach 1c6fd774f7 ARM encoding information for [SU]SAT* instructions.
llvm-svn: 116768
2010-10-18 23:35:38 +00:00
Dan Gohman e4a82e2f21 Make the representation of AliasSets explicitly differentiate
between "not known yet" and "known no tbaa info" so that it
can merge them properly.

llvm-svn: 116767
2010-10-18 23:31:47 +00:00
Chandler Carruth af645b57de Add a virtual destructor to silence a GCC warning.
llvm-svn: 116766
2010-10-18 23:18:51 +00:00
Eric Christopher 7b92c2a9a0 Revert r116220 - thus turning arm fast isel back on by default.
llvm-svn: 116762
2010-10-18 22:53:53 +00:00
Jason W Kim d4cc3d420a Get rid of unneeded FormatOutput global variable
llvm-svn: 116756
2010-10-18 21:59:38 +00:00
Daniel Dunbar 418e7046f7 CrashRecoveryContext: Add missing return, so that the signal fires after we our
routine is off the stack. Otherwise we show up rather confusingly in the stack
trace.

llvm-svn: 116755
2010-10-18 21:55:18 +00:00
Jason W Kim eae048885d Changed elf-dump to output hex format by default.
Also updated tests. 

llvm-svn: 116753
2010-10-18 21:32:41 +00:00
Dan Gohman 408beac597 Don't pass the raw invalid pointer used to represent conflicting
TBAA information to AliasAnalysis.

llvm-svn: 116751
2010-10-18 21:28:00 +00:00
Bill Wendling 337a31133b Don't recompute MachineRegisterInfo in the Optimize* method.
llvm-svn: 116750
2010-10-18 21:22:31 +00:00
Mikhail Glushenkov cf2afe008d Trailing whitespace.
llvm-svn: 116749
2010-10-18 21:16:00 +00:00
Dan Gohman fe8abf88a0 Add a basic testcase for TBAA-aware LICM.
llvm-svn: 116745
2010-10-18 21:00:09 +00:00
Rafael Espindola fba9f74932 Implement R_386_GOT32.
llvm-svn: 116744
2010-10-18 20:47:21 +00:00
Dan Gohman 71af9db0e8 Make AliasSetTracker TBAA-aware, enabling TBAA-enabled LICM.
llvm-svn: 116743
2010-10-18 20:44:50 +00:00
Rafael Espindola 0a5314fdb3 Relocate with .bss instead of using the symbol. Matches gas behavior.
llvm-svn: 116741
2010-10-18 20:25:33 +00:00
Rafael Espindola 3604d4441a Reenable assert.
llvm-svn: 116738
2010-10-18 19:33:01 +00:00
Devang Patel 218f3206fa Transfer debug loc to lowered call.
Patch by Alexander Herz!

llvm-svn: 116733
2010-10-18 18:53:44 +00:00
Dan Gohman 52dacc0d7f Add TypeBasedAliasAnalysis to the standard pass lists. Note that it
is currently inert by default.

llvm-svn: 116732
2010-10-18 18:50:27 +00:00
Dan Gohman f7a5e20372 Run tbaa before basicaa, since that's how it's expected to be used.
llvm-svn: 116731
2010-10-18 18:45:59 +00:00
Dan Gohman f3702452c8 Fix BasicAA to pass TBAAInfo through to the chained analysis.
llvm-svn: 116730
2010-10-18 18:45:11 +00:00
Jim Grosbach 6706f3c4b4 For Thumb2, try to use frame pointer references for stack slots even when a
base register is available. rdar://8525298

llvm-svn: 116729
2010-10-18 18:39:46 +00:00
Rafael Espindola e3dc9e2ea1 Produce ELF::R_386_GOTPC relocations.
llvm-svn: 116728
2010-10-18 18:36:12 +00:00
Dan Gohman 33fcde9b9c Make TypeBasedAliasAnalysis default to doing nothing, with a command-line
option to enable it.

llvm-svn: 116722
2010-10-18 18:17:47 +00:00
Dan Gohman f0a3bed6d6 Use chaining in TypeBasedAliasAnalysis::pointsToConstantMemory.
llvm-svn: 116721
2010-10-18 18:10:31 +00:00
Dan Gohman 02538ac4d3 Make BasicAliasAnalysis a normal AliasAnalysis implementation which
does normal initialization and normal chaining. Change the default
AliasAnalysis implementation to NoAlias.

Update StandardCompileOpts.h and friends to explicitly request
BasicAliasAnalysis.

Update tests to explicitly request -basicaa.

llvm-svn: 116720
2010-10-18 18:04:47 +00:00
Rafael Espindola 257374bb0f Make the bots happy.
llvm-svn: 116719
2010-10-18 18:03:28 +00:00
Kevin Enderby b9783dd9bc Added a handful of x86-32 instructions that were missing so that llvm-mc would
be more complete.  These are only expected to be used by llvm-mc with assembly
source so there is no pattern, [], in the .td files.  Most are being added to
X86InstrInfo.td as Chris suggested and only comments about register uses are
added.  Suggestions welcome on the .td changes as I'm not sure on every detail
of the x86 records.  More missing instructions will be coming.

llvm-svn: 116716
2010-10-18 17:04:36 +00:00
Rafael Espindola 3521f8467d Produce a R_386_PLT32 when needed. Moved the default cases of switches to the
start for consistency.

llvm-svn: 116715
2010-10-18 16:58:03 +00:00
Jim Grosbach 00fe92da6b ARM addrmode4 instructions (ldm, stm and friends) can't encode an immediate
offset for stack references. Make sure we take that into account when
deciding whether to reserver an emergency spill slot for the register
scavenger. rdar://8559625

llvm-svn: 116714
2010-10-18 16:48:59 +00:00
Jim Grosbach e8a0eaafe6 Grammar tweak.
llvm-svn: 116712
2010-10-18 16:38:50 +00:00
Rafael Espindola 4464e0858f Handle GOTOFF correctly on i386.
llvm-svn: 116711
2010-10-18 16:38:04 +00:00
Jim Grosbach a3aa17b376 Trivial grammar tweak.
llvm-svn: 116710
2010-10-18 16:29:26 +00:00
Kalle Raiskila 5f2034c455 Improve lowering of sext to i128 on SPU.
The old algorithm inserted a 'rotqmbyi' instruction which was
both redundant and wrong - it made shufb select bytes from the
wrong end of the input quad.

llvm-svn: 116701
2010-10-18 09:34:19 +00:00
Eric Christopher 167a700229 Remove the check for invalid calling conventions. Testing shows that they're
working just fine.

llvm-svn: 116698
2010-10-18 06:49:12 +00:00
Eric Christopher c103c668ce Lift arg promotion from the X86 backend. This should be unified at some point.
llvm-svn: 116694
2010-10-18 02:17:53 +00:00
Eric Christopher a8a9f3c52b Now that we handle all allocas via a non-SP reg offset remove all of the
special case handling for ARM::SP.

llvm-svn: 116688
2010-10-17 11:08:44 +00:00
Benjamin Kramer 74beb4278a std::string cleanup.
llvm-svn: 116686
2010-10-17 07:39:34 +00:00
Benjamin Kramer 77414757f6 Fix a typo and silence unused variable warnings in -Asserts build.
llvm-svn: 116685
2010-10-17 07:38:40 +00:00
Eric Christopher 730764da62 Allow more load types to be materialized through the allocas.
llvm-svn: 116683
2010-10-17 06:07:26 +00:00
Oscar Fuentes 889c1e7d80 Build with RTTI and exceptions disabled. Only in GCC for now.
llvm-svn: 116682
2010-10-17 02:26:16 +00:00
Eric Christopher d265b3fcfe Optimize GEP off of intermediate allocas.
llvm-svn: 116681
2010-10-17 01:51:42 +00:00
Eric Christopher a0b9c2e9c0 Fix comment.
llvm-svn: 116680
2010-10-17 01:42:53 +00:00
Eric Christopher abc3a9d34b Turn on AddOperator folding in GEP.
llvm-svn: 116679
2010-10-17 01:41:46 +00:00
Eric Christopher 947e422c46 Use the i12 immediate versions of the load instructions - they're handled
more in the post-passes.

llvm-svn: 116678
2010-10-17 01:40:27 +00:00
Rafael Espindola 4262a22225 Add a MCObjectFormat class so that code common to all targets that use a
single object format can be shared.

This also adds support for

mov zed+(bar-foo), %eax

on ELF and COFF targets.

llvm-svn: 116675
2010-10-16 18:23:53 +00:00
Benjamin Kramer 2fcb554f5b Hack around incompatible pointer warnings.
llvm-svn: 116671
2010-10-16 15:43:02 +00:00
Benjamin Kramer 1dc34b48dd Eliminate some calls to Value::getNameStr.
llvm-svn: 116670
2010-10-16 11:28:23 +00:00
Benjamin Kramer 0d14b5b0fa Unbreak test on non-COFF targets.
llvm-svn: 116669
2010-10-16 11:27:13 +00:00
Michael J. Spencer 17990d5690 MC-COFF: Add support for default-null weak externals.
llvm-svn: 116666
2010-10-16 08:25:57 +00:00
Michael J. Spencer 5e683250ee X86-Windows: Emit an undefined global __fltused symbol when targeting Windows
if any floating point arguments are passed to an external function.

llvm-svn: 116665
2010-10-16 08:25:41 +00:00
Michael J. Spencer d3ea25e66e Whitespace!
llvm-svn: 116664
2010-10-16 08:25:21 +00:00
Daniel Dunbar 4d99878a37 MC/AsmParser: Report .stabs directive as unsupported.
llvm-svn: 116659
2010-10-16 04:56:42 +00:00
Evan Cheng 44436302fb More machine LICM work. It now tracks register pressure for path from preheader to current BB and use the information determine whether hoisting is worthwhile.
llvm-svn: 116654
2010-10-16 02:20:26 +00:00
Eric Christopher c918d550b6 Fix some funky formatting that got through.
llvm-svn: 116653
2010-10-16 01:10:35 +00:00
Bill Wendling 5f5b922ec6 ARMCodeEmitter::emitMiscInstruction is dead. Long live
ARMCodeEmitter::emitMiscInstruction!

llvm-svn: 116644
2010-10-15 23:35:12 +00:00
Eric Christopher f410acbbd5 Make sure offset is 0 for load/store register to the stack call.
llvm-svn: 116640
2010-10-15 23:07:10 +00:00
Owen Anderson 18e4fed3fa Generalize MemCpyOpt's handling of call slot forwarding to function properly when the call slot
forwarding is implemented with a load/store pair rather than a memcpy.

llvm-svn: 116637
2010-10-15 22:52:12 +00:00
Eric Christopher d2466687bf Formatting.
llvm-svn: 116635
2010-10-15 22:49:28 +00:00
Daniel Dunbar ef47b66d52 lto: Respect LLVM_VERSION_INFO make variable, since setting CC arguments with
spaces gives tests fits and shell escaping is an art best left to jabberwockies.

llvm-svn: 116632
2010-10-15 22:46:15 +00:00
Eric Christopher a3e64c1791 Fix else if -> if in store machinery.
llvm-svn: 116628
2010-10-15 22:32:37 +00:00
Bill Wendling 399add01d4 Reformatting. No functionalogicality changes.
llvm-svn: 116625
2010-10-15 21:50:45 +00:00
Eric Christopher a9b3901b47 Refactor ARM fast-isel reg + offset to be a base + offset.
llvm-svn: 116622
2010-10-15 21:32:12 +00:00
Jim Grosbach 90f74fe16a Encoding information for the various ARM saturating add/sub instructions.
llvm-svn: 116612
2010-10-15 19:49:46 +00:00
Mikhail Glushenkov 3ba051a4f6 llvmc: Add a test for the -c flag.
llvm-svn: 116611
2010-10-15 19:30:49 +00:00
Jim Grosbach 00ce8deae6 ARM binary encoding information for RSB and RSC instructions.
llvm-svn: 116604
2010-10-15 18:42:41 +00:00
Jim Grosbach 2d00b1b2e5 Don't mark argument value stores as immutable, as otherwise the post-RA
scheduler may reorder loads from them before the stores and other such
badness. PR8347. Patch by David Meyer

llvm-svn: 116602
2010-10-15 18:34:47 +00:00
Bob Wilson f1b3681ed0 Use simple RegState::Define flag instead of getDefRegState(true).
llvm-svn: 116601
2010-10-15 18:25:59 +00:00
Rafael Espindola 84378f0f53 Refactor alias handling to AliasedSymbol.
llvm-svn: 116600
2010-10-15 18:25:33 +00:00
Michael J. Spencer c46e8cb258 KillTheDoctor: Fix 2008 build. I'm actually surprised 2010 defines all of these, many are non-standard posix/unix extensions.
llvm-svn: 116597
2010-10-15 18:13:02 +00:00
Eric Christopher e4b3d6b379 Expand GEP handling for constant offsets.
llvm-svn: 116594
2010-10-15 18:02:07 +00:00
Jakob Stoklund Olesen eba55822d7 Teach FileCheck to handle trailing CHECK-NOT patterns.
A CHECK-NOT pattern without a following CHECK pattern simply checks that the
pattern doesn't match before the end of the input file.

You can even have only CHECK-NOT patterns to check that strings appear nowhere
in the input file.

llvm-svn: 116592
2010-10-15 17:47:12 +00:00
Jim Grosbach d15723c22a When expanding the MOVsr[la]_flag pseudos, the CPSR implicit def becomes
an explicit def. Make sure to capture that properly. rdar://8556556

llvm-svn: 116591
2010-10-15 17:35:17 +00:00
Jim Grosbach 68a335e185 ARM mode encoding information for UBFX and SBFX instructions.
llvm-svn: 116588
2010-10-15 17:15:16 +00:00
Jakob Stoklund Olesen f28cc03802 FileCheckize
llvm-svn: 116581
2010-10-15 16:06:42 +00:00
Jakob Stoklund Olesen 20d103e74e Remove unused accessor.
llvm-svn: 116580
2010-10-15 16:06:40 +00:00
Rafael Espindola fbcf0db7ee Refactor code a bit and avoid creating unnecessary entries in the string
map.

llvm-svn: 116579
2010-10-15 15:39:06 +00:00
Bob Wilson 3b1db392fc Remove unused ARMISD::AND selection DAG node.
llvm-svn: 116566
2010-10-15 04:34:40 +00:00
Bob Wilson 59351844e1 ARM instructions that are both predicated and set the condition codes
have been printed with the "S" modifier after the predicate.  With ARM's
unified syntax, they are supposed to go in the other order.  We fixed this
for Thumb when we switched to unified syntax but missed changing it for
ARM.  Apparently we don't generate these instructions often because no one
noticed until now.  Thanks to Bill Wendling for the testcase!

llvm-svn: 116563
2010-10-15 03:23:44 +00:00
Jim Grosbach 118c4238ff Encoding info for extension instructions.
llvm-svn: 116560
2010-10-15 02:29:58 +00:00
Jim Grosbach 6f717ec1d7 Grammar.
llvm-svn: 116557
2010-10-15 01:44:59 +00:00
Rafael Espindola 6db2837f7f Don't pass --export-dynamic if TOOL_NO_EXPORTS is set.
llvm-svn: 116550
2010-10-15 00:58:12 +00:00
Jakob Stoklund Olesen 3f1f7b67e3 Eliminate curli from SplitEditor. Use the LiveRangeEdit reference instead.
llvm-svn: 116547
2010-10-15 00:34:01 +00:00
Jakob Stoklund Olesen 0f3e98ce2e Move stack slot assignments into LiveRangeEdit.
All registers created during splitting or spilling are assigned to the same
stack slot as the parent register.

When splitting or rematting, we may not spill at all. In that case the stack
slot is still assigned, but it will be dead.

llvm-svn: 116546
2010-10-15 00:16:55 +00:00
Jakob Stoklund Olesen 72911e49fa Create a new LiveRangeEdit class to keep track of the new registers created when
splitting or spillling, and to help with rematerialization.

Use LiveRangeEdit in InlineSpiller and SplitKit. This will eventually make it
possible to share remat code between InlineSpiller and SplitKit.

llvm-svn: 116543
2010-10-14 23:49:52 +00:00
Jim Grosbach 0b5c743811 Simplify test file a bit.
llvm-svn: 116540
2010-10-14 23:32:44 +00:00
Jim Grosbach 89efff3763 Add testcase for RRX and ASRS (which effectively tests MOVs, since those
are just forms of that instruction).

llvm-svn: 116538
2010-10-14 23:29:18 +00:00
Jim Grosbach 19c6cb978b Add missing Rd encoding for MOVs instruction.
llvm-svn: 116537
2010-10-14 23:28:31 +00:00
Jim Grosbach 8b6a9c1574 Refactor the MOVsr[al]_flag and RRX pseudo-instructions to really be pseudos
and let the ARMExpandPseudoInsts pass fix them up into the real (MOVs)
instruction form.

llvm-svn: 116534
2010-10-14 22:57:13 +00:00
Dan Gohman 31a01ee3cb Tolerate a null parent pointer.
llvm-svn: 116533
2010-10-14 22:55:57 +00:00
Oscar Fuentes 49f72b635e Added basic support for CPack.
llvm-svn: 116516
2010-10-14 21:11:51 +00:00
Jim Grosbach 062749cb25 Tweak the ARM backend to use the RRX mnemonic instead of the 'mov a, b, rrx'
pseudonym.

llvm-svn: 116512
2010-10-14 20:43:44 +00:00
Francois Pichet a3037c3abd Always use binary mode for output stream. This is important to prevent unwanted end of line conversion on Windows. Should not affect Unix where O_BINARY is not defined. This fix /clang/test/lexer/preamble.c XFAIL on WIN32.
llvm-svn: 116509
2010-10-14 20:30:58 +00:00
Jim Grosbach eafcb27ded MOVi16 and MOVT ARM mode encodings.
llvm-svn: 116498
2010-10-14 18:54:27 +00:00
Jakob Stoklund Olesen f11318018a Only split around a loop if the live range has uses outside the loop periphery.
Before we would also split around a loop if any peripheral block had multiple
uses. This could cause repeated splitting when splitting a different live range
would insert uses into the periphery.

Now -spiller=inline passes the nightly test suite again.

llvm-svn: 116494
2010-10-14 18:26:45 +00:00
Owen Anderson afb95571d0 Try again at implementing thread-safe lazy pass initialization, without depending on static local initialization
being threadsafe AND ensuring that initialization is complete by the time the initializeFooPass method returns.

llvm-svn: 116492
2010-10-14 17:59:03 +00:00
Owen Anderson a1cc6ec3fb Revert r116489. It included some changes I didn't intend to commit, and broke the buildbots.
llvm-svn: 116491
2010-10-14 17:36:50 +00:00
Owen Anderson d65924f4a0 Apparently MSVC doesn't support thread-safe static local initialization. Roll our own solution instead.
llvm-svn: 116489
2010-10-14 17:26:06 +00:00
Jim Grosbach 8229153629 Simplify encoding information and add 'dst' operand info for TAILJMP.
llvm-svn: 116488
2010-10-14 17:24:28 +00:00
Rafael Espindola bee6e9f8e0 Remove some code duplication.
llvm-svn: 116484
2010-10-14 16:34:44 +00:00
Oscar Fuentes 5816ccd4b5 Remove explicit dependency of LLVMARMCodeGen on LLVMARMAsmPrinter. It
creates a cyclic dependency that breaks the build when
BUILD_SHARED_LIBS=ON

llvm-svn: 116480
2010-10-14 15:54:46 +00:00
Oscar Fuentes ffe32e1137 When building shared libraries, link to required system libraries.
PR 8375

llvm-svn: 116479
2010-10-14 15:54:41 +00:00
Mikhail Glushenkov 793d141b7d Comments.
llvm-svn: 116476
2010-10-14 13:43:20 +00:00
Mikhail Glushenkov 11c9edb295 Forward -march correctly.
Also includes some cosmetic changes.

llvm-svn: 116475
2010-10-14 11:22:06 +00:00
Eric Christopher 21d0c173f4 Handle more complex GEP based loads and add a few TODOs to deal with
GEP + alloca.

llvm-svn: 116474
2010-10-14 09:29:41 +00:00
Bill Wendling 6f52f8a87d Add support for vmov.f64/.f32 encoding. There's a bit of a hack going on
here. The f32 in FCONSTS is handled as a double instead of a float in the
code. So the encoding of the immediate into the instruction isn't exactly in
line with the documentation in that regard. But given that we know it's handled
as a double, it doesn't cause any harm.

llvm-svn: 116471
2010-10-14 02:33:26 +00:00
Bill Wendling 0441c6cba0 Add encoding for 'fmstat'.
llvm-svn: 116466
2010-10-14 01:19:34 +00:00
Evan Cheng d62719c3fa Register pressure and instruction latency aware machine LICM. Work in progress.
llvm-svn: 116465
2010-10-14 01:16:09 +00:00
Bill Wendling 0825f3e441 - Add encodings for multiply add/subtract instructions in all their glory.
- Add missing patterns for some multiply add/subtract instructions.
- Add encodings for VMRS and VMSR.

llvm-svn: 116464
2010-10-14 01:02:08 +00:00
Chris Lattner b9681ad442 fix a bug I introduced, no idea how this didn't repro right.
llvm-svn: 116462
2010-10-14 00:30:00 +00:00
Chris Lattner c7bd5740eb hack to unbreak buildbots
llvm-svn: 116461
2010-10-14 00:26:10 +00:00
Jim Grosbach 1f2b4bdb22 Regenerate. No functional change, just cleanup.
llvm-svn: 116459
2010-10-14 00:15:18 +00:00
Jim Grosbach dba47755a0 Teach PerfectShuffle to not generate files with embedded tab characters.
llvm-svn: 116458
2010-10-14 00:12:49 +00:00
Chris Lattner 698661c741 add uadd_ov/usub_ov to apint, consolidate constant folding
logic to use the new APInt methods.  Among other things this
implements rdar://8501501 - llvm.smul.with.overflow.i32 should constant fold

which comes from "clang -ftrapv", originally brought to my attention from PR8221.

llvm-svn: 116457
2010-10-14 00:05:07 +00:00
Chris Lattner edf5e640fa missed a line :(
llvm-svn: 116456
2010-10-13 23:57:00 +00:00
Chris Lattner 2c819b0358 constify these methods.
llvm-svn: 116455
2010-10-13 23:54:10 +00:00
Jim Grosbach d100ed858e Detabify and clean up 80 column violations.
llvm-svn: 116454
2010-10-13 23:47:11 +00:00
Chris Lattner 79bdd88fa4 add a few operations for signed operations that also
return an overflow flag.

llvm-svn: 116452
2010-10-13 23:46:33 +00:00