summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/CellSPU
Commit message (Collapse)AuthorAgeFilesLines
* Fix a ton of comment typos found by codespell. Patch byChris Lattner2011-04-152-2/+2
| | | | | | Luis Felipe Strano Moraes! llvm-svn: 129558
* Move getRegPressureLimit() from TargetLoweringInfo to TargetRegisterInfo.Cameron Zwarich2011-03-072-8/+8
| | | | llvm-svn: 127175
* Allow vector shifts (shl,lshr,ashr) on SPU.Kalle Raiskila2011-03-041-48/+16
| | | | | | | | | There was a previous implementation with patterns that would have matched e.g. shl <v4i32> <i32>, but this is not valid LLVM IR so they never were selected. llvm-svn: 126998
* Allow load from constant on SPU.Kalle Raiskila2011-03-041-1/+6
| | | | | | A 'load <4 x i32>* null' crashes llc before this fix. llvm-svn: 126995
* Add branch hinting for SPU. Kalle Raiskila2011-02-284-5/+94
| | | | | | | The implemented algorithm is overly simplistic (just speculate all branches are taken)- this is work in progress. llvm-svn: 126651
* Allow targets to specify a the type of the RHS of a shift parameterized on ↵Owen Anderson2011-02-252-5/+6
| | | | | | the type of the LHS. llvm-svn: 126518
* Revert r124611 - "Keep track of incoming argument's location while emitting ↵Devang Patel2011-02-211-1/+1
| | | | | | | | | | | LiveIns." In other words, do not keep track of argument's location. The debugger (gdb) is not prepared to see line table entries for arguments. For the debugger, "second" line table entry marks beginning of function body. This requires some coordination with debugger to get this working. - The debugger needs to be aware of prolog_end attribute attached with line table entries. - The compiler needs to accurately mark prolog_end in line table entries (at -O0 and at -O1+) llvm-svn: 126155
* Use explicit add_subdirectory's for LLVM target sublibraries insteadOscar Fuentes2011-02-201-0/+2
| | | | | | | | | of testing for its presence at cmake time. This way the build automatically regenerates the makefiles when a svn update brings in a new sublibrary. llvm-svn: 126068
* Keep track of incoming argument's location while emitting LiveIns.Devang Patel2011-01-311-1/+1
| | | | llvm-svn: 124611
* Fix vector sign extend to put the source and destination types in theDavid Greene2011-01-311-3/+3
| | | | | | correct places. llvm-svn: 124601
* Null initialize a few variables flagged byTed Kremenek2011-01-231-1/+1
| | | | | | | | | | clang's -Wuninitialized-experimental warning. While these don't look like real bugs, clang's -Wuninitialized-experimental analysis is stricter than GCC's, and these fixes have the benefit of being general nice cleanups. llvm-svn: 124073
* Allow sign-extending of i8 and i16 to i128 on SPU. Kalle Raiskila2011-01-202-1/+7
| | | | llvm-svn: 123912
* Remove unused variables found by gcc-4.6's -Wunused-but-set-variable.Jeffrey Yasskin2011-01-181-9/+0
| | | | llvm-svn: 123707
* Split up RotateShift itinerary in SPU.Kalle Raiskila2011-01-172-38/+40
| | | | | | | | 'rotq*' and 'shlq*' instructions go to the odd pipeline, wheras the inter-vector equivalents 'rot*', 'shl*' go to the even. llvm-svn: 123622
* Don't crash SPU BE with memory accesses with big alignmnet.Kalle Raiskila2011-01-171-4/+4
| | | | llvm-svn: 123620
* Teach frame lowering to ignore debug values after the terminators.Jakob Stoklund Olesen2011-01-131-2/+2
| | | | llvm-svn: 123399
* Fix a thinko in 123226 that caused test failures on "other" platforms.Kalle Raiskila2011-01-111-1/+1
| | | | llvm-svn: 123229
* Add a "nop filler" pass to SPU.Kalle Raiskila2011-01-116-1/+166
| | | | | | | | | | | | | | | Filling no-ops is done just before emitting of assembly, when the instruction stream is final. No-ops are inserted to align the instructions so the dual-issue of the pipeline is utilized. This speeds up generated code with a minimum of 1% on a select set of algorithms. This pass may be redundant if the instruction scheduler and all subsequent passes that modify the instruction stream (prolog+epilog inserter, register scavenger, are there others?) are made aware of the instruction alignments. llvm-svn: 123226
* Update CMake stuffAnton Korobeynikov2011-01-101-2/+1
| | | | llvm-svn: 123171
* Rename TargetFrameInfo into TargetFrameLowering. Also, put couple of FIXMEs ↵Anton Korobeynikov2011-01-108-44/+44
| | | | | | and fixes here and there. llvm-svn: 123170
* Various bits of framework needed for precise machine-level selectionAndrew Trick2010-12-245-10/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | DAG scheduling during isel. Most new functionality is currently guarded by -enable-sched-cycles and -enable-sched-hazard. Added InstrItineraryData::IssueWidth field, currently derived from ARM itineraries, but could be initialized differently on other targets. Added ScheduleHazardRecognizer::MaxLookAhead to indicate whether it is active, and if so how many cycles of state it holds. Added SchedulingPriorityQueue::HasReadyFilter to allowing gating entry into the scheduler's available queue. ScoreboardHazardRecognizer now accesses the ScheduleDAG in order to get information about it's SUnits, provides RecedeCycle for bottom-up scheduling, correctly computes scoreboard depth, tracks IssueCount, and considers potential stall cycles when checking for hazards. ScheduleDAGRRList now models machine cycles and hazards (under flags). It tracks MinAvailableCycle, drives the hazard recognizer and priority queue's ready filter, manages a new PendingQueue, properly accounts for stall cycles, etc. llvm-svn: 122541
* whitespaceAndrew Trick2010-12-241-1/+1
| | | | llvm-svn: 122539
* Flag -> Glue, the ongoing sagaChris Lattner2010-12-231-4/+4
| | | | llvm-svn: 122513
* rename MVT::Flag to MVT::Glue. "Flag" is a terrible name forChris Lattner2010-12-211-1/+1
| | | | | | | something that just glues two nodes together, even if it is sometimes used for flags. llvm-svn: 122310
* Don't feed 19 bit immediates to ILA.Kalle Raiskila2010-12-171-3/+3
| | | | | | Patch (slightly modified) by Visa Putkinen. llvm-svn: 122052
* Dont' feed ILA two inputs - it takes just one.Kalle Raiskila2010-12-091-1/+1
| | | | llvm-svn: 121372
* Handle lshr for i128 correctly on SPU also when Kalle Raiskila2010-11-291-2/+5
| | | | | | shiftamount > 7. llvm-svn: 120288
* Enable PostRA scheduling for SPU. Kalle Raiskila2010-11-292-0/+25
| | | | | | | This speeds up selected test cases with up to 5% - no slowdowns observed. llvm-svn: 120286
* Allow machine LICM to do its job on SPU.Kalle Raiskila2010-11-292-1/+9
| | | | | | | -return a sensible value for register pressure -add pattern to 'ila' instrucion llvm-svn: 120285
* Add missing i128 case.Kalle Raiskila2010-11-291-0/+3
| | | | llvm-svn: 120284
* Move more PEI-related hooks to TFIAnton Korobeynikov2010-11-274-21/+21
| | | | llvm-svn: 120229
* Use i8 as SETCC result type for i1 in SPU.Kalle Raiskila2010-11-241-4/+14
| | | | llvm-svn: 120092
* Allow for 'fcmp ogt' in SPU.Kalle Raiskila2010-11-241-2/+2
| | | | | | Fix by Visa Putkinen! llvm-svn: 120090
* Division by pow-of-2 is not cheap on SPU, do it with Kalle Raiskila2010-11-231-2/+0
| | | | | | shifts. llvm-svn: 120022
* Renaming ISD::BIT_CONVERT to ISD::BITCAST to better reflect the LLVM IR concept.Wesley Peck2010-11-232-134/+134
| | | | llvm-svn: 119990
* Fix a bug with extractelement on SPU.Kalle Raiskila2010-11-221-1/+1
| | | | | | | In the attached testcase, the element was never extracted (missing rotate). llvm-svn: 119973
* Move getInitialFrameState() to TargetFrameInfoAnton Korobeynikov2010-11-184-12/+10
| | | | llvm-svn: 119754
* Move hasFP() and few related hooks to TargetFrameInfo.Anton Korobeynikov2010-11-184-21/+15
| | | | llvm-svn: 119740
* Change CodeGen to use .loc directives. This produces a lot more readable outputRafael Espindola2010-11-181-2/+1
| | | | | | | | and testing is easier. A good example is the unknown-location.ll test that now can just look for ".loc 1 0 0". We also don't use a DW_LNE_set_address for every address change anymore. llvm-svn: 119613
* Improve code layout, mostly indentation. Kalle Raiskila2010-11-151-166/+150
| | | | | | No functionality change. llvm-svn: 119142
* Attempt to unbreak cmake-based buildsAnton Korobeynikov2010-11-151-0/+1
| | | | llvm-svn: 119098
* First step of huge frame-related refactoring: move emit{Prologue,Epilogue} ↵Anton Korobeynikov2010-11-155-224/+237
| | | | | | out of TargetRegisterInfo to TargetFrameInfo, which is definitely much better suitable place llvm-svn: 119097
* move all the target's asmprinters into the main target. The piece Chris Lattner2010-11-145-27/+2
| | | | | | | that should be split out is the InstPrinter (if a target is mc'ized). This change makes all the targets be consistent. llvm-svn: 119056
* Fix memory access lowering on SPU, addingKalle Raiskila2010-11-124-115/+252
| | | | | | | | | | | | support for the case where alignment<value size. These cases were silently miscompiled before this patch. Now they are overly verbose -especially storing is- and any front-end should still avoid misaligned memory accesses as much as possible. The bit juggling algorithm added here probably has some room for improvement still. llvm-svn: 118889
* Simplify uses of MVT and EVT. An MVT can be compared directlyDuncan Sands2010-11-031-1/+1
| | | | | | | with a SimpleValueType, while an EVT supports equality and inequality comparisons with SimpleValueType. llvm-svn: 118169
* Inline asm multiple alternative constraints development phase 2 - improved ↵John Thompson2010-10-292-0/+38
| | | | | | basic logic, added initial platform support. llvm-svn: 117667
* Change v64 datalayout in SPU.Kalle Raiskila2010-10-261-1/+1
| | | | | | | | | | | | | | The SPU ABI does not mention v64, and all examples in C suggest v128 are treated similarily to arrays, we use array alignment for v64 too. This makes the alignment of e.g. [2 x <2 x i32>] behave "intuitively" and similar to as if the elements were e.g. i32s. This also makes an "unaligned store" test to be aligned, with different (but functionally equivalent) code generated. llvm-svn: 117360
* Improve lowering of sext to i128 on SPU.Kalle Raiskila2010-10-181-2/+7
| | | | | | | | The old algorithm inserted a 'rotqmbyi' instruction which was both redundant and wrong - it made shufb select bytes from the wrong end of the input quad. llvm-svn: 116701
* Add the missing cases to the type->registerclass conversion function.Kalle Raiskila2010-10-071-0/+14
| | | | llvm-svn: 115921
* Implement two virtual functions in SPUTargetLowering.Kalle Raiskila2010-10-072-0/+31
| | | | | | | | | | Before the implementation of isLegalAddressingMode, some rare cases of code were miscompiled if optimized with the LoopStrengthReduce pass. It is unclear (to me) if LSR is "allowed" to produce wrong code with a bad TargetLowering, or if the bug is elsewhere and this patch just hides it. llvm-svn: 115919
OpenPOWER on IntegriCloud