summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.h
Commit message (Collapse)AuthorAgeFilesLines
* Rename SelectionDAGLowering to SelectionDAGBuilder, and renameDan Gohman2009-11-231-487/+0
| | | | | | SelectionDAGBuild.cpp to SelectionDAGBuilder.cpp. llvm-svn: 89681
* Move some more code out of SelectionDAGBuild.cpp and intoDan Gohman2009-11-231-7/+0
| | | | | | FunctionLoweringInfo.cpp. llvm-svn: 89674
* Move the FunctionLoweringInfo class and some related utility functions outDan Gohman2009-11-231-86/+1
| | | | | | | of SelectionDAGBuild.h/cpp into its own files, to help separate general lowering logic from SelectionDAG-specific lowering logic. llvm-svn: 89667
* x86 users can now return arbitrary sized structs. Structs too large to fit ↵Kenneth Uildriks2009-11-111-0/+8
| | | | | | in return registers will be returned through a hidden sret parameter introduced during SelectionDAG construction. llvm-svn: 86876
* Fix PR5421 by APInt'izing switch lowering.Chris Lattner2009-11-071-3/+3
| | | | llvm-svn: 86354
* rename indbr -> indirectbr to appease the residents of #llvm.Chris Lattner2009-10-281-2/+2
| | | | llvm-svn: 85351
* add enough support for indirect branch for the feature test to passChris Lattner2009-10-271-0/+2
| | | | | | | (assembler,asmprinter, bc reader+writer) and document it. Codegen currently aborts on it. llvm-svn: 85274
* Remove FreeInst.Victor Hernandez2009-10-261-2/+0
| | | | | | | Remove LowerAllocations pass. Update some more passes to treate free calls just like they were treating FreeInst. llvm-svn: 85176
* Remove MallocInst from LLVM Instructions.Victor Hernandez2009-10-171-2/+0
| | | | llvm-svn: 84299
* Enhance EmitInstrWithCustomInserter() so target can specify CFG changes that ↵Evan Cheng2009-09-181-1/+7
| | | | | | | | sdisel will use to properly complete phi nodes. Not functionality change yet. llvm-svn: 82273
* Rename MVT to EVT, in preparation for splitting SimpleValueType out into its ↵Owen Anderson2009-08-101-1/+1
| | | | | | own struct type. llvm-svn: 78610
* Major calling convention code refactoring.Dan Gohman2009-08-051-1/+8
| | | | | | | | | | | | | | | | | | | Instead of awkwardly encoding calling-convention information with ISD::CALL, ISD::FORMAL_ARGUMENTS, ISD::RET, and ISD::ARG_FLAGS nodes, TargetLowering provides three virtual functions for targets to override: LowerFormalArguments, LowerCall, and LowerRet, which replace the custom lowering done on the special nodes. They provide the same information, but in a more immediately usable format. This also reworks much of the target-independent tail call logic. The decision of whether or not to perform a tail call is now cleanly split between target-independent portions, and the target dependent portion in IsEligibleForTailCallOptimization. This also synchronizes all in-tree targets, to help enable future refactoring and feature work. llvm-svn: 78142
* llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable.Torok Edwin2009-07-141-2/+2
| | | | | | | | | This adds location info for all llvm_unreachable calls (which is a macro now) in !NDEBUG builds. In NDEBUG builds location info and the message is off (it only prints "UREACHABLE executed"). llvm-svn: 75640
* Begin the painful process of tearing apart the rat'ss nest that is ↵Owen Anderson2009-07-131-1/+5
| | | | | | | | | Constants.cpp and ConstantFold.cpp. This involves temporarily hard wiring some parts to use the global context. This isn't ideal, but it's the only way I could figure out to make this process vaguely incremental. llvm-svn: 75445
* assert(0) -> LLVM_UNREACHABLE.Torok Edwin2009-07-111-4/+3
| | | | | | | | | Make llvm_unreachable take an optional string, thus moving the cerr<< out of line. LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for NDEBUG builds. llvm-svn: 75379
* Remove the vicmp and vfcmp instructions. Because we never had a release withNick Lewycky2009-07-081-4/+0
| | | | | | | these instructions, no autoupgrade or backwards compatibility support is provided. llvm-svn: 74991
* Split the Add, Sub, and Mul instruction opcodes into separateDan Gohman2009-06-041-3/+6
| | | | | | | | | | | | | | | integer and floating-point opcodes, introducing FAdd, FSub, and FMul. For now, the AsmParser, BitcodeReader, and IRBuilder all preserve backwards compatability, and the Core LLVM APIs preserve backwards compatibility for IR producers. Most front-ends won't need to change immediately. This implements the first step of the plan outlined here: http://nondot.org/sabre/LLVMNotes/IntegerOverflow.txt llvm-svn: 72897
* Temporarily revert r72191. It was causing an assert during llvm-gccBill Wendling2009-05-211-2/+0
| | | | | | bootstrapping. llvm-svn: 72200
* Introduce DebugScope which gets embedded into the machine instructions' ↵Argyrios Kyrtzidis2009-05-201-0/+2
| | | | | | | | DebugLoc. DebugScope refers to a debug region, function or block. llvm-svn: 72191
* Instead of passing in an unsigned value for the optimization level, use an enum,Bill Wendling2009-04-291-2/+4
| | | | | | | which better identifies what the optimization is doing. And is more flexible for future uses. llvm-svn: 70440
* Second attempt:Bill Wendling2009-04-291-4/+4
| | | | | | | | | | | | Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to use the old behavior, the flag is -O0. This change allows for finer-grained control over which optimizations are run at different -O levels. Most of this work was pretty mechanical. The majority of the fixes came from verifying that a "fast" variable wasn't used anymore. The JIT still uses a "Fast" flag. I'll change the JIT with a follow-up patch. llvm-svn: 70343
* r70270 isn't ready yet. Back this out. Sorry for the noise.Bill Wendling2009-04-281-4/+4
| | | | llvm-svn: 70275
* Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want toBill Wendling2009-04-281-4/+4
| | | | | | | | | | | use the old behavior, the flag is -O0. This change allows for finer-grained control over which optimizations are run at different -O levels. Most of this work was pretty mechanical. The majority of the fixes came from verifying that a "fast" variable wasn't used anymore. The JIT still uses a "Fast" flag. I'm not 100% sure if it's necessary to change it there... llvm-svn: 70270
* Factor out a bit of code that appears in several places into aDan Gohman2009-04-231-0/+1
| | | | | | utility function. llvm-svn: 69937
* If FastISel is run and it has known DebugLoc then use it.Devang Patel2009-04-161-2/+1
| | | | llvm-svn: 69253
* Initialize LiveOutInfo's APInt members to zero, as APInt'sDan Gohman2009-03-271-1/+1
| | | | | | | default constructor produces an uninitialized APInt. This fixes PR3896. llvm-svn: 67879
* Generate these labels when we're in "fast" mode, not simply when we're no inBill Wendling2009-02-191-2/+6
| | | | | | "optimize-for-size" mode. llvm-svn: 65064
* Pass in something sensible for the debug location information when creating theBill Wendling2009-02-031-1/+2
| | | | | | initial PHI nodes of the machine function. llvm-svn: 63598
* Alphabetize includes.Bill Wendling2009-02-031-1/+1
| | | | llvm-svn: 63591
* Move CurDebugLoc into SelectionDAGLowering.Dale Johannesen2009-01-311-1/+9
| | | | llvm-svn: 63468
* Initial checkin of APInt'ififcation of switch loweringAnton Korobeynikov2008-12-231-8/+8
| | | | llvm-svn: 61395
* Add sub/mul overflow intrinsics. This currently doesn't have aBill Wendling2008-12-091-0/+1
| | | | | | | target-independent way of determining overflow on multiplication. It's very tricky. Patch by Zoltan Varga! llvm-svn: 60800
* Factor out the code for mapping LLVM IR condition opcodes toDan Gohman2008-10-171-0/+3
| | | | | | ISD condition opcodes into helper functions. llvm-svn: 57726
* Remove SelectionDag early allocation of registersDale Johannesen2008-09-241-1/+1
| | | | | | | for earlyclobbers. Teach Local RA about earlyclobber, and add some tests for it. llvm-svn: 56592
* Implement "visitPow". This is mainly used to see if we have a pow() call of thisBill Wendling2008-09-101-0/+1
| | | | | | | | | | | form: powf(10.0f, x); If this is the case, and also we want limited precision floating-point calculations, then lower to do the limited-precision stuff. llvm-svn: 56035
* Add hooks for other intrinsics to get low-precision expansions.Dale Johannesen2008-09-051-0/+4
| | | | llvm-svn: 55845
* Add -flimit-float-precision to enable some faster,Dale Johannesen2008-09-051-0/+2
| | | | | | | | | but less accurate (non-IEEE) code sequences for certain math library functions. Add the first of several such expansions. Don't worry, if you don't turn it on it won't affect you. llvm-svn: 55823
* Split the SelectionDAG-building code, including the FunctionLoweringInfoDan Gohman2008-09-031-0/+532
and SelectionDAGLowering classes, out of SelectionDAGISel.cpp and put it in a separate file, SelectionDAGBuild.cpp. llvm-svn: 55701
OpenPOWER on IntegriCloud