summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Propagate debug info when building SelectionDAG.Dale Johannesen2009-01-301-399/+519
| | | | llvm-svn: 63359
* Make isOperationLegal do what its name suggests, and introduce aDan Gohman2009-01-281-2/+2
| | | | | | | | | | | | | | | new isOperationLegalOrCustom, which does what isOperationLegal previously did. Update a bunch of callers to use isOperationLegalOrCustom instead of isOperationLegal. In some case it wasn't obvious which behavior is desired; when in doubt I changed then to isOperationLegalOrCustom as that preserves their previous behavior. This is for the second half of PR3376. llvm-svn: 63212
* Formatting.Duncan Sands2009-01-281-8/+5
| | | | llvm-svn: 63199
* Delete redundant return statements.Dan Gohman2009-01-271-7/+0
| | | | llvm-svn: 63120
* During bittest switch lowering emit shift in the test block, which should ↵Anton Korobeynikov2009-01-261-11/+9
| | | | | | | | (theoretically) allow us to generate more efficient code. We don't do this now though :) llvm-svn: 63027
* Cleanup whitespace and comments, and tweak someDuncan Sands2009-01-211-5/+4
| | | | | | | prototypes, in operand type legalization. No functionality change. llvm-svn: 62680
* Allow targets to legalize operations (with illegal operands) that produces ↵Sanjiv Gupta2009-01-211-0/+9
| | | | | | multiple values. For example, a load with an illegal operand (a load produces two values, a value and chain). llvm-svn: 62663
* Use "SINT_TO_FP" instead of "UINT_TO_FP" when getting the exponent. This wasBill Wendling2009-01-201-12/+13
| | | | | | | causing the limited precision stuff to produce the wrong result for values in the range [0, 1). llvm-svn: 62615
* Shift types need to match.Bill Wendling2009-01-201-8/+9
| | | | llvm-svn: 62571
* Verify debug info.Devang Patel2009-01-191-4/+4
| | | | llvm-svn: 62545
* Registry.h should not depend on CommandLine.h.Mikhail Glushenkov2009-01-161-0/+1
| | | | | | | Split Support/Registry.h into two files so that we have less to recompile every time CommandLine.h is changed. llvm-svn: 62312
* Delete trailing whitespace.Mikhail Glushenkov2009-01-161-234/+234
| | | | llvm-svn: 62307
* Validate dbg_* intrinsics before lowering them.Devang Patel2009-01-151-5/+5
| | | | llvm-svn: 62286
* Add the private linkage.Rafael Espindola2009-01-151-1/+1
| | | | llvm-svn: 62279
* More consts on TargetLowering references.Dan Gohman2009-01-151-5/+4
| | | | llvm-svn: 62262
* minor refactoring: use a more specific APIGabor Greif2009-01-151-2/+3
| | | | llvm-svn: 62256
* Use DebugInfo interface to lower dbg_* intrinsics.Devang Patel2009-01-131-25/+25
| | | | llvm-svn: 62127
* Rename getABITypeSize to getTypePaddedSize, asDuncan Sands2009-01-121-9/+9
| | | | | | suggested by Chris. llvm-svn: 62099
* Fix a bug in ComputeLinearIndex computation handling multi-levelDan Gohman2009-01-061-1/+3
| | | | | | | | aggregate types. Don't increment the current index after reaching the end of a struct, as it will already be pointing at one-past-the end. This fixes PR3288. llvm-svn: 61828
* squash warnings.Devang Patel2009-01-051-0/+1
| | | | llvm-svn: 61707
* Fix PR3274: when promoting the condition of a BRCOND node,Duncan Sands2009-01-011-4/+4
| | | | | | | | | | promote from i1 all the way up to the canonical SetCC type. In order to discover an appropriate type to use, pass MVT::Other to getSetCCResultType. In order to be able to do this, change getSetCCResultType to take a type as an argument, not a value (this is also more logical). llvm-svn: 61542
* Restore debug printingAnton Korobeynikov2008-12-231-23/+26
| | | | llvm-svn: 61398
* Sometimes APInt syntax is really ugly... :(Anton Korobeynikov2008-12-231-10/+21
| | | | llvm-svn: 61397
* Indent stuff properlyAnton Korobeynikov2008-12-231-25/+25
| | | | llvm-svn: 61396
* Initial checkin of APInt'ififcation of switch loweringAnton Korobeynikov2008-12-231-119/+118
| | | | llvm-svn: 61395
* Clean up the atomic opcodes in SelectionDAG.Dan Gohman2008-12-231-181/+25
| | | | | | | | | | | | | This removes all the _8, _16, _32, and _64 opcodes and replaces each group with an unsuffixed opcode. The MemoryVT field of the AtomicSDNode is now used to carry the size information. In tablegen, the size-specific opcodes are replaced by size-independent opcodes that utilize the ability to compose them with predicates. This shrinks the per-opcode tables and makes the code that handles atomics much more concise. llvm-svn: 61389
* We have decided not to support inline asm where an output operand with a ↵Evan Cheng2008-12-161-11/+12
| | | | | | matching input operand with incompatible type (i.e. either one is a floating point and the other is an integer or the sizes of the types differ). SelectionDAGBuild will catch these and exit with an error. llvm-svn: 61092
* Whitespace fixes.Bill Wendling2008-12-101-14/+12
| | | | llvm-svn: 60818
* Add sub/mul overflow intrinsics. This currently doesn't have aBill Wendling2008-12-091-15/+28
| | | | | | | target-independent way of determining overflow on multiplication. It's very tricky. Patch by Zoltan Varga! llvm-svn: 60800
* There are no longer any places that require aDuncan Sands2008-12-011-12/+18
| | | | | | | | MERGE_VALUES node with only one operand, so get rid of special code that only existed to handle that possibility. llvm-svn: 60349
* - Make lowering of "add with overflow" customizable by back-ends.Bill Wendling2008-11-241-2/+1
| | | | | | | - Mark "add with overflow" as having a custom lowering for X86. Give it a null lowering representation for now. llvm-svn: 59971
* Added check to avoid generating extract subvector beyond the end of the ↵Mon P Wang2008-11-231-1/+2
| | | | | | vector when normalizing vector shuffles. llvm-svn: 59900
* reapply Sanjiv's patch to genericize memcpy/memset/memmove to take anChris Lattner2008-11-211-6/+3
| | | | | | arbitrary integer width for the count. llvm-svn: 59823
* Revert r59802. It was breaking the build of llvm-gcc:Bill Wendling2008-11-211-3/+6
| | | | | | | | | | | | | | | | | | | | | g++ -m32 -c -g -DIN_GCC -W -Wall -Wwrite-strings -Wmissing-format-attribute -fno-common -mdynamic-no-pic -DHAVE_CONFIG_H -Wno-unused -DTARGET_NAME=\"i386-apple-darwin9.5.0\" -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include -DENABLE_LLVM -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/../llvm.src/include -D_DEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include ../../llvm-gcc.src/gcc/llvm-types.cpp -o llvm-types.o ../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemCpy(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)': ../../llvm-gcc.src/gcc/llvm-convert.cpp:1496: error: 'memcpy_i32' is not a member of 'llvm::Intrinsic' ../../llvm-gcc.src/gcc/llvm-convert.cpp:1496: error: 'memcpy_i64' is not a member of 'llvm::Intrinsic' ../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemMove(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)': ../../llvm-gcc.src/gcc/llvm-convert.cpp:1512: error: 'memmove_i32' is not a member of 'llvm::Intrinsic' ../../llvm-gcc.src/gcc/llvm-convert.cpp:1512: error: 'memmove_i64' is not a member of 'llvm::Intrinsic' ../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemSet(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)': ../../llvm-gcc.src/gcc/llvm-convert.cpp:1528: error: 'memset_i32' is not a member of 'llvm::Intrinsic' ../../llvm-gcc.src/gcc/llvm-convert.cpp:1528: error: 'memset_i64' is not a member of 'llvm::Intrinsic' make[3]: *** [llvm-convert.o] Error 1 make[3]: *** Waiting for unfinished jobs.... rm fsf-funding.pod gcov.pod gfdl.pod cpp.pod gpl.pod gcc.pod make[2]: *** [all-stage1-gcc] Error 2 make[1]: *** [stage1-bubble] Error 2 make: *** [all] Error 2 llvm-svn: 59809
* Make mem[cpy,move,set] intrinsics overloaded.Sanjiv Gupta2008-11-211-6/+3
| | | | llvm-svn: 59802
* Clean up normalization of shufflesMon P Wang2008-11-211-30/+31
| | | | llvm-svn: 59792
* Combine the two add with overflow intrinsics lowerings. They differ only in ↵Bill Wendling2008-11-211-18/+5
| | | | | | DAG node type. llvm-svn: 59788
* Generate code for llvm.uadd.with.overflow intrinsic. No conversion support yet.Bill Wendling2008-11-211-1/+12
| | | | llvm-svn: 59786
* Remove chains. Unnecessary.Bill Wendling2008-11-211-8/+4
| | | | llvm-svn: 59783
* Rename "ADDO" to "SADDO" and "UADDO". The "UADDO" isn't equivalent to "ADDC"Bill Wendling2008-11-211-3/+3
| | | | | | | because the boolean it returns to indicate an overflow may not be treated like as a flag. It could be stored to memory, for instance. llvm-svn: 59780
* Implement the sadd_with_overflow intrinsic. This is converted intoBill Wendling2008-11-211-0/+25
| | | | | | | | "ISD::ADDO". ISD::ADDO is lowered into a target-independent form that does the addition and then checks if the result is less than one of the operands. (If it is, then there was an overflow.) llvm-svn: 59779
* 80-column violation.Bill Wendling2008-11-201-2/+4
| | | | llvm-svn: 59718
* Rename stackprotector_create intrinsic to stackprotector.Bill Wendling2008-11-181-1/+1
| | | | llvm-svn: 59519
* Remove the stackprotector_check intrinsic. Use a volatile load instead.Bill Wendling2008-11-181-13/+0
| | | | llvm-svn: 59504
* Improved shuffle normalization to avoid using extract/build when weMon P Wang2008-11-161-96/+122
| | | | | | | can extract using different indexes for two vectors. Added a few tests for vector shuffles. llvm-svn: 59399
* Added CONVERT_RNDSAT (conversion with rounding and saturation) SDNode toMon P Wang2008-11-101-0/+32
| | | | | | | support targets that support these conversions. Users should avoid using this node as the current targets don't generating code for it. llvm-svn: 59001
* Added support for the following definition of shufflevector Mon P Wang2008-11-101-3/+169
| | | | | | <result> = shufflevector <n x <ty>> <v1>, <n x <ty>> <v2>, <m x i32> <mask> llvm-svn: 58964
* - Modify the stack protector algorithm so that the stack slot is allocated inBill Wendling2008-11-071-8/+4
| | | | | | | | | LLVM IR code and not in the selection DAG ISel. This is a cleaner solution. - Fix the heuristic for determining if protectors are necessary. The previous one wasn't checking the proper type size. llvm-svn: 58824
* - Rename stackprotector_{prologue,epilogue} to stackprotector_{create,check}.Bill Wendling2008-11-061-4/+2
| | | | | | | - Get rid of "HasStackProtector" in MachineFrameInfo. - Modify intrinsics to tell which are doing what with memory. llvm-svn: 58799
* Implement the stack protector stack accesses via intrinsics:Bill Wendling2008-11-061-0/+43
| | | | | | | | | | | | - stackprotector_prologue creates a stack object and stores the guard there. - stackprotector_epilogue reads the stack guard from the stack position created by stackprotector_prologue. - The PrologEpilogInserter was changed to make sure that the stack guard is first on the stack frame. llvm-svn: 58791
OpenPOWER on IntegriCloud