oota-llvm.git
12 years agoReduce a lot of code duplication by implementing
Chris Lattner [Thu, 26 Jan 2012 20:37:11 +0000 (20:37 +0000)]
Reduce a lot of code duplication by implementing
ConstantExpr::getWithOperandReplaced and ConstantExpr::replaceUsesOfWithOnConstant
 in terms of ConstantExpr::getWithOperands.  While we're at it,
make sure that ConstantExpr::getWithOperands covers all instructions: it was
missing insert/extractvalue.

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

12 years agoUpdate comment for r149070.
Chad Rosier [Thu, 26 Jan 2012 20:19:05 +0000 (20:19 +0000)]
Update comment for r149070.

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

12 years agoReplace the use of isPredicable() with isPredicated() in
Chad Rosier [Thu, 26 Jan 2012 18:24:25 +0000 (18:24 +0000)]
Replace the use of isPredicable() with isPredicated() in
MachineBasicBlock::canFallThrough().  We're interested in the state of the
instruction (i.e., is this a barrier or not?), not if the instruction is
predicable or not.
rdar://10501092

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

12 years agoClear kill flags before propagating a copy.
Jakob Stoklund Olesen [Thu, 26 Jan 2012 17:52:15 +0000 (17:52 +0000)]
Clear kill flags before propagating a copy.

The live range of the source register may be extended when a redundant
copy is eliminated. Make sure any kill flags between the two copies are
cleared.

This fixes PR11765.

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

12 years agoTidy up. Fix mismatched return types for error handling.
Jim Grosbach [Thu, 26 Jan 2012 15:56:45 +0000 (15:56 +0000)]
Tidy up. Fix mismatched return types for error handling.

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

12 years agocomment tweaks
Gabor Greif [Thu, 26 Jan 2012 10:28:58 +0000 (10:28 +0000)]
comment tweaks

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

12 years agoAdd support for the R_ARM_TARGET1 relocation, which should be given to relocations...
James Molloy [Thu, 26 Jan 2012 09:25:43 +0000 (09:25 +0000)]
Add support for the R_ARM_TARGET1 relocation, which should be given to relocations applied to all C++ constructors and destructors.

This enables the linker to match concrete relocation types (absolute or relative) with whatever library or C++ support code is being linked against.

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

12 years agoFix for the following bug in AVX codegen for double-to-int conversions:
Victor Umansky [Thu, 26 Jan 2012 08:51:39 +0000 (08:51 +0000)]
Fix for the following bug in AVX codegen for double-to-int conversions:
. "fptosi" and "fptoui" IR instructions are defined with round-to-zero rounding mode.
. Currently for AVX mode for <4xdouble> and <8xdouble>  the "VCVTPD2DQ.128" and "VCVTPD2DQ.256" instructions are selected (for .fp_to_sint. DAG node operation ) by AVX codegen. However they use round-to-nearest-even rounding mode.
. Consequently, the conversion produces incorrect numbers.

The fix is to replace selection of VCVTPD2DQ instructions with VCVTTPD2DQ instructions. The latter use truncate (i.e. round-to-zero) rounding mode.
As .fp_to_sint. DAG node operation is used only for lowering of  "fptosi" and "fptoui" IR instructions, the fix in X86InstrSSE.td definition file doesn.t have an impact on other LLVM flows.

The patch includes changes in the .td file, LIT test for the changes and a fix in a legacy LIT test (which produced asm code conflicting with LLVN IR spec).

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

12 years agoAdd HasXOP predicate check covering a bunch of XOP intrinsic patterns.
Craig Topper [Thu, 26 Jan 2012 07:51:55 +0000 (07:51 +0000)]
Add HasXOP predicate check covering a bunch of XOP intrinsic patterns.

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

12 years agoFix AVX vs SSE patterns ordering issue for VPCMPESTRM and VPCMPISTRM.
Craig Topper [Thu, 26 Jan 2012 07:31:30 +0000 (07:31 +0000)]
Fix AVX vs SSE patterns ordering issue for VPCMPESTRM and VPCMPISTRM.

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

12 years agoRemove some more patterns by custom lowering intrinsics to target specific nodes.
Craig Topper [Thu, 26 Jan 2012 07:18:03 +0000 (07:18 +0000)]
Remove some more patterns by custom lowering intrinsics to target specific nodes.

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

12 years agounbreak test/Bitcode/shuffle.ll.
Chris Lattner [Thu, 26 Jan 2012 03:10:45 +0000 (03:10 +0000)]
unbreak test/Bitcode/shuffle.ll.

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

12 years agosimplify by using ShuffleVectorInst::getMaskValue.
Chris Lattner [Thu, 26 Jan 2012 02:54:54 +0000 (02:54 +0000)]
simplify by using ShuffleVectorInst::getMaskValue.

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

12 years agoeliminate the Constant::getVectorElements method. There are better (and
Chris Lattner [Thu, 26 Jan 2012 02:51:13 +0000 (02:51 +0000)]
eliminate the Constant::getVectorElements method.  There are better (and
more robust) ways to do what it was doing now.  Also, add static methods
for decoding a ShuffleVector mask.

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

12 years agoContinue improving support for ConstantDataAggregate, and use the
Chris Lattner [Thu, 26 Jan 2012 02:32:04 +0000 (02:32 +0000)]
Continue improving support for ConstantDataAggregate, and use the
new methods recently added to (sometimes greatly!) simplify code.

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

12 years agoAdd a ConstantDataVector::getSplatValue() method, for parity with
Chris Lattner [Thu, 26 Jan 2012 02:31:22 +0000 (02:31 +0000)]
Add a ConstantDataVector::getSplatValue() method, for parity with
ConstantVector.  Fix some outright bugs in the implementation of
ConstantArray and Constant struct, which would cause us to not make
one big UndefValue when asking for an array/struct with all undef
elements.  Enhance Constant::isAllOnesValue to work with
ConstantDataVector.

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

12 years agollvm-config: Add support for CMake build trees in which the build
Peter Collingbourne [Thu, 26 Jan 2012 01:31:38 +0000 (01:31 +0000)]
llvm-config: Add support for CMake build trees in which the build
mode does not form part of the path.

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

12 years agosome general cleanup, using new methods and tidying up old code.
Chris Lattner [Thu, 26 Jan 2012 00:42:34 +0000 (00:42 +0000)]
some general cleanup, using new methods and tidying up old code.

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

12 years agofix pasto in the new (and still unused) ShuffleVectorInst::getShuffleMask method.
Chris Lattner [Thu, 26 Jan 2012 00:41:50 +0000 (00:41 +0000)]
fix pasto in the new (and still unused) ShuffleVectorInst::getShuffleMask method.

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

12 years agoadd StructType helpers too.
Chris Lattner [Thu, 26 Jan 2012 00:06:44 +0000 (00:06 +0000)]
add StructType helpers too.

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

12 years agoOk, break down and add some cast<>'ing helper methods to the Type class
Chris Lattner [Thu, 26 Jan 2012 00:01:10 +0000 (00:01 +0000)]
Ok, break down and add some cast<>'ing helper methods to the Type class
to reduce the number of cast<>'s we have.  This allows someone to use
things like Ty->getVectorNumElements() instead of
cast<VectorType>(Ty)->getNumElements() when you know that a type is a
vector.

It would be a great general cleanup to move the codebase to use these,
I will do so in the code I'm touching.

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

12 years agoadd some helper methods to ShuffleVectorInst and enhance its
Chris Lattner [Wed, 25 Jan 2012 23:49:49 +0000 (23:49 +0000)]
add some helper methods to ShuffleVectorInst and enhance its
"isValidOperands" and "getMaskValue" methods to allow
ConstantDataSequential.

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

12 years agoImprove sub-register def handling in ProcessImplicitDefs.
Jakob Stoklund Olesen [Wed, 25 Jan 2012 23:36:27 +0000 (23:36 +0000)]
Improve sub-register def handling in ProcessImplicitDefs.

This boils down to using MachineOperand::readsReg() more.

This fixes PR11829 where a use ended up after the first def when
lowering REG_SEQUENCE instructions involving IMPLICIT_DEFs.

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

12 years agoProperly emit ctors / dtors with priorities into desired sections
Anton Korobeynikov [Wed, 25 Jan 2012 22:24:19 +0000 (22:24 +0000)]
Properly emit ctors / dtors with priorities into desired sections
and let linker handle the rest.

This finally fixes PR5329

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

12 years agoDon't add live ranges for aliases of physregs that are live in to the
Lang Hames [Wed, 25 Jan 2012 22:11:06 +0000 (22:11 +0000)]
Don't add live ranges for aliases of physregs that are live in to the
function. They don't appear to be used, and are inconsistent with handling of
other physreg intervals (i.e. intervals that are not live-in) where ranges are
not inserted for aliases.

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

12 years agoTidy up. s/Low Level Virtual Machine/LLVM/.
Jim Grosbach [Wed, 25 Jan 2012 22:00:23 +0000 (22:00 +0000)]
Tidy up. s/Low Level Virtual Machine/LLVM/.

LLVM isn't an acronym anymore.

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

12 years agoAlways break upon finding a vreg operand (in Release as well as +Asserts). Remove...
Lang Hames [Wed, 25 Jan 2012 21:53:23 +0000 (21:53 +0000)]
Always break upon finding a vreg operand (in Release as well as +Asserts). Remove assertion which can no longer trigger.

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

12 years agoARM assemly parsing and validation of IT instruction.
Jim Grosbach [Wed, 25 Jan 2012 19:52:01 +0000 (19:52 +0000)]
ARM assemly parsing and validation of IT instruction.

"Although a Thumb2 instruction, the IT mnemonic shall be permitted in
ARM mode, and the condition verified to match the condition code(s)
on the following instruction(s)."

PR11853

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

12 years agoUse precomputed BB size instead of BB->size().
Nick Lewycky [Wed, 25 Jan 2012 18:54:13 +0000 (18:54 +0000)]
Use precomputed BB size instead of BB->size().

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

12 years agofix a bug I introduced in r148929, this is not a splat!
Chris Lattner [Wed, 25 Jan 2012 09:56:22 +0000 (09:56 +0000)]
fix a bug I introduced in r148929, this is not a splat!
Thanks to Eli for noticing.

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

12 years agoGracefully degrade precision in branch probability numbers.
Nick Lewycky [Wed, 25 Jan 2012 09:43:14 +0000 (09:43 +0000)]
Gracefully degrade precision in branch probability numbers.

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

12 years agoSupport pointer comparisons against constants, when looking at the inline-cost
Nick Lewycky [Wed, 25 Jan 2012 08:27:40 +0000 (08:27 +0000)]
Support pointer comparisons against constants, when looking at the inline-cost
savings from a pointer argument becoming an alloca. Sometimes callees will even
compare a pointer to null and then branch to an otherwise unreachable block!
Detect these cases and compute the number of saved instructions, instead of
bailing out and reporting no savings.

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

12 years agoRevert a tiny bit of r148553 which extended LLVM's function attributes
Chandler Carruth [Wed, 25 Jan 2012 07:40:15 +0000 (07:40 +0000)]
Revert a tiny bit of r148553 which extended LLVM's function attributes
to 64-bits, and added a new attribute in bit #32. Specifically, remove
this new attribute from the enum used in the C API. It's not yet clear
what the best approach is for exposing these new attributes in the
C API, and several different proposals are on the table. Until then, we
can simply not expose this bit in the API at all.

Also, I've reverted a somewhat unrelated change in the same revision
which switched from "1 << 31" to "1U << 31" for the top enum. While "1
<< 31" is technically undefined behavior, implementations DTRT here.
However, MS and -pedantic mode warn about non-'int' type enumerator
values. If folks feel strongly about this I can put the 'U' back in, but
it seemed best to wait for the proper solution.

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

12 years agoUpdate hasProperty comment.
Evan Cheng [Wed, 25 Jan 2012 07:38:48 +0000 (07:38 +0000)]
Update hasProperty comment.

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

12 years agouse Constant::getAggregateElement to simplify a bunch of code.
Chris Lattner [Wed, 25 Jan 2012 06:48:06 +0000 (06:48 +0000)]
use Constant::getAggregateElement to simplify a bunch of code.

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

12 years agoCustom lower PSIGN and PSHUFB intrinsics to their corresponding target specific nodes...
Craig Topper [Wed, 25 Jan 2012 06:43:11 +0000 (06:43 +0000)]
Custom lower PSIGN and PSHUFB intrinsics to their corresponding target specific nodes so we can remove the isel patterns.

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

12 years agoconstify some methods and add a new Constant::getAggregateElement
Chris Lattner [Wed, 25 Jan 2012 06:16:32 +0000 (06:16 +0000)]
constify some methods and add a new Constant::getAggregateElement
helper method for the common operation of extracting an element
out of a constant aggregate.

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

12 years agouse ConstantVector::getSplat in a few places.
Chris Lattner [Wed, 25 Jan 2012 06:02:56 +0000 (06:02 +0000)]
use ConstantVector::getSplat in a few places.

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

12 years agoCustom lower phadd and phsub intrinsics to target specific nodes. Remove the patterns...
Craig Topper [Wed, 25 Jan 2012 05:37:32 +0000 (05:37 +0000)]
Custom lower phadd and phsub intrinsics to target specific nodes. Remove the patterns that are no longer necessary.

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

12 years agoreapply r148901 with a crucial fix.
Chris Lattner [Wed, 25 Jan 2012 05:19:54 +0000 (05:19 +0000)]
reapply r148901 with a crucial fix.

"Introduce a new ConstantVector::getSplat constructor function to
simplify a really common case."

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

12 years agoRemove AVX 256-bit unaligned load intrinsics. 128-bit versions had been removed a...
Craig Topper [Wed, 25 Jan 2012 04:42:03 +0000 (04:42 +0000)]
Remove AVX 256-bit unaligned load intrinsics. 128-bit versions had been removed a while ago.

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

12 years agoMark 64-bit register RA_64 unused too.
Akira Hatanaka [Wed, 25 Jan 2012 04:19:22 +0000 (04:19 +0000)]
Mark 64-bit register RA_64 unused too.

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

12 years agoModify MipsFrameLowering::emitPrologue and emitEpilogue.
Akira Hatanaka [Wed, 25 Jan 2012 04:12:04 +0000 (04:12 +0000)]
Modify MipsFrameLowering::emitPrologue and emitEpilogue.

- Use MipsAnalyzeImmediate to expand immediates that do not fit in 16-bit.
- Change the types of variables so that they are sufficiently large to handle
  64-bit pointers.
- Emit instructions to set register $28 in a function prologue after
  instructions which store callee-saved registers have been emitted.

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

12 years agoModify MipsRegisterInfo::eliminateFrameIndex to use MipsAnalyzeImmediate to
Akira Hatanaka [Wed, 25 Jan 2012 03:55:10 +0000 (03:55 +0000)]
Modify MipsRegisterInfo::eliminateFrameIndex to use MipsAnalyzeImmediate to
expand offsets that do not fit in the 16-bit immediate field of load and store
instructions. Also change the types of variables so that they are sufficiently
large to handle 64-bit pointers.

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

12 years agoMerge intrinsic pattern and no pattern versions of VCVTSD2SI intruction definitions...
Craig Topper [Wed, 25 Jan 2012 03:52:09 +0000 (03:52 +0000)]
Merge intrinsic pattern and no pattern versions of VCVTSD2SI intruction definitions. Matches non-AVX version of same instructions.

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

12 years ago-fvisibility-inlines-hidden is a c++ only option.
Rafael Espindola [Wed, 25 Jan 2012 03:39:26 +0000 (03:39 +0000)]
-fvisibility-inlines-hidden is a c++ only option.
Thanks to Peter Collingbourne for noticing it.

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

12 years agoMipsAnalyzeImmediate.h: Fix to add DataTypes.h for msvc.
NAKAMURA Takumi [Wed, 25 Jan 2012 03:34:41 +0000 (03:34 +0000)]
MipsAnalyzeImmediate.h: Fix to add DataTypes.h for msvc.

inttypes.h is not supplied in msvc.

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

12 years agoFix assert("msg"). Fix unused-variable warnings complaining about VT used only
Nick Lewycky [Wed, 25 Jan 2012 03:20:12 +0000 (03:20 +0000)]
Fix assert("msg"). Fix unused-variable warnings complaining about VT used only
in asserts.

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

12 years agoTarget/Mips: Unbreak CMake build.
NAKAMURA Takumi [Wed, 25 Jan 2012 03:15:46 +0000 (03:15 +0000)]
Target/Mips: Unbreak CMake build.

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

12 years agoLower 64-bit immediates using MipsAnalyzeImmediate that has just been added.
Akira Hatanaka [Wed, 25 Jan 2012 03:01:35 +0000 (03:01 +0000)]
Lower 64-bit immediates using MipsAnalyzeImmediate that has just been added.

Add a test case to show fewer instructions are needed to load an immediate
with the new way of loading immediates.

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

12 years agoRevert r148901 because it crashes llvm tests.
Argyrios Kyrtzidis [Wed, 25 Jan 2012 02:42:41 +0000 (02:42 +0000)]
Revert r148901 because it crashes llvm tests.

Original log:
    Introduce a new ConstantVector::getSplat constructor function to
    simplify a really common case.

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

12 years agoIntroduce a new ConstantVector::getSplat constructor function to
Chris Lattner [Wed, 25 Jan 2012 01:53:58 +0000 (01:53 +0000)]
Introduce a new ConstantVector::getSplat constructor function to
simplify a really common case.

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

12 years agoAdd class MipsAnalyzeImmediate which comes up with an instruction sequence to
Akira Hatanaka [Wed, 25 Jan 2012 01:43:36 +0000 (01:43 +0000)]
Add class MipsAnalyzeImmediate which comes up with an instruction sequence to
load an immediate.

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

12 years agoRemove the Type::getNumElements() method, which is only called in 4 places,
Chris Lattner [Wed, 25 Jan 2012 01:32:59 +0000 (01:32 +0000)]
Remove the Type::getNumElements() method, which is only called in 4 places,
did something extremely surprising, and shadowed actually useful
implementations that had completely different behavior.

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

12 years agoUse the right method to get the # elements in a CDS.
Chris Lattner [Wed, 25 Jan 2012 01:27:20 +0000 (01:27 +0000)]
Use the right method to get the # elements in a CDS.

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

12 years agoNEON VLD4(all lanes) assembly parsing and encoding.
Jim Grosbach [Wed, 25 Jan 2012 00:01:08 +0000 (00:01 +0000)]
NEON VLD4(all lanes) assembly parsing and encoding.

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

12 years agoTidy up. Rename VLD4DUP patterns for consistency.
Jim Grosbach [Tue, 24 Jan 2012 23:47:07 +0000 (23:47 +0000)]
Tidy up. Rename VLD4DUP patterns for consistency.

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

12 years agoNEON VLD3(all lanes) assembly parsing and encoding.
Jim Grosbach [Tue, 24 Jan 2012 23:47:04 +0000 (23:47 +0000)]
NEON VLD3(all lanes) assembly parsing and encoding.

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

12 years agoAdditional methods for SmallString.
Talin [Tue, 24 Jan 2012 23:43:59 +0000 (23:43 +0000)]
Additional methods for SmallString.

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

12 years agoSet correct <def,undef> flags when lowering REG_SEQUENCE.
Jakob Stoklund Olesen [Tue, 24 Jan 2012 23:28:42 +0000 (23:28 +0000)]
Set correct <def,undef> flags when lowering REG_SEQUENCE.

A REG_SEQUENCE instruction is lowered into a sequence of partial defs:

  %vreg7:ssub_0<def,undef> = COPY %vreg20:ssub_0
  %vreg7:ssub_1<def> = COPY %vreg2
  %vreg7:ssub_2<def> = COPY %vreg2
  %vreg7:ssub_3<def> = COPY %vreg2

The first def needs an <undef> flag to indicate it is the beginning of
the live range, while the other defs are read-modify-write.  Previously,
we depended on LiveIntervalAnalysis to notice and fix the missing
<def,undef>, but that solution was never robust, it was causing problems
with ProcessImplicitDefs and the lowering of chained REG_SEQUENCE
instructions.

This fixes PR11841.

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

12 years agoUse the standard MachineFunction::print() after SlotIndexes.
Jakob Stoklund Olesen [Tue, 24 Jan 2012 23:28:38 +0000 (23:28 +0000)]
Use the standard MachineFunction::print() after SlotIndexes.

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

12 years agoSign-extend 32-bit integer arguments when they are passed in 64-bit registers,
Akira Hatanaka [Tue, 24 Jan 2012 23:18:43 +0000 (23:18 +0000)]
Sign-extend 32-bit integer arguments when they are passed in 64-bit registers,
which is what N32/64 does.

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

12 years agoPass CCState by reference.
Akira Hatanaka [Tue, 24 Jan 2012 22:07:36 +0000 (22:07 +0000)]
Pass CCState by reference.

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

12 years agoPattern for f32 to i64 conversion.
Akira Hatanaka [Tue, 24 Jan 2012 22:05:25 +0000 (22:05 +0000)]
Pattern for f32 to i64 conversion.

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

12 years agoARM Darwin symbol ref differences w/o subsection-via-symbols.
Jim Grosbach [Tue, 24 Jan 2012 21:45:25 +0000 (21:45 +0000)]
ARM Darwin symbol ref differences w/o subsection-via-symbols.

When not using subsections via symbols, the assembler can resolve
symbol differences (including pcrel references) to non-local
labels at assembly time, not just those in the same atom.

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

12 years agoIntel Syntax: Extend special hand coded logic, to recognize special instructions...
Devang Patel [Tue, 24 Jan 2012 21:43:36 +0000 (21:43 +0000)]
Intel Syntax: Extend special hand coded logic, to recognize special instructions, for intel syntax.

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

12 years ago64-bit sign extension in register instructions.
Akira Hatanaka [Tue, 24 Jan 2012 21:41:09 +0000 (21:41 +0000)]
64-bit sign extension in register instructions.

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

12 years agoTidy up. Trailing whitespace.
Jim Grosbach [Tue, 24 Jan 2012 21:06:59 +0000 (21:06 +0000)]
Tidy up. Trailing whitespace.

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

12 years agoSink assert-only variables into the asserts
Matt Beaumont-Gay [Tue, 24 Jan 2012 19:43:30 +0000 (19:43 +0000)]
Sink assert-only variables into the asserts

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

12 years ago[asan] enable asan only for the functions that have Attribute::AddressSafety
Kostya Serebryany [Tue, 24 Jan 2012 19:34:43 +0000 (19:34 +0000)]
[asan] enable asan only for the functions that have Attribute::AddressSafety

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

12 years agoNEON VST4(one lane) assembly parsing and encoding.
Jim Grosbach [Tue, 24 Jan 2012 18:53:13 +0000 (18:53 +0000)]
NEON VST4(one lane) assembly parsing and encoding.

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

12 years agoWiden the instruction encoder that TblGen emits to a 64 bits, which should accomodate...
Owen Anderson [Tue, 24 Jan 2012 18:37:29 +0000 (18:37 +0000)]
Widen the instruction encoder that TblGen emits to a 64 bits, which should accomodate every target I can think of offhand.

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

12 years agoNEON VLD4(one lane) assembly parsing and encoding.
Jim Grosbach [Tue, 24 Jan 2012 18:37:25 +0000 (18:37 +0000)]
NEON VLD4(one lane) assembly parsing and encoding.

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

12 years agoFix old doxygen comment.
Jakob Stoklund Olesen [Tue, 24 Jan 2012 18:09:18 +0000 (18:09 +0000)]
Fix old doxygen comment.

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

12 years agoAdd an (interleave A, B, ...) SetTheory operator.
Jakob Stoklund Olesen [Tue, 24 Jan 2012 18:06:05 +0000 (18:06 +0000)]
Add an (interleave A, B, ...) SetTheory operator.

This will interleave the elements from two or more lists.

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

12 years agoUndo an over zealous rename. This bit of the CMake build really is
Chandler Carruth [Tue, 24 Jan 2012 18:00:44 +0000 (18:00 +0000)]
Undo an over zealous rename. This bit of the CMake build really is
dealing in the host triple, be honest about it and document the decision
to default the target triple to the host triple unless overridden.

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

12 years agoNEON Two-operand assembly aliases for VSRA.
Jim Grosbach [Tue, 24 Jan 2012 17:55:36 +0000 (17:55 +0000)]
NEON Two-operand assembly aliases for VSRA.

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

12 years agoRemove redundant test file.
Jim Grosbach [Tue, 24 Jan 2012 17:55:32 +0000 (17:55 +0000)]
Remove redundant test file.

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

12 years agoNEON Two-operand assembly aliases for VSLI.
Jim Grosbach [Tue, 24 Jan 2012 17:49:15 +0000 (17:49 +0000)]
NEON Two-operand assembly aliases for VSLI.

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

12 years agoNEON Two-operand assembly aliases for VSRI.
Jim Grosbach [Tue, 24 Jan 2012 17:46:58 +0000 (17:46 +0000)]
NEON Two-operand assembly aliases for VSRI.

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

12 years agoTidy up.
Jim Grosbach [Tue, 24 Jan 2012 17:46:54 +0000 (17:46 +0000)]
Tidy up.

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

12 years agoNEON add correct predicates for some asm aliases.
Jim Grosbach [Tue, 24 Jan 2012 17:23:29 +0000 (17:23 +0000)]
NEON add correct predicates for some asm aliases.

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

12 years agoReword comment based on feedback by Duncan Sands.
David Blaikie [Tue, 24 Jan 2012 16:18:30 +0000 (16:18 +0000)]
Reword comment based on feedback by Duncan Sands.

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

12 years agobasic instcombine support for CDS.
Chris Lattner [Tue, 24 Jan 2012 14:31:22 +0000 (14:31 +0000)]
basic instcombine support for CDS.

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

12 years agoC++, CBE, and TLOF support for ConstantDataSequential
Chris Lattner [Tue, 24 Jan 2012 14:17:05 +0000 (14:17 +0000)]
C++, CBE, and TLOF support for ConstantDataSequential

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

12 years agoRearrange argument order of ::get methods so that LLVMContext comes first,
Chris Lattner [Tue, 24 Jan 2012 14:04:40 +0000 (14:04 +0000)]
Rearrange argument order of ::get methods so that LLVMContext comes first,
add a ConstantDataArray::getString method that corresponds to the (to be
removed) StringRef version of ConstantArray::get, but is dramatically more
efficient.

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

12 years agoZERO_EXTEND operation is optimized for AVX.
Elena Demikhovsky [Tue, 24 Jan 2012 13:54:13 +0000 (13:54 +0000)]
ZERO_EXTEND operation is optimized for AVX.
  v8i16 -> v8i32, v4i32 -> v4i64 - used vpunpck* instructions.

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

12 years agoadd more support for ConstantDataSequential
Chris Lattner [Tue, 24 Jan 2012 13:41:11 +0000 (13:41 +0000)]
add more support for ConstantDataSequential

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

12 years agoAn option to selectively enable part of ARM EHABI support.
Evgeniy Stepanov [Tue, 24 Jan 2012 13:05:33 +0000 (13:05 +0000)]
An option to selectively enable part of ARM EHABI support.

This change adds an new option --arm-enable-ehabi-descriptors that
enables emitting unwinding descriptors. This provides a mode with a
working backtrace() without the (currently broken) exception support.

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

12 years agoBit pack DIE structures better.
Benjamin Kramer [Tue, 24 Jan 2012 12:08:28 +0000 (12:08 +0000)]
Bit pack DIE structures better.

16 bits are sufficient to store attributes, tags and forms.

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

12 years agoFix the testcases for the previous patch.
Eric Christopher [Tue, 24 Jan 2012 10:11:49 +0000 (10:11 +0000)]
Fix the testcases for the previous patch.

rdar://10278198

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

12 years agoRemove generation of DW_AT_sibling. Nothing as far as I can tell uses it.
Eric Christopher [Tue, 24 Jan 2012 09:43:28 +0000 (09:43 +0000)]
Remove generation of DW_AT_sibling. Nothing as far as I can tell uses it.
Saves about 1.5% on debug info size.

rdar://10278198

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

12 years agoAdd AsmPrinter (aka MCLowering) support for ConstantDataSequential,
Chris Lattner [Tue, 24 Jan 2012 09:31:43 +0000 (09:31 +0000)]
Add AsmPrinter (aka MCLowering) support for ConstantDataSequential,
and clean up some other misc stuff.  Unlike ConstantArray, we will
prefer to emit .fill directives for "String" arrays that all have
the same value, since they are denser than emitting a .ascii

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

12 years agoAdd various "string" methods to ConstantDataSequential, which have the
Chris Lattner [Tue, 24 Jan 2012 09:01:07 +0000 (09:01 +0000)]
Add various "string" methods to ConstantDataSequential, which have the
same semantics as ConstantArray's but much more efficient because they
don't have to return std::string's.  The ConstantArray methods will
eventually be removed.

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

12 years agoadd ::drop_back() and ::drop_front() methods, which are like pop_front/pop_back on...
Chris Lattner [Tue, 24 Jan 2012 08:58:57 +0000 (08:58 +0000)]
add ::drop_back() and ::drop_front() methods, which are like pop_front/pop_back on a vector, but a) aren't destructive to "this", and b) can take a # elements to drop.

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

12 years agoteach valuetracking about ConstantDataSequential
Chris Lattner [Tue, 24 Jan 2012 07:54:10 +0000 (07:54 +0000)]
teach valuetracking about ConstantDataSequential

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

12 years agoswitch SCEV to use the new ConstantFoldLoadThroughGEPIndices function
Chris Lattner [Tue, 24 Jan 2012 05:49:24 +0000 (05:49 +0000)]
switch SCEV to use the new ConstantFoldLoadThroughGEPIndices function
instead of its own hard coded thing, allowing it to handle
ConstantDataSequential and fixing some obscure bugs (e.g. it would
previously crash on a CAZ of vector type).

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

12 years agoSplit the interesting bits of ConstantFoldLoadThroughGEPConstantExpr
Chris Lattner [Tue, 24 Jan 2012 05:43:50 +0000 (05:43 +0000)]
Split the interesting bits of ConstantFoldLoadThroughGEPConstantExpr
out into a new ConstantFoldLoadThroughGEPIndices (more useful) function
and rewrite it to be simpler, more efficient, and to handle the new
ConstantDataSequential type.

Enhance ConstantFoldLoadFromConstPtr to handle ConstantDataSequential.

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

12 years agoAdd some accessor methods to CAZ and UndefValue that help simplify clients.
Chris Lattner [Tue, 24 Jan 2012 05:42:11 +0000 (05:42 +0000)]
Add some accessor methods to CAZ and UndefValue that help simplify clients.
Make some CDS methods public.

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

12 years agoUse correct register class for am2offset register operands.
Anton Korobeynikov [Tue, 24 Jan 2012 04:58:56 +0000 (04:58 +0000)]
Use correct register class for am2offset register operands.
This pacifies machine verifier

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