summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/CodeGenDAGPatterns.h
Commit message (Collapse)AuthorAgeFilesLines
* Factor out the predicate check code from DAGISelEmitter.cppDan Gohman2008-08-221-0/+2
| | | | | | | | | and use it in FastISelEmitter.cpp, and make FastISel subtarget aware. Among other things, this lets it work properly on x86 targets that don't have SSE, where it successfully selects x87 instructions. llvm-svn: 55156
* Added support for overloading intrinsics (atomics) based on pointersMon P Wang2008-07-301-2/+3
| | | | | | | to different address spaces. This alters the naming scheme for those intrinsics, e.g., atomic.load.add.i32 => atomic.load.add.i32.p0i32 llvm-svn: 54195
* - Add "Commutative" property to intrinsics. This allows tblgen to generate ↵Evan Cheng2008-06-161-0/+4
| | | | | | | | the commuted variants for dagisel matching code. - Mark lots of X86 intrinsics as "Commutative" to allow load folding. llvm-svn: 52353
* Wrap MVT::ValueType in a struct to get type safetyDuncan Sands2008-06-061-12/+12
| | | | | | | | | | | | | | | | and better control the abstraction. Rename the type to MVT. To update out-of-tree patches, the main thing to do is to rename MVT::ValueType to MVT, and rewrite expressions like MVT::getSizeInBits(VT) in the form VT.getSizeInBits(). Use VT.getSimpleVT() to extract a MVT::SimpleValueType for use in switch statements (you will get an assert failure if VT is an extended value type - these shouldn't exist after type legalization). This results in a small speedup of codegen and no new testsuite failures (x86-64 linux). llvm-svn: 52044
* Move instruction flag inference out of InstrInfoEmitter and intoDan Gohman2008-04-031-2/+3
| | | | | | | | | | | | CodeGenDAGPatterns, where it can be used in other tablegen backends. This allows the inference to be done for DAGISelEmitter so that it gets accurate mayLoad/mayStore/isSimpleLoad flags. This brings MemOperand functionality back to where it was before 48329. However, it doesn't solve the problem of anonymous patterns which expand to code that does loads or stores. llvm-svn: 49123
* This patch fixes a problem encountered by the CellSPU backend where variantsScott Michel2008-03-051-1/+7
| | | | | | | | | | | | | | were being pruned in patterns where a variable was used more than once, e.g.: (or (and R32C:$rA, R32C:$rC), (and R32C:$rB, (not R32C:$rC))) In this example, $rC is used more than once and is actually significant to instruction selection pattern matching when commuted variants are produced. This patch scans the pattern's clauses and collects the variables, creating a set of variables that are used more than once. TreePatternNode::isIsomorphicTo() also understands that multiply-used variables are significant. llvm-svn: 47950
* Tablegen support for insert & extract element matchingNate Begeman2008-02-091-1/+5
| | | | llvm-svn: 46901
* set the 'isstore' flag for instructions whose pattern is an Chris Lattner2008-01-061-2/+5
| | | | | | intrinsic that writes to memory. llvm-svn: 45650
* improve const correctness.Chris Lattner2008-01-061-1/+1
| | | | llvm-svn: 45646
* rename CodegenDAGPatterns -> CodeGenDAGPatternsChris Lattner2008-01-061-13/+13
| | | | llvm-svn: 45641
* move Node Transformation printing from CodeGenDAGPatterns -> DAGISelEmitter.Chris Lattner2008-01-051-3/+10
| | | | | | | The only difference in output is that we now print them in alphabetical order instead of reverse alphabetical order. llvm-svn: 45635
* move predicate printing code from CodeGenDAGPatterns -> DAGISelEmitter.Chris Lattner2008-01-051-1/+1
| | | | llvm-svn: 45634
* fix a fixme by improving const correctness.Chris Lattner2008-01-051-4/+3
| | | | llvm-svn: 45633
* change getQualifiedName to be a global function.Chris Lattner2008-01-051-0/+552
Split the pattern parsing code out from the dag isel emitter into it's own file. No functionality change. llvm-svn: 45632
OpenPOWER on IntegriCloud