summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PowerPC
Commit message (Collapse)AuthorAgeFilesLines
* Remove ISel code generation for UINT_TO_FP and SINT_TO_FP. Now asserts ifJim Laskey2005-08-171-34/+2
| | | | | | marked as legal. llvm-svn: 22816
* Make UINT_TO_FP and SINT_TO_FP use generic expansion.Jim Laskey2005-08-171-0/+4
| | | | llvm-svn: 22815
* Implement a couple improvements:Nate Begeman2005-08-171-12/+28
| | | | | | | | | | | | | | | | | | | | Remove dead code in ISD::Constant handling Add support for add long, imm16 We now codegen 'long long foo(long long a) { return ++a; }' as: addic r4, r4, 1 addze r3, r3 blr instead of: li r2, 1 li r5, 0 addc r2, r4, r2 adde r3, r3, r5 blr llvm-svn: 22811
* updates for changes in nodesChris Lattner2005-08-162-19/+21
| | | | llvm-svn: 22808
* Implement BR_CC and BRTWOWAY_CC. This allows the removal of a rather nastyNate Begeman2005-08-162-18/+11
| | | | | | | fixme from the PowerPC backend. Emit slightly better code for legalizing select_cc. llvm-svn: 22805
* Pull the LLVM -> DAG lowering code out of the pattern selector so that itChris Lattner2005-08-163-484/+526
| | | | | | can be shared with the DAG->DAG selector. llvm-svn: 22799
* Turn loop strength reduction on by default.Chris Lattner2005-08-151-20/+14
| | | | | | | Only run createLowerConstantExpressionsPass for the simple isel. The DAG isel has no need for it. llvm-svn: 22794
* Broke 80 column rule.Jim Laskey2005-08-151-2/+3
| | | | llvm-svn: 22792
* Changed code gen for int to f32 to use rounding. This makes FP resultsJim Laskey2005-08-151-2/+2
| | | | | | consistent with gcc. llvm-svn: 22791
* Fix last night's PPC32 regressions byNate Begeman2005-08-141-3/+1
| | | | | | | | | 1. Not selecting the false value of a select_cc in the false arm, which isn't legal for nested selects. 2. Actually returning the node we created and Legalized in the FP_TO_UINT Expander. llvm-svn: 22789
* Make FP_TO_UINT Illegal. This allows us to generate significantly betterNate Begeman2005-08-142-71/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | codegen for FP_TO_UINT by using the legalizer's SELECT variant. Implement a codegen improvement for SELECT_CC, selecting the false node in the MBB that feeds the phi node. This allows us to codegen: void foo(int *a, int b, int c) { int d = (a < b) ? 5 : 9; *a = d; } as: _foo: li r2, 5 cmpw cr0, r4, r3 bgt .LBB_foo_2 ; entry .LBB_foo_1: ; entry li r2, 9 .LBB_foo_2: ; entry stw r2, 0(r3) blr insted of: _foo: li r2, 5 li r5, 9 cmpw cr0, r4, r3 bgt .LBB_foo_2 ; entry .LBB_foo_1: ; entry or r2, r5, r5 .LBB_foo_2: ; entry stw r2, 0(r3) blr llvm-svn: 22784
* Remove support for 64b PPC, it's been broken for a long time. It'll beNate Begeman2005-08-1310-2272/+4
| | | | | | back once a DAG->DAG ISel exists. llvm-svn: 22778
* Fix for 2005-08-12-rlwimi-crash.ll. Make allowance for masks being shifted toJim Laskey2005-08-121-1/+1
| | | | | | zero. llvm-svn: 22773
* 1. This changes handles the cases of (~x)&y and x&(~y) yielding ANDC, andJim Laskey2005-08-121-3/+24
| | | | | | (~x)|y and x|(~y) yielding ORC. llvm-svn: 22771
* 1. Added the function isOpcWithIntImmediate to simplify testing of operand withJim Laskey2005-08-111-9/+40
| | | | | | | | specified opcode and an integer constant right operand. 2. Modified ISD::SHL, ISD::SRL, ISD::SRA to use rlwinm when applied after a mask. llvm-svn: 22761
* Tidied up the use of dyn_cast<ConstantSDNode> by using isIntImmediate more.Chris Lattner2005-08-111-22/+19
| | | | | | Patch by Jim Laskey. llvm-svn: 22760
* Use a more efficient method of creating integer and float virtual registersChris Lattner2005-08-111-44/+52
| | | | | | | | | | | | | | (avoids an extra level of indirection in MakeReg). defined MakeIntReg using RegMap->createVirtualRegister(PPC32::GPRCRegisterClass) defined MakeFPReg using RegMap->createVirtualRegister(PPC32::FPRCRegisterClass) s/MakeReg(MVT::i32)/MakeIntReg/ s/MakeReg(MVT::f64)/MakeFPReg/ Patch by Jim Laskey! llvm-svn: 22759
* Make SELECT illegal on PPC32, switch to using SELECT_CC, which more closelyNate Begeman2005-08-101-134/+89
| | | | | | | reflects what the hardware is capable of. This significantly simplifies the CC handling logic throughout the ISel. llvm-svn: 22756
* Changes for PPC32ISelPattern.cppChris Lattner2005-08-101-24/+22
| | | | | | | | | 1. Clean up how SelectIntImmediateExpr handles use counts. 2. "Subtract from" was not clearing hi 16 bits. Patch by Jim Laskey llvm-svn: 22754
* Changed the XOR case to use the isOprNot predicate.Chris Lattner2005-08-101-3/+1
| | | | | | Patch by Jim Laskey! llvm-svn: 22750
* 1. Refactored handling of integer immediate values for add, or, xor and sub.Chris Lattner2005-08-101-60/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New routine: ISel::SelectIntImmediateExpr 2. Now checking use counts of large constants. If use count is > 2 then drop thru so that the constant gets loaded into a register. Source: int %test1(int %a) { entry: %tmp.1 = add int %a, 123456789 ; <int> [#uses=1] %tmp.2 = or int %tmp.1, 123456789 ; <int> [#uses=1] %tmp.3 = xor int %tmp.2, 123456789 ; <int> [#uses=1] %tmp.4 = sub int %tmp.3, -123456789 ; <int> [#uses=1] ret int %tmp.4 } Did Emit: .machine ppc970 .text .align 2 .globl _test1 _test1: .LBB_test1_0: ; entry addi r2, r3, -13035 addis r2, r2, 1884 ori r2, r2, 52501 oris r2, r2, 1883 xori r2, r2, 52501 xoris r2, r2, 1883 addi r2, r2, 52501 addis r3, r2, 1883 blr Now Emits: .machine ppc970 .text .align 2 .globl _test1 _test1: .LBB_test1_0: ; entry lis r2, 1883 ori r2, r2, 52501 add r3, r3, r2 or r3, r3, r2 xor r3, r3, r2 add r3, r3, r2 blr Patch by Jim Laskey! llvm-svn: 22749
* Fix a bug compiling: select (i32 < i32), f32, f32Chris Lattner2005-08-101-0/+1
| | | | llvm-svn: 22747
* add a optimization noteChris Lattner2005-08-091-0/+18
| | | | llvm-svn: 22732
* Update the targets to the new SETCC/CondCodeSDNode interfaces.Chris Lattner2005-08-092-175/+166
| | | | llvm-svn: 22729
* Minor cleanup patch, no functionality changes. Written by Jim Laskey.Chris Lattner2005-08-091-19/+19
| | | | llvm-svn: 22727
* Fix CodeGen/Generic/div-neg-power-2.ll, a regression from last night.Chris Lattner2005-08-091-0/+2
| | | | llvm-svn: 22726
* Factor out some common code, and be smarter about when to emit load hi/loNate Begeman2005-08-081-31/+27
| | | | | | code sequences. llvm-svn: 22719
* Remove getImmediateForOpcode, which is now dead.Chris Lattner2005-08-081-59/+0
| | | | | | Patch by Jim Laskey. llvm-svn: 22716
* Add new immediate handling support for mul/div.Chris Lattner2005-08-081-21/+30
| | | | | | Patch by Jim Laskey! llvm-svn: 22715
* Add support for OR/XOR/SUB immediates that are handled with the new immediateChris Lattner2005-08-081-37/+55
| | | | | | way. This allows ORI/ORIS pairs, for example. llvm-svn: 22714
* Modify the ISD::AND opcode case to use new immediate constant predicates.Chris Lattner2005-08-081-45/+36
| | | | | | | | | | Includes wider support for rotate and mask cases. Patch by Jim Laskey. I've requested that Jim add new regression tests the newly handled cases. llvm-svn: 22712
* Modify the ISD::ADD opcode case to use new immediate constant predicates.Chris Lattner2005-08-081-11/+15
| | | | | | | | Includes support for 32-bit constants using addi/addis. Patch by Jim Laskey. llvm-svn: 22711
* Modify existing support functions to use new immediate constant predicates.Chris Lattner2005-08-081-10/+9
| | | | | | Patch by Jim Laskey llvm-svn: 22710
* Add support predicates for future immediate constant changes.Chris Lattner2005-08-081-0/+71
| | | | | | Patch by Jim Laskey llvm-svn: 22709
* Move IsRunOfOnes to a more logical place and rename to a proper predicate formChris Lattner2005-08-081-24/+24
| | | | | | | | (lowercase isXXX). Patch by Jim Laskey. llvm-svn: 22708
* Fix JIT encoding of ppc mfocrf instruction; the operands were reversedNate Begeman2005-08-082-6/+20
| | | | llvm-svn: 22707
* Consolidate the GPOpt stuff to all use the Subtarget, instead of stillChris Lattner2005-08-056-42/+48
| | | | | | | | depending on the command line option. Now the command line option just sets the subtarget as appropriate. G5 opts will now default to on on G5-enabled nightly testers among other machines. llvm-svn: 22688
* Enable gp optimizations by default when available, even when a target tripleChris Lattner2005-08-051-0/+3
| | | | | | | is available, since the target triple doesn't specify whether to use gpopts or not. llvm-svn: 22685
* add a noteChris Lattner2005-08-051-0/+3
| | | | llvm-svn: 22681
* don't crash when running the PPC backend on non-ppc hosts without specifyingChris Lattner2005-08-051-3/+1
| | | | | | a subtarget. llvm-svn: 22677
* Hack to naturally align doubles in the constant pool. Remove this once weNate Begeman2005-08-041-1/+6
| | | | | | know what The Right Thing To Do is. llvm-svn: 22660
* Use the new subtarget support to automatically choose the correct ABINate Begeman2005-08-046-18/+35
| | | | | | and asm printer for PowerPC if one is not specified. llvm-svn: 22659
* Add Subtarget support to PowerPC. Next up, using it.Nate Begeman2005-08-044-8/+114
| | | | llvm-svn: 22644
* Fix grammar: apostrophe-s ('s) is possessive, not plural; also iff vs. if.Misha Brukman2005-08-031-4/+4
| | | | llvm-svn: 22619
* minor capitalization thing, patch by Jim LaskeyChris Lattner2005-08-031-1/+1
| | | | llvm-svn: 22617
* This hunk accidentally got dropped. Patch by Jim LaskeyChris Lattner2005-08-021-67/+0
| | | | llvm-svn: 22595
* Update to use the new MathExtras.h support for log2 computation.Chris Lattner2005-08-024-106/+78
| | | | | | Patch contributed by Jim Laskey! llvm-svn: 22594
* add a pass name to make debugging dumps nicerChris Lattner2005-08-021-0/+4
| | | | llvm-svn: 22588
* Keep tabs and trailing spaces out.Jeff Cohen2005-07-301-1/+1
| | | | llvm-svn: 22565
* turn off GOT on archs that didn't use it (not that it appeard to harm them ↵Andrew Lenharth2005-07-291-1/+1
| | | | | | much with it on) llvm-svn: 22553
OpenPOWER on IntegriCloud