oota-llvm.git
16 years agoFix PR2907 by digging through constant expressions to find FP constants that
Chris Lattner [Wed, 22 Oct 2008 04:53:16 +0000 (04:53 +0000)]
Fix PR2907 by digging through constant expressions to find FP constants that
are their operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57956 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoMove Print*Pass to use raw_ostream.
Daniel Dunbar [Wed, 22 Oct 2008 03:25:22 +0000 (03:25 +0000)]
Move Print*Pass to use raw_ostream.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57946 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoCMake: `make install' for libraries, executables and header files.
Oscar Fuentes [Wed, 22 Oct 2008 02:56:07 +0000 (02:56 +0000)]
CMake: `make install' for libraries, executables and header files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57945 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoCMake: use add_llvm_example for HowToUseJIT.
Oscar Fuentes [Wed, 22 Oct 2008 02:52:59 +0000 (02:52 +0000)]
CMake: use add_llvm_example for HowToUseJIT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57944 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoCMake: Turned some libraries into partially linked objects. Corrected
Oscar Fuentes [Wed, 22 Oct 2008 02:51:53 +0000 (02:51 +0000)]
CMake: Turned some libraries into partially linked objects. Corrected
names of LLVMCore and ARMCodeGen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57943 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdjust comments for pedantic satisfaction.
Dale Johannesen [Wed, 22 Oct 2008 00:02:32 +0000 (00:02 +0000)]
Adjust comments for pedantic satisfaction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57940 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix comment to name "TokenFactor" instead of "Token factor".
Bill Wendling [Tue, 21 Oct 2008 23:57:52 +0000 (23:57 +0000)]
Fix comment to name "TokenFactor" instead of "Token factor".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57939 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoCMake: updated lib/VMCore/CMakeLists.txt
Oscar Fuentes [Tue, 21 Oct 2008 23:52:03 +0000 (23:52 +0000)]
CMake: updated lib/VMCore/CMakeLists.txt

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57937 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoPrivatize PrintModulePass and PrintFunctionPass and add
Daniel Dunbar [Tue, 21 Oct 2008 23:33:38 +0000 (23:33 +0000)]
Privatize PrintModulePass and PrintFunctionPass and add
createPrintModulePass and createPrintFunctionPass.
 - So clients who compile w/o RTTI can use them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57933 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdd comments to explain uint64->f64 algorithm,
Dale Johannesen [Tue, 21 Oct 2008 23:07:49 +0000 (23:07 +0000)]
Add comments to explain uint64->f64 algorithm,
well, sort of.  (Algorithm by Ian Ollmann.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57932 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdd an SSE2 algorithm for uint64->f64 conversion.
Dale Johannesen [Tue, 21 Oct 2008 20:50:01 +0000 (20:50 +0000)]
Add an SSE2 algorithm for uint64->f64 conversion.
The same one Apple gcc uses, faster.  Also gets the
extreme case in gcc.c-torture/execute/ieee/rbug.c
correct which we weren't before; this is not
sufficient to get the test to pass though, there
is another bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57926 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix SelectionDAGBuild lowering of Select instructions to
Dan Gohman [Tue, 21 Oct 2008 20:00:42 +0000 (20:00 +0000)]
Fix SelectionDAGBuild lowering of Select instructions to
handle first-class aggregate values. Also, fix a bug in
the Ret handling for empty aggregates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57925 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoClear raw_fd_ostream error string on success and explain behavior in
Daniel Dunbar [Tue, 21 Oct 2008 19:53:10 +0000 (19:53 +0000)]
Clear raw_fd_ostream error string on success and explain behavior in
documentation.

Add C++ header marker.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57923 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoUpdated email address.
Dan Gohman [Tue, 21 Oct 2008 19:50:00 +0000 (19:50 +0000)]
Updated email address.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57920 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoImplement the optimized FCMP_OEQ/FCMP_UNE code for x86 fast-isel.
Dan Gohman [Tue, 21 Oct 2008 18:24:51 +0000 (18:24 +0000)]
Implement the optimized FCMP_OEQ/FCMP_UNE code for x86 fast-isel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57915 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix make check on Solaris 10/x86: the default grep is not GNU grep, same for as.
Torok Edwin [Tue, 21 Oct 2008 17:21:32 +0000 (17:21 +0000)]
Fix make check on Solaris 10/x86: the default grep is not GNU grep, same for as.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57912 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agouse pre-UAL mnemonics for push/pop for compilaton callback function
Jim Grosbach [Tue, 21 Oct 2008 16:54:12 +0000 (16:54 +0000)]
use pre-UAL mnemonics for push/pop for compilaton callback function

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57911 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agofix a tricky bug in the JIT global variable emitter, that was triggered when JITing...
Nuno Lopes [Tue, 21 Oct 2008 11:42:16 +0000 (11:42 +0000)]
fix a tricky bug in the JIT global variable emitter, that was triggered when JITing a variable independently of a function. This lead to sharing memory memory between functions and GVs thus changing the value of a GV could change the code in execution. more details on the ML.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57900 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoconstify some methods and variables in ImmutableList.
Ted Kremenek [Tue, 21 Oct 2008 05:59:33 +0000 (05:59 +0000)]
constify some methods and variables in ImmutableList.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57894 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoreally fix run line
Chris Lattner [Tue, 21 Oct 2008 03:55:19 +0000 (03:55 +0000)]
really fix run line

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57889 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agofix run line
Chris Lattner [Tue, 21 Oct 2008 03:54:49 +0000 (03:54 +0000)]
fix run line

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57888 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoremove some unneeded eh generation
Chris Lattner [Tue, 21 Oct 2008 03:49:19 +0000 (03:49 +0000)]
remove some unneeded eh generation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57887 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoDisable constant-offset folding for PowerPC, as the PowerPC target
Dan Gohman [Tue, 21 Oct 2008 03:41:46 +0000 (03:41 +0000)]
Disable constant-offset folding for PowerPC, as the PowerPC target
isn't yet prepared for it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57886 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoDon't create TargetGlobalAddress nodes with offsets that don't fit
Dan Gohman [Tue, 21 Oct 2008 03:38:42 +0000 (03:38 +0000)]
Don't create TargetGlobalAddress nodes with offsets that don't fit
in the 32-bit signed offset field of addresses. Even though this
may be intended, some linkers refuse to relocate code where the
relocated address computation overflows.

Also, fix the sign-extension of constant offsets to use the
actual pointer size, rather than the size of the GlobalAddress
node, which may be different, for example on x86-64 where MVT::i32
is used when the address is being fit into the 32-bit displacement
field.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57885 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoOptimized FCMP_OEQ and FCMP_UNE for x86.
Dan Gohman [Tue, 21 Oct 2008 03:29:32 +0000 (03:29 +0000)]
Optimized FCMP_OEQ and FCMP_UNE for x86.

Where previously LLVM might emit code like this:

        ucomisd %xmm1, %xmm0
        setne   %al
        setp    %cl
        orb     %al, %cl
        jne     .LBB4_2

it now emits this:

        ucomisd %xmm1, %xmm0
        jne     .LBB4_2
        jp      .LBB4_2

It has fewer instructions and uses fewer registers, but it does
have more branches. And in the case that this code is followed by
a non-fallthrough edge, it may be followed by a jmp instruction,
resulting in three branch instructions in sequence. Some effort
is made to avoid this situation.

To achieve this, X86ISelLowering.cpp now recognizes FCMP_OEQ and
FCMP_UNE in lowered form, and replace them with code that emits
two branches, except in the case where it would require converting
a fall-through edge to an explicit branch.

Also, X86InstrInfo.cpp's branch analysis and transform code now
knows now to handle blocks with multiple conditional branches. It
uses loops instead of having fixed checks for up to two
instructions. It can now analyze and transform code generated
from FCMP_OEQ and FCMP_UNE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57873 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoWhen the coalescer is doing rematerializing, have it remove
Dan Gohman [Tue, 21 Oct 2008 03:24:31 +0000 (03:24 +0000)]
When the coalescer is doing rematerializing, have it remove
the copy instruction from the instruction list before asking the
target to create the new instruction. This gets the old instruction
out of the way so that it doesn't interfere with the target's
rematerialization code. In the case of x86, this helps it find
more cases where EFLAGS is not live.

Also, in the X86InstrInfo.cpp, teach isSafeToClobberEFLAGS to check
to see if it reached the end of the block after scanning each
instruction, instead of just before. This lets it notice when the
end of the block is only two instructions away, without doing any
additional scanning.

These changes allow rematerialization to clobber EFLAGS in more
cases, for example using xor instead of mov to set the return value
to zero in the included testcase.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57872 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoMake the NaN test come second, heuristically assuming
Dan Gohman [Tue, 21 Oct 2008 03:12:54 +0000 (03:12 +0000)]
Make the NaN test come second, heuristically assuming
that NaNs are less common.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57871 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoUse Function::getEntryBlock() instead of Function::front(), for clarity.
Dan Gohman [Tue, 21 Oct 2008 03:10:28 +0000 (03:10 +0000)]
Use Function::getEntryBlock() instead of Function::front(), for clarity.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57870 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoCMake: updated lib/CodeGen/CMakeLists.txt
Oscar Fuentes [Tue, 21 Oct 2008 02:37:50 +0000 (02:37 +0000)]
CMake: updated lib/CodeGen/CMakeLists.txt

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57869 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix a bug that prevented llvm-extract -delete from working.
Dan Gohman [Tue, 21 Oct 2008 01:08:07 +0000 (01:08 +0000)]
Fix a bug that prevented llvm-extract -delete from working.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57864 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix gcc.c-torture/compile/920520-1.c by inserting bitconverts
Chris Lattner [Tue, 21 Oct 2008 00:45:36 +0000 (00:45 +0000)]
Fix gcc.c-torture/compile/920520-1.c by inserting bitconverts
for strange asm conditions earlier.  In this case, we have a
double being passed in an integer reg class.  Convert to like
sized integer register so that we allocate the right number
for the class (two i32's for the f64 in this case).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57862 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdd skeleton for the pre-register allocation live interval splitting pass.
Evan Cheng [Mon, 20 Oct 2008 21:44:59 +0000 (21:44 +0000)]
Add skeleton for the pre-register allocation live interval splitting pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57847 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoUpdate the stub and callback code to handle lazy compilation. The stub
Jim Grosbach [Mon, 20 Oct 2008 21:39:23 +0000 (21:39 +0000)]
Update the stub and callback code to handle lazy compilation. The stub
is re-written by the callback to branch directly to the compiled code
in future invocations.

Added back in range-based memory permission functions for the updating of
the stub on Darwin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57846 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFast-isel no longer an experiment.
Dan Gohman [Mon, 20 Oct 2008 21:30:12 +0000 (21:30 +0000)]
Fast-isel no longer an experiment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57845 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdd a register class -> virtual registers map.
Evan Cheng [Mon, 20 Oct 2008 20:03:28 +0000 (20:03 +0000)]
Add a register class -> virtual registers map.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57844 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoThis forward declaration is unnecessary.
Evan Cheng [Mon, 20 Oct 2008 20:02:17 +0000 (20:02 +0000)]
This forward declaration is unnecessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57843 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoSupport operations like fp_to_uint with a vector
Duncan Sands [Mon, 20 Oct 2008 16:31:21 +0000 (16:31 +0000)]
Support operations like fp_to_uint with a vector
result type when the result type is legal but
not the operand type.  Add additional support
for EXTRACT_SUBVECTOR and CONCAT_VECTORS,
needed to handle such cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57840 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoTeach getTypeToTransformTo to return something
Duncan Sands [Mon, 20 Oct 2008 16:24:25 +0000 (16:24 +0000)]
Teach getTypeToTransformTo to return something
sensible for vectors being scalarized.  Note
that this method can't return anything very
sensible when splitting non-power-of-two vectors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57839 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoLegalizeTypes support for atomic operation promotion.
Duncan Sands [Mon, 20 Oct 2008 16:17:42 +0000 (16:17 +0000)]
LegalizeTypes support for atomic operation promotion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57838 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoUse DAG.getIntPtrConstant rather than DAG.getConstant
Duncan Sands [Mon, 20 Oct 2008 16:14:43 +0000 (16:14 +0000)]
Use DAG.getIntPtrConstant rather than DAG.getConstant
with TLI.getPointerTy for a small simplification.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57837 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAlways use either MVT::i1 or getSetCCResultType for
Duncan Sands [Mon, 20 Oct 2008 16:13:04 +0000 (16:13 +0000)]
Always use either MVT::i1 or getSetCCResultType for
the condition of a SELECT node.  Make sure that the
correct extension type (any-, sign- or zero-extend)
is used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57836 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFormatting - no functional change.
Duncan Sands [Mon, 20 Oct 2008 16:06:47 +0000 (16:06 +0000)]
Formatting - no functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57834 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoDon't use a random type for the select condition,
Duncan Sands [Mon, 20 Oct 2008 16:04:57 +0000 (16:04 +0000)]
Don't use a random type for the select condition,
use an MVT::i1 and simplify the code while there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57833 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix a typo in a comment.
Dan Gohman [Mon, 20 Oct 2008 15:58:02 +0000 (15:58 +0000)]
Fix a typo in a comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57832 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoHave X86 custom lowering for LegalizeTypes use
Duncan Sands [Mon, 20 Oct 2008 15:56:33 +0000 (15:56 +0000)]
Have X86 custom lowering for LegalizeTypes use
LowerOperation if it doesn't know what else to do.
This methods should probably be factorized some,
but this is good enough for the moment.  Have
LowerATOMIC_BINARY_64 use EXTRACT_ELEMENT rather
than assuming the operand is a BUILD_PAIR (if it
is then getNode will automagically simplify the
EXTRACT_ELEMENT).  This way LowerATOMIC_BINARY_64
usable from LegalizeTypes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57831 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix typo in a comment.
Matthijs Kooijman [Mon, 20 Oct 2008 11:24:57 +0000 (11:24 +0000)]
Fix typo in a comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57829 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoRemove another stale comment.
Matthijs Kooijman [Mon, 20 Oct 2008 11:23:18 +0000 (11:23 +0000)]
Remove another stale comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57828 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoRemove an inappropriate (probably outdated) comment.
Matthijs Kooijman [Mon, 20 Oct 2008 11:21:12 +0000 (11:21 +0000)]
Remove an inappropriate (probably outdated) comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57827 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix spelling error.
Matthijs Kooijman [Mon, 20 Oct 2008 08:45:34 +0000 (08:45 +0000)]
Fix spelling error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57820 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoSet N->OperandList to 0 after deletion. Otherwise, it's possible that it will
Bill Wendling [Sun, 19 Oct 2008 20:51:12 +0000 (20:51 +0000)]
Set N->OperandList to 0 after deletion. Otherwise, it's possible that it will
be either deleted or referenced afterwards.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57786 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix comment. Other formatting changes. No functionality changes.
Bill Wendling [Sun, 19 Oct 2008 20:34:04 +0000 (20:34 +0000)]
Fix comment. Other formatting changes. No functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57785 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoVector shuffle mask elements may be "undef". Handle
Duncan Sands [Sun, 19 Oct 2008 15:00:25 +0000 (15:00 +0000)]
Vector shuffle mask elements may be "undef".  Handle
this everywhere in LegalizeTypes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57783 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoUse a legal integer type for vector shuffle mask
Duncan Sands [Sun, 19 Oct 2008 14:58:05 +0000 (14:58 +0000)]
Use a legal integer type for vector shuffle mask
elements.  Otherwise LegalizeTypes will, reasonably
enough, legalize the mask, which may result in it
no longer being a BUILD_VECTOR node (LegalizeDAG
simply ignores the legality or not of vector masks).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57782 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoReapply r57699 with a fix to not crash on asms with multiple results. Unlike
Chris Lattner [Sat, 18 Oct 2008 18:49:30 +0000 (18:49 +0000)]
Reapply r57699 with a fix to not crash on asms with multiple results.  Unlike
the previous patch this one actually passes make check.

"Fix PR2356 on PowerPC: if we have an input and output that are tied together
that have different sizes (e.g. i32 and i64) make sure to reserve registers for
the bigger operand."

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57771 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoDon't truncate GlobalAddress offsets to int in debug output.
Dan Gohman [Sat, 18 Oct 2008 18:22:42 +0000 (18:22 +0000)]
Don't truncate GlobalAddress offsets to int in debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57770 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoBy min, I mean max.
Evan Cheng [Sat, 18 Oct 2008 05:21:37 +0000 (05:21 +0000)]
By min, I mean max.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57766 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoWhen creating intervals, leave min(1, numdefs) holes after each instruction.
Evan Cheng [Sat, 18 Oct 2008 05:18:55 +0000 (05:18 +0000)]
When creating intervals, leave min(1, numdefs) holes after each instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57765 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoMake llvm memory barrier available as an intrinsic
Mon P Wang [Sat, 18 Oct 2008 02:48:13 +0000 (02:48 +0000)]
Make llvm memory barrier available as an intrinsic

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57750 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoTeach DAGCombine to fold constant offsets into GlobalAddress nodes,
Dan Gohman [Sat, 18 Oct 2008 02:06:02 +0000 (02:06 +0000)]
Teach DAGCombine to fold constant offsets into GlobalAddress nodes,
and add a TargetLowering hook for it to use to determine when this
is legal (i.e. not in PIC mode, etc.)

This allows instruction selection to emit folded constant offsets
in more cases, such as the included testcase, eliminating the need
for explicit arithmetic instructions.

This eliminates the need for the C++ code in X86ISelDAGToDAG.cpp
that attempted to achieve the same effect, but wasn't as effective.

Also, fix handling of offsets in GlobalAddressSDNodes in several
places, including changing GlobalAddressSDNode's offset from
int to int64_t.

The Mips, Alpha, Sparc, and CellSPU targets appear to be
unaware of GlobalAddress offsets currently, so set the hook to
false on those targets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57748 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoRevert r57699. It's causing regressions in
Dan Gohman [Sat, 18 Oct 2008 01:03:45 +0000 (01:03 +0000)]
Revert r57699. It's causing regressions in
test/CodeGen/X86/2008-09-17-inline-asm-1.ll
and a few others, and it breaks the llvm-gcc build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57747 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoUse the opcode predicates, instead of duplicating the code.
Dan Gohman [Fri, 17 Oct 2008 21:42:45 +0000 (21:42 +0000)]
Use the opcode predicates, instead of duplicating the code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57735 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoThis is now partly done.
Dan Gohman [Fri, 17 Oct 2008 21:39:27 +0000 (21:39 +0000)]
This is now partly done.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57734 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoThis is done.
Dan Gohman [Fri, 17 Oct 2008 21:38:40 +0000 (21:38 +0000)]
This is done.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57733 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFactor out the code for mapping LLVM IR condition opcodes to
Dan Gohman [Fri, 17 Oct 2008 21:16:08 +0000 (21:16 +0000)]
Factor out the code for mapping LLVM IR condition opcodes to
ISD condition opcodes into helper functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57726 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdd implicit defs of XMM8 to XMM15 on 32-bit call instructions. While this is not...
Evan Cheng [Fri, 17 Oct 2008 21:02:22 +0000 (21:02 +0000)]
Add implicit defs of XMM8 to XMM15 on 32-bit call instructions. While this is not technically true, it tells tblgen that these instructions "clobber" the entire XMM register file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57723 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdd RCBarriers to TargetInstrDesc. It's a list of register classes the given instruct...
Evan Cheng [Fri, 17 Oct 2008 21:00:09 +0000 (21:00 +0000)]
Add RCBarriers to TargetInstrDesc. It's a list of register classes the given instruction can "clobber". For example, on x86 the call instruction can modify all of the XMM and fp stack registers.

TableGen has been taught to generate the lists from instruction definitions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57722 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix PR2898. Spiller delete a store for reuse before it knows for sure the reuse happened.
Evan Cheng [Fri, 17 Oct 2008 20:56:41 +0000 (20:56 +0000)]
Fix PR2898. Spiller delete a store for reuse before it knows for sure the reuse happened.
Patch by Lang Hames!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57720 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoadd support for 128 bit aggregates.
Chris Lattner [Fri, 17 Oct 2008 19:59:51 +0000 (19:59 +0000)]
add support for 128 bit aggregates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57715 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoThe Dwarf writer was comparing mangled and unmangled names for C++ code when we
Bill Wendling [Fri, 17 Oct 2008 18:48:57 +0000 (18:48 +0000)]
The Dwarf writer was comparing mangled and unmangled names for C++ code when we
have an unreachable block in a function. This was triggering the assert. This is
a horrid hack to cover this up.

Oh! for a good debug info architecture!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57714 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdded MemIntrinsicNode which is useful to represent target intrinsics that
Mon P Wang [Fri, 17 Oct 2008 18:22:58 +0000 (18:22 +0000)]
Added MemIntrinsicNode which is useful to represent target intrinsics that
touches memory and need an associated MemOperand

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57712 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFactor out the code for mapping LLVM IR condition opcodes to
Dan Gohman [Fri, 17 Oct 2008 18:18:45 +0000 (18:18 +0000)]
Factor out the code for mapping LLVM IR condition opcodes to
ISD condition opcodes into helper functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57710 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoadd support for 128 bit inputs on both x86-64 and x86-32.
Chris Lattner [Fri, 17 Oct 2008 18:15:05 +0000 (18:15 +0000)]
add support for 128 bit inputs on both x86-64 and x86-32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57709 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix a bug where the x86 backend would reject 64-bit r constraints when
Chris Lattner [Fri, 17 Oct 2008 17:59:52 +0000 (17:59 +0000)]
Fix a bug where the x86 backend would reject 64-bit r constraints when
in 32-bit mode instead of assigning a register pair.  This has nothing to
do with PR2356, but I happened to notice it while working on it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57704 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix PR2356 on PowerPC: if we have an input and output that are tied together
Chris Lattner [Fri, 17 Oct 2008 17:52:49 +0000 (17:52 +0000)]
Fix PR2356 on PowerPC: if we have an input and output that are tied together
that have different sizes (e.g. i32 and i64) make sure to reserve registers for
the bigger operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57699 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoremove an xfailed test.
Chris Lattner [Fri, 17 Oct 2008 17:26:48 +0000 (17:26 +0000)]
remove an xfailed test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57695 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoremove this test: it is xfailed anyway, and is failing for a reason
Chris Lattner [Fri, 17 Oct 2008 17:26:19 +0000 (17:26 +0000)]
remove this test: it is xfailed anyway, and is failing for a reason
other than why it was xfailed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57694 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix lfence and mfence encoding. These look like MRM5r and MRM6r instructions except...
Evan Cheng [Fri, 17 Oct 2008 17:14:20 +0000 (17:14 +0000)]
Fix lfence and mfence encoding. These look like MRM5r and MRM6r instructions except they do not have any operands. The RegModRM byte is encoded with register number 0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57692 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agogetX86RegNum has long been moved to X86RegisterInfo.
Evan Cheng [Fri, 17 Oct 2008 17:12:18 +0000 (17:12 +0000)]
getX86RegNum has long been moved to X86RegisterInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57691 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agorefactor some code into a helper method, no functionality change.
Chris Lattner [Fri, 17 Oct 2008 17:05:25 +0000 (17:05 +0000)]
refactor some code into a helper method, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57690 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoKeep track of *which* input constraint matches an output
Chris Lattner [Fri, 17 Oct 2008 16:47:46 +0000 (16:47 +0000)]
Keep track of *which* input constraint matches an output
constraint.  Reject asms where an output has multiple
input constraints tied to it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57687 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoadd an assert so that PR2356 explodes instead of running off an
Chris Lattner [Fri, 17 Oct 2008 16:21:11 +0000 (16:21 +0000)]
add an assert so that PR2356 explodes instead of running off an
array.  Improve some minor comments, refactor some helpers in
AsmOperandInfo.  No functionality change for valid code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57686 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoremove spurious space in link
Gabor Greif [Fri, 17 Oct 2008 14:43:58 +0000 (14:43 +0000)]
remove spurious space in link

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57677 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoAdd comment on how tagged pointers are
Gabor Greif [Fri, 17 Oct 2008 08:31:36 +0000 (08:31 +0000)]
Add comment on how tagged pointers are
distinguished from normal (untagged) ones
as per review comment.

I am sufficiently unaquainted with doxygen to
defer the markup to someone with more experience.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57676 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix a very subtle spiller bug: UpdateKills should not forget to track defs of aliases.
Evan Cheng [Fri, 17 Oct 2008 06:16:07 +0000 (06:16 +0000)]
Fix a very subtle spiller bug: UpdateKills should not forget to track defs of aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57673 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoadd some simple hacky long double support for the CBE. This
Chris Lattner [Fri, 17 Oct 2008 06:11:48 +0000 (06:11 +0000)]
add some simple hacky long double support for the CBE.  This
should work for intel long double, but ppc long double aborts
in convert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57672 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoUse INT64_C to emit constant values, to avoid problems with
Dan Gohman [Fri, 17 Oct 2008 04:40:39 +0000 (04:40 +0000)]
Use INT64_C to emit constant values, to avoid problems with
constants that don't fit in an int. This fixes
"this decimal constant is unsigned only in ISO C90"
warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57668 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFun x86 encoding tricks: when adding an immediate value of 128,
Dan Gohman [Fri, 17 Oct 2008 01:33:43 +0000 (01:33 +0000)]
Fun x86 encoding tricks: when adding an immediate value of 128,
use a SUB instruction instead of an ADD, because -128 can be
encoded in an 8-bit signed immediate field, while +128 can't be.
This avoids the need for a 32-bit immediate field in this case.

A similar optimization applies to 64-bit adds with 0x80000000,
with the 32-bit signed immediate field.

To support this, teach tablegen how to handle 64-bit constants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57663 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoDefine patterns for shld and shrd that match immediate
Dan Gohman [Fri, 17 Oct 2008 01:23:35 +0000 (01:23 +0000)]
Define patterns for shld and shrd that match immediate
shift counts, and patterns that match dynamic shift counts
when the subtract is obscured by a truncate node.

Add DAGCombiner support for recognizing rotate patterns
when the shift counts are defined by truncate nodes.

Fix and simplify the code for commuting shld and shrd
instructions to work even when the given instruction doesn't
have a parent, and when the caller needs a new instruction.

These changes allow LLVM to use the shld, shrd, rol, and ror
instructions on x86 to replace equivalent code using two
shifts and an or in many more cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57662 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoUse 0 instead of false to return a null pointer.
Dan Gohman [Fri, 17 Oct 2008 00:56:52 +0000 (00:56 +0000)]
Use 0 instead of false to return a null pointer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57660 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix this test so it actually runs the grep lines.
Dan Gohman [Thu, 16 Oct 2008 23:57:54 +0000 (23:57 +0000)]
Fix this test so it actually runs the grep lines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57653 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoTrim #includes.
Dan Gohman [Thu, 16 Oct 2008 20:18:31 +0000 (20:18 +0000)]
Trim #includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57649 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agofix typo noticed by sdt
Chris Lattner [Thu, 16 Oct 2008 17:02:50 +0000 (17:02 +0000)]
fix typo noticed by sdt

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57644 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoIntroduce a typing refinenement on tagged data
Gabor Greif [Thu, 16 Oct 2008 15:33:02 +0000 (15:33 +0000)]
Introduce a typing refinenement on tagged data
using the 'volatile' qualifier. This should not have any operational consequences
on code, because tags should always be stripped off (giving a non-volatile pointer)
before dereferencing. The new qualification is there to catch some attempts to use
tagged pointers in a context where an untagged pointer is appropriate.

Notably this approach does not catch dereferencing of tagged pointers, but helps
in separating the two concepts a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57641 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoRe-apply Makefile changes. Fix build with srcdir != objdir.
Mikhail Glushenkov [Thu, 16 Oct 2008 14:02:29 +0000 (14:02 +0000)]
Re-apply Makefile changes. Fix build with srcdir != objdir.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57636 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix warnings about mb/me being potentially used
Duncan Sands [Thu, 16 Oct 2008 13:02:33 +0000 (13:02 +0000)]
Fix warnings about mb/me being potentially used
uninitialized in these functions with gcc-4.3.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57635 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoFix "large integer implicitly truncated to unsigned type"
Duncan Sands [Thu, 16 Oct 2008 09:14:58 +0000 (09:14 +0000)]
Fix "large integer implicitly truncated to unsigned type"
warning on x86-64 with gcc-4.3.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57634 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoTestcase for PR2762.
Duncan Sands [Thu, 16 Oct 2008 08:56:46 +0000 (08:56 +0000)]
Testcase for PR2762.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57633 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoadd some notes
Chris Lattner [Thu, 16 Oct 2008 07:04:06 +0000 (07:04 +0000)]
add some notes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57631 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agoadd some notes and a file to collect unimplemented features in the
Chris Lattner [Thu, 16 Oct 2008 06:46:12 +0000 (06:46 +0000)]
add some notes and a file to collect unimplemented features in the
x86 backend.  These will all be answered with "patches welcome", so
a PR doesn't help drive them along.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57630 91177308-0d34-0410-b5e6-96231b3b80d8

16 years agomark some targets as experimental. Andrew, if you think that Alpha is
Chris Lattner [Thu, 16 Oct 2008 06:16:50 +0000 (06:16 +0000)]
mark some targets as experimental.  Andrew, if you think that Alpha is
basically working, feel free to remove the tag.  The other targets have
really basic things that break them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57628 91177308-0d34-0410-b5e6-96231b3b80d8