- Jun 27, 2011
-
-
Owen Anderson authored
The index stored in the RegDefIter is one after the current index. When getting the index, decrement it so that it points to the current element. Fixes an off-by-one bug encountered when trying to make use of MVT::untyped. llvm-svn: 133923
-
Andrew Trick authored
Removed the check that peeks past EXTRA_SUBREG, which I don't think makes sense any more. Intead treat it as a normal register def. No significant affect on x86 or ARM benchmarks. llvm-svn: 133917
-
Jakob Stoklund Olesen authored
Both become <earlyclobber> defs on the INLINEASM MachineInstr, but we now use two different asm operand kinds. The new Kind_Clobber is treated identically to the old Kind_RegDefEarlyClobber for now, but x87 floating point stack inline assembly does care about the difference. This will pop a register off the stack: asm("fstp %st" : : "t"(x) : "st"); While this will pop the input and push an output: asm("fst %st" : "=&t"(r) : "t"(x)); We need to know if ST0 was a clobber or an output operand, and we can't depend on <dead> flags for that. llvm-svn: 133902
-
- Jun 25, 2011
-
-
Owen Anderson authored
The scheduler needs to be aware on the existence of untyped nodes when it performs type propagation for EXTRACT_SUBREG. llvm-svn: 133838
-
- Jun 24, 2011
-
-
Devang Patel authored
llvm-svn: 133821
-
- Jun 22, 2011
-
-
Jay Foad authored
that takes an ArrayRef. llvm-svn: 133615
-
Owen Anderson authored
llvm-svn: 133567
-
- Jun 21, 2011
-
-
Evan Cheng authored
1. (((x) & 0xFF00) >> 8) | (((x) & 0x00FF) << 8) => (bswap x) >> 16 2. ((x&0xff)<<8)|((x&0xff00)>>8)|((x&0xff000000)>>8)|((x&0x00ff0000)<<8)) => (rotl (bswap x) 16) This allows us to eliminate most of the def : Pat patterns for ARM rev16 revsh instructions. It catches many more cases for ARM and x86. rdar://9609108 llvm-svn: 133503
-
- Jun 20, 2011
-
-
Nadav Rotem authored
source vector type is to be split while the target vector is to be promoted. (eg: <4 x i64> -> <4 x i8> ) llvm-svn: 133424
-
- Jun 19, 2011
-
-
Nadav Rotem authored
llvm-svn: 133389
-
Nadav Rotem authored
llvm-svn: 133388
-
Nadav Rotem authored
instead of scalarizing, and doing an element-by-element truncat. llvm-svn: 133382
-
- Jun 18, 2011
-
-
Benjamin Kramer authored
llvm-svn: 133348
-
Benjamin Kramer authored
llvm-svn: 133347
-
Eric Christopher authored
range without a libcall to a new mulo<mode> libcall that we'd have to create. Finishes the rest of rdar://9090077 and rdar://9210061 llvm-svn: 133318
-
Eric Christopher authored
llvm-svn: 133307
-
- Jun 17, 2011
-
-
Eric Christopher authored
calls if we haven't been able to lower them any other way. Fixes rdar://9090077 and rdar://9210061 llvm-svn: 133288
-
Jakob Stoklund Olesen authored
In Thumb mode we cannot handle GPR virtual registers, even though some instructions can. When isel is lowering a CopyFromReg, it should limit itself to subclasses of getRegClassFor(VT). <rdar://problem/9624323> llvm-svn: 133210
-
- Jun 16, 2011
-
-
Jakub Staszak authored
BranchProbabilityInfo (expect setEdgeWeight which is not available here). Branch Weights are kept in MachineBasicBlocks. To turn off this analysis set -use-mbpi=false. llvm-svn: 133184
-
Owen Anderson authored
Change the REG_SEQUENCE SDNode to take an explict register class ID as its first operand. This operand is lowered away by the time we reach MachineInstrs, so the actual register-allocation handling of them doesn't need to change. This is intended to support using REG_SEQUENCE SDNode's with type MVT::untyped, and is part of the long road to eliminating some of the hacks we currently use to support register pairs and other strange constraints, particularly on ARM NEON. llvm-svn: 133178
-
Jakob Stoklund Olesen authored
This virtual function will replace allocation_order_begin/end as the one to override when implementing custom allocation orders. It is simpler to have one function return an ArrayRef than having two virtual functions computing different ends of the same array. Use getRawAllocationOrder() in place of allocation_order_begin() where it makes sense, but leave some clients that look like they really want the filtered allocation orders from RegisterClassInfo. llvm-svn: 133170
-
Nick Lewycky authored
llvm-svn: 133124
-
Owen Anderson authored
Add a new MVT::untyped. This will be used in future work for modelling ISA features like register pairs and lists with "interesting" constraints (such as ARM NEON contiguous register lists or even-odd paired registers). We need to be able to generate these instructions (often from intrinsics), but don't want to have to assign a legal type to them. Instead, we'll use an "untyped" edge to bypass the type-checking and simply ensure that the register classes match. llvm-svn: 133106
-
- Jun 15, 2011
-
-
Andrew Trick authored
Added a test case for handling physreg aliases during pre-RA-sched. llvm-svn: 133063
-
Nadav Rotem authored
llvm-svn: 133057
-
Nadav Rotem authored
Enable the simplification of truncating-store after fixing the usage of GetDemandBits (which must operate on the vector element type). Fix the a usage of getZeroExtendInReg which must also be done on scalar types. llvm-svn: 133052
-
Chad Rosier authored
converted to add x,x if x is a undef. add undef, undef does not guarantee that the resulting low order bit is zero. Fixes <rdar://problem/9453156> and <rdar://problem/9487392>. llvm-svn: 133022
-
- Jun 14, 2011
-
-
Nadav Rotem authored
Add a testcase for checking the integer-promotion of many different vector types (with power of two types such as 8,16,32 .. 512). Fix a bug in the integer promotion of bitcast nodes. Enable integer expanding only if the target of the conversion is an integer (when the type action is scalarize). Add handling to the legalization of vector load/store in cases where the saved vector is integer-promoted. llvm-svn: 132985
-
Nadav Rotem authored
llvm-svn: 132984
-
Bruno Cardoso Lopes authored
or instruction cache access. Update the targets to match it and also teach autoupgrade. llvm-svn: 132976
-
- Jun 13, 2011
-
-
Nadav Rotem authored
only if the number of packed elements is a power of two. Bug found in Duncan's testcase. llvm-svn: 132923
-
- Jun 12, 2011
-
-
Nadav Rotem authored
types such as i33 were rounded to i32. Originated from Duncan's testcase. llvm-svn: 132893
-
Nadav Rotem authored
Instead of scalarizing, and doing an element-by-element truncat, use vector truncate. Add support for scalarization of vectors: i8 -> <1 x i1> (from Duncan's testcase). llvm-svn: 132892
-
- Jun 11, 2011
-
-
Chad Rosier authored
llvm-svn: 132872
-
Chad Rosier authored
llvm-svn: 132871
-
Eric Christopher authored
llvm-svn: 132863
-
- Jun 10, 2011
-
-
Eli Friedman authored
Change this DAGCombine to build AND of SHR instead of SHR of AND; this matches the ordering we prefer in instcombine. Part of rdar://9562809. The potential DAGCombine which enforces this more generally messes up some other very fragile patterns, so I'm leaving that alone, at least for now. llvm-svn: 132809
-
- Jun 09, 2011
-
-
Eric Christopher authored
No functional change. Part of PR6965 llvm-svn: 132763
-
- Jun 08, 2011
-
-
Andrew Trick authored
llvm-svn: 132751
-
- Jun 07, 2011
-
-
Andrew Trick authored
I've been sitting on this long enough trying to find a test case. I think the fix should go in now, but I'll keep working on the test case. llvm-svn: 132701
-