- Nov 27, 2007
-
-
Dan Gohman authored
optimized. This avoids creating illegal divisions when the combiner is running after legalize; this fixes PR1815. Also, it produces better code in the included testcase by avoiding the subtract and multiply when the division isn't optimized. llvm-svn: 44341
-
- Nov 26, 2007
-
-
Owen Anderson authored
llvm-svn: 44325
-
Owen Anderson authored
llvm-svn: 44324
-
Owen Anderson authored
llvm-svn: 44323
-
Anton Korobeynikov authored
llvm-svn: 44320
-
- Nov 25, 2007
-
-
Nick Lewycky authored
llvm-svn: 44319
-
Chris Lattner authored
llvm-svn: 44318
-
Duncan Sands authored
trivial difference in function attributes, allow calls to it to be converted to direct calls. Based on a patch by Török Edwin. While there, move the various lists of mutually incompatible parameters etc out of the verifier and into ParameterAttributes.h. llvm-svn: 44315
-
Chris Lattner authored
sometimes emit "zero" and "all one" vectors multiple times, for example: _test2: pcmpeqd %mm0, %mm0 movq %mm0, _M1 pcmpeqd %mm0, %mm0 movq %mm0, _M2 ret instead of: _test2: pcmpeqd %mm0, %mm0 movq %mm0, _M1 movq %mm0, _M2 ret This patch fixes this by always arranging for zero/one vectors to be defined as v4i32 or v2i32 (SSE/MMX) instead of letting them be any random type. This ensures they get trivially CSE'd on the dag. This fix is also important for LegalizeDAGTypes, as it gets unhappy when the x86 backend wants BUILD_VECTOR(i64 0) to be legal even when 'i64' isn't legal. This patch makes the following changes: 1) X86TargetLowering::LowerBUILD_VECTOR now lowers 0/1 vectors into their canonical types. 2) The now-dead patterns are removed from the SSE/MMX .td files. 3) All the patterns in the .td file that referred to immAllOnesV or immAllZerosV in the wrong form now use *_bc to match them with a bitcast wrapped around them. 4) X86DAGToDAGISel::SelectScalarSSELoad is generalized to handle bitcast'd zero vectors, which simplifies the code actually. 5) getShuffleVectorZeroOrUndef is updated to generate a shuffle that is legal, instead of generating one that is illegal and expecting a later legalize pass to clean it up. 6) isZeroShuffle is generalized to handle bitcast of zeros. 7) several other minor tweaks. This patch is definite goodness, but has the potential to cause random code quality regressions. Please be on the lookout for these and let me know if they happen. llvm-svn: 44310
-
- Nov 24, 2007
-
-
Chris Lattner authored
llvm-svn: 44304
-
Chris Lattner authored
llvm-svn: 44303
-
Chris Lattner authored
among others. llvm-svn: 44302
-
Chris Lattner authored
Improve a comment. Unbreak Duncan's carefully written path compression where I didn't realize what was happening! llvm-svn: 44301
-
Chris Lattner authored
1) Change the interface to TargetLowering::ExpandOperationResult to take and return entire NODES that need a result expanded, not just the value. This allows us to handle things like READCYCLECOUNTER, which returns two values. 2) Implement (extremely limited) support in LegalizeDAG::ExpandOp for MERGE_VALUES. 3) Reimplement custom lowering in LegalizeDAGTypes in terms of the new ExpandOperationResult. This makes the result simpler and fully general. 4) Implement (fully general) expand support for MERGE_VALUES in LegalizeDAGTypes. 5) Implement ExpandOperationResult support for ARM f64->i64 bitconvert and ARM i64 shifts, allowing them to work with LegalizeDAGTypes. 6) Implement ExpandOperationResult support for X86 READCYCLECOUNTER and FP_TO_SINT, allowing them to work with LegalizeDAGTypes. LegalizeDAGTypes now passes several more X86 codegen tests when enabled and when type legalization in LegalizeDAG is ifdef'd out. llvm-svn: 44300
-
Chris Lattner authored
llvm-svn: 44299
-
- Nov 23, 2007
-
-
Chris Lattner authored
llvm-svn: 44296
-
Chris Lattner authored
llvm-svn: 44295
-
Chris Lattner authored
Fix APInt::countTrailingZeros to return BitWidth if the input is zero instead of returning some random large number. llvm-svn: 44294
-
Chris Lattner authored
llvm-svn: 44293
-
Chris Lattner authored
llvm-svn: 44292
-
Duncan Sands authored
OnlyReadsMemoryFns tables are dead! We get more, and more accurate, information from gcc via the readnone and readonly function attributes. llvm-svn: 44288
-
Duncan Sands authored
from the old ADCE implementation (there it was correct because the transform was being done for read-only functions). llvm-svn: 44287
-
Chris Lattner authored
even though the bitcast operand did not have integer type. This fixes PR1814. llvm-svn: 44286
-
Chris Lattner authored
llvm-svn: 44284
-
- Nov 22, 2007
-
-
Anton Korobeynikov authored
llvm-svn: 44281
-
Duncan Sands authored
llvm-svn: 44280
-
Duncan Sands authored
Based on a patch by Török Edwin. llvm-svn: 44279
-
Duncan Sands authored
exceptions, so don't turn invokes of them into calls. llvm-svn: 44278
-
Duncan Sands authored
and the 'pure' parameter attribute to 'readonly'. Names suggested by DannyB. llvm-svn: 44273
-
Nick Lewycky authored
bits. Patch from Wojciech Matyjewicz. llvm-svn: 44268
-
Nick Lewycky authored
llvm-svn: 44267
-
- Nov 21, 2007
-
-
Duncan Sands authored
node A gets back into the DAG again because it was hiding in one of the node maps: make sure that node replacement happens in those maps too. llvm-svn: 44263
-
Nick Lewycky authored
llvm-svn: 44262
-
Dale Johannesen authored
llvm-svn: 44261
-
Chuck Rose III authored
I added the lexing files to the VStudio projects and removed the .l files from the VStudio projects. There was a problem with use of strtoll in TGLexer.cpp and Chris suggested switching to strtol, so that's included here. Additionally, this checkin adds minimal x64 builds to the VStudio builds. Build issues related to x64 in the windows specific files for DynamicLibrary.inc and Singals.inc are worked around, but not ultimately solved. Binaries used to be stored in ...\win32\{Debug|Release} but are now kept in ...\win32\bin\{win32|x64}\{Debug|Release} intermediate files will continue to be stored in the individual project directories under win32. Some names will likely change in the future to reflect that the vstudio projects are no longer 32-bit only, but I wanted to get things up and running today so kept away from bigger restructuring. llvm-svn: 44260
-
Dale Johannesen authored
for Darwin PPC, but it's not fully working yet. llvm-svn: 44258
-
- Nov 20, 2007
-
-
Duncan Sands authored
any sense it is important that ParamAttr::None gets treated the same as not supplying an attribute at all. Rather than stripping ParamAttr::None out of the list of attributes, assert if ParamAttr::None is seen. Fix up the bitcode reader which liked to insert ParamAttr::None all over the place. Patch based on one by Török Edwin. llvm-svn: 44250
-
Nick Lewycky authored
"setcc" -> "icmp op" in comments. No functionality change. llvm-svn: 44249
-
Nick Lewycky authored
llvm-svn: 44248
-
- Nov 19, 2007
-
-
Chris Lattner authored
Fix a couple of problems: 1. Don't assume the VT-1 is a VT that is half the size. 2. Treat vectors of FP in the vector path, not the FP path. This has a couple of remaining problems before it will work with the code in PR1811: the code below this change assumes that it can use extload/shift/or to construct the result, which isn't right for vectors. This also doesn't handle vectors of 1 or vectors that aren't pow-2. llvm-svn: 44243
-