summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Refactor some code, pulling it out into a function. No functionality change.Chris Lattner2005-10-201-15/+26
| | | | llvm-svn: 23839
* Do NOT touch FP ops with LSR. This fixes a testcase Nate sent me from anChris Lattner2005-10-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | inner loop like this: LBB_RateConvertMono8AltiVec_2: ; no_exit lis r2, ha16(.CPI_RateConvertMono8AltiVec_0) lfs f3, lo16(.CPI_RateConvertMono8AltiVec_0)(r2) fmr f3, f3 fadd f0, f2, f0 fadd f3, f0, f3 fcmpu cr0, f3, f1 bge cr0, LBB_RateConvertMono8AltiVec_2 ; no_exit to an inner loop like this: LBB_RateConvertMono8AltiVec_1: ; no_exit fsub f2, f2, f1 fcmpu cr0, f2, f1 fmr f0, f2 bge cr0, LBB_RateConvertMono8AltiVec_1 ; no_exit Doh! good catch! llvm-svn: 23838
* Add some pattern fragments to simplify the repetitive parts of the patternsChris Lattner2005-10-201-3/+22
| | | | | | | | for some common ops and use them for a few examples. Andrew, if you like this, feel free to convert the rest over, if you hate it, feel free to revert. llvm-svn: 23837
* simplify this a bit by using immediatesChris Lattner2005-10-201-24/+16
| | | | llvm-svn: 23836
* Move the target constant divide optimization up into the dag combiner, soNate Begeman2005-10-204-314/+265
| | | | | | | that the nodes can be folded with other nodes, and we can not duplicate code in every backend. Alpha will probably want this too. llvm-svn: 23835
* Enable targets to say that integer divide is expensive, which will triggerNate Begeman2005-10-201-0/+16
| | | | | | an upcoming optimization in the DAG Combiner. llvm-svn: 23834
* forgot this oneAndrew Lenharth2005-10-201-0/+265
| | | | llvm-svn: 23833
* ret 0; works, not much elseAndrew Lenharth2005-10-207-139/+226
| | | | | | | | still lots of uglyness. Maybe calls will come soon. Fixing the return value of things will be necessary to make alpha work. llvm-svn: 23832
* This fixes PR638:John Criswell2005-10-191-6/+6
| | | | | | Regression/CodeGen/Generic/2004-02-08-UnwindSupport.llx llvm-svn: 23831
* Added InstrSchedClass to each of the PowerPC Instructions.Jim Laskey2005-10-199-389/+427
| | | | | | | Note that when adding new instructions that you should refer to the table at the bottom of PPCSchedule.td. llvm-svn: 23830
* Moved to Regression/Codegen/Generic.John Criswell2005-10-191-13/+0
| | | | llvm-svn: 23829
* This is a generic test for all code generators. It originally came fromJohn Criswell2005-10-191-0/+13
| | | | | | Regression/Codegen/X86. llvm-svn: 23826
* Write patterns for the various shl and srl patterns that don't involveNate Begeman2005-10-193-50/+71
| | | | | | doing something clever. llvm-svn: 23824
* Force i386 code generation for an i386 specific test.John Criswell2005-10-191-1/+1
| | | | llvm-svn: 23821
* Push processor descriptions to the top of target and add command line info.Jim Laskey2005-10-197-23/+80
| | | | llvm-svn: 23820
* add support for literal immediates in patterns to match, allowing us toChris Lattner2005-10-191-9/+21
| | | | | | | | | | write things like this: def : Pat<(add GPRC:$in, 12), (ADD12 GPRC:$in)>; Andrew: if this isn't enough or doesn't work for you, please lemme know. llvm-svn: 23819
* now that tblgen is smarter, use integers directly. This should help Andrew tooChris Lattner2005-10-191-4/+1
| | | | llvm-svn: 23818
* Add basic support for integer constants in pattern results.Chris Lattner2005-10-191-0/+14
| | | | llvm-svn: 23817
* Fix some checking that was causing duraid to get a perplexing assertionChris Lattner2005-10-191-1/+1
| | | | | | instead of a happy error message llvm-svn: 23816
* Add support for patterns that have physical registers in them. Testcase:Chris Lattner2005-10-191-0/+12
| | | | | | | | | def : Pat<(trunc G8RC:$in), (OR8To4 G8RC:$in, X0)>; Even though this doesn't make any sense on PPC :) llvm-svn: 23815
* Asserting here is to violentChris Lattner2005-10-191-1/+3
| | | | llvm-svn: 23814
* teach ppc backend these are copiesChris Lattner2005-10-191-1/+2
| | | | llvm-svn: 23813
* Make this work with the internalize changeChris Lattner2005-10-191-1/+1
| | | | llvm-svn: 23812
* Convert these cases to patternsChris Lattner2005-10-192-37/+11
| | | | llvm-svn: 23811
* Nate wants to define 'Pat's which turn into instructions that don't haveChris Lattner2005-10-191-4/+30
| | | | | | patterns. Certainly a logical request. llvm-svn: 23810
* Woo, it kinda works. We now generate this atrociously bad, but correct,Nate Begeman2005-10-192-23/+54
| | | | | | | | | | | | | | | | | | | | | | | code for long long foo(long long a, long long b) { return a + b; } _foo: or r2, r3, r3 or r3, r4, r4 or r4, r5, r5 or r5, r6, r6 rldicr r2, r2, 32, 31 rldicl r3, r3, 0, 32 rldicr r4, r4, 32, 31 rldicl r5, r5, 0, 32 or r2, r3, r2 or r3, r5, r4 add r4, r3, r2 rldicl r2, r4, 32, 32 or r4, r4, r4 or r3, r2, r2 blr llvm-svn: 23809
* Testcase that crashes llvmgcc in type layoutChris Lattner2005-10-191-0/+9
| | | | llvm-svn: 23806
* apply some tblgen majik to simplify the X register definitionsChris Lattner2005-10-191-19/+19
| | | | llvm-svn: 23805
* Teach Legalize how to do something with EXTRACT_ELEMENT when the type ofNate Begeman2005-10-191-7/+30
| | | | | | the pair of elements is a legal type. llvm-svn: 23804
* Make a new reg class for 64 bit regs that aliases the 32 bit regs. ThisNate Begeman2005-10-193-9/+50
| | | | | | | | | | | will have to tide us over until we get real subreg support, but it prevents the PrologEpilogInserter from spilling 8 byte GPRs on a G4 processor. Add some initial support for TRUNCATE and ANY_EXTEND, but they don't currently work due to issues with ScheduleDAG. Something wll have to be figured out. llvm-svn: 23803
* Add the ability to lower return instructions to TargetLowering. ThisNate Begeman2005-10-185-7/+45
| | | | | | | allows us to lower legal return types to something else, to meet ABI requirements (such as that i64 be returned in two i32 regs on Darwin/ppc). llvm-svn: 23802
* Fix Generic/2005-10-18-ZeroSizeStackObject.ll by not requesting a zeroChris Lattner2005-10-181-0/+1
| | | | | | sized stack object if either the array size or the type size is zero. llvm-svn: 23801
* new testcaseChris Lattner2005-10-181-0/+6
| | | | llvm-svn: 23798
* remove hackChris Lattner2005-10-181-3/+1
| | | | llvm-svn: 23797
* This was never updated for the project makefile changesChris Lattner2005-10-182-4/+4
| | | | llvm-svn: 23790
* This never got updated to reflect the project makefile changesChris Lattner2005-10-181-1/+1
| | | | llvm-svn: 23789
* Simple edits; remove unimplimented cases and clarify long haul SLU cases.Jim Laskey2005-10-184-61/+3
| | | | llvm-svn: 23788
* Fix the JIT encoding of LWA, LD, STD, and STDU.Chris Lattner2005-10-183-4/+20
| | | | llvm-svn: 23787
* Checking in first round of scheduling tablegen files. Not tied in as yet.Jim Laskey2005-10-186-0/+947
| | | | llvm-svn: 23786
* add a caseChris Lattner2005-10-181-0/+3
| | | | llvm-svn: 23785
* Fix PR637Chris Lattner2005-10-182-12/+8
| | | | llvm-svn: 23784
* Add an option to this pass. If it is set, we are allowed to internalizeChris Lattner2005-10-181-4/+10
| | | | | | | all but main. If it's not set, we can still internalize, but only if an explicit symbol list is provided. llvm-svn: 23783
* add an option to the internalize passChris Lattner2005-10-181-3/+5
| | | | llvm-svn: 23782
* Fold (select C, load A, load B) -> load (select C, A, B). This happens quiteChris Lattner2005-10-181-7/+82
| | | | | | | | | | | | | | | | | | | | | | a lot throughout many programs. In particular, specfp triggers it a bunch for constant FP nodes when you have code like cond ? 1.0 : -1.0. If the PPC ISel exposed the loads implicit in pic references to external globals, we would be able to eliminate a load in cases like this as well: %X = external global int %Y = external global int int* %test4(bool %C) { %G = select bool %C, int* %X, int* %Y ret int* %G } Note that this breaks things that use SrcValue's (see the fixme), but since nothing uses them yet, this is ok. Also, simplify some code to use hasOneUse() on an SDOperand instead of hasNUsesOfValue directly. llvm-svn: 23781
* Duraid pointed out that it is impolite to emit PPC:: into the IA64 backendChris Lattner2005-10-181-1/+5
| | | | llvm-svn: 23780
* Do the right thing and enable 64 bit regs under the control of a subtargetNate Begeman2005-10-183-8/+10
| | | | | | | option. Currently the only way to enable this is to specify the 64bitregs mattr flag. It is never enabled by default on any config yet. llvm-svn: 23779
* First bits of 64 bit PowerPC stuff, currently disabled. A lot of this isNate Begeman2005-10-189-88/+154
| | | | | | purely mechanical. llvm-svn: 23778
* Implement some feedback from Chris re: constant canonicalizationNate Begeman2005-10-181-39/+27
| | | | llvm-svn: 23777
* Legalize BUILD_PAIR appropriately for upcoming 64 bit PowerPC work.Nate Begeman2005-10-181-0/+25
| | | | llvm-svn: 23776
* Use %s instead of hard coding the input filename.John Criswell2005-10-175-17/+17
| | | | | | This allows the test to work when srcdir != objdir. llvm-svn: 23775
OpenPOWER on IntegriCloud